var __getOwnPropNames = Object.getOwnPropertyNames;
var __commonJS = (cb, mod) => function __require() {
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};

// node_modules/@trysound/sax/lib/sax.js
var require_sax = __commonJS({
  "node_modules/@trysound/sax/lib/sax.js"(exports) {
    (function(sax) {
      sax.parser = function(strict, opt) {
        return new SAXParser(strict, opt);
      };
      sax.SAXParser = SAXParser;
      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 parser = this;
        clearBuffers(parser);
        parser.q = parser.c = "";
        parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH;
        parser.opt = opt || {};
        parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;
        parser.looseCase = parser.opt.lowercase ? "toLowerCase" : "toUpperCase";
        parser.tags = [];
        parser.closed = parser.closedRoot = parser.sawRoot = false;
        parser.tag = parser.error = null;
        parser.strict = !!strict;
        parser.noscript = !!(strict || parser.opt.noscript);
        parser.state = S.BEGIN;
        parser.strictEntities = parser.opt.strictEntities;
        parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES);
        parser.attribList = [];
        if (parser.opt.xmlns) {
          parser.ns = Object.create(rootNS);
        }
        parser.trackPosition = parser.opt.position !== false;
        if (parser.trackPosition) {
          parser.position = parser.line = parser.column = 0;
        }
        emit(parser, "onready");
      }
      if (!Object.create) {
        Object.create = function(o) {
          function F() {
          }
          F.prototype = o;
          var newf = new F();
          return newf;
        };
      }
      if (!Object.keys) {
        Object.keys = function(o) {
          var a = [];
          for (var i in o) if (o.hasOwnProperty(i)) a.push(i);
          return a;
        };
      }
      function checkBufferLength(parser) {
        var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10);
        var maxActual = 0;
        for (var i = 0, l = buffers.length; i < l; i++) {
          var len = parser[buffers[i]].length;
          if (len > maxAllowed) {
            switch (buffers[i]) {
              case "textNode":
                closeText(parser);
                break;
              case "cdata":
                emitNode(parser, "oncdata", parser.cdata);
                parser.cdata = "";
                break;
              case "script":
                emitNode(parser, "onscript", parser.script);
                parser.script = "";
                break;
              default:
                error(parser, "Max buffer length exceeded: " + buffers[i]);
            }
          }
          maxActual = Math.max(maxActual, len);
        }
        var m = sax.MAX_BUFFER_LENGTH - maxActual;
        parser.bufferCheckPosition = m + parser.position;
      }
      function clearBuffers(parser) {
        for (var i = 0, l = buffers.length; i < l; i++) {
          parser[buffers[i]] = "";
        }
      }
      function flushBuffers(parser) {
        closeText(parser);
        if (parser.cdata !== "") {
          emitNode(parser, "oncdata", parser.cdata);
          parser.cdata = "";
        }
        if (parser.script !== "") {
          emitNode(parser, "onscript", parser.script);
          parser.script = "";
        }
      }
      SAXParser.prototype = {
        end: function() {
          end(this);
        },
        write,
        resume: function() {
          this.error = null;
          return this;
        },
        close: function() {
          return this.write(null);
        },
        flush: function() {
          flushBuffers(this);
        }
      };
      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 isWhitespace(c) {
        return c === " " || c === "\n" || c === "\r" || c === "	";
      }
      function isQuote(c) {
        return c === '"' || c === "'";
      }
      function isAttribEnd(c) {
        return c === ">" || isWhitespace(c);
      }
      function isMatch(regex, c) {
        return regex.test(c);
      }
      function notMatch(regex, c) {
        return !isMatch(regex, c);
      }
      var S = 0;
      sax.STATE = {
        BEGIN: S++,
        // leading byte order mark or whitespace
        BEGIN_WHITESPACE: S++,
        // leading whitespace
        TEXT: S++,
        // general stuff
        TEXT_ENTITY: S++,
        // &amp and such.
        OPEN_WAKA: S++,
        // <
        SGML_DECL: S++,
        // <!BLARG
        SGML_DECL_QUOTED: S++,
        // <!BLARG foo "bar
        DOCTYPE: S++,
        // <!DOCTYPE
        DOCTYPE_QUOTED: S++,
        // <!DOCTYPE "//blah
        DOCTYPE_DTD: S++,
        // <!DOCTYPE "//blah" [ ...
        DOCTYPE_DTD_QUOTED: S++,
        // <!DOCTYPE "//blah" [ "foo
        COMMENT_STARTING: S++,
        // <!-
        COMMENT: S++,
        // <!--
        COMMENT_ENDING: S++,
        // <!-- blah -
        COMMENT_ENDED: S++,
        // <!-- blah --
        CDATA: S++,
        // <![CDATA[ something
        CDATA_ENDING: S++,
        // ]
        CDATA_ENDING_2: S++,
        // ]]
        PROC_INST: S++,
        // <?hi
        PROC_INST_BODY: S++,
        // <?hi there
        PROC_INST_ENDING: S++,
        // <?hi "there" ?
        OPEN_TAG: S++,
        // <strong
        OPEN_TAG_SLASH: S++,
        // <strong /
        ATTRIB: S++,
        // <a
        ATTRIB_NAME: S++,
        // <a foo
        ATTRIB_NAME_SAW_WHITE: S++,
        // <a foo _
        ATTRIB_VALUE: S++,
        // <a foo=
        ATTRIB_VALUE_QUOTED: S++,
        // <a foo="bar
        ATTRIB_VALUE_CLOSED: S++,
        // <a foo="bar"
        ATTRIB_VALUE_UNQUOTED: S++,
        // <a foo=bar
        ATTRIB_VALUE_ENTITY_Q: S++,
        // <foo bar="&quot;"
        ATTRIB_VALUE_ENTITY_U: S++,
        // <foo bar=&quot
        CLOSE_TAG: S++,
        // </a
        CLOSE_TAG_SAW_WHITE: S++,
        // </a   >
        SCRIPT: S++,
        // <script> ...
        SCRIPT_ENDING: S++
        // <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(key) {
        var e = sax.ENTITIES[key];
        var s2 = typeof e === "number" ? String.fromCharCode(e) : e;
        sax.ENTITIES[key] = s2;
      });
      for (var s in sax.STATE) {
        sax.STATE[sax.STATE[s]] = s;
      }
      S = sax.STATE;
      function emit(parser, event, data) {
        parser[event] && parser[event](data);
      }
      function emitNode(parser, nodeType, data) {
        if (parser.textNode) closeText(parser);
        emit(parser, nodeType, data);
      }
      function closeText(parser) {
        parser.textNode = textopts(parser.opt, parser.textNode);
        if (parser.textNode) emit(parser, "ontext", parser.textNode);
        parser.textNode = "";
      }
      function textopts(opt, text) {
        if (opt.trim) text = text.trim();
        if (opt.normalize) text = text.replace(/\s+/g, " ");
        return text;
      }
      function error(parser, reason) {
        closeText(parser);
        const message = reason + "\nLine: " + parser.line + "\nColumn: " + parser.column + "\nChar: " + parser.c;
        const error2 = new Error(message);
        error2.reason = reason;
        error2.line = parser.line;
        error2.column = parser.column;
        parser.error = error2;
        emit(parser, "onerror", error2);
        return parser;
      }
      function end(parser) {
        if (parser.sawRoot && !parser.closedRoot) strictFail(parser, "Unclosed root tag");
        if (parser.state !== S.BEGIN && parser.state !== S.BEGIN_WHITESPACE && parser.state !== S.TEXT) {
          error(parser, "Unexpected end");
        }
        closeText(parser);
        parser.c = "";
        parser.closed = true;
        emit(parser, "onend");
        SAXParser.call(parser, parser.strict, parser.opt);
        return parser;
      }
      function strictFail(parser, message) {
        if (typeof parser !== "object" || !(parser instanceof SAXParser)) {
          throw new Error("bad call to strictFail");
        }
        if (parser.strict) {
          error(parser, message);
        }
      }
      function newTag(parser) {
        if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]();
        var parent = parser.tags[parser.tags.length - 1] || parser;
        var tag = parser.tag = { name: parser.tagName, attributes: {} };
        if (parser.opt.xmlns) {
          tag.ns = parent.ns;
        }
        parser.attribList.length = 0;
        emitNode(parser, "onopentagstart", tag);
      }
      function qname(name, attribute) {
        var i = name.indexOf(":");
        var qualName = i < 0 ? ["", name] : name.split(":");
        var prefix = qualName[0];
        var local = qualName[1];
        if (attribute && name === "xmlns") {
          prefix = "xmlns";
          local = "";
        }
        return { prefix, local };
      }
      function attrib(parser) {
        if (!parser.strict) {
          parser.attribName = parser.attribName[parser.looseCase]();
        }
        if (parser.attribList.indexOf(parser.attribName) !== -1 || parser.tag.attributes.hasOwnProperty(parser.attribName)) {
          parser.attribName = parser.attribValue = "";
          return;
        }
        if (parser.opt.xmlns) {
          var qn = qname(parser.attribName, true);
          var prefix = qn.prefix;
          var local = qn.local;
          if (prefix === "xmlns") {
            if (local === "xml" && parser.attribValue !== XML_NAMESPACE) {
              strictFail(
                parser,
                "xml: prefix must be bound to " + XML_NAMESPACE + "\nActual: " + parser.attribValue
              );
            } else if (local === "xmlns" && parser.attribValue !== XMLNS_NAMESPACE) {
              strictFail(
                parser,
                "xmlns: prefix must be bound to " + XMLNS_NAMESPACE + "\nActual: " + parser.attribValue
              );
            } else {
              var tag = parser.tag;
              var parent = parser.tags[parser.tags.length - 1] || parser;
              if (tag.ns === parent.ns) {
                tag.ns = Object.create(parent.ns);
              }
              tag.ns[local] = parser.attribValue;
            }
          }
          parser.attribList.push([parser.attribName, parser.attribValue]);
        } else {
          parser.tag.attributes[parser.attribName] = parser.attribValue;
          emitNode(parser, "onattribute", {
            name: parser.attribName,
            value: parser.attribValue
          });
        }
        parser.attribName = parser.attribValue = "";
      }
      function openTag(parser, selfClosing) {
        if (parser.opt.xmlns) {
          var tag = parser.tag;
          var qn = qname(parser.tagName);
          tag.prefix = qn.prefix;
          tag.local = qn.local;
          tag.uri = tag.ns[qn.prefix] || "";
          if (tag.prefix && !tag.uri) {
            strictFail(parser, "Unbound namespace prefix: " + JSON.stringify(parser.tagName));
            tag.uri = qn.prefix;
          }
          var parent = parser.tags[parser.tags.length - 1] || parser;
          if (tag.ns && parent.ns !== tag.ns) {
            Object.keys(tag.ns).forEach(function(p) {
              emitNode(parser, "onopennamespace", {
                prefix: p,
                uri: tag.ns[p]
              });
            });
          }
          for (var i = 0, l = parser.attribList.length; i < l; i++) {
            var nv = parser.attribList[i];
            var name = nv[0];
            var value = nv[1];
            var qualName = qname(name, true);
            var prefix = qualName.prefix;
            var local = qualName.local;
            var uri = prefix === "" ? "" : tag.ns[prefix] || "";
            var a = {
              name,
              value,
              prefix,
              local,
              uri
            };
            if (prefix && prefix !== "xmlns" && !uri) {
              strictFail(parser, "Unbound namespace prefix: " + JSON.stringify(prefix));
              a.uri = prefix;
            }
            parser.tag.attributes[name] = a;
            emitNode(parser, "onattribute", a);
          }
          parser.attribList.length = 0;
        }
        parser.tag.isSelfClosing = !!selfClosing;
        parser.sawRoot = true;
        parser.tags.push(parser.tag);
        emitNode(parser, "onopentag", parser.tag);
        if (!selfClosing) {
          if (!parser.noscript && parser.tagName.toLowerCase() === "script") {
            parser.state = S.SCRIPT;
          } else {
            parser.state = S.TEXT;
          }
          parser.tag = null;
          parser.tagName = "";
        }
        parser.attribName = parser.attribValue = "";
        parser.attribList.length = 0;
      }
      function closeTag(parser) {
        if (!parser.tagName) {
          strictFail(parser, "Weird empty close tag.");
          parser.textNode += "</>";
          parser.state = S.TEXT;
          return;
        }
        if (parser.script) {
          if (parser.tagName !== "script") {
            parser.script += "</" + parser.tagName + ">";
            parser.tagName = "";
            parser.state = S.SCRIPT;
            return;
          }
          emitNode(parser, "onscript", parser.script);
          parser.script = "";
        }
        var t = parser.tags.length;
        var tagName = parser.tagName;
        if (!parser.strict) {
          tagName = tagName[parser.looseCase]();
        }
        var closeTo = tagName;
        while (t--) {
          var close = parser.tags[t];
          if (close.name !== closeTo) {
            strictFail(parser, "Unexpected close tag");
          } else {
            break;
          }
        }
        if (t < 0) {
          strictFail(parser, "Unmatched closing tag: " + parser.tagName);
          parser.textNode += "</" + parser.tagName + ">";
          parser.state = S.TEXT;
          return;
        }
        parser.tagName = tagName;
        var s2 = parser.tags.length;
        while (s2-- > t) {
          var tag = parser.tag = parser.tags.pop();
          parser.tagName = parser.tag.name;
          emitNode(parser, "onclosetag", parser.tagName);
          var x = {};
          for (var i in tag.ns) {
            x[i] = tag.ns[i];
          }
          var parent = parser.tags[parser.tags.length - 1] || parser;
          if (parser.opt.xmlns && tag.ns !== parent.ns) {
            Object.keys(tag.ns).forEach(function(p) {
              var n = tag.ns[p];
              emitNode(parser, "onclosenamespace", { prefix: p, uri: n });
            });
          }
        }
        if (t === 0) parser.closedRoot = true;
        parser.tagName = parser.attribValue = parser.attribName = "";
        parser.attribList.length = 0;
        parser.state = S.TEXT;
      }
      function parseEntity(parser) {
        var entity = parser.entity;
        var entityLC = entity.toLowerCase();
        var num;
        var numStr = "";
        if (parser.ENTITIES[entity]) {
          return parser.ENTITIES[entity];
        }
        if (parser.ENTITIES[entityLC]) {
          return parser.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(parser, "Invalid character entity");
          return "&" + parser.entity + ";";
        }
        return String.fromCodePoint(num);
      }
      function beginWhiteSpace(parser, c) {
        if (c === "<") {
          parser.state = S.OPEN_WAKA;
          parser.startTagPosition = parser.position;
        } else if (!isWhitespace(c)) {
          strictFail(parser, "Non-whitespace before first tag.");
          parser.textNode = c;
          parser.state = S.TEXT;
        }
      }
      function charAt(chunk, i) {
        var result = "";
        if (i < chunk.length) {
          result = chunk.charAt(i);
        }
        return result;
      }
      function write(chunk) {
        var parser = this;
        if (this.error) {
          throw this.error;
        }
        if (parser.closed) {
          return error(
            parser,
            "Cannot write after close. Assign an onready handler."
          );
        }
        if (chunk === null) {
          return end(parser);
        }
        if (typeof chunk === "object") {
          chunk = chunk.toString();
        }
        var i = 0;
        var c = "";
        while (true) {
          c = charAt(chunk, i++);
          parser.c = c;
          if (!c) {
            break;
          }
          if (parser.trackPosition) {
            parser.position++;
            if (c === "\n") {
              parser.line++;
              parser.column = 0;
            } else {
              parser.column++;
            }
          }
          switch (parser.state) {
            case S.BEGIN:
              parser.state = S.BEGIN_WHITESPACE;
              if (c === "\uFEFF") {
                continue;
              }
              beginWhiteSpace(parser, c);
              continue;
            case S.BEGIN_WHITESPACE:
              beginWhiteSpace(parser, c);
              continue;
            case S.TEXT:
              if (parser.sawRoot && !parser.closedRoot) {
                var starti = i - 1;
                while (c && c !== "<" && c !== "&") {
                  c = charAt(chunk, i++);
                  if (c && parser.trackPosition) {
                    parser.position++;
                    if (c === "\n") {
                      parser.line++;
                      parser.column = 0;
                    } else {
                      parser.column++;
                    }
                  }
                }
                parser.textNode += chunk.substring(starti, i - 1);
              }
              if (c === "<" && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {
                parser.state = S.OPEN_WAKA;
                parser.startTagPosition = parser.position;
              } else {
                if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {
                  strictFail(parser, "Text data outside of root node.");
                }
                if (c === "&") {
                  parser.state = S.TEXT_ENTITY;
                } else {
                  parser.textNode += c;
                }
              }
              continue;
            case S.SCRIPT:
              if (c === "<") {
                parser.state = S.SCRIPT_ENDING;
              } else {
                parser.script += c;
              }
              continue;
            case S.SCRIPT_ENDING:
              if (c === "/") {
                parser.state = S.CLOSE_TAG;
              } else {
                parser.script += "<" + c;
                parser.state = S.SCRIPT;
              }
              continue;
            case S.OPEN_WAKA:
              if (c === "!") {
                parser.state = S.SGML_DECL;
                parser.sgmlDecl = "";
              } else if (isWhitespace(c)) {
              } else if (isMatch(nameStart, c)) {
                parser.state = S.OPEN_TAG;
                parser.tagName = c;
              } else if (c === "/") {
                parser.state = S.CLOSE_TAG;
                parser.tagName = "";
              } else if (c === "?") {
                parser.state = S.PROC_INST;
                parser.procInstName = parser.procInstBody = "";
              } else {
                strictFail(parser, "Unencoded <");
                if (parser.startTagPosition + 1 < parser.position) {
                  var pad = parser.position - parser.startTagPosition;
                  c = new Array(pad).join(" ") + c;
                }
                parser.textNode += "<" + c;
                parser.state = S.TEXT;
              }
              continue;
            case S.SGML_DECL:
              if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {
                emitNode(parser, "onopencdata");
                parser.state = S.CDATA;
                parser.sgmlDecl = "";
                parser.cdata = "";
              } else if (parser.sgmlDecl + c === "--") {
                parser.state = S.COMMENT;
                parser.comment = "";
                parser.sgmlDecl = "";
              } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {
                parser.state = S.DOCTYPE;
                if (parser.doctype || parser.sawRoot) {
                  strictFail(
                    parser,
                    "Inappropriately located doctype declaration"
                  );
                }
                parser.doctype = "";
                parser.sgmlDecl = "";
              } else if (c === ">") {
                emitNode(parser, "onsgmldeclaration", parser.sgmlDecl);
                parser.sgmlDecl = "";
                parser.state = S.TEXT;
              } else if (isQuote(c)) {
                parser.state = S.SGML_DECL_QUOTED;
                parser.sgmlDecl += c;
              } else {
                parser.sgmlDecl += c;
              }
              continue;
            case S.SGML_DECL_QUOTED:
              if (c === parser.q) {
                parser.state = S.SGML_DECL;
                parser.q = "";
              }
              parser.sgmlDecl += c;
              continue;
            case S.DOCTYPE:
              if (c === ">") {
                parser.state = S.TEXT;
                emitNode(parser, "ondoctype", parser.doctype);
                parser.doctype = true;
              } else {
                parser.doctype += c;
                if (c === "[") {
                  parser.state = S.DOCTYPE_DTD;
                } else if (isQuote(c)) {
                  parser.state = S.DOCTYPE_QUOTED;
                  parser.q = c;
                }
              }
              continue;
            case S.DOCTYPE_QUOTED:
              parser.doctype += c;
              if (c === parser.q) {
                parser.q = "";
                parser.state = S.DOCTYPE;
              }
              continue;
            case S.DOCTYPE_DTD:
              parser.doctype += c;
              if (c === "]") {
                parser.state = S.DOCTYPE;
              } else if (isQuote(c)) {
                parser.state = S.DOCTYPE_DTD_QUOTED;
                parser.q = c;
              }
              continue;
            case S.DOCTYPE_DTD_QUOTED:
              parser.doctype += c;
              if (c === parser.q) {
                parser.state = S.DOCTYPE_DTD;
                parser.q = "";
              }
              continue;
            case S.COMMENT:
              if (c === "-") {
                parser.state = S.COMMENT_ENDING;
              } else {
                parser.comment += c;
              }
              continue;
            case S.COMMENT_ENDING:
              if (c === "-") {
                parser.state = S.COMMENT_ENDED;
                parser.comment = textopts(parser.opt, parser.comment);
                if (parser.comment) {
                  emitNode(parser, "oncomment", parser.comment);
                }
                parser.comment = "";
              } else {
                parser.comment += "-" + c;
                parser.state = S.COMMENT;
              }
              continue;
            case S.COMMENT_ENDED:
              if (c !== ">") {
                strictFail(parser, "Malformed comment");
                parser.comment += "--" + c;
                parser.state = S.COMMENT;
              } else {
                parser.state = S.TEXT;
              }
              continue;
            case S.CDATA:
              if (c === "]") {
                parser.state = S.CDATA_ENDING;
              } else {
                parser.cdata += c;
              }
              continue;
            case S.CDATA_ENDING:
              if (c === "]") {
                parser.state = S.CDATA_ENDING_2;
              } else {
                parser.cdata += "]" + c;
                parser.state = S.CDATA;
              }
              continue;
            case S.CDATA_ENDING_2:
              if (c === ">") {
                if (parser.cdata) {
                  emitNode(parser, "oncdata", parser.cdata);
                }
                emitNode(parser, "onclosecdata");
                parser.cdata = "";
                parser.state = S.TEXT;
              } else if (c === "]") {
                parser.cdata += "]";
              } else {
                parser.cdata += "]]" + c;
                parser.state = S.CDATA;
              }
              continue;
            case S.PROC_INST:
              if (c === "?") {
                parser.state = S.PROC_INST_ENDING;
              } else if (isWhitespace(c)) {
                parser.state = S.PROC_INST_BODY;
              } else {
                parser.procInstName += c;
              }
              continue;
            case S.PROC_INST_BODY:
              if (!parser.procInstBody && isWhitespace(c)) {
                continue;
              } else if (c === "?") {
                parser.state = S.PROC_INST_ENDING;
              } else {
                parser.procInstBody += c;
              }
              continue;
            case S.PROC_INST_ENDING:
              if (c === ">") {
                emitNode(parser, "onprocessinginstruction", {
                  name: parser.procInstName,
                  body: parser.procInstBody
                });
                parser.procInstName = parser.procInstBody = "";
                parser.state = S.TEXT;
              } else {
                parser.procInstBody += "?" + c;
                parser.state = S.PROC_INST_BODY;
              }
              continue;
            case S.OPEN_TAG:
              if (isMatch(nameBody, c)) {
                parser.tagName += c;
              } else {
                newTag(parser);
                if (c === ">") {
                  openTag(parser);
                } else if (c === "/") {
                  parser.state = S.OPEN_TAG_SLASH;
                } else {
                  if (!isWhitespace(c)) {
                    strictFail(parser, "Invalid character in tag name");
                  }
                  parser.state = S.ATTRIB;
                }
              }
              continue;
            case S.OPEN_TAG_SLASH:
              if (c === ">") {
                openTag(parser, true);
                closeTag(parser);
              } else {
                strictFail(parser, "Forward-slash in opening tag not followed by >");
                parser.state = S.ATTRIB;
              }
              continue;
            case S.ATTRIB:
              if (isWhitespace(c)) {
                continue;
              } else if (c === ">") {
                openTag(parser);
              } else if (c === "/") {
                parser.state = S.OPEN_TAG_SLASH;
              } else if (isMatch(nameStart, c)) {
                parser.attribName = c;
                parser.attribValue = "";
                parser.state = S.ATTRIB_NAME;
              } else {
                strictFail(parser, "Invalid attribute name");
              }
              continue;
            case S.ATTRIB_NAME:
              if (c === "=") {
                parser.state = S.ATTRIB_VALUE;
              } else if (c === ">") {
                strictFail(parser, "Attribute without value");
                parser.attribValue = parser.attribName;
                attrib(parser);
                openTag(parser);
              } else if (isWhitespace(c)) {
                parser.state = S.ATTRIB_NAME_SAW_WHITE;
              } else if (isMatch(nameBody, c)) {
                parser.attribName += c;
              } else {
                strictFail(parser, "Invalid attribute name");
              }
              continue;
            case S.ATTRIB_NAME_SAW_WHITE:
              if (c === "=") {
                parser.state = S.ATTRIB_VALUE;
              } else if (isWhitespace(c)) {
                continue;
              } else {
                strictFail(parser, "Attribute without value");
                parser.tag.attributes[parser.attribName] = "";
                parser.attribValue = "";
                emitNode(parser, "onattribute", {
                  name: parser.attribName,
                  value: ""
                });
                parser.attribName = "";
                if (c === ">") {
                  openTag(parser);
                } else if (isMatch(nameStart, c)) {
                  parser.attribName = c;
                  parser.state = S.ATTRIB_NAME;
                } else {
                  strictFail(parser, "Invalid attribute name");
                  parser.state = S.ATTRIB;
                }
              }
              continue;
            case S.ATTRIB_VALUE:
              if (isWhitespace(c)) {
                continue;
              } else if (isQuote(c)) {
                parser.q = c;
                parser.state = S.ATTRIB_VALUE_QUOTED;
              } else {
                strictFail(parser, "Unquoted attribute value");
                parser.state = S.ATTRIB_VALUE_UNQUOTED;
                parser.attribValue = c;
              }
              continue;
            case S.ATTRIB_VALUE_QUOTED:
              if (c !== parser.q) {
                if (c === "&") {
                  parser.state = S.ATTRIB_VALUE_ENTITY_Q;
                } else {
                  parser.attribValue += c;
                }
                continue;
              }
              attrib(parser);
              parser.q = "";
              parser.state = S.ATTRIB_VALUE_CLOSED;
              continue;
            case S.ATTRIB_VALUE_CLOSED:
              if (isWhitespace(c)) {
                parser.state = S.ATTRIB;
              } else if (c === ">") {
                openTag(parser);
              } else if (c === "/") {
                parser.state = S.OPEN_TAG_SLASH;
              } else if (isMatch(nameStart, c)) {
                strictFail(parser, "No whitespace between attributes");
                parser.attribName = c;
                parser.attribValue = "";
                parser.state = S.ATTRIB_NAME;
              } else {
                strictFail(parser, "Invalid attribute name");
              }
              continue;
            case S.ATTRIB_VALUE_UNQUOTED:
              if (!isAttribEnd(c)) {
                if (c === "&") {
                  parser.state = S.ATTRIB_VALUE_ENTITY_U;
                } else {
                  parser.attribValue += c;
                }
                continue;
              }
              attrib(parser);
              if (c === ">") {
                openTag(parser);
              } else {
                parser.state = S.ATTRIB;
              }
              continue;
            case S.CLOSE_TAG:
              if (!parser.tagName) {
                if (isWhitespace(c)) {
                  continue;
                } else if (notMatch(nameStart, c)) {
                  if (parser.script) {
                    parser.script += "</" + c;
                    parser.state = S.SCRIPT;
                  } else {
                    strictFail(parser, "Invalid tagname in closing tag.");
                  }
                } else {
                  parser.tagName = c;
                }
              } else if (c === ">") {
                closeTag(parser);
              } else if (isMatch(nameBody, c)) {
                parser.tagName += c;
              } else if (parser.script) {
                parser.script += "</" + parser.tagName;
                parser.tagName = "";
                parser.state = S.SCRIPT;
              } else {
                if (!isWhitespace(c)) {
                  strictFail(parser, "Invalid tagname in closing tag");
                }
                parser.state = S.CLOSE_TAG_SAW_WHITE;
              }
              continue;
            case S.CLOSE_TAG_SAW_WHITE:
              if (isWhitespace(c)) {
                continue;
              }
              if (c === ">") {
                closeTag(parser);
              } else {
                strictFail(parser, "Invalid characters in closing tag");
              }
              continue;
            case S.TEXT_ENTITY:
            case S.ATTRIB_VALUE_ENTITY_Q:
            case S.ATTRIB_VALUE_ENTITY_U:
              var returnState;
              var buffer;
              switch (parser.state) {
                case S.TEXT_ENTITY:
                  returnState = S.TEXT;
                  buffer = "textNode";
                  break;
                case S.ATTRIB_VALUE_ENTITY_Q:
                  returnState = S.ATTRIB_VALUE_QUOTED;
                  buffer = "attribValue";
                  break;
                case S.ATTRIB_VALUE_ENTITY_U:
                  returnState = S.ATTRIB_VALUE_UNQUOTED;
                  buffer = "attribValue";
                  break;
              }
              if (c === ";") {
                var parsedEntity = parseEntity(parser);
                if (parser.state === S.TEXT_ENTITY && !sax.ENTITIES[parser.entity] && parsedEntity !== "&" + parser.entity + ";") {
                  chunk = chunk.slice(0, i) + parsedEntity + chunk.slice(i);
                } else {
                  parser[buffer] += parsedEntity;
                }
                parser.entity = "";
                parser.state = returnState;
              } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {
                parser.entity += c;
              } else {
                strictFail(parser, "Invalid character in entity name");
                parser[buffer] += "&" + parser.entity + c;
                parser.entity = "";
                parser.state = returnState;
              }
              continue;
            default:
              throw new Error(parser, "Unknown state: " + parser.state);
          }
        }
        if (parser.position >= parser.bufferCheckPosition) {
          checkBufferLength(parser);
        }
        return parser;
      }
    })(typeof exports === "undefined" ? exports.sax = {} : exports);
  }
});

// src/svgo/plugins/_collections.js
var require_collections = __commonJS({
  "src/svgo/plugins/_collections.js"(exports) {
    "use strict";
    exports.elemsGroups = {
      animation: [
        "animate",
        "animateColor",
        "animateMotion",
        "animateTransform",
        "set"
      ],
      descriptive: ["desc", "metadata", "title"],
      shape: ["circle", "ellipse", "line", "path", "polygon", "polyline", "rect"],
      structural: ["defs", "g", "svg", "symbol", "use"],
      paintServer: [
        "solidColor",
        "linearGradient",
        "radialGradient",
        "meshGradient",
        "pattern",
        "hatch"
      ],
      nonRendering: [
        "linearGradient",
        "radialGradient",
        "pattern",
        "clipPath",
        "mask",
        "marker",
        "symbol",
        "filter",
        "solidColor"
      ],
      container: [
        "a",
        "defs",
        "g",
        "marker",
        "mask",
        "missing-glyph",
        "pattern",
        "svg",
        "switch",
        "symbol",
        "foreignObject"
      ],
      textContent: [
        "altGlyph",
        "altGlyphDef",
        "altGlyphItem",
        "glyph",
        "glyphRef",
        "textPath",
        "text",
        "tref",
        "tspan"
      ],
      textContentChild: ["altGlyph", "textPath", "tref", "tspan"],
      lightSource: [
        "feDiffuseLighting",
        "feSpecularLighting",
        "feDistantLight",
        "fePointLight",
        "feSpotLight"
      ],
      filterPrimitive: [
        "feBlend",
        "feColorMatrix",
        "feComponentTransfer",
        "feComposite",
        "feConvolveMatrix",
        "feDiffuseLighting",
        "feDisplacementMap",
        "feDropShadow",
        "feFlood",
        "feFuncA",
        "feFuncB",
        "feFuncG",
        "feFuncR",
        "feGaussianBlur",
        "feImage",
        "feMerge",
        "feMergeNode",
        "feMorphology",
        "feOffset",
        "feSpecularLighting",
        "feTile",
        "feTurbulence"
      ]
    };
    exports.textElems = exports.elemsGroups.textContent.concat("title");
    exports.pathElems = ["path", "glyph", "missing-glyph"];
    exports.attrsGroups = {
      animationAddition: ["additive", "accumulate"],
      animationAttributeTarget: ["attributeType", "attributeName"],
      animationEvent: ["onbegin", "onend", "onrepeat", "onload"],
      animationTiming: [
        "begin",
        "dur",
        "end",
        "min",
        "max",
        "restart",
        "repeatCount",
        "repeatDur",
        "fill"
      ],
      animationValue: [
        "calcMode",
        "values",
        "keyTimes",
        "keySplines",
        "from",
        "to",
        "by"
      ],
      conditionalProcessing: [
        "requiredFeatures",
        "requiredExtensions",
        "systemLanguage"
      ],
      core: ["id", "tabindex", "xml:base", "xml:lang", "xml:space"],
      graphicalEvent: [
        "onfocusin",
        "onfocusout",
        "onactivate",
        "onclick",
        "onmousedown",
        "onmouseup",
        "onmouseover",
        "onmousemove",
        "onmouseout",
        "onload"
      ],
      presentation: [
        "alignment-baseline",
        "baseline-shift",
        "clip",
        "clip-path",
        "clip-rule",
        "color",
        "color-interpolation",
        "color-interpolation-filters",
        "color-profile",
        "color-rendering",
        "cursor",
        "direction",
        "display",
        "dominant-baseline",
        "enable-background",
        "fill",
        "fill-opacity",
        "fill-rule",
        "filter",
        "flood-color",
        "flood-opacity",
        "font-family",
        "font-size",
        "font-size-adjust",
        "font-stretch",
        "font-style",
        "font-variant",
        "font-weight",
        "glyph-orientation-horizontal",
        "glyph-orientation-vertical",
        "image-rendering",
        "letter-spacing",
        "lighting-color",
        "marker-end",
        "marker-mid",
        "marker-start",
        "mask",
        "opacity",
        "overflow",
        "paint-order",
        "pointer-events",
        "shape-rendering",
        "stop-color",
        "stop-opacity",
        "stroke",
        "stroke-dasharray",
        "stroke-dashoffset",
        "stroke-linecap",
        "stroke-linejoin",
        "stroke-miterlimit",
        "stroke-opacity",
        "stroke-width",
        "text-anchor",
        "text-decoration",
        "text-overflow",
        "text-rendering",
        "transform",
        "transform-origin",
        "unicode-bidi",
        "vector-effect",
        "visibility",
        "word-spacing",
        "writing-mode"
      ],
      xlink: [
        "xlink:href",
        "xlink:show",
        "xlink:actuate",
        "xlink:type",
        "xlink:role",
        "xlink:arcrole",
        "xlink:title"
      ],
      documentEvent: [
        "onunload",
        "onabort",
        "onerror",
        "onresize",
        "onscroll",
        "onzoom"
      ],
      filterPrimitive: ["x", "y", "width", "height", "result"],
      transferFunction: [
        "type",
        "tableValues",
        "slope",
        "intercept",
        "amplitude",
        "exponent",
        "offset"
      ]
    };
    exports.attrsGroupsDefaults = {
      core: { "xml:space": "default" },
      presentation: {
        clip: "auto",
        "clip-path": "none",
        "clip-rule": "nonzero",
        mask: "none",
        opacity: "1",
        "stop-color": "#000",
        "stop-opacity": "1",
        "fill-opacity": "1",
        "fill-rule": "nonzero",
        fill: "#000",
        stroke: "none",
        "stroke-width": "1",
        "stroke-linecap": "butt",
        "stroke-linejoin": "miter",
        "stroke-miterlimit": "4",
        "stroke-dasharray": "none",
        "stroke-dashoffset": "0",
        "stroke-opacity": "1",
        "paint-order": "normal",
        "vector-effect": "none",
        display: "inline",
        visibility: "visible",
        "marker-start": "none",
        "marker-mid": "none",
        "marker-end": "none",
        "color-interpolation": "sRGB",
        "color-interpolation-filters": "linearRGB",
        "color-rendering": "auto",
        "shape-rendering": "auto",
        "text-rendering": "auto",
        "image-rendering": "auto",
        "font-style": "normal",
        "font-variant": "normal",
        "font-weight": "normal",
        "font-stretch": "normal",
        "font-size": "medium",
        "font-size-adjust": "none",
        kerning: "auto",
        "letter-spacing": "normal",
        "word-spacing": "normal",
        "text-decoration": "none",
        "text-anchor": "start",
        "text-overflow": "clip",
        "writing-mode": "lr-tb",
        "glyph-orientation-vertical": "auto",
        "glyph-orientation-horizontal": "0deg",
        direction: "ltr",
        "unicode-bidi": "normal",
        "dominant-baseline": "auto",
        "alignment-baseline": "baseline",
        "baseline-shift": "baseline"
      },
      transferFunction: {
        slope: "1",
        intercept: "0",
        amplitude: "1",
        exponent: "1",
        offset: "0"
      }
    };
    exports.elems = {
      a: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation",
          "xlink"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "target"
        ],
        defaults: {
          target: "_self"
        },
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view",
          // not spec compliant
          "tspan"
        ]
      },
      altGlyph: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation",
          "xlink"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "x",
          "y",
          "dx",
          "dy",
          "glyphRef",
          "format",
          "rotate"
        ]
      },
      altGlyphDef: {
        attrsGroups: ["core"],
        content: ["glyphRef"]
      },
      altGlyphItem: {
        attrsGroups: ["core"],
        content: ["glyphRef", "altGlyphItem"]
      },
      animate: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "animationAddition",
          "animationAttributeTarget",
          "animationEvent",
          "animationTiming",
          "animationValue",
          "presentation",
          "xlink"
        ],
        attrs: ["externalResourcesRequired"],
        contentGroups: ["descriptive"]
      },
      animateColor: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "animationEvent",
          "xlink",
          "animationAttributeTarget",
          "animationTiming",
          "animationValue",
          "animationAddition",
          "presentation"
        ],
        attrs: ["externalResourcesRequired"],
        contentGroups: ["descriptive"]
      },
      animateMotion: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "animationEvent",
          "xlink",
          "animationTiming",
          "animationValue",
          "animationAddition"
        ],
        attrs: [
          "externalResourcesRequired",
          "path",
          "keyPoints",
          "rotate",
          "origin"
        ],
        defaults: {
          rotate: "0"
        },
        contentGroups: ["descriptive"],
        content: ["mpath"]
      },
      animateTransform: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "animationEvent",
          "xlink",
          "animationAttributeTarget",
          "animationTiming",
          "animationValue",
          "animationAddition"
        ],
        attrs: ["externalResourcesRequired", "type"],
        contentGroups: ["descriptive"]
      },
      circle: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "cx",
          "cy",
          "r"
        ],
        defaults: {
          cx: "0",
          cy: "0"
        },
        contentGroups: ["animation", "descriptive"]
      },
      clipPath: {
        attrsGroups: ["conditionalProcessing", "core", "presentation"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "clipPathUnits"
        ],
        defaults: {
          clipPathUnits: "userSpaceOnUse"
        },
        contentGroups: ["animation", "descriptive", "shape"],
        content: ["text", "use"]
      },
      "color-profile": {
        attrsGroups: ["core", "xlink"],
        attrs: ["local", "name", "rendering-intent"],
        defaults: {
          name: "sRGB",
          "rendering-intent": "auto"
        },
        contentGroups: ["descriptive"]
      },
      cursor: {
        attrsGroups: ["core", "conditionalProcessing", "xlink"],
        attrs: ["externalResourcesRequired", "x", "y"],
        defaults: {
          x: "0",
          y: "0"
        },
        contentGroups: ["descriptive"]
      },
      defs: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: ["class", "style", "externalResourcesRequired", "transform"],
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      desc: {
        attrsGroups: ["core"],
        attrs: ["class", "style"]
      },
      ellipse: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "cx",
          "cy",
          "rx",
          "ry"
        ],
        defaults: {
          cx: "0",
          cy: "0"
        },
        contentGroups: ["animation", "descriptive"]
      },
      feBlend: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: [
          "class",
          "style",
          // TODO: in - 'If no value is provided and this is the first filter primitive,
          // then this filter primitive will use SourceGraphic as its input'
          "in",
          "in2",
          "mode"
        ],
        defaults: {
          mode: "normal"
        },
        content: ["animate", "set"]
      },
      feColorMatrix: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: ["class", "style", "in", "type", "values"],
        defaults: {
          type: "matrix"
        },
        content: ["animate", "set"]
      },
      feComponentTransfer: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: ["class", "style", "in"],
        content: ["feFuncA", "feFuncB", "feFuncG", "feFuncR"]
      },
      feComposite: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: ["class", "style", "in", "in2", "operator", "k1", "k2", "k3", "k4"],
        defaults: {
          operator: "over",
          k1: "0",
          k2: "0",
          k3: "0",
          k4: "0"
        },
        content: ["animate", "set"]
      },
      feConvolveMatrix: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: [
          "class",
          "style",
          "in",
          "order",
          "kernelMatrix",
          // TODO: divisor - 'The default value is the sum of all values in kernelMatrix,
          // with the exception that if the sum is zero, then the divisor is set to 1'
          "divisor",
          "bias",
          // TODO: targetX - 'By default, the convolution matrix is centered in X over each
          // pixel of the input image (i.e., targetX = floor ( orderX / 2 ))'
          "targetX",
          "targetY",
          "edgeMode",
          // TODO: kernelUnitLength - 'The first number is the <dx> value. The second number
          // is the <dy> value. If the <dy> value is not specified, it defaults to the same value as <dx>'
          "kernelUnitLength",
          "preserveAlpha"
        ],
        defaults: {
          order: "3",
          bias: "0",
          edgeMode: "duplicate",
          preserveAlpha: "false"
        },
        content: ["animate", "set"]
      },
      feDiffuseLighting: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: [
          "class",
          "style",
          "in",
          "surfaceScale",
          "diffuseConstant",
          "kernelUnitLength"
        ],
        defaults: {
          surfaceScale: "1",
          diffuseConstant: "1"
        },
        contentGroups: ["descriptive"],
        content: [
          // TODO: 'exactly one light source element, in any order'
          "feDistantLight",
          "fePointLight",
          "feSpotLight"
        ]
      },
      feDisplacementMap: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: [
          "class",
          "style",
          "in",
          "in2",
          "scale",
          "xChannelSelector",
          "yChannelSelector"
        ],
        defaults: {
          scale: "0",
          xChannelSelector: "A",
          yChannelSelector: "A"
        },
        content: ["animate", "set"]
      },
      feDistantLight: {
        attrsGroups: ["core"],
        attrs: ["azimuth", "elevation"],
        defaults: {
          azimuth: "0",
          elevation: "0"
        },
        content: ["animate", "set"]
      },
      feFlood: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: ["class", "style"],
        content: ["animate", "animateColor", "set"]
      },
      feFuncA: {
        attrsGroups: ["core", "transferFunction"],
        content: ["set", "animate"]
      },
      feFuncB: {
        attrsGroups: ["core", "transferFunction"],
        content: ["set", "animate"]
      },
      feFuncG: {
        attrsGroups: ["core", "transferFunction"],
        content: ["set", "animate"]
      },
      feFuncR: {
        attrsGroups: ["core", "transferFunction"],
        content: ["set", "animate"]
      },
      feGaussianBlur: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: ["class", "style", "in", "stdDeviation"],
        defaults: {
          stdDeviation: "0"
        },
        content: ["set", "animate"]
      },
      feImage: {
        attrsGroups: ["core", "presentation", "filterPrimitive", "xlink"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "preserveAspectRatio",
          "href",
          "xlink:href"
        ],
        defaults: {
          preserveAspectRatio: "xMidYMid meet"
        },
        content: ["animate", "animateTransform", "set"]
      },
      feMerge: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: ["class", "style"],
        content: ["feMergeNode"]
      },
      feMergeNode: {
        attrsGroups: ["core"],
        attrs: ["in"],
        content: ["animate", "set"]
      },
      feMorphology: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: ["class", "style", "in", "operator", "radius"],
        defaults: {
          operator: "erode",
          radius: "0"
        },
        content: ["animate", "set"]
      },
      feOffset: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: ["class", "style", "in", "dx", "dy"],
        defaults: {
          dx: "0",
          dy: "0"
        },
        content: ["animate", "set"]
      },
      fePointLight: {
        attrsGroups: ["core"],
        attrs: ["x", "y", "z"],
        defaults: {
          x: "0",
          y: "0",
          z: "0"
        },
        content: ["animate", "set"]
      },
      feSpecularLighting: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: [
          "class",
          "style",
          "in",
          "surfaceScale",
          "specularConstant",
          "specularExponent",
          "kernelUnitLength"
        ],
        defaults: {
          surfaceScale: "1",
          specularConstant: "1",
          specularExponent: "1"
        },
        contentGroups: [
          "descriptive",
          // TODO: exactly one 'light source element'
          "lightSource"
        ]
      },
      feSpotLight: {
        attrsGroups: ["core"],
        attrs: [
          "x",
          "y",
          "z",
          "pointsAtX",
          "pointsAtY",
          "pointsAtZ",
          "specularExponent",
          "limitingConeAngle"
        ],
        defaults: {
          x: "0",
          y: "0",
          z: "0",
          pointsAtX: "0",
          pointsAtY: "0",
          pointsAtZ: "0",
          specularExponent: "1"
        },
        content: ["animate", "set"]
      },
      feTile: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: ["class", "style", "in"],
        content: ["animate", "set"]
      },
      feTurbulence: {
        attrsGroups: ["core", "presentation", "filterPrimitive"],
        attrs: [
          "class",
          "style",
          "baseFrequency",
          "numOctaves",
          "seed",
          "stitchTiles",
          "type"
        ],
        defaults: {
          baseFrequency: "0",
          numOctaves: "1",
          seed: "0",
          stitchTiles: "noStitch",
          type: "turbulence"
        },
        content: ["animate", "set"]
      },
      filter: {
        attrsGroups: ["core", "presentation", "xlink"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "x",
          "y",
          "width",
          "height",
          "filterRes",
          "filterUnits",
          "primitiveUnits",
          "href",
          "xlink:href"
        ],
        defaults: {
          primitiveUnits: "userSpaceOnUse",
          x: "-10%",
          y: "-10%",
          width: "120%",
          height: "120%"
        },
        contentGroups: ["descriptive", "filterPrimitive"],
        content: ["animate", "set"]
      },
      font: {
        attrsGroups: ["core", "presentation"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "horiz-origin-x",
          "horiz-origin-y",
          "horiz-adv-x",
          "vert-origin-x",
          "vert-origin-y",
          "vert-adv-y"
        ],
        defaults: {
          "horiz-origin-x": "0",
          "horiz-origin-y": "0"
        },
        contentGroups: ["descriptive"],
        content: ["font-face", "glyph", "hkern", "missing-glyph", "vkern"]
      },
      "font-face": {
        attrsGroups: ["core"],
        attrs: [
          "font-family",
          "font-style",
          "font-variant",
          "font-weight",
          "font-stretch",
          "font-size",
          "unicode-range",
          "units-per-em",
          "panose-1",
          "stemv",
          "stemh",
          "slope",
          "cap-height",
          "x-height",
          "accent-height",
          "ascent",
          "descent",
          "widths",
          "bbox",
          "ideographic",
          "alphabetic",
          "mathematical",
          "hanging",
          "v-ideographic",
          "v-alphabetic",
          "v-mathematical",
          "v-hanging",
          "underline-position",
          "underline-thickness",
          "strikethrough-position",
          "strikethrough-thickness",
          "overline-position",
          "overline-thickness"
        ],
        defaults: {
          "font-style": "all",
          "font-variant": "normal",
          "font-weight": "all",
          "font-stretch": "normal",
          "unicode-range": "U+0-10FFFF",
          "units-per-em": "1000",
          "panose-1": "0 0 0 0 0 0 0 0 0 0",
          slope: "0"
        },
        contentGroups: ["descriptive"],
        content: [
          // TODO: "at most one 'font-face-src' element"
          "font-face-src"
        ]
      },
      // TODO: empty content
      "font-face-format": {
        attrsGroups: ["core"],
        attrs: ["string"]
      },
      "font-face-name": {
        attrsGroups: ["core"],
        attrs: ["name"]
      },
      "font-face-src": {
        attrsGroups: ["core"],
        content: ["font-face-name", "font-face-uri"]
      },
      "font-face-uri": {
        attrsGroups: ["core", "xlink"],
        attrs: ["href", "xlink:href"],
        content: ["font-face-format"]
      },
      foreignObject: {
        attrsGroups: [
          "core",
          "conditionalProcessing",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "x",
          "y",
          "width",
          "height"
        ],
        defaults: {
          x: "0",
          y: "0"
        }
      },
      g: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: ["class", "style", "externalResourcesRequired", "transform"],
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      glyph: {
        attrsGroups: ["core", "presentation"],
        attrs: [
          "class",
          "style",
          "d",
          "horiz-adv-x",
          "vert-origin-x",
          "vert-origin-y",
          "vert-adv-y",
          "unicode",
          "glyph-name",
          "orientation",
          "arabic-form",
          "lang"
        ],
        defaults: {
          "arabic-form": "initial"
        },
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      glyphRef: {
        attrsGroups: ["core", "presentation"],
        attrs: [
          "class",
          "style",
          "d",
          "horiz-adv-x",
          "vert-origin-x",
          "vert-origin-y",
          "vert-adv-y"
        ],
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      hatch: {
        attrsGroups: ["core", "presentation", "xlink"],
        attrs: [
          "class",
          "style",
          "x",
          "y",
          "pitch",
          "rotate",
          "hatchUnits",
          "hatchContentUnits",
          "transform"
        ],
        defaults: {
          hatchUnits: "objectBoundingBox",
          hatchContentUnits: "userSpaceOnUse",
          x: "0",
          y: "0",
          pitch: "0",
          rotate: "0"
        },
        contentGroups: ["animation", "descriptive"],
        content: ["hatchPath"]
      },
      hatchPath: {
        attrsGroups: ["core", "presentation", "xlink"],
        attrs: ["class", "style", "d", "offset"],
        defaults: {
          offset: "0"
        },
        contentGroups: ["animation", "descriptive"]
      },
      hkern: {
        attrsGroups: ["core"],
        attrs: ["u1", "g1", "u2", "g2", "k"]
      },
      image: {
        attrsGroups: [
          "core",
          "conditionalProcessing",
          "graphicalEvent",
          "xlink",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "preserveAspectRatio",
          "transform",
          "x",
          "y",
          "width",
          "height",
          "href",
          "xlink:href"
        ],
        defaults: {
          x: "0",
          y: "0",
          preserveAspectRatio: "xMidYMid meet"
        },
        contentGroups: ["animation", "descriptive"]
      },
      line: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "x1",
          "y1",
          "x2",
          "y2"
        ],
        defaults: {
          x1: "0",
          y1: "0",
          x2: "0",
          y2: "0"
        },
        contentGroups: ["animation", "descriptive"]
      },
      linearGradient: {
        attrsGroups: ["core", "presentation", "xlink"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "x1",
          "y1",
          "x2",
          "y2",
          "gradientUnits",
          "gradientTransform",
          "spreadMethod",
          "href",
          "xlink:href"
        ],
        defaults: {
          x1: "0",
          y1: "0",
          x2: "100%",
          y2: "0",
          spreadMethod: "pad"
        },
        contentGroups: ["descriptive"],
        content: ["animate", "animateTransform", "set", "stop"]
      },
      marker: {
        attrsGroups: ["core", "presentation"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "viewBox",
          "preserveAspectRatio",
          "refX",
          "refY",
          "markerUnits",
          "markerWidth",
          "markerHeight",
          "orient"
        ],
        defaults: {
          markerUnits: "strokeWidth",
          refX: "0",
          refY: "0",
          markerWidth: "3",
          markerHeight: "3"
        },
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      mask: {
        attrsGroups: ["conditionalProcessing", "core", "presentation"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "x",
          "y",
          "width",
          "height",
          "mask-type",
          "maskUnits",
          "maskContentUnits"
        ],
        defaults: {
          maskUnits: "objectBoundingBox",
          maskContentUnits: "userSpaceOnUse",
          x: "-10%",
          y: "-10%",
          width: "120%",
          height: "120%"
        },
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      metadata: {
        attrsGroups: ["core"]
      },
      "missing-glyph": {
        attrsGroups: ["core", "presentation"],
        attrs: [
          "class",
          "style",
          "d",
          "horiz-adv-x",
          "vert-origin-x",
          "vert-origin-y",
          "vert-adv-y"
        ],
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      mpath: {
        attrsGroups: ["core", "xlink"],
        attrs: ["externalResourcesRequired", "href", "xlink:href"],
        contentGroups: ["descriptive"]
      },
      path: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "d",
          "pathLength"
        ],
        contentGroups: ["animation", "descriptive"]
      },
      pattern: {
        attrsGroups: ["conditionalProcessing", "core", "presentation", "xlink"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "viewBox",
          "preserveAspectRatio",
          "x",
          "y",
          "width",
          "height",
          "patternUnits",
          "patternContentUnits",
          "patternTransform",
          "href",
          "xlink:href"
        ],
        defaults: {
          patternUnits: "objectBoundingBox",
          patternContentUnits: "userSpaceOnUse",
          x: "0",
          y: "0",
          width: "0",
          height: "0",
          preserveAspectRatio: "xMidYMid meet"
        },
        contentGroups: [
          "animation",
          "descriptive",
          "paintServer",
          "shape",
          "structural"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      polygon: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "points"
        ],
        contentGroups: ["animation", "descriptive"]
      },
      polyline: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "points"
        ],
        contentGroups: ["animation", "descriptive"]
      },
      radialGradient: {
        attrsGroups: ["core", "presentation", "xlink"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "cx",
          "cy",
          "r",
          "fx",
          "fy",
          "fr",
          "gradientUnits",
          "gradientTransform",
          "spreadMethod",
          "href",
          "xlink:href"
        ],
        defaults: {
          gradientUnits: "objectBoundingBox",
          cx: "50%",
          cy: "50%",
          r: "50%"
        },
        contentGroups: ["descriptive"],
        content: ["animate", "animateTransform", "set", "stop"]
      },
      meshGradient: {
        attrsGroups: ["core", "presentation", "xlink"],
        attrs: ["class", "style", "x", "y", "gradientUnits", "transform"],
        contentGroups: ["descriptive", "paintServer", "animation"],
        content: ["meshRow"]
      },
      meshRow: {
        attrsGroups: ["core", "presentation"],
        attrs: ["class", "style"],
        contentGroups: ["descriptive"],
        content: ["meshPatch"]
      },
      meshPatch: {
        attrsGroups: ["core", "presentation"],
        attrs: ["class", "style"],
        contentGroups: ["descriptive"],
        content: ["stop"]
      },
      rect: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "x",
          "y",
          "width",
          "height",
          "rx",
          "ry"
        ],
        defaults: {
          x: "0",
          y: "0"
        },
        contentGroups: ["animation", "descriptive"]
      },
      script: {
        attrsGroups: ["core", "xlink"],
        attrs: ["externalResourcesRequired", "type", "href", "xlink:href"]
      },
      set: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "animation",
          "xlink",
          "animationAttributeTarget",
          "animationTiming"
        ],
        attrs: ["externalResourcesRequired", "to"],
        contentGroups: ["descriptive"]
      },
      solidColor: {
        attrsGroups: ["core", "presentation"],
        attrs: ["class", "style"],
        contentGroups: ["paintServer"]
      },
      stop: {
        attrsGroups: ["core", "presentation"],
        attrs: ["class", "style", "offset", "path"],
        content: ["animate", "animateColor", "set"]
      },
      style: {
        attrsGroups: ["core"],
        attrs: ["type", "media", "title"],
        defaults: {
          type: "text/css"
        }
      },
      svg: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "documentEvent",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "x",
          "y",
          "width",
          "height",
          "viewBox",
          "preserveAspectRatio",
          "zoomAndPan",
          "version",
          "baseProfile",
          "contentScriptType",
          "contentStyleType"
        ],
        defaults: {
          x: "0",
          y: "0",
          width: "100%",
          height: "100%",
          preserveAspectRatio: "xMidYMid meet",
          zoomAndPan: "magnify",
          version: "1.1",
          baseProfile: "none",
          contentScriptType: "application/ecmascript",
          contentStyleType: "text/css"
        },
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      switch: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: ["class", "style", "externalResourcesRequired", "transform"],
        contentGroups: ["animation", "descriptive", "shape"],
        content: [
          "a",
          "foreignObject",
          "g",
          "image",
          "svg",
          "switch",
          "text",
          "use"
        ]
      },
      symbol: {
        attrsGroups: ["core", "graphicalEvent", "presentation"],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "preserveAspectRatio",
          "viewBox",
          "refX",
          "refY"
        ],
        defaults: {
          refX: "0",
          refY: "0"
        },
        contentGroups: [
          "animation",
          "descriptive",
          "shape",
          "structural",
          "paintServer"
        ],
        content: [
          "a",
          "altGlyphDef",
          "clipPath",
          "color-profile",
          "cursor",
          "filter",
          "font",
          "font-face",
          "foreignObject",
          "image",
          "marker",
          "mask",
          "pattern",
          "script",
          "style",
          "switch",
          "text",
          "view"
        ]
      },
      text: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "lengthAdjust",
          "x",
          "y",
          "dx",
          "dy",
          "rotate",
          "textLength"
        ],
        defaults: {
          x: "0",
          y: "0",
          lengthAdjust: "spacing"
        },
        contentGroups: ["animation", "descriptive", "textContentChild"],
        content: ["a"]
      },
      textPath: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation",
          "xlink"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "href",
          "xlink:href",
          "startOffset",
          "method",
          "spacing",
          "d"
        ],
        defaults: {
          startOffset: "0",
          method: "align",
          spacing: "exact"
        },
        contentGroups: ["descriptive"],
        content: [
          "a",
          "altGlyph",
          "animate",
          "animateColor",
          "set",
          "tref",
          "tspan"
        ]
      },
      title: {
        attrsGroups: ["core"],
        attrs: ["class", "style"]
      },
      tref: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation",
          "xlink"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "href",
          "xlink:href"
        ],
        contentGroups: ["descriptive"],
        content: ["animate", "animateColor", "set"]
      },
      tspan: {
        attrsGroups: [
          "conditionalProcessing",
          "core",
          "graphicalEvent",
          "presentation"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "x",
          "y",
          "dx",
          "dy",
          "rotate",
          "textLength",
          "lengthAdjust"
        ],
        contentGroups: ["descriptive"],
        content: [
          "a",
          "altGlyph",
          "animate",
          "animateColor",
          "set",
          "tref",
          "tspan"
        ]
      },
      use: {
        attrsGroups: [
          "core",
          "conditionalProcessing",
          "graphicalEvent",
          "presentation",
          "xlink"
        ],
        attrs: [
          "class",
          "style",
          "externalResourcesRequired",
          "transform",
          "x",
          "y",
          "width",
          "height",
          "href",
          "xlink:href"
        ],
        defaults: {
          x: "0",
          y: "0"
        },
        contentGroups: ["animation", "descriptive"]
      },
      view: {
        attrsGroups: ["core"],
        attrs: [
          "externalResourcesRequired",
          "viewBox",
          "preserveAspectRatio",
          "zoomAndPan",
          "viewTarget"
        ],
        contentGroups: ["descriptive"]
      },
      vkern: {
        attrsGroups: ["core"],
        attrs: ["u1", "g1", "u2", "g2", "k"]
      }
    };
    exports.editorNamespaces = [
      "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd",
      "http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd",
      "http://www.inkscape.org/namespaces/inkscape",
      "http://www.bohemiancoding.com/sketch/ns",
      "http://ns.adobe.com/AdobeIllustrator/10.0/",
      "http://ns.adobe.com/Graphs/1.0/",
      "http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/",
      "http://ns.adobe.com/Variables/1.0/",
      "http://ns.adobe.com/SaveForWeb/1.0/",
      "http://ns.adobe.com/Extensibility/1.0/",
      "http://ns.adobe.com/Flows/1.0/",
      "http://ns.adobe.com/ImageReplacement/1.0/",
      "http://ns.adobe.com/GenericCustomNamespace/1.0/",
      "http://ns.adobe.com/XPath/1.0/",
      "http://schemas.microsoft.com/visio/2003/SVGExtensions/",
      "http://taptrix.com/vectorillustrator/svg_extensions",
      "http://www.figma.com/figma/ns",
      "http://purl.org/dc/elements/1.1/",
      "http://creativecommons.org/ns#",
      "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
      "http://www.serif.com/",
      "http://www.vector.evaxdesign.sk"
    ];
    exports.referencesProps = [
      "clip-path",
      "color-profile",
      "fill",
      "filter",
      "marker-start",
      "marker-mid",
      "marker-end",
      "mask",
      "stroke",
      "style"
    ];
    exports.inheritableAttrs = [
      "clip-rule",
      "color",
      "color-interpolation",
      "color-interpolation-filters",
      "color-profile",
      "color-rendering",
      "cursor",
      "direction",
      "dominant-baseline",
      "fill",
      "fill-opacity",
      "fill-rule",
      "font",
      "font-family",
      "font-size",
      "font-size-adjust",
      "font-stretch",
      "font-style",
      "font-variant",
      "font-weight",
      "glyph-orientation-horizontal",
      "glyph-orientation-vertical",
      "image-rendering",
      "letter-spacing",
      "marker",
      "marker-end",
      "marker-mid",
      "marker-start",
      "paint-order",
      "pointer-events",
      "shape-rendering",
      "stroke",
      "stroke-dasharray",
      "stroke-dashoffset",
      "stroke-linecap",
      "stroke-linejoin",
      "stroke-miterlimit",
      "stroke-opacity",
      "stroke-width",
      "text-anchor",
      "text-rendering",
      "transform",
      "visibility",
      "word-spacing",
      "writing-mode"
    ];
    exports.presentationNonInheritableGroupAttrs = [
      "display",
      "clip-path",
      "filter",
      "mask",
      "opacity",
      "text-decoration",
      "transform",
      "unicode-bidi"
    ];
    exports.colorsNames = {
      aliceblue: "#f0f8ff",
      antiquewhite: "#faebd7",
      aqua: "#0ff",
      aquamarine: "#7fffd4",
      azure: "#f0ffff",
      beige: "#f5f5dc",
      bisque: "#ffe4c4",
      black: "#000",
      blanchedalmond: "#ffebcd",
      blue: "#00f",
      blueviolet: "#8a2be2",
      brown: "#a52a2a",
      burlywood: "#deb887",
      cadetblue: "#5f9ea0",
      chartreuse: "#7fff00",
      chocolate: "#d2691e",
      coral: "#ff7f50",
      cornflowerblue: "#6495ed",
      cornsilk: "#fff8dc",
      crimson: "#dc143c",
      cyan: "#0ff",
      darkblue: "#00008b",
      darkcyan: "#008b8b",
      darkgoldenrod: "#b8860b",
      darkgray: "#a9a9a9",
      darkgreen: "#006400",
      darkgrey: "#a9a9a9",
      darkkhaki: "#bdb76b",
      darkmagenta: "#8b008b",
      darkolivegreen: "#556b2f",
      darkorange: "#ff8c00",
      darkorchid: "#9932cc",
      darkred: "#8b0000",
      darksalmon: "#e9967a",
      darkseagreen: "#8fbc8f",
      darkslateblue: "#483d8b",
      darkslategray: "#2f4f4f",
      darkslategrey: "#2f4f4f",
      darkturquoise: "#00ced1",
      darkviolet: "#9400d3",
      deeppink: "#ff1493",
      deepskyblue: "#00bfff",
      dimgray: "#696969",
      dimgrey: "#696969",
      dodgerblue: "#1e90ff",
      firebrick: "#b22222",
      floralwhite: "#fffaf0",
      forestgreen: "#228b22",
      fuchsia: "#f0f",
      gainsboro: "#dcdcdc",
      ghostwhite: "#f8f8ff",
      gold: "#ffd700",
      goldenrod: "#daa520",
      gray: "#808080",
      green: "#008000",
      greenyellow: "#adff2f",
      grey: "#808080",
      honeydew: "#f0fff0",
      hotpink: "#ff69b4",
      indianred: "#cd5c5c",
      indigo: "#4b0082",
      ivory: "#fffff0",
      khaki: "#f0e68c",
      lavender: "#e6e6fa",
      lavenderblush: "#fff0f5",
      lawngreen: "#7cfc00",
      lemonchiffon: "#fffacd",
      lightblue: "#add8e6",
      lightcoral: "#f08080",
      lightcyan: "#e0ffff",
      lightgoldenrodyellow: "#fafad2",
      lightgray: "#d3d3d3",
      lightgreen: "#90ee90",
      lightgrey: "#d3d3d3",
      lightpink: "#ffb6c1",
      lightsalmon: "#ffa07a",
      lightseagreen: "#20b2aa",
      lightskyblue: "#87cefa",
      lightslategray: "#789",
      lightslategrey: "#789",
      lightsteelblue: "#b0c4de",
      lightyellow: "#ffffe0",
      lime: "#0f0",
      limegreen: "#32cd32",
      linen: "#faf0e6",
      magenta: "#f0f",
      maroon: "#800000",
      mediumaquamarine: "#66cdaa",
      mediumblue: "#0000cd",
      mediumorchid: "#ba55d3",
      mediumpurple: "#9370db",
      mediumseagreen: "#3cb371",
      mediumslateblue: "#7b68ee",
      mediumspringgreen: "#00fa9a",
      mediumturquoise: "#48d1cc",
      mediumvioletred: "#c71585",
      midnightblue: "#191970",
      mintcream: "#f5fffa",
      mistyrose: "#ffe4e1",
      moccasin: "#ffe4b5",
      navajowhite: "#ffdead",
      navy: "#000080",
      oldlace: "#fdf5e6",
      olive: "#808000",
      olivedrab: "#6b8e23",
      orange: "#ffa500",
      orangered: "#ff4500",
      orchid: "#da70d6",
      palegoldenrod: "#eee8aa",
      palegreen: "#98fb98",
      paleturquoise: "#afeeee",
      palevioletred: "#db7093",
      papayawhip: "#ffefd5",
      peachpuff: "#ffdab9",
      peru: "#cd853f",
      pink: "#ffc0cb",
      plum: "#dda0dd",
      powderblue: "#b0e0e6",
      purple: "#800080",
      rebeccapurple: "#639",
      red: "#f00",
      rosybrown: "#bc8f8f",
      royalblue: "#4169e1",
      saddlebrown: "#8b4513",
      salmon: "#fa8072",
      sandybrown: "#f4a460",
      seagreen: "#2e8b57",
      seashell: "#fff5ee",
      sienna: "#a0522d",
      silver: "#c0c0c0",
      skyblue: "#87ceeb",
      slateblue: "#6a5acd",
      slategray: "#708090",
      slategrey: "#708090",
      snow: "#fffafa",
      springgreen: "#00ff7f",
      steelblue: "#4682b4",
      tan: "#d2b48c",
      teal: "#008080",
      thistle: "#d8bfd8",
      tomato: "#ff6347",
      turquoise: "#40e0d0",
      violet: "#ee82ee",
      wheat: "#f5deb3",
      white: "#fff",
      whitesmoke: "#f5f5f5",
      yellow: "#ff0",
      yellowgreen: "#9acd32"
    };
    exports.colorsShortNames = {
      "#f0ffff": "azure",
      "#f5f5dc": "beige",
      "#ffe4c4": "bisque",
      "#a52a2a": "brown",
      "#ff7f50": "coral",
      "#ffd700": "gold",
      "#808080": "gray",
      "#008000": "green",
      "#4b0082": "indigo",
      "#fffff0": "ivory",
      "#f0e68c": "khaki",
      "#faf0e6": "linen",
      "#800000": "maroon",
      "#000080": "navy",
      "#808000": "olive",
      "#ffa500": "orange",
      "#da70d6": "orchid",
      "#cd853f": "peru",
      "#ffc0cb": "pink",
      "#dda0dd": "plum",
      "#800080": "purple",
      "#f00": "red",
      "#ff0000": "red",
      "#fa8072": "salmon",
      "#a0522d": "sienna",
      "#c0c0c0": "silver",
      "#fffafa": "snow",
      "#d2b48c": "tan",
      "#008080": "teal",
      "#ff6347": "tomato",
      "#ee82ee": "violet",
      "#f5deb3": "wheat"
    };
    exports.colorsProps = [
      "color",
      "fill",
      "stroke",
      "stop-color",
      "flood-color",
      "lighting-color"
    ];
  }
});

// src/svgo/parser.js
var require_parser = __commonJS({
  "src/svgo/parser.js"(exports) {
    "use strict";
    var SAX = require_sax();
    var { textElems } = require_collections();
    var SvgoParserError = class _SvgoParserError extends Error {
      /**
       * @param message {string}
       * @param line {number}
       * @param column {number}
       * @param source {string}
       * @param file {void | string}
       */
      constructor(message, line, column, source, file) {
        super(message);
        this.name = "SvgoParserError";
        this.message = `${file || "<input>"}:${line}:${column}: ${message}`;
        this.reason = message;
        this.line = line;
        this.column = column;
        this.source = source;
        if (Error.captureStackTrace) {
          Error.captureStackTrace(this, _SvgoParserError);
        }
      }
      toString() {
        const lines = this.source.split(/\r?\n/);
        const startLine = Math.max(this.line - 3, 0);
        const endLine = Math.min(this.line + 2, lines.length);
        const lineNumberWidth = String(endLine).length;
        const startColumn = Math.max(this.column - 54, 0);
        const endColumn = Math.max(this.column + 20, 80);
        const code = lines.slice(startLine, endLine).map((line, index) => {
          const lineSlice = line.slice(startColumn, endColumn);
          let ellipsisPrefix = "";
          let ellipsisSuffix = "";
          if (startColumn !== 0) {
            ellipsisPrefix = startColumn > line.length - 1 ? " " : "\u2026";
          }
          if (endColumn < line.length - 1) {
            ellipsisSuffix = "\u2026";
          }
          const number = startLine + 1 + index;
          const gutter = ` ${number.toString().padStart(lineNumberWidth)} | `;
          if (number === this.line) {
            const gutterSpacing = gutter.replace(/[^|]/g, " ");
            const lineSpacing = (ellipsisPrefix + line.slice(startColumn, this.column - 1)).replace(/[^\t]/g, " ");
            const spacing = gutterSpacing + lineSpacing;
            return `>${gutter}${ellipsisPrefix}${lineSlice}${ellipsisSuffix}
 ${spacing}^`;
          }
          return ` ${gutter}${ellipsisPrefix}${lineSlice}${ellipsisSuffix}`;
        }).join("\n");
        return `${this.name}: ${this.message}

${code}
`;
      }
    };
    var entityDeclaration = /<!ENTITY\s+(\S+)\s+(?:'([^']+)'|"([^"]+)")\s*>/g;
    var config = {
      strict: true,
      trim: false,
      normalize: false,
      lowercase: true,
      xmlns: true,
      position: true
    };
    var parseSvg = (data, from) => {
      const sax = SAX.parser(config.strict, config);
      const root = { type: "root", children: [] };
      let current = root;
      const stack = [root];
      const pushToContent = (node) => {
        Object.defineProperty(node, "parentNode", {
          writable: true,
          value: current
        });
        current.children.push(node);
      };
      sax.ondoctype = (doctype) => {
        const node = {
          type: "doctype",
          // TODO parse doctype for name, public and system to match xast
          name: "svg",
          data: {
            doctype
          }
        };
        pushToContent(node);
        const subsetStart = doctype.indexOf("[");
        if (subsetStart >= 0) {
          entityDeclaration.lastIndex = subsetStart;
          let entityMatch = entityDeclaration.exec(data);
          while (entityMatch != null) {
            sax.ENTITIES[entityMatch[1]] = entityMatch[2] || entityMatch[3];
            entityMatch = entityDeclaration.exec(data);
          }
        }
      };
      sax.onprocessinginstruction = (data2) => {
        const node = {
          type: "instruction",
          name: data2.name,
          value: data2.body
        };
        pushToContent(node);
      };
      sax.oncomment = (comment) => {
        const node = {
          type: "comment",
          value: comment.trim()
        };
        pushToContent(node);
      };
      sax.oncdata = (cdata) => {
        const node = {
          type: "cdata",
          value: cdata
        };
        pushToContent(node);
      };
      sax.onopentag = (data2) => {
        let element = {
          type: "element",
          name: data2.name,
          attributes: {},
          children: []
        };
        for (const [name, attr] of Object.entries(data2.attributes)) {
          element.attributes[name] = attr.value;
        }
        pushToContent(element);
        current = element;
        stack.push(element);
      };
      sax.ontext = (text) => {
        if (current.type === "element") {
          if (textElems.includes(current.name)) {
            const node = {
              type: "text",
              value: text
            };
            pushToContent(node);
          } else if (/\S/.test(text)) {
            const node = {
              type: "text",
              value: text.trim()
            };
            pushToContent(node);
          }
        }
      };
      sax.onclosetag = () => {
        stack.pop();
        current = stack[stack.length - 1];
      };
      sax.onerror = (e) => {
        const error = new SvgoParserError(
          e.reason,
          e.line + 1,
          e.column,
          data,
          from
        );
        if (e.message.indexOf("Unexpected end") === -1) {
          throw error;
        }
      };
      sax.write(data).close();
      return root;
    };
    exports.parseSvg = parseSvg;
  }
});

// src/svgo/stringifier.js
var require_stringifier = __commonJS({
  "src/svgo/stringifier.js"(exports) {
    "use strict";
    var { textElems } = require_collections();
    var encodeEntity = (c) => {
      return entities[c];
    };
    var defaults = {
      doctypeStart: "<!DOCTYPE",
      doctypeEnd: ">",
      procInstStart: "<?",
      procInstEnd: "?>",
      tagOpenStart: "<",
      tagOpenEnd: ">",
      tagCloseStart: "</",
      tagCloseEnd: ">",
      tagShortStart: "<",
      tagShortEnd: "/>",
      attrStart: '="',
      attrEnd: '"',
      commentStart: "<!--",
      commentEnd: "-->",
      cdataStart: "<![CDATA[",
      cdataEnd: "]]>",
      textStart: "",
      textEnd: "",
      indent: 4,
      regEntities: /[&'"<>]/g,
      regValEntities: /[&"<>]/g,
      encodeEntity,
      pretty: false,
      useShortTags: true,
      eol: "lf",
      finalNewline: false
    };
    var entities = {
      "&": "&amp;",
      "'": "&apos;",
      '"': "&quot;",
      ">": "&gt;",
      "<": "&lt;"
    };
    var stringifySvg = (data, userOptions = {}) => {
      const config = { ...defaults, ...userOptions };
      const indent = config.indent;
      let newIndent = "    ";
      if (typeof indent === "number" && Number.isNaN(indent) === false) {
        newIndent = indent < 0 ? "	" : " ".repeat(indent);
      } else if (typeof indent === "string") {
        newIndent = indent;
      }
      const state = {
        indent: newIndent,
        textContext: null,
        indentLevel: 0
      };
      const eol = config.eol === "crlf" ? "\r\n" : "\n";
      if (config.pretty) {
        config.doctypeEnd += eol;
        config.procInstEnd += eol;
        config.commentEnd += eol;
        config.cdataEnd += eol;
        config.tagShortEnd += eol;
        config.tagOpenEnd += eol;
        config.tagCloseEnd += eol;
        config.textEnd += eol;
      }
      let svg = stringifyNode(data, config, state);
      if (config.finalNewline && svg.length > 0 && svg[svg.length - 1] !== "\n") {
        svg += eol;
      }
      return svg;
    };
    exports.stringifySvg = stringifySvg;
    var stringifyNode = (data, config, state) => {
      let svg = "";
      state.indentLevel += 1;
      for (const item of data.children) {
        if (item.type === "element") {
          svg += stringifyElement(item, config, state);
        }
        if (item.type === "text") {
          svg += stringifyText(item, config, state);
        }
        if (item.type === "doctype") {
          svg += stringifyDoctype(item, config);
        }
        if (item.type === "instruction") {
          svg += stringifyInstruction(item, config);
        }
        if (item.type === "comment") {
          svg += stringifyComment(item, config);
        }
        if (item.type === "cdata") {
          svg += stringifyCdata(item, config, state);
        }
      }
      state.indentLevel -= 1;
      return svg;
    };
    var createIndent = (config, state) => {
      let indent = "";
      if (config.pretty && state.textContext == null) {
        indent = state.indent.repeat(state.indentLevel - 1);
      }
      return indent;
    };
    var stringifyDoctype = (node, config) => {
      return config.doctypeStart + node.data.doctype + config.doctypeEnd;
    };
    var stringifyInstruction = (node, config) => {
      return config.procInstStart + node.name + " " + node.value + config.procInstEnd;
    };
    var stringifyComment = (node, config) => {
      return config.commentStart + node.value + config.commentEnd;
    };
    var stringifyCdata = (node, config, state) => {
      return createIndent(config, state) + config.cdataStart + node.value + config.cdataEnd;
    };
    var stringifyElement = (node, config, state) => {
      if (node.children.length === 0) {
        if (config.useShortTags) {
          return createIndent(config, state) + config.tagShortStart + node.name + stringifyAttributes(node, config) + config.tagShortEnd;
        } else {
          return createIndent(config, state) + config.tagShortStart + node.name + stringifyAttributes(node, config) + config.tagOpenEnd + config.tagCloseStart + node.name + config.tagCloseEnd;
        }
      } else {
        let tagOpenStart = config.tagOpenStart;
        let tagOpenEnd = config.tagOpenEnd;
        let tagCloseStart = config.tagCloseStart;
        let tagCloseEnd = config.tagCloseEnd;
        let openIndent = createIndent(config, state);
        let closeIndent = createIndent(config, state);
        if (state.textContext) {
          tagOpenStart = defaults.tagOpenStart;
          tagOpenEnd = defaults.tagOpenEnd;
          tagCloseStart = defaults.tagCloseStart;
          tagCloseEnd = defaults.tagCloseEnd;
          openIndent = "";
        } else if (textElems.includes(node.name)) {
          tagOpenEnd = defaults.tagOpenEnd;
          tagCloseStart = defaults.tagCloseStart;
          closeIndent = "";
          state.textContext = node;
        }
        const children = stringifyNode(node, config, state);
        if (state.textContext === node) {
          state.textContext = null;
        }
        return openIndent + tagOpenStart + node.name + stringifyAttributes(node, config) + tagOpenEnd + children + closeIndent + tagCloseStart + node.name + tagCloseEnd;
      }
    };
    var stringifyAttributes = (node, config) => {
      let attrs = "";
      for (const [name, value] of Object.entries(node.attributes)) {
        if (value !== void 0) {
          const encodedValue = value.toString().replace(config.regValEntities, config.encodeEntity);
          attrs += " " + name + config.attrStart + encodedValue + config.attrEnd;
        } else {
          attrs += " " + name;
        }
      }
      return attrs;
    };
    var stringifyText = (node, config, state) => {
      return createIndent(config, state) + config.textStart + node.value.replace(config.regEntities, config.encodeEntity) + (state.textContext ? "" : config.textEnd);
    };
  }
});

// node_modules/domelementtype/lib/index.js
var require_lib = __commonJS({
  "node_modules/domelementtype/lib/index.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.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 = exports.ElementType || (exports.ElementType = {}));
    function isTag(elem) {
      return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style;
    }
    exports.isTag = isTag;
    exports.Root = ElementType.Root;
    exports.Text = ElementType.Text;
    exports.Directive = ElementType.Directive;
    exports.Comment = ElementType.Comment;
    exports.Script = ElementType.Script;
    exports.Style = ElementType.Style;
    exports.Tag = ElementType.Tag;
    exports.CDATA = ElementType.CDATA;
    exports.Doctype = ElementType.Doctype;
  }
});

// node_modules/domhandler/lib/node.js
var require_node = __commonJS({
  "node_modules/domhandler/lib/node.js"(exports) {
    "use strict";
    var __extends = exports && exports.__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 p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
        };
        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 = exports && exports.__assign || function() {
      __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
          s = arguments[i];
          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
        }
        return t;
      };
      return __assign.apply(this, arguments);
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;
    var domelementtype_1 = require_lib();
    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(parent) {
            this.parent = parent;
          },
          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;
      }()
    );
    exports.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)
    );
    exports.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)
    );
    exports.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)
    );
    exports.Comment = Comment;
    var ProcessingInstruction = (
      /** @class */
      function(_super) {
        __extends(ProcessingInstruction2, _super);
        function ProcessingInstruction2(name, data) {
          var _this = _super.call(this, data) || this;
          _this.name = name;
          _this.type = domelementtype_1.ElementType.Directive;
          return _this;
        }
        Object.defineProperty(ProcessingInstruction2.prototype, "nodeType", {
          get: function() {
            return 1;
          },
          enumerable: false,
          configurable: true
        });
        return ProcessingInstruction2;
      }(DataNode)
    );
    exports.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 _a;
            return (_a = this.children[0]) !== null && _a !== void 0 ? _a : 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)
    );
    exports.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)
    );
    exports.CDATA = CDATA;
    var Document = (
      /** @class */
      function(_super) {
        __extends(Document2, _super);
        function Document2() {
          var _this = _super !== null && _super.apply(this, arguments) || this;
          _this.type = domelementtype_1.ElementType.Root;
          return _this;
        }
        Object.defineProperty(Document2.prototype, "nodeType", {
          get: function() {
            return 9;
          },
          enumerable: false,
          configurable: true
        });
        return Document2;
      }(NodeWithChildren)
    );
    exports.Document = Document;
    var Element = (
      /** @class */
      function(_super) {
        __extends(Element2, _super);
        function Element2(name, attribs, children, type) {
          if (children === void 0) {
            children = [];
          }
          if (type === void 0) {
            type = name === "script" ? domelementtype_1.ElementType.Script : name === "style" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag;
          }
          var _this = _super.call(this, children) || this;
          _this.name = name;
          _this.attribs = attribs;
          _this.type = type;
          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(name) {
            this.name = name;
          },
          enumerable: false,
          configurable: true
        });
        Object.defineProperty(Element2.prototype, "attributes", {
          get: function() {
            var _this = this;
            return Object.keys(this.attribs).map(function(name) {
              var _a, _b;
              return {
                name,
                value: _this.attribs[name],
                namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name],
                prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name]
              };
            });
          },
          enumerable: false,
          configurable: true
        });
        return Element2;
      }(NodeWithChildren)
    );
    exports.Element = Element;
    function isTag(node) {
      return (0, domelementtype_1.isTag)(node);
    }
    exports.isTag = isTag;
    function isCDATA(node) {
      return node.type === domelementtype_1.ElementType.CDATA;
    }
    exports.isCDATA = isCDATA;
    function isText(node) {
      return node.type === domelementtype_1.ElementType.Text;
    }
    exports.isText = isText;
    function isComment(node) {
      return node.type === domelementtype_1.ElementType.Comment;
    }
    exports.isComment = isComment;
    function isDirective(node) {
      return node.type === domelementtype_1.ElementType.Directive;
    }
    exports.isDirective = isDirective;
    function isDocument(node) {
      return node.type === domelementtype_1.ElementType.Root;
    }
    exports.isDocument = isDocument;
    function hasChildren(node) {
      return Object.prototype.hasOwnProperty.call(node, "children");
    }
    exports.hasChildren = hasChildren;
    function cloneNode(node, recursive) {
      if (recursive === void 0) {
        recursive = false;
      }
      var result;
      if (isText(node)) {
        result = new Text(node.data);
      } else if (isComment(node)) {
        result = new Comment(node.data);
      } else if (isTag(node)) {
        var children = recursive ? cloneChildren(node.children) : [];
        var clone_1 = new Element(node.name, __assign({}, node.attribs), children);
        children.forEach(function(child) {
          return child.parent = clone_1;
        });
        if (node.namespace != null) {
          clone_1.namespace = node.namespace;
        }
        if (node["x-attribsNamespace"]) {
          clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]);
        }
        if (node["x-attribsPrefix"]) {
          clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]);
        }
        result = clone_1;
      } else if (isCDATA(node)) {
        var children = recursive ? cloneChildren(node.children) : [];
        var clone_2 = new CDATA(children);
        children.forEach(function(child) {
          return child.parent = clone_2;
        });
        result = clone_2;
      } else if (isDocument(node)) {
        var children = recursive ? cloneChildren(node.children) : [];
        var clone_3 = new Document(children);
        children.forEach(function(child) {
          return child.parent = clone_3;
        });
        if (node["x-mode"]) {
          clone_3["x-mode"] = node["x-mode"];
        }
        result = clone_3;
      } else if (isDirective(node)) {
        var instruction = new ProcessingInstruction(node.name, node.data);
        if (node["x-name"] != null) {
          instruction["x-name"] = node["x-name"];
          instruction["x-publicId"] = node["x-publicId"];
          instruction["x-systemId"] = node["x-systemId"];
        }
        result = instruction;
      } else {
        throw new Error("Not implemented yet: ".concat(node.type));
      }
      result.startIndex = node.startIndex;
      result.endIndex = node.endIndex;
      if (node.sourceCodeLocation != null) {
        result.sourceCodeLocation = node.sourceCodeLocation;
      }
      return result;
    }
    exports.cloneNode = cloneNode;
    function cloneChildren(childs) {
      var children = childs.map(function(child) {
        return cloneNode(child, true);
      });
      for (var i = 1; i < children.length; i++) {
        children[i].prev = children[i - 1];
        children[i - 1].next = children[i];
      }
      return children;
    }
  }
});

// node_modules/domhandler/lib/index.js
var require_lib2 = __commonJS({
  "node_modules/domhandler/lib/index.js"(exports) {
    "use strict";
    var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m, k);
      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    } : function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m[k];
    });
    var __exportStar = exports && exports.__exportStar || function(m, exports2) {
      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.DomHandler = void 0;
    var domelementtype_1 = require_lib();
    var node_js_1 = require_node();
    __exportStar(require_node(), exports);
    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(parser) {
          this.parser = parser;
        };
        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(name, attribs) {
          var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : void 0;
          var element = new node_js_1.Element(name, attribs, void 0, type);
          this.addNode(element);
          this.tagStack.push(element);
        };
        DomHandler2.prototype.ontext = function(data) {
          var lastNode = this.lastNode;
          if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {
            lastNode.data += data;
            if (this.options.withEndIndices) {
              lastNode.endIndex = this.parser.endIndex;
            }
          } else {
            var node = new node_js_1.Text(data);
            this.addNode(node);
            this.lastNode = node;
          }
        };
        DomHandler2.prototype.oncomment = function(data) {
          if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {
            this.lastNode.data += data;
            return;
          }
          var node = new node_js_1.Comment(data);
          this.addNode(node);
          this.lastNode = node;
        };
        DomHandler2.prototype.oncommentend = function() {
          this.lastNode = null;
        };
        DomHandler2.prototype.oncdatastart = function() {
          var text = new node_js_1.Text("");
          var node = new node_js_1.CDATA([text]);
          this.addNode(node);
          text.parent = node;
          this.lastNode = text;
        };
        DomHandler2.prototype.oncdataend = function() {
          this.lastNode = null;
        };
        DomHandler2.prototype.onprocessinginstruction = function(name, data) {
          var node = new node_js_1.ProcessingInstruction(name, data);
          this.addNode(node);
        };
        DomHandler2.prototype.handleCallback = function(error) {
          if (typeof this.callback === "function") {
            this.callback(error, this.dom);
          } else if (error) {
            throw error;
          }
        };
        DomHandler2.prototype.addNode = function(node) {
          var parent = this.tagStack[this.tagStack.length - 1];
          var previousSibling = parent.children[parent.children.length - 1];
          if (this.options.withStartIndices) {
            node.startIndex = this.parser.startIndex;
          }
          if (this.options.withEndIndices) {
            node.endIndex = this.parser.endIndex;
          }
          parent.children.push(node);
          if (previousSibling) {
            node.prev = previousSibling;
            previousSibling.next = node;
          }
          node.parent = parent;
          this.lastNode = null;
        };
        return DomHandler2;
      }()
    );
    exports.DomHandler = DomHandler;
    exports.default = DomHandler;
  }
});

// node_modules/entities/lib/generated/decode-data-html.js
var require_decode_data_html = __commonJS({
  "node_modules/entities/lib/generated/decode-data-html.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.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"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.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"(exports) {
    "use strict";
    var _a;
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.replaceCodePoint = exports.fromCodePoint = void 0;
    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]
    ]);
    exports.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) {
      var output = "";
      if (codePoint > 65535) {
        codePoint -= 65536;
        output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
        codePoint = 56320 | codePoint & 1023;
      }
      output += String.fromCharCode(codePoint);
      return output;
    };
    function replaceCodePoint(codePoint) {
      var _a2;
      if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
        return 65533;
      }
      return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint;
    }
    exports.replaceCodePoint = replaceCodePoint;
    function decodeCodePoint(codePoint) {
      return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));
    }
    exports.default = decodeCodePoint;
  }
});

// node_modules/entities/lib/decode.js
var require_decode = __commonJS({
  "node_modules/entities/lib/decode.js"(exports) {
    "use strict";
    var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m, k);
      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    } : function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m[k];
    });
    var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    } : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports && exports.__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 __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;
    var decode_data_html_js_1 = __importDefault(require_decode_data_html());
    exports.htmlDecodeTree = decode_data_html_js_1.default;
    var decode_data_xml_js_1 = __importDefault(require_decode_data_xml());
    exports.xmlDecodeTree = decode_data_xml_js_1.default;
    var decode_codepoint_js_1 = __importStar(require_decode_codepoint());
    exports.decodeCodePoint = decode_codepoint_js_1.default;
    var decode_codepoint_js_2 = require_decode_codepoint();
    Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function() {
      return decode_codepoint_js_2.replaceCodePoint;
    } });
    Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function() {
      return decode_codepoint_js_2.fromCodePoint;
    } });
    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 = exports.BinTrieFlags || (exports.BinTrieFlags = {}));
    function isNumber(code) {
      return code >= CharCodes.ZERO && code <= CharCodes.NINE;
    }
    function isHexadecimalCharacter(code) {
      return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F;
    }
    function isAsciiAlphaNumeric(code) {
      return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code);
    }
    function isEntityInAttributeInvalidEnd(code) {
      return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);
    }
    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 = exports.DecodingMode || (exports.DecodingMode = {}));
    var EntityDecoder = (
      /** @class */
      function() {
        function EntityDecoder2(decodeTree, emitCodePoint, errors) {
          this.decodeTree = decodeTree;
          this.emitCodePoint = emitCodePoint;
          this.errors = errors;
          this.state = EntityDecoderState.EntityStart;
          this.consumed = 1;
          this.result = 0;
          this.treeIndex = 0;
          this.excess = 1;
          this.decodeMode = DecodingMode.Strict;
        }
        EntityDecoder2.prototype.startEntity = function(decodeMode) {
          this.decodeMode = decodeMode;
          this.state = EntityDecoderState.EntityStart;
          this.result = 0;
          this.treeIndex = 0;
          this.excess = 1;
          this.consumed = 1;
        };
        EntityDecoder2.prototype.write = function(str, offset) {
          switch (this.state) {
            case EntityDecoderState.EntityStart: {
              if (str.charCodeAt(offset) === CharCodes.NUM) {
                this.state = EntityDecoderState.NumericStart;
                this.consumed += 1;
                return this.stateNumericStart(str, offset + 1);
              }
              this.state = EntityDecoderState.NamedEntity;
              return this.stateNamedEntity(str, offset);
            }
            case EntityDecoderState.NumericStart: {
              return this.stateNumericStart(str, offset);
            }
            case EntityDecoderState.NumericDecimal: {
              return this.stateNumericDecimal(str, offset);
            }
            case EntityDecoderState.NumericHex: {
              return this.stateNumericHex(str, offset);
            }
            case EntityDecoderState.NamedEntity: {
              return this.stateNamedEntity(str, offset);
            }
          }
        };
        EntityDecoder2.prototype.stateNumericStart = function(str, offset) {
          if (offset >= str.length) {
            return -1;
          }
          if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
            this.state = EntityDecoderState.NumericHex;
            this.consumed += 1;
            return this.stateNumericHex(str, offset + 1);
          }
          this.state = EntityDecoderState.NumericDecimal;
          return this.stateNumericDecimal(str, offset);
        };
        EntityDecoder2.prototype.addToNumericResult = function(str, start, end, base) {
          if (start !== end) {
            var digitCount = end - start;
            this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);
            this.consumed += digitCount;
          }
        };
        EntityDecoder2.prototype.stateNumericHex = function(str, offset) {
          var startIdx = offset;
          while (offset < str.length) {
            var char = str.charCodeAt(offset);
            if (isNumber(char) || isHexadecimalCharacter(char)) {
              offset += 1;
            } else {
              this.addToNumericResult(str, startIdx, offset, 16);
              return this.emitNumericEntity(char, 3);
            }
          }
          this.addToNumericResult(str, startIdx, offset, 16);
          return -1;
        };
        EntityDecoder2.prototype.stateNumericDecimal = function(str, offset) {
          var startIdx = offset;
          while (offset < str.length) {
            var char = str.charCodeAt(offset);
            if (isNumber(char)) {
              offset += 1;
            } else {
              this.addToNumericResult(str, startIdx, offset, 10);
              return this.emitNumericEntity(char, 2);
            }
          }
          this.addToNumericResult(str, startIdx, offset, 10);
          return -1;
        };
        EntityDecoder2.prototype.emitNumericEntity = function(lastCp, expectedLength) {
          var _a;
          if (this.consumed <= expectedLength) {
            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
            return 0;
          }
          if (lastCp === CharCodes.SEMI) {
            this.consumed += 1;
          } else if (this.decodeMode === DecodingMode.Strict) {
            return 0;
          }
          this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);
          if (this.errors) {
            if (lastCp !== CharCodes.SEMI) {
              this.errors.missingSemicolonAfterCharacterReference();
            }
            this.errors.validateNumericCharacterReference(this.result);
          }
          return this.consumed;
        };
        EntityDecoder2.prototype.stateNamedEntity = function(str, offset) {
          var decodeTree = this.decodeTree;
          var current = decodeTree[this.treeIndex];
          var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
          for (; offset < str.length; offset++, this.excess++) {
            var char = str.charCodeAt(offset);
            this.treeIndex = determineBranch(decodeTree, current, 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();
            }
            current = decodeTree[this.treeIndex];
            valueLength = (current & 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;
        };
        EntityDecoder2.prototype.emitNotTerminatedNamedEntity = function() {
          var _a;
          var _b = this, result = _b.result, decodeTree = _b.decodeTree;
          var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
          this.emitNamedEntityData(result, valueLength, this.consumed);
          (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
          return this.consumed;
        };
        EntityDecoder2.prototype.emitNamedEntityData = function(result, valueLength, consumed) {
          var decodeTree = this.decodeTree;
          this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed);
          if (valueLength === 3) {
            this.emitCodePoint(decodeTree[result + 2], consumed);
          }
          return consumed;
        };
        EntityDecoder2.prototype.end = function() {
          var _a;
          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: {
              (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
              return 0;
            }
            case EntityDecoderState.EntityStart: {
              return 0;
            }
          }
        };
        return EntityDecoder2;
      }()
    );
    exports.EntityDecoder = EntityDecoder;
    function getDecoder(decodeTree) {
      var ret = "";
      var decoder = new EntityDecoder(decodeTree, function(str) {
        return ret += (0, decode_codepoint_js_1.fromCodePoint)(str);
      });
      return function decodeWithTrie(str, decodeMode) {
        var lastIndex = 0;
        var offset = 0;
        while ((offset = str.indexOf("&", offset)) >= 0) {
          ret += str.slice(lastIndex, offset);
          decoder.startEntity(decodeMode);
          var len = decoder.write(
            str,
            // Skip the "&"
            offset + 1
          );
          if (len < 0) {
            lastIndex = offset + decoder.end();
            break;
          }
          lastIndex = offset + len;
          offset = len === 0 ? lastIndex + 1 : lastIndex;
        }
        var result = ret + str.slice(lastIndex);
        ret = "";
        return result;
      };
    }
    function determineBranch(decodeTree, current, nodeIdx, char) {
      var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
      var jumpOffset = current & BinTrieFlags.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;
    }
    exports.determineBranch = determineBranch;
    var htmlDecoder = getDecoder(decode_data_html_js_1.default);
    var xmlDecoder = getDecoder(decode_data_xml_js_1.default);
    function decodeHTML(str, mode) {
      if (mode === void 0) {
        mode = DecodingMode.Legacy;
      }
      return htmlDecoder(str, mode);
    }
    exports.decodeHTML = decodeHTML;
    function decodeHTMLAttribute(str) {
      return htmlDecoder(str, DecodingMode.Attribute);
    }
    exports.decodeHTMLAttribute = decodeHTMLAttribute;
    function decodeHTMLStrict(str) {
      return htmlDecoder(str, DecodingMode.Strict);
    }
    exports.decodeHTMLStrict = decodeHTMLStrict;
    function decodeXML(str) {
      return xmlDecoder(str, DecodingMode.Strict);
    }
    exports.decodeXML = decodeXML;
  }
});

// node_modules/entities/lib/generated/encode-html.js
var require_encode_html = __commonJS({
  "node_modules/entities/lib/generated/encode-html.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    function restoreDiff(arr) {
      for (var i = 1; i < arr.length; i++) {
        arr[i][0] += arr[i - 1][0] + 1;
      }
      return arr;
    }
    exports.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"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0;
    exports.xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
    var xmlCodeMap = /* @__PURE__ */ new Map([
      [34, "&quot;"],
      [38, "&amp;"],
      [39, "&apos;"],
      [60, "&lt;"],
      [62, "&gt;"]
    ]);
    exports.getCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
    String.prototype.codePointAt != null ? function(str, index) {
      return str.codePointAt(index);
    } : (
      // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
      function(c, index) {
        return (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index);
      }
    );
    function encodeXML(str) {
      var ret = "";
      var lastIdx = 0;
      var match;
      while ((match = exports.xmlReplacer.exec(str)) !== null) {
        var i = match.index;
        var char = str.charCodeAt(i);
        var next = xmlCodeMap.get(char);
        if (next !== void 0) {
          ret += str.substring(lastIdx, i) + next;
          lastIdx = i + 1;
        } else {
          ret += "".concat(str.substring(lastIdx, i), "&#x").concat((0, exports.getCodePoint)(str, i).toString(16), ";");
          lastIdx = exports.xmlReplacer.lastIndex += Number((char & 64512) === 55296);
        }
      }
      return ret + str.substr(lastIdx);
    }
    exports.encodeXML = encodeXML;
    exports.escape = encodeXML;
    function getEscaper(regex, map) {
      return function escape(data) {
        var match;
        var lastIdx = 0;
        var result = "";
        while (match = regex.exec(data)) {
          if (lastIdx !== match.index) {
            result += data.substring(lastIdx, match.index);
          }
          result += map.get(match[0].charCodeAt(0));
          lastIdx = match.index + 1;
        }
        return result + data.substring(lastIdx);
      };
    }
    exports.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
    exports.escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([
      [34, "&quot;"],
      [38, "&amp;"],
      [160, "&nbsp;"]
    ]));
    exports.escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([
      [38, "&amp;"],
      [60, "&lt;"],
      [62, "&gt;"],
      [160, "&nbsp;"]
    ]));
  }
});

// node_modules/entities/lib/encode.js
var require_encode = __commonJS({
  "node_modules/entities/lib/encode.js"(exports) {
    "use strict";
    var __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.encodeNonAsciiHTML = exports.encodeHTML = void 0;
    var encode_html_js_1 = __importDefault(require_encode_html());
    var escape_js_1 = require_escape();
    var htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;
    function encodeHTML(data) {
      return encodeHTMLTrieRe(htmlReplacer, data);
    }
    exports.encodeHTML = encodeHTML;
    function encodeNonAsciiHTML(data) {
      return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data);
    }
    exports.encodeNonAsciiHTML = encodeNonAsciiHTML;
    function encodeHTMLTrieRe(regExp, str) {
      var ret = "";
      var lastIdx = 0;
      var match;
      while ((match = regExp.exec(str)) !== null) {
        var i = match.index;
        ret += str.substring(lastIdx, i);
        var char = str.charCodeAt(i);
        var next = encode_html_js_1.default.get(char);
        if (typeof next === "object") {
          if (i + 1 < str.length) {
            var nextChar = str.charCodeAt(i + 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 = i + 1;
        } else {
          var cp = (0, escape_js_1.getCodePoint)(str, i);
          ret += "&#x".concat(cp.toString(16), ";");
          lastIdx = regExp.lastIndex += Number(cp !== char);
        }
      }
      return ret + str.substr(lastIdx);
    }
  }
});

// node_modules/entities/lib/index.js
var require_lib3 = __commonJS({
  "node_modules/entities/lib/index.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLAttribute = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.DecodingMode = exports.EntityDecoder = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.EntityLevel = void 0;
    var decode_js_1 = require_decode();
    var encode_js_1 = require_encode();
    var escape_js_1 = require_escape();
    var EntityLevel;
    (function(EntityLevel2) {
      EntityLevel2[EntityLevel2["XML"] = 0] = "XML";
      EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML";
    })(EntityLevel = exports.EntityLevel || (exports.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 = exports.EncodingMode || (exports.EncodingMode = {}));
    function decode(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);
    }
    exports.decode = decode;
    function decodeStrict(data, options) {
      var _a;
      if (options === void 0) {
        options = EntityLevel.XML;
      }
      var opts = typeof options === "number" ? { level: options } : options;
      (_a = opts.mode) !== null && _a !== void 0 ? _a : opts.mode = decode_js_1.DecodingMode.Strict;
      return decode(data, opts);
    }
    exports.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);
    }
    exports.encode = encode;
    var escape_js_2 = require_escape();
    Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function() {
      return escape_js_2.encodeXML;
    } });
    Object.defineProperty(exports, "escape", { enumerable: true, get: function() {
      return escape_js_2.escape;
    } });
    Object.defineProperty(exports, "escapeUTF8", { enumerable: true, get: function() {
      return escape_js_2.escapeUTF8;
    } });
    Object.defineProperty(exports, "escapeAttribute", { enumerable: true, get: function() {
      return escape_js_2.escapeAttribute;
    } });
    Object.defineProperty(exports, "escapeText", { enumerable: true, get: function() {
      return escape_js_2.escapeText;
    } });
    var encode_js_2 = require_encode();
    Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function() {
      return encode_js_2.encodeHTML;
    } });
    Object.defineProperty(exports, "encodeNonAsciiHTML", { enumerable: true, get: function() {
      return encode_js_2.encodeNonAsciiHTML;
    } });
    Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function() {
      return encode_js_2.encodeHTML;
    } });
    Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function() {
      return encode_js_2.encodeHTML;
    } });
    var decode_js_2 = require_decode();
    Object.defineProperty(exports, "EntityDecoder", { enumerable: true, get: function() {
      return decode_js_2.EntityDecoder;
    } });
    Object.defineProperty(exports, "DecodingMode", { enumerable: true, get: function() {
      return decode_js_2.DecodingMode;
    } });
    Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function() {
      return decode_js_2.decodeXML;
    } });
    Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function() {
      return decode_js_2.decodeHTML;
    } });
    Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function() {
      return decode_js_2.decodeHTMLStrict;
    } });
    Object.defineProperty(exports, "decodeHTMLAttribute", { enumerable: true, get: function() {
      return decode_js_2.decodeHTMLAttribute;
    } });
    Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function() {
      return decode_js_2.decodeHTML;
    } });
    Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function() {
      return decode_js_2.decodeHTML;
    } });
    Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function() {
      return decode_js_2.decodeHTMLStrict;
    } });
    Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function() {
      return decode_js_2.decodeHTMLStrict;
    } });
    Object.defineProperty(exports, "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"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.attributeNames = exports.elementNames = void 0;
    exports.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];
    }));
    exports.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_lib4 = __commonJS({
  "node_modules/dom-serializer/lib/index.js"(exports) {
    "use strict";
    var __assign = exports && exports.__assign || function() {
      __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
          s = arguments[i];
          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
        }
        return t;
      };
      return __assign.apply(this, arguments);
    };
    var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m, k);
      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    } : function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m[k];
    });
    var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    } : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports && exports.__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(exports, "__esModule", { value: true });
    exports.render = void 0;
    var ElementType = __importStar(require_lib());
    var entities_1 = require_lib3();
    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 _a;
      if (!attributes)
        return;
      var encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false ? replaceQuotes : opts.xmlMode || opts.encodeEntities !== "utf8" ? entities_1.encodeXML : entities_1.escapeAttribute;
      return Object.keys(attributes).map(function(key) {
        var _a2, _b;
        var value = (_a2 = attributes[key]) !== null && _a2 !== void 0 ? _a2 : "";
        if (opts.xmlMode === "foreign") {
          key = (_b = foreignNames_js_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;
        }
        if (!opts.emptyAttrs && !opts.xmlMode && value === "") {
          return key;
        }
        return "".concat(key, '="').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 render(node, options) {
      if (options === void 0) {
        options = {};
      }
      var nodes = "length" in node ? node : [node];
      var output = "";
      for (var i = 0; i < nodes.length; i++) {
        output += renderNode(nodes[i], options);
      }
      return output;
    }
    exports.render = render;
    exports.default = render;
    function renderNode(node, options) {
      switch (node.type) {
        case ElementType.Root:
          return render(node.children, options);
        // @ts-expect-error We don't use `Doctype` yet
        case ElementType.Doctype:
        case ElementType.Directive:
          return renderDirective(node);
        case ElementType.Comment:
          return renderComment(node);
        case ElementType.CDATA:
          return renderCdata(node);
        case ElementType.Script:
        case ElementType.Style:
        case ElementType.Tag:
          return renderTag(node, options);
        case ElementType.Text:
          return renderText(node, 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 _a;
      if (opts.xmlMode === "foreign") {
        elem.name = (_a = foreignNames_js_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : 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 += render(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 _a;
      var data = elem.data || "";
      if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : 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"(exports) {
    "use strict";
    var __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.innerText = exports.textContent = exports.getText = exports.getInnerHTML = exports.getOuterHTML = void 0;
    var domhandler_1 = require_lib2();
    var dom_serializer_1 = __importDefault(require_lib4());
    var domelementtype_1 = require_lib();
    function getOuterHTML(node, options) {
      return (0, dom_serializer_1.default)(node, options);
    }
    exports.getOuterHTML = getOuterHTML;
    function getInnerHTML(node, options) {
      return (0, domhandler_1.hasChildren)(node) ? node.children.map(function(node2) {
        return getOuterHTML(node2, options);
      }).join("") : "";
    }
    exports.getInnerHTML = getInnerHTML;
    function getText(node) {
      if (Array.isArray(node))
        return node.map(getText).join("");
      if ((0, domhandler_1.isTag)(node))
        return node.name === "br" ? "\n" : getText(node.children);
      if ((0, domhandler_1.isCDATA)(node))
        return getText(node.children);
      if ((0, domhandler_1.isText)(node))
        return node.data;
      return "";
    }
    exports.getText = getText;
    function textContent(node) {
      if (Array.isArray(node))
        return node.map(textContent).join("");
      if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) {
        return textContent(node.children);
      }
      if ((0, domhandler_1.isText)(node))
        return node.data;
      return "";
    }
    exports.textContent = textContent;
    function innerText(node) {
      if (Array.isArray(node))
        return node.map(innerText).join("");
      if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) {
        return innerText(node.children);
      }
      if ((0, domhandler_1.isText)(node))
        return node.data;
      return "";
    }
    exports.innerText = innerText;
  }
});

// node_modules/domutils/lib/traversal.js
var require_traversal = __commonJS({
  "node_modules/domutils/lib/traversal.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.prevElementSibling = exports.nextElementSibling = exports.getName = exports.hasAttrib = exports.getAttributeValue = exports.getSiblings = exports.getParent = exports.getChildren = void 0;
    var domhandler_1 = require_lib2();
    function getChildren(elem) {
      return (0, domhandler_1.hasChildren)(elem) ? elem.children : [];
    }
    exports.getChildren = getChildren;
    function getParent(elem) {
      return elem.parent || null;
    }
    exports.getParent = getParent;
    function getSiblings(elem) {
      var _a, _b;
      var parent = getParent(elem);
      if (parent != null)
        return getChildren(parent);
      var siblings = [elem];
      var prev = elem.prev, next = elem.next;
      while (prev != null) {
        siblings.unshift(prev);
        _a = prev, prev = _a.prev;
      }
      while (next != null) {
        siblings.push(next);
        _b = next, next = _b.next;
      }
      return siblings;
    }
    exports.getSiblings = getSiblings;
    function getAttributeValue(elem, name) {
      var _a;
      return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];
    }
    exports.getAttributeValue = getAttributeValue;
    function hasAttrib(elem, name) {
      return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null;
    }
    exports.hasAttrib = hasAttrib;
    function getName(elem) {
      return elem.name;
    }
    exports.getName = getName;
    function nextElementSibling(elem) {
      var _a;
      var next = elem.next;
      while (next !== null && !(0, domhandler_1.isTag)(next))
        _a = next, next = _a.next;
      return next;
    }
    exports.nextElementSibling = nextElementSibling;
    function prevElementSibling(elem) {
      var _a;
      var prev = elem.prev;
      while (prev !== null && !(0, domhandler_1.isTag)(prev))
        _a = prev, prev = _a.prev;
      return prev;
    }
    exports.prevElementSibling = prevElementSibling;
  }
});

// node_modules/domutils/lib/manipulation.js
var require_manipulation = __commonJS({
  "node_modules/domutils/lib/manipulation.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.prepend = exports.prependChild = exports.append = exports.appendChild = exports.replaceElement = exports.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;
    }
    exports.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 parent = replacement.parent = elem.parent;
      if (parent) {
        var childs = parent.children;
        childs[childs.lastIndexOf(elem)] = replacement;
        elem.parent = null;
      }
    }
    exports.replaceElement = replaceElement;
    function appendChild(parent, child) {
      removeElement(child);
      child.next = null;
      child.parent = parent;
      if (parent.children.push(child) > 1) {
        var sibling = parent.children[parent.children.length - 2];
        sibling.next = child;
        child.prev = sibling;
      } else {
        child.prev = null;
      }
    }
    exports.appendChild = appendChild;
    function append(elem, next) {
      removeElement(next);
      var parent = elem.parent;
      var currNext = elem.next;
      next.next = currNext;
      next.prev = elem;
      elem.next = next;
      next.parent = parent;
      if (currNext) {
        currNext.prev = next;
        if (parent) {
          var childs = parent.children;
          childs.splice(childs.lastIndexOf(currNext), 0, next);
        }
      } else if (parent) {
        parent.children.push(next);
      }
    }
    exports.append = append;
    function prependChild(parent, child) {
      removeElement(child);
      child.parent = parent;
      child.prev = null;
      if (parent.children.unshift(child) !== 1) {
        var sibling = parent.children[1];
        sibling.prev = child;
        child.next = sibling;
      } else {
        child.next = null;
      }
    }
    exports.prependChild = prependChild;
    function prepend(elem, prev) {
      removeElement(prev);
      var parent = elem.parent;
      if (parent) {
        var childs = parent.children;
        childs.splice(childs.indexOf(elem), 0, prev);
      }
      if (elem.prev) {
        elem.prev.next = prev;
      }
      prev.parent = parent;
      prev.prev = elem.prev;
      prev.next = elem;
      elem.prev = prev;
    }
    exports.prepend = prepend;
  }
});

// node_modules/domutils/lib/querying.js
var require_querying = __commonJS({
  "node_modules/domutils/lib/querying.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.findAll = exports.existsOne = exports.findOne = exports.findOneChild = exports.find = exports.filter = void 0;
    var domhandler_1 = require_lib2();
    function filter(test, node, recurse, limit) {
      if (recurse === void 0) {
        recurse = true;
      }
      if (limit === void 0) {
        limit = Infinity;
      }
      return find(test, Array.isArray(node) ? node : [node], recurse, limit);
    }
    exports.filter = filter;
    function find(test, 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 (test(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);
        }
      }
    }
    exports.find = find;
    function findOneChild(test, nodes) {
      return nodes.find(test);
    }
    exports.findOneChild = findOneChild;
    function findOne(test, nodes, recurse) {
      if (recurse === void 0) {
        recurse = true;
      }
      var elem = null;
      for (var i = 0; i < nodes.length && !elem; i++) {
        var node = nodes[i];
        if (!(0, domhandler_1.isTag)(node)) {
          continue;
        } else if (test(node)) {
          elem = node;
        } else if (recurse && node.children.length > 0) {
          elem = findOne(test, node.children, true);
        }
      }
      return elem;
    }
    exports.findOne = findOne;
    function existsOne(test, nodes) {
      return nodes.some(function(checked) {
        return (0, domhandler_1.isTag)(checked) && (test(checked) || existsOne(test, checked.children));
      });
    }
    exports.existsOne = existsOne;
    function findAll(test, 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 (test(elem))
          result.push(elem);
        if (elem.children.length > 0) {
          indexStack.unshift(0);
          nodeStack.unshift(elem.children);
        }
      }
    }
    exports.findAll = findAll;
  }
});

// node_modules/domutils/lib/legacy.js
var require_legacy = __commonJS({
  "node_modules/domutils/lib/legacy.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.getElementsByTagType = exports.getElementsByTagName = exports.getElementById = exports.getElements = exports.testElement = void 0;
    var domhandler_1 = require_lib2();
    var querying_js_1 = require_querying();
    var Checks = {
      tag_name: function(name) {
        if (typeof name === "function") {
          return function(elem) {
            return (0, domhandler_1.isTag)(elem) && name(elem.name);
          };
        } else if (name === "*") {
          return domhandler_1.isTag;
        }
        return function(elem) {
          return (0, domhandler_1.isTag)(elem) && elem.name === name;
        };
      },
      tag_type: function(type) {
        if (typeof type === "function") {
          return function(elem) {
            return type(elem.type);
          };
        }
        return function(elem) {
          return elem.type === type;
        };
      },
      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(a, b) {
      return function(elem) {
        return a(elem) || b(elem);
      };
    }
    function compileTest(options) {
      var funcs = Object.keys(options).map(function(key) {
        var value = options[key];
        return Object.prototype.hasOwnProperty.call(Checks, key) ? Checks[key](value) : getAttribCheck(key, value);
      });
      return funcs.length === 0 ? null : funcs.reduce(combineFuncs);
    }
    function testElement(options, node) {
      var test = compileTest(options);
      return test ? test(node) : true;
    }
    exports.testElement = testElement;
    function getElements(options, nodes, recurse, limit) {
      if (limit === void 0) {
        limit = Infinity;
      }
      var test = compileTest(options);
      return test ? (0, querying_js_1.filter)(test, nodes, recurse, limit) : [];
    }
    exports.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);
    }
    exports.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);
    }
    exports.getElementsByTagName = getElementsByTagName;
    function getElementsByTagType(type, nodes, recurse, limit) {
      if (recurse === void 0) {
        recurse = true;
      }
      if (limit === void 0) {
        limit = Infinity;
      }
      return (0, querying_js_1.filter)(Checks["tag_type"](type), nodes, recurse, limit);
    }
    exports.getElementsByTagType = getElementsByTagType;
  }
});

// node_modules/domutils/lib/helpers.js
var require_helpers = __commonJS({
  "node_modules/domutils/lib/helpers.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.uniqueSort = exports.compareDocumentPosition = exports.DocumentPosition = exports.removeSubsets = void 0;
    var domhandler_1 = require_lib2();
    function removeSubsets(nodes) {
      var idx = nodes.length;
      while (--idx >= 0) {
        var node = nodes[idx];
        if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {
          nodes.splice(idx, 1);
          continue;
        }
        for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) {
          if (nodes.includes(ancestor)) {
            nodes.splice(idx, 1);
            break;
          }
        }
      }
      return nodes;
    }
    exports.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 = exports.DocumentPosition || (exports.DocumentPosition = {}));
    function compareDocumentPosition(nodeA, nodeB) {
      var aParents = [];
      var bParents = [];
      if (nodeA === nodeB) {
        return 0;
      }
      var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent;
      while (current) {
        aParents.unshift(current);
        current = current.parent;
      }
      current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent;
      while (current) {
        bParents.unshift(current);
        current = current.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 siblings = sharedParent.children;
      var aSibling = aParents[idx];
      var bSibling = bParents[idx];
      if (siblings.indexOf(aSibling) > siblings.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;
    }
    exports.compareDocumentPosition = compareDocumentPosition;
    function uniqueSort(nodes) {
      nodes = nodes.filter(function(node, i, arr) {
        return !arr.includes(node, i + 1);
      });
      nodes.sort(function(a, b) {
        var relative = compareDocumentPosition(a, b);
        if (relative & DocumentPosition.PRECEDING) {
          return -1;
        } else if (relative & DocumentPosition.FOLLOWING) {
          return 1;
        }
        return 0;
      });
      return nodes;
    }
    exports.uniqueSort = uniqueSort;
  }
});

// node_modules/domutils/lib/feeds.js
var require_feeds = __commonJS({
  "node_modules/domutils/lib/feeds.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.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);
    }
    exports.getFeed = getFeed;
    function getAtomFeed(feedRoot) {
      var _a;
      var childs = feedRoot.children;
      var feed = {
        type: "atom",
        items: (0, legacy_js_1.getElementsByTagName)("entry", childs).map(function(item) {
          var _a2;
          var children = item.children;
          var entry = { media: getMediaElements(children) };
          addConditionally(entry, "id", "id", children);
          addConditionally(entry, "title", "title", children);
          var href2 = (_a2 = getOneElement("link", children)) === null || _a2 === void 0 ? void 0 : _a2.attribs["href"];
          if (href2) {
            entry.link = href2;
          }
          var description = fetch("summary", children) || fetch("content", children);
          if (description) {
            entry.description = description;
          }
          var pubDate = fetch("updated", children);
          if (pubDate) {
            entry.pubDate = new Date(pubDate);
          }
          return entry;
        })
      };
      addConditionally(feed, "id", "id", childs);
      addConditionally(feed, "title", "title", childs);
      var href = (_a = getOneElement("link", childs)) === null || _a === void 0 ? void 0 : _a.attribs["href"];
      if (href) {
        feed.link = href;
      }
      addConditionally(feed, "description", "subtitle", childs);
      var updated = fetch("updated", childs);
      if (updated) {
        feed.updated = new Date(updated);
      }
      addConditionally(feed, "author", "email", childs, true);
      return feed;
    }
    function getRssFeed(feedRoot) {
      var _a, _b;
      var childs = (_b = (_a = getOneElement("channel", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.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 = fetch("pubDate", children) || fetch("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 = fetch("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 media = {
          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]) {
            media[attrib] = attribs[attrib];
          }
        }
        for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT; _a < MEDIA_KEYS_INT_1.length; _a++) {
          var attrib = MEDIA_KEYS_INT_1[_a];
          if (attribs[attrib]) {
            media[attrib] = parseInt(attribs[attrib], 10);
          }
        }
        if (attribs["expression"]) {
          media.expression = attribs["expression"];
        }
        return media;
      });
    }
    function getOneElement(tagName, node) {
      return (0, legacy_js_1.getElementsByTagName)(tagName, node, true, 1)[0];
    }
    function fetch(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 = fetch(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_lib5 = __commonJS({
  "node_modules/domutils/lib/index.js"(exports) {
    "use strict";
    var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m, k);
      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    } : function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m[k];
    });
    var __exportStar = exports && exports.__exportStar || function(m, exports2) {
      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.hasChildren = exports.isDocument = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = void 0;
    __exportStar(require_stringify(), exports);
    __exportStar(require_traversal(), exports);
    __exportStar(require_manipulation(), exports);
    __exportStar(require_querying(), exports);
    __exportStar(require_legacy(), exports);
    __exportStar(require_helpers(), exports);
    __exportStar(require_feeds(), exports);
    var domhandler_1 = require_lib2();
    Object.defineProperty(exports, "isTag", { enumerable: true, get: function() {
      return domhandler_1.isTag;
    } });
    Object.defineProperty(exports, "isCDATA", { enumerable: true, get: function() {
      return domhandler_1.isCDATA;
    } });
    Object.defineProperty(exports, "isText", { enumerable: true, get: function() {
      return domhandler_1.isText;
    } });
    Object.defineProperty(exports, "isComment", { enumerable: true, get: function() {
      return domhandler_1.isComment;
    } });
    Object.defineProperty(exports, "isDocument", { enumerable: true, get: function() {
      return domhandler_1.isDocument;
    } });
    Object.defineProperty(exports, "hasChildren", { enumerable: true, get: function() {
      return domhandler_1.hasChildren;
    } });
  }
});

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

// node_modules/css-what/lib/commonjs/types.js
var require_types = __commonJS({
  "node_modules/css-what/lib/commonjs/types.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.AttributeAction = exports.IgnoreCaseMode = exports.SelectorType = void 0;
    var SelectorType;
    (function(SelectorType2) {
      SelectorType2["Attribute"] = "attribute";
      SelectorType2["Pseudo"] = "pseudo";
      SelectorType2["PseudoElement"] = "pseudo-element";
      SelectorType2["Tag"] = "tag";
      SelectorType2["Universal"] = "universal";
      SelectorType2["Adjacent"] = "adjacent";
      SelectorType2["Child"] = "child";
      SelectorType2["Descendant"] = "descendant";
      SelectorType2["Parent"] = "parent";
      SelectorType2["Sibling"] = "sibling";
      SelectorType2["ColumnCombinator"] = "column-combinator";
    })(SelectorType = exports.SelectorType || (exports.SelectorType = {}));
    exports.IgnoreCaseMode = {
      Unknown: null,
      QuirksMode: "quirks",
      IgnoreCase: true,
      CaseSensitive: false
    };
    var AttributeAction;
    (function(AttributeAction2) {
      AttributeAction2["Any"] = "any";
      AttributeAction2["Element"] = "element";
      AttributeAction2["End"] = "end";
      AttributeAction2["Equals"] = "equals";
      AttributeAction2["Exists"] = "exists";
      AttributeAction2["Hyphen"] = "hyphen";
      AttributeAction2["Not"] = "not";
      AttributeAction2["Start"] = "start";
    })(AttributeAction = exports.AttributeAction || (exports.AttributeAction = {}));
  }
});

// node_modules/css-what/lib/commonjs/parse.js
var require_parse = __commonJS({
  "node_modules/css-what/lib/commonjs/parse.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.parse = exports.isTraversal = void 0;
    var types_1 = require_types();
    var reName = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/;
    var reEscape = /\\([\da-f]{1,6}\s?|(\s)|.)/gi;
    var actionTypes = /* @__PURE__ */ new Map([
      [126, types_1.AttributeAction.Element],
      [94, types_1.AttributeAction.Start],
      [36, types_1.AttributeAction.End],
      [42, types_1.AttributeAction.Any],
      [33, types_1.AttributeAction.Not],
      [124, types_1.AttributeAction.Hyphen]
    ]);
    var unpackPseudos = /* @__PURE__ */ new Set([
      "has",
      "not",
      "matches",
      "is",
      "where",
      "host",
      "host-context"
    ]);
    function isTraversal(selector) {
      switch (selector.type) {
        case types_1.SelectorType.Adjacent:
        case types_1.SelectorType.Child:
        case types_1.SelectorType.Descendant:
        case types_1.SelectorType.Parent:
        case types_1.SelectorType.Sibling:
        case types_1.SelectorType.ColumnCombinator:
          return true;
        default:
          return false;
      }
    }
    exports.isTraversal = isTraversal;
    var stripQuotesFromPseudos = /* @__PURE__ */ new Set(["contains", "icontains"]);
    function funescape(_, escaped, escapedWhitespace) {
      var high = parseInt(escaped, 16) - 65536;
      return high !== high || escapedWhitespace ? escaped : high < 0 ? (
        // BMP codepoint
        String.fromCharCode(high + 65536)
      ) : (
        // Supplemental Plane codepoint (surrogate pair)
        String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320)
      );
    }
    function unescapeCSS(str) {
      return str.replace(reEscape, funescape);
    }
    function isQuote(c) {
      return c === 39 || c === 34;
    }
    function isWhitespace(c) {
      return c === 32 || c === 9 || c === 10 || c === 12 || c === 13;
    }
    function parse(selector) {
      var subselects = [];
      var endIndex = parseSelector(subselects, "".concat(selector), 0);
      if (endIndex < selector.length) {
        throw new Error("Unmatched selector: ".concat(selector.slice(endIndex)));
      }
      return subselects;
    }
    exports.parse = parse;
    function parseSelector(subselects, selector, selectorIndex) {
      var tokens = [];
      function getName(offset) {
        var match = selector.slice(selectorIndex + offset).match(reName);
        if (!match) {
          throw new Error("Expected name, found ".concat(selector.slice(selectorIndex)));
        }
        var name = match[0];
        selectorIndex += offset + name.length;
        return unescapeCSS(name);
      }
      function stripWhitespace(offset) {
        selectorIndex += offset;
        while (selectorIndex < selector.length && isWhitespace(selector.charCodeAt(selectorIndex))) {
          selectorIndex++;
        }
      }
      function readValueWithParenthesis() {
        selectorIndex += 1;
        var start = selectorIndex;
        var counter = 1;
        for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {
          if (selector.charCodeAt(selectorIndex) === 40 && !isEscaped(selectorIndex)) {
            counter++;
          } else if (selector.charCodeAt(selectorIndex) === 41 && !isEscaped(selectorIndex)) {
            counter--;
          }
        }
        if (counter) {
          throw new Error("Parenthesis not matched");
        }
        return unescapeCSS(selector.slice(start, selectorIndex - 1));
      }
      function isEscaped(pos) {
        var slashCount = 0;
        while (selector.charCodeAt(--pos) === 92)
          slashCount++;
        return (slashCount & 1) === 1;
      }
      function ensureNotTraversal() {
        if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {
          throw new Error("Did not expect successive traversals.");
        }
      }
      function addTraversal(type) {
        if (tokens.length > 0 && tokens[tokens.length - 1].type === types_1.SelectorType.Descendant) {
          tokens[tokens.length - 1].type = type;
          return;
        }
        ensureNotTraversal();
        tokens.push({ type });
      }
      function addSpecialAttribute(name, action2) {
        tokens.push({
          type: types_1.SelectorType.Attribute,
          name,
          action: action2,
          value: getName(1),
          namespace: null,
          ignoreCase: "quirks"
        });
      }
      function finalizeSubselector() {
        if (tokens.length && tokens[tokens.length - 1].type === types_1.SelectorType.Descendant) {
          tokens.pop();
        }
        if (tokens.length === 0) {
          throw new Error("Empty sub-selector");
        }
        subselects.push(tokens);
      }
      stripWhitespace(0);
      if (selector.length === selectorIndex) {
        return selectorIndex;
      }
      loop: while (selectorIndex < selector.length) {
        var firstChar = selector.charCodeAt(selectorIndex);
        switch (firstChar) {
          // Whitespace
          case 32:
          case 9:
          case 10:
          case 12:
          case 13: {
            if (tokens.length === 0 || tokens[0].type !== types_1.SelectorType.Descendant) {
              ensureNotTraversal();
              tokens.push({ type: types_1.SelectorType.Descendant });
            }
            stripWhitespace(1);
            break;
          }
          // Traversals
          case 62: {
            addTraversal(types_1.SelectorType.Child);
            stripWhitespace(1);
            break;
          }
          case 60: {
            addTraversal(types_1.SelectorType.Parent);
            stripWhitespace(1);
            break;
          }
          case 126: {
            addTraversal(types_1.SelectorType.Sibling);
            stripWhitespace(1);
            break;
          }
          case 43: {
            addTraversal(types_1.SelectorType.Adjacent);
            stripWhitespace(1);
            break;
          }
          // Special attribute selectors: .class, #id
          case 46: {
            addSpecialAttribute("class", types_1.AttributeAction.Element);
            break;
          }
          case 35: {
            addSpecialAttribute("id", types_1.AttributeAction.Equals);
            break;
          }
          case 91: {
            stripWhitespace(1);
            var name_1 = void 0;
            var namespace = null;
            if (selector.charCodeAt(selectorIndex) === 124) {
              name_1 = getName(1);
            } else if (selector.startsWith("*|", selectorIndex)) {
              namespace = "*";
              name_1 = getName(2);
            } else {
              name_1 = getName(0);
              if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 61) {
                namespace = name_1;
                name_1 = getName(1);
              }
            }
            stripWhitespace(0);
            var action = types_1.AttributeAction.Exists;
            var possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));
            if (possibleAction) {
              action = possibleAction;
              if (selector.charCodeAt(selectorIndex + 1) !== 61) {
                throw new Error("Expected `=`");
              }
              stripWhitespace(2);
            } else if (selector.charCodeAt(selectorIndex) === 61) {
              action = types_1.AttributeAction.Equals;
              stripWhitespace(1);
            }
            var value = "";
            var ignoreCase = null;
            if (action !== "exists") {
              if (isQuote(selector.charCodeAt(selectorIndex))) {
                var quote = selector.charCodeAt(selectorIndex);
                var sectionEnd = selectorIndex + 1;
                while (sectionEnd < selector.length && (selector.charCodeAt(sectionEnd) !== quote || isEscaped(sectionEnd))) {
                  sectionEnd += 1;
                }
                if (selector.charCodeAt(sectionEnd) !== quote) {
                  throw new Error("Attribute value didn't end");
                }
                value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));
                selectorIndex = sectionEnd + 1;
              } else {
                var valueStart = selectorIndex;
                while (selectorIndex < selector.length && (!isWhitespace(selector.charCodeAt(selectorIndex)) && selector.charCodeAt(selectorIndex) !== 93 || isEscaped(selectorIndex))) {
                  selectorIndex += 1;
                }
                value = unescapeCSS(selector.slice(valueStart, selectorIndex));
              }
              stripWhitespace(0);
              var forceIgnore = selector.charCodeAt(selectorIndex) | 32;
              if (forceIgnore === 115) {
                ignoreCase = false;
                stripWhitespace(1);
              } else if (forceIgnore === 105) {
                ignoreCase = true;
                stripWhitespace(1);
              }
            }
            if (selector.charCodeAt(selectorIndex) !== 93) {
              throw new Error("Attribute selector didn't terminate");
            }
            selectorIndex += 1;
            var attributeSelector = {
              type: types_1.SelectorType.Attribute,
              name: name_1,
              action,
              value,
              namespace,
              ignoreCase
            };
            tokens.push(attributeSelector);
            break;
          }
          case 58: {
            if (selector.charCodeAt(selectorIndex + 1) === 58) {
              tokens.push({
                type: types_1.SelectorType.PseudoElement,
                name: getName(2).toLowerCase(),
                data: selector.charCodeAt(selectorIndex) === 40 ? readValueWithParenthesis() : null
              });
              continue;
            }
            var name_2 = getName(1).toLowerCase();
            var data = null;
            if (selector.charCodeAt(selectorIndex) === 40) {
              if (unpackPseudos.has(name_2)) {
                if (isQuote(selector.charCodeAt(selectorIndex + 1))) {
                  throw new Error("Pseudo-selector ".concat(name_2, " cannot be quoted"));
                }
                data = [];
                selectorIndex = parseSelector(data, selector, selectorIndex + 1);
                if (selector.charCodeAt(selectorIndex) !== 41) {
                  throw new Error("Missing closing parenthesis in :".concat(name_2, " (").concat(selector, ")"));
                }
                selectorIndex += 1;
              } else {
                data = readValueWithParenthesis();
                if (stripQuotesFromPseudos.has(name_2)) {
                  var quot = data.charCodeAt(0);
                  if (quot === data.charCodeAt(data.length - 1) && isQuote(quot)) {
                    data = data.slice(1, -1);
                  }
                }
                data = unescapeCSS(data);
              }
            }
            tokens.push({ type: types_1.SelectorType.Pseudo, name: name_2, data });
            break;
          }
          case 44: {
            finalizeSubselector();
            tokens = [];
            stripWhitespace(1);
            break;
          }
          default: {
            if (selector.startsWith("/*", selectorIndex)) {
              var endIndex = selector.indexOf("*/", selectorIndex + 2);
              if (endIndex < 0) {
                throw new Error("Comment was not terminated");
              }
              selectorIndex = endIndex + 2;
              if (tokens.length === 0) {
                stripWhitespace(0);
              }
              break;
            }
            var namespace = null;
            var name_3 = void 0;
            if (firstChar === 42) {
              selectorIndex += 1;
              name_3 = "*";
            } else if (firstChar === 124) {
              name_3 = "";
              if (selector.charCodeAt(selectorIndex + 1) === 124) {
                addTraversal(types_1.SelectorType.ColumnCombinator);
                stripWhitespace(2);
                break;
              }
            } else if (reName.test(selector.slice(selectorIndex))) {
              name_3 = getName(0);
            } else {
              break loop;
            }
            if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 124) {
              namespace = name_3;
              if (selector.charCodeAt(selectorIndex + 1) === 42) {
                name_3 = "*";
                selectorIndex += 2;
              } else {
                name_3 = getName(1);
              }
            }
            tokens.push(name_3 === "*" ? { type: types_1.SelectorType.Universal, namespace } : { type: types_1.SelectorType.Tag, name: name_3, namespace });
          }
        }
      }
      finalizeSubselector();
      return selectorIndex;
    }
  }
});

// node_modules/css-what/lib/commonjs/stringify.js
var require_stringify2 = __commonJS({
  "node_modules/css-what/lib/commonjs/stringify.js"(exports) {
    "use strict";
    var __spreadArray = exports && exports.__spreadArray || function(to, from, pack) {
      if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
        if (ar || !(i in from)) {
          if (!ar) ar = Array.prototype.slice.call(from, 0, i);
          ar[i] = from[i];
        }
      }
      return to.concat(ar || Array.prototype.slice.call(from));
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.stringify = void 0;
    var types_1 = require_types();
    var attribValChars = ["\\", '"'];
    var pseudoValChars = __spreadArray(__spreadArray([], attribValChars, true), ["(", ")"], false);
    var charsToEscapeInAttributeValue = new Set(attribValChars.map(function(c) {
      return c.charCodeAt(0);
    }));
    var charsToEscapeInPseudoValue = new Set(pseudoValChars.map(function(c) {
      return c.charCodeAt(0);
    }));
    var charsToEscapeInName = new Set(__spreadArray(__spreadArray([], pseudoValChars, true), [
      "~",
      "^",
      "$",
      "*",
      "+",
      "!",
      "|",
      ":",
      "[",
      "]",
      " ",
      "."
    ], false).map(function(c) {
      return c.charCodeAt(0);
    }));
    function stringify(selector) {
      return selector.map(function(token) {
        return token.map(stringifyToken).join("");
      }).join(", ");
    }
    exports.stringify = stringify;
    function stringifyToken(token, index, arr) {
      switch (token.type) {
        // Simple types
        case types_1.SelectorType.Child:
          return index === 0 ? "> " : " > ";
        case types_1.SelectorType.Parent:
          return index === 0 ? "< " : " < ";
        case types_1.SelectorType.Sibling:
          return index === 0 ? "~ " : " ~ ";
        case types_1.SelectorType.Adjacent:
          return index === 0 ? "+ " : " + ";
        case types_1.SelectorType.Descendant:
          return " ";
        case types_1.SelectorType.ColumnCombinator:
          return index === 0 ? "|| " : " || ";
        case types_1.SelectorType.Universal:
          return token.namespace === "*" && index + 1 < arr.length && "name" in arr[index + 1] ? "" : "".concat(getNamespace(token.namespace), "*");
        case types_1.SelectorType.Tag:
          return getNamespacedName(token);
        case types_1.SelectorType.PseudoElement:
          return "::".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null ? "" : "(".concat(escapeName(token.data, charsToEscapeInPseudoValue), ")"));
        case types_1.SelectorType.Pseudo:
          return ":".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null ? "" : "(".concat(typeof token.data === "string" ? escapeName(token.data, charsToEscapeInPseudoValue) : stringify(token.data), ")"));
        case types_1.SelectorType.Attribute: {
          if (token.name === "id" && token.action === types_1.AttributeAction.Equals && token.ignoreCase === "quirks" && !token.namespace) {
            return "#".concat(escapeName(token.value, charsToEscapeInName));
          }
          if (token.name === "class" && token.action === types_1.AttributeAction.Element && token.ignoreCase === "quirks" && !token.namespace) {
            return ".".concat(escapeName(token.value, charsToEscapeInName));
          }
          var name_1 = getNamespacedName(token);
          if (token.action === types_1.AttributeAction.Exists) {
            return "[".concat(name_1, "]");
          }
          return "[".concat(name_1).concat(getActionValue(token.action), '="').concat(escapeName(token.value, charsToEscapeInAttributeValue), '"').concat(token.ignoreCase === null ? "" : token.ignoreCase ? " i" : " s", "]");
        }
      }
    }
    function getActionValue(action) {
      switch (action) {
        case types_1.AttributeAction.Equals:
          return "";
        case types_1.AttributeAction.Element:
          return "~";
        case types_1.AttributeAction.Start:
          return "^";
        case types_1.AttributeAction.End:
          return "$";
        case types_1.AttributeAction.Any:
          return "*";
        case types_1.AttributeAction.Not:
          return "!";
        case types_1.AttributeAction.Hyphen:
          return "|";
        case types_1.AttributeAction.Exists:
          throw new Error("Shouldn't be here");
      }
    }
    function getNamespacedName(token) {
      return "".concat(getNamespace(token.namespace)).concat(escapeName(token.name, charsToEscapeInName));
    }
    function getNamespace(namespace) {
      return namespace !== null ? "".concat(namespace === "*" ? "*" : escapeName(namespace, charsToEscapeInName), "|") : "";
    }
    function escapeName(str, charsToEscape) {
      var lastIdx = 0;
      var ret = "";
      for (var i = 0; i < str.length; i++) {
        if (charsToEscape.has(str.charCodeAt(i))) {
          ret += "".concat(str.slice(lastIdx, i), "\\").concat(str.charAt(i));
          lastIdx = i + 1;
        }
      }
      return ret.length > 0 ? ret + str.slice(lastIdx) : str;
    }
  }
});

// node_modules/css-what/lib/commonjs/index.js
var require_commonjs = __commonJS({
  "node_modules/css-what/lib/commonjs/index.js"(exports) {
    "use strict";
    var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m, k);
      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    } : function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m[k];
    });
    var __exportStar = exports && exports.__exportStar || function(m, exports2) {
      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.stringify = exports.parse = exports.isTraversal = void 0;
    __exportStar(require_types(), exports);
    var parse_1 = require_parse();
    Object.defineProperty(exports, "isTraversal", { enumerable: true, get: function() {
      return parse_1.isTraversal;
    } });
    Object.defineProperty(exports, "parse", { enumerable: true, get: function() {
      return parse_1.parse;
    } });
    var stringify_1 = require_stringify2();
    Object.defineProperty(exports, "stringify", { enumerable: true, get: function() {
      return stringify_1.stringify;
    } });
  }
});

// node_modules/css-select/lib/sort.js
var require_sort = __commonJS({
  "node_modules/css-select/lib/sort.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.isTraversal = void 0;
    var css_what_1 = require_commonjs();
    var procedure = /* @__PURE__ */ new Map([
      [css_what_1.SelectorType.Universal, 50],
      [css_what_1.SelectorType.Tag, 30],
      [css_what_1.SelectorType.Attribute, 1],
      [css_what_1.SelectorType.Pseudo, 0]
    ]);
    function isTraversal(token) {
      return !procedure.has(token.type);
    }
    exports.isTraversal = isTraversal;
    var attributes = /* @__PURE__ */ new Map([
      [css_what_1.AttributeAction.Exists, 10],
      [css_what_1.AttributeAction.Equals, 8],
      [css_what_1.AttributeAction.Not, 7],
      [css_what_1.AttributeAction.Start, 6],
      [css_what_1.AttributeAction.End, 6],
      [css_what_1.AttributeAction.Any, 5]
    ]);
    function sortByProcedure(arr) {
      var procs = arr.map(getProcedure);
      for (var i = 1; i < arr.length; i++) {
        var procNew = procs[i];
        if (procNew < 0)
          continue;
        for (var j = i - 1; j >= 0 && procNew < procs[j]; j--) {
          var token = arr[j + 1];
          arr[j + 1] = arr[j];
          arr[j] = token;
          procs[j + 1] = procs[j];
          procs[j] = procNew;
        }
      }
    }
    exports.default = sortByProcedure;
    function getProcedure(token) {
      var _a, _b;
      var proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1;
      if (token.type === css_what_1.SelectorType.Attribute) {
        proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4;
        if (token.action === css_what_1.AttributeAction.Equals && token.name === "id") {
          proc = 9;
        }
        if (token.ignoreCase) {
          proc >>= 1;
        }
      } else if (token.type === css_what_1.SelectorType.Pseudo) {
        if (!token.data) {
          proc = 3;
        } else if (token.name === "has" || token.name === "contains") {
          proc = 0;
        } else if (Array.isArray(token.data)) {
          proc = Math.min.apply(Math, token.data.map(function(d) {
            return Math.min.apply(Math, d.map(getProcedure));
          }));
          if (proc < 0) {
            proc = 0;
          }
        } else {
          proc = 2;
        }
      }
      return proc;
    }
  }
});

// node_modules/css-select/lib/attributes.js
var require_attributes = __commonJS({
  "node_modules/css-select/lib/attributes.js"(exports) {
    "use strict";
    var __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.attributeRules = void 0;
    var boolbase_1 = __importDefault(require_boolbase());
    var reChars = /[-[\]{}()*+?.,\\^$|#\s]/g;
    function escapeRegex(value) {
      return value.replace(reChars, "\\$&");
    }
    var caseInsensitiveAttributes = /* @__PURE__ */ new Set([
      "accept",
      "accept-charset",
      "align",
      "alink",
      "axis",
      "bgcolor",
      "charset",
      "checked",
      "clear",
      "codetype",
      "color",
      "compact",
      "declare",
      "defer",
      "dir",
      "direction",
      "disabled",
      "enctype",
      "face",
      "frame",
      "hreflang",
      "http-equiv",
      "lang",
      "language",
      "link",
      "media",
      "method",
      "multiple",
      "nohref",
      "noresize",
      "noshade",
      "nowrap",
      "readonly",
      "rel",
      "rev",
      "rules",
      "scope",
      "scrolling",
      "selected",
      "shape",
      "target",
      "text",
      "type",
      "valign",
      "valuetype",
      "vlink"
    ]);
    function shouldIgnoreCase(selector, options) {
      return typeof selector.ignoreCase === "boolean" ? selector.ignoreCase : selector.ignoreCase === "quirks" ? !!options.quirksMode : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);
    }
    exports.attributeRules = {
      equals: function(next, data, options) {
        var adapter = options.adapter;
        var name = data.name;
        var value = data.value;
        if (shouldIgnoreCase(data, options)) {
          value = value.toLowerCase();
          return function(elem) {
            var attr = adapter.getAttributeValue(elem, name);
            return attr != null && attr.length === value.length && attr.toLowerCase() === value && next(elem);
          };
        }
        return function(elem) {
          return adapter.getAttributeValue(elem, name) === value && next(elem);
        };
      },
      hyphen: function(next, data, options) {
        var adapter = options.adapter;
        var name = data.name;
        var value = data.value;
        var len = value.length;
        if (shouldIgnoreCase(data, options)) {
          value = value.toLowerCase();
          return function hyphenIC(elem) {
            var attr = adapter.getAttributeValue(elem, name);
            return attr != null && (attr.length === len || attr.charAt(len) === "-") && attr.substr(0, len).toLowerCase() === value && next(elem);
          };
        }
        return function hyphen(elem) {
          var attr = adapter.getAttributeValue(elem, name);
          return attr != null && (attr.length === len || attr.charAt(len) === "-") && attr.substr(0, len) === value && next(elem);
        };
      },
      element: function(next, data, options) {
        var adapter = options.adapter;
        var name = data.name, value = data.value;
        if (/\s/.test(value)) {
          return boolbase_1.default.falseFunc;
        }
        var regex = new RegExp("(?:^|\\s)".concat(escapeRegex(value), "(?:$|\\s)"), shouldIgnoreCase(data, options) ? "i" : "");
        return function element(elem) {
          var attr = adapter.getAttributeValue(elem, name);
          return attr != null && attr.length >= value.length && regex.test(attr) && next(elem);
        };
      },
      exists: function(next, _a, _b) {
        var name = _a.name;
        var adapter = _b.adapter;
        return function(elem) {
          return adapter.hasAttrib(elem, name) && next(elem);
        };
      },
      start: function(next, data, options) {
        var adapter = options.adapter;
        var name = data.name;
        var value = data.value;
        var len = value.length;
        if (len === 0) {
          return boolbase_1.default.falseFunc;
        }
        if (shouldIgnoreCase(data, options)) {
          value = value.toLowerCase();
          return function(elem) {
            var attr = adapter.getAttributeValue(elem, name);
            return attr != null && attr.length >= len && attr.substr(0, len).toLowerCase() === value && next(elem);
          };
        }
        return function(elem) {
          var _a;
          return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) && next(elem);
        };
      },
      end: function(next, data, options) {
        var adapter = options.adapter;
        var name = data.name;
        var value = data.value;
        var len = -value.length;
        if (len === 0) {
          return boolbase_1.default.falseFunc;
        }
        if (shouldIgnoreCase(data, options)) {
          value = value.toLowerCase();
          return function(elem) {
            var _a;
            return ((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);
          };
        }
        return function(elem) {
          var _a;
          return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) && next(elem);
        };
      },
      any: function(next, data, options) {
        var adapter = options.adapter;
        var name = data.name, value = data.value;
        if (value === "") {
          return boolbase_1.default.falseFunc;
        }
        if (shouldIgnoreCase(data, options)) {
          var regex_1 = new RegExp(escapeRegex(value), "i");
          return function anyIC(elem) {
            var attr = adapter.getAttributeValue(elem, name);
            return attr != null && attr.length >= value.length && regex_1.test(attr) && next(elem);
          };
        }
        return function(elem) {
          var _a;
          return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) && next(elem);
        };
      },
      not: function(next, data, options) {
        var adapter = options.adapter;
        var name = data.name;
        var value = data.value;
        if (value === "") {
          return function(elem) {
            return !!adapter.getAttributeValue(elem, name) && next(elem);
          };
        } else if (shouldIgnoreCase(data, options)) {
          value = value.toLowerCase();
          return function(elem) {
            var attr = adapter.getAttributeValue(elem, name);
            return (attr == null || attr.length !== value.length || attr.toLowerCase() !== value) && next(elem);
          };
        }
        return function(elem) {
          return adapter.getAttributeValue(elem, name) !== value && next(elem);
        };
      }
    };
  }
});

// node_modules/nth-check/lib/parse.js
var require_parse2 = __commonJS({
  "node_modules/nth-check/lib/parse.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.parse = void 0;
    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];
      }
      var idx = 0;
      var a = 0;
      var sign = readSign();
      var number = readNumber();
      if (idx < formula.length && formula.charAt(idx) === "n") {
        idx++;
        a = sign * (number !== null && number !== void 0 ? number : 1);
        skipWhitespace();
        if (idx < formula.length) {
          sign = readSign();
          skipWhitespace();
          number = readNumber();
        } else {
          sign = number = 0;
        }
      }
      if (number === null || idx < formula.length) {
        throw new Error("n-th rule couldn't be parsed ('".concat(formula, "')"));
      }
      return [a, sign * number];
      function readSign() {
        if (formula.charAt(idx) === "-") {
          idx++;
          return -1;
        }
        if (formula.charAt(idx) === "+") {
          idx++;
        }
        return 1;
      }
      function readNumber() {
        var start = idx;
        var 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++;
        }
      }
    }
    exports.parse = parse;
  }
});

// node_modules/nth-check/lib/compile.js
var require_compile = __commonJS({
  "node_modules/nth-check/lib/compile.js"(exports) {
    "use strict";
    var __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.generate = exports.compile = void 0;
    var boolbase_1 = __importDefault(require_boolbase());
    function compile(parsed) {
      var a = parsed[0];
      var b = parsed[1] - 1;
      if (b < 0 && a <= 0)
        return boolbase_1.default.falseFunc;
      if (a === -1)
        return function(index) {
          return index <= b;
        };
      if (a === 0)
        return function(index) {
          return index === b;
        };
      if (a === 1)
        return b < 0 ? boolbase_1.default.trueFunc : function(index) {
          return index >= b;
        };
      var absA = Math.abs(a);
      var bMod = (b % absA + absA) % absA;
      return a > 1 ? function(index) {
        return index >= b && index % absA === bMod;
      } : function(index) {
        return index <= b && index % absA === bMod;
      };
    }
    exports.compile = compile;
    function generate(parsed) {
      var a = parsed[0];
      var b = parsed[1] - 1;
      var n = 0;
      if (a < 0) {
        var aPos_1 = -a;
        var minValue_1 = (b % aPos_1 + aPos_1) % aPos_1;
        return function() {
          var val = minValue_1 + aPos_1 * n++;
          return val > b ? null : val;
        };
      }
      if (a === 0)
        return b < 0 ? (
          // There are no result — always return `null`
          function() {
            return null;
          }
        ) : (
          // Return `b` exactly once
          function() {
            return n++ === 0 ? b : null;
          }
        );
      if (b < 0) {
        b += a * Math.ceil(-b / a);
      }
      return function() {
        return a * n++ + b;
      };
    }
    exports.generate = generate;
  }
});

// node_modules/nth-check/lib/index.js
var require_lib6 = __commonJS({
  "node_modules/nth-check/lib/index.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.sequence = exports.generate = exports.compile = exports.parse = void 0;
    var parse_js_1 = require_parse2();
    Object.defineProperty(exports, "parse", { enumerable: true, get: function() {
      return parse_js_1.parse;
    } });
    var compile_js_1 = require_compile();
    Object.defineProperty(exports, "compile", { enumerable: true, get: function() {
      return compile_js_1.compile;
    } });
    Object.defineProperty(exports, "generate", { enumerable: true, get: function() {
      return compile_js_1.generate;
    } });
    function nthCheck(formula) {
      return (0, compile_js_1.compile)((0, parse_js_1.parse)(formula));
    }
    exports.default = nthCheck;
    function sequence(formula) {
      return (0, compile_js_1.generate)((0, parse_js_1.parse)(formula));
    }
    exports.sequence = sequence;
  }
});

// node_modules/css-select/lib/pseudo-selectors/filters.js
var require_filters = __commonJS({
  "node_modules/css-select/lib/pseudo-selectors/filters.js"(exports) {
    "use strict";
    var __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.filters = void 0;
    var nth_check_1 = __importDefault(require_lib6());
    var boolbase_1 = __importDefault(require_boolbase());
    function getChildFunc(next, adapter) {
      return function(elem) {
        var parent = adapter.getParent(elem);
        return parent != null && adapter.isTag(parent) && next(elem);
      };
    }
    exports.filters = {
      contains: function(next, text, _a) {
        var adapter = _a.adapter;
        return function contains(elem) {
          return next(elem) && adapter.getText(elem).includes(text);
        };
      },
      icontains: function(next, text, _a) {
        var adapter = _a.adapter;
        var itext = text.toLowerCase();
        return function icontains(elem) {
          return next(elem) && adapter.getText(elem).toLowerCase().includes(itext);
        };
      },
      // Location specific methods
      "nth-child": function(next, rule, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        var func = (0, nth_check_1.default)(rule);
        if (func === boolbase_1.default.falseFunc)
          return boolbase_1.default.falseFunc;
        if (func === boolbase_1.default.trueFunc)
          return getChildFunc(next, adapter);
        return function nthChild(elem) {
          var siblings = adapter.getSiblings(elem);
          var pos = 0;
          for (var i = 0; i < siblings.length; i++) {
            if (equals(elem, siblings[i]))
              break;
            if (adapter.isTag(siblings[i])) {
              pos++;
            }
          }
          return func(pos) && next(elem);
        };
      },
      "nth-last-child": function(next, rule, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        var func = (0, nth_check_1.default)(rule);
        if (func === boolbase_1.default.falseFunc)
          return boolbase_1.default.falseFunc;
        if (func === boolbase_1.default.trueFunc)
          return getChildFunc(next, adapter);
        return function nthLastChild(elem) {
          var siblings = adapter.getSiblings(elem);
          var pos = 0;
          for (var i = siblings.length - 1; i >= 0; i--) {
            if (equals(elem, siblings[i]))
              break;
            if (adapter.isTag(siblings[i])) {
              pos++;
            }
          }
          return func(pos) && next(elem);
        };
      },
      "nth-of-type": function(next, rule, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        var func = (0, nth_check_1.default)(rule);
        if (func === boolbase_1.default.falseFunc)
          return boolbase_1.default.falseFunc;
        if (func === boolbase_1.default.trueFunc)
          return getChildFunc(next, adapter);
        return function nthOfType(elem) {
          var siblings = adapter.getSiblings(elem);
          var pos = 0;
          for (var i = 0; i < siblings.length; i++) {
            var currentSibling = siblings[i];
            if (equals(elem, currentSibling))
              break;
            if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === adapter.getName(elem)) {
              pos++;
            }
          }
          return func(pos) && next(elem);
        };
      },
      "nth-last-of-type": function(next, rule, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        var func = (0, nth_check_1.default)(rule);
        if (func === boolbase_1.default.falseFunc)
          return boolbase_1.default.falseFunc;
        if (func === boolbase_1.default.trueFunc)
          return getChildFunc(next, adapter);
        return function nthLastOfType(elem) {
          var siblings = adapter.getSiblings(elem);
          var pos = 0;
          for (var i = siblings.length - 1; i >= 0; i--) {
            var currentSibling = siblings[i];
            if (equals(elem, currentSibling))
              break;
            if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === adapter.getName(elem)) {
              pos++;
            }
          }
          return func(pos) && next(elem);
        };
      },
      // TODO determine the actual root element
      root: function(next, _rule, _a) {
        var adapter = _a.adapter;
        return function(elem) {
          var parent = adapter.getParent(elem);
          return (parent == null || !adapter.isTag(parent)) && next(elem);
        };
      },
      scope: function(next, rule, options, context) {
        var equals = options.equals;
        if (!context || context.length === 0) {
          return exports.filters["root"](next, rule, options);
        }
        if (context.length === 1) {
          return function(elem) {
            return equals(context[0], elem) && next(elem);
          };
        }
        return function(elem) {
          return context.includes(elem) && next(elem);
        };
      },
      hover: dynamicStatePseudo("isHovered"),
      visited: dynamicStatePseudo("isVisited"),
      active: dynamicStatePseudo("isActive")
    };
    function dynamicStatePseudo(name) {
      return function dynamicPseudo(next, _rule, _a) {
        var adapter = _a.adapter;
        var func = adapter[name];
        if (typeof func !== "function") {
          return boolbase_1.default.falseFunc;
        }
        return function active(elem) {
          return func(elem) && next(elem);
        };
      };
    }
  }
});

// node_modules/css-select/lib/pseudo-selectors/pseudos.js
var require_pseudos = __commonJS({
  "node_modules/css-select/lib/pseudo-selectors/pseudos.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.verifyPseudoArgs = exports.pseudos = void 0;
    exports.pseudos = {
      empty: function(elem, _a) {
        var adapter = _a.adapter;
        return !adapter.getChildren(elem).some(function(elem2) {
          return adapter.isTag(elem2) || adapter.getText(elem2) !== "";
        });
      },
      "first-child": function(elem, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        if (adapter.prevElementSibling) {
          return adapter.prevElementSibling(elem) == null;
        }
        var firstChild = adapter.getSiblings(elem).find(function(elem2) {
          return adapter.isTag(elem2);
        });
        return firstChild != null && equals(elem, firstChild);
      },
      "last-child": function(elem, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        var siblings = adapter.getSiblings(elem);
        for (var i = siblings.length - 1; i >= 0; i--) {
          if (equals(elem, siblings[i]))
            return true;
          if (adapter.isTag(siblings[i]))
            break;
        }
        return false;
      },
      "first-of-type": function(elem, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        var siblings = adapter.getSiblings(elem);
        var elemName = adapter.getName(elem);
        for (var i = 0; i < siblings.length; i++) {
          var currentSibling = siblings[i];
          if (equals(elem, currentSibling))
            return true;
          if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === elemName) {
            break;
          }
        }
        return false;
      },
      "last-of-type": function(elem, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        var siblings = adapter.getSiblings(elem);
        var elemName = adapter.getName(elem);
        for (var i = siblings.length - 1; i >= 0; i--) {
          var currentSibling = siblings[i];
          if (equals(elem, currentSibling))
            return true;
          if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === elemName) {
            break;
          }
        }
        return false;
      },
      "only-of-type": function(elem, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        var elemName = adapter.getName(elem);
        return adapter.getSiblings(elem).every(function(sibling) {
          return equals(elem, sibling) || !adapter.isTag(sibling) || adapter.getName(sibling) !== elemName;
        });
      },
      "only-child": function(elem, _a) {
        var adapter = _a.adapter, equals = _a.equals;
        return adapter.getSiblings(elem).every(function(sibling) {
          return equals(elem, sibling) || !adapter.isTag(sibling);
        });
      }
    };
    function verifyPseudoArgs(func, name, subselect, argIndex) {
      if (subselect === null) {
        if (func.length > argIndex) {
          throw new Error("Pseudo-class :".concat(name, " requires an argument"));
        }
      } else if (func.length === argIndex) {
        throw new Error("Pseudo-class :".concat(name, " doesn't have any arguments"));
      }
    }
    exports.verifyPseudoArgs = verifyPseudoArgs;
  }
});

// node_modules/css-select/lib/pseudo-selectors/aliases.js
var require_aliases = __commonJS({
  "node_modules/css-select/lib/pseudo-selectors/aliases.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.aliases = void 0;
    exports.aliases = {
      // Links
      "any-link": ":is(a, area, link)[href]",
      link: ":any-link:not(:visited)",
      // Forms
      // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements
      disabled: ":is(\n        :is(button, input, select, textarea, optgroup, option)[disabled],\n        optgroup[disabled] > option,\n        fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n    )",
      enabled: ":not(:disabled)",
      checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",
      required: ":is(input, select, textarea)[required]",
      optional: ":is(input, select, textarea):not([required])",
      // JQuery extensions
      // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness
      selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",
      checkbox: "[type=checkbox]",
      file: "[type=file]",
      password: "[type=password]",
      radio: "[type=radio]",
      reset: "[type=reset]",
      image: "[type=image]",
      submit: "[type=submit]",
      parent: ":not(:empty)",
      header: ":is(h1, h2, h3, h4, h5, h6)",
      button: ":is(button, input[type=button])",
      input: ":is(input, textarea, select, button)",
      text: "input:is(:not([type!='']), [type=text])"
    };
  }
});

// node_modules/css-select/lib/pseudo-selectors/subselects.js
var require_subselects = __commonJS({
  "node_modules/css-select/lib/pseudo-selectors/subselects.js"(exports) {
    "use strict";
    var __spreadArray = exports && exports.__spreadArray || function(to, from, pack) {
      if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
        if (ar || !(i in from)) {
          if (!ar) ar = Array.prototype.slice.call(from, 0, i);
          ar[i] = from[i];
        }
      }
      return to.concat(ar || Array.prototype.slice.call(from));
    };
    var __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.subselects = exports.getNextSiblings = exports.ensureIsTag = exports.PLACEHOLDER_ELEMENT = void 0;
    var boolbase_1 = __importDefault(require_boolbase());
    var sort_js_1 = require_sort();
    exports.PLACEHOLDER_ELEMENT = {};
    function ensureIsTag(next, adapter) {
      if (next === boolbase_1.default.falseFunc)
        return boolbase_1.default.falseFunc;
      return function(elem) {
        return adapter.isTag(elem) && next(elem);
      };
    }
    exports.ensureIsTag = ensureIsTag;
    function getNextSiblings(elem, adapter) {
      var siblings = adapter.getSiblings(elem);
      if (siblings.length <= 1)
        return [];
      var elemIndex = siblings.indexOf(elem);
      if (elemIndex < 0 || elemIndex === siblings.length - 1)
        return [];
      return siblings.slice(elemIndex + 1).filter(adapter.isTag);
    }
    exports.getNextSiblings = getNextSiblings;
    function copyOptions(options) {
      return {
        xmlMode: !!options.xmlMode,
        lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,
        lowerCaseTags: !!options.lowerCaseTags,
        quirksMode: !!options.quirksMode,
        cacheResults: !!options.cacheResults,
        pseudos: options.pseudos,
        adapter: options.adapter,
        equals: options.equals
      };
    }
    var is = function(next, token, options, context, compileToken) {
      var func = compileToken(token, copyOptions(options), context);
      return func === boolbase_1.default.trueFunc ? next : func === boolbase_1.default.falseFunc ? boolbase_1.default.falseFunc : function(elem) {
        return func(elem) && next(elem);
      };
    };
    exports.subselects = {
      is,
      /**
       * `:matches` and `:where` are aliases for `:is`.
       */
      matches: is,
      where: is,
      not: function(next, token, options, context, compileToken) {
        var func = compileToken(token, copyOptions(options), context);
        return func === boolbase_1.default.falseFunc ? next : func === boolbase_1.default.trueFunc ? boolbase_1.default.falseFunc : function(elem) {
          return !func(elem) && next(elem);
        };
      },
      has: function(next, subselect, options, _context, compileToken) {
        var adapter = options.adapter;
        var opts = copyOptions(options);
        opts.relativeSelector = true;
        var context = subselect.some(function(s) {
          return s.some(sort_js_1.isTraversal);
        }) ? (
          // Used as a placeholder. Will be replaced with the actual element.
          [exports.PLACEHOLDER_ELEMENT]
        ) : void 0;
        var compiled = compileToken(subselect, opts, context);
        if (compiled === boolbase_1.default.falseFunc)
          return boolbase_1.default.falseFunc;
        var hasElement = ensureIsTag(compiled, adapter);
        if (context && compiled !== boolbase_1.default.trueFunc) {
          var _a = compiled.shouldTestNextSiblings, shouldTestNextSiblings_1 = _a === void 0 ? false : _a;
          return function(elem) {
            if (!next(elem))
              return false;
            context[0] = elem;
            var childs = adapter.getChildren(elem);
            var nextElements = shouldTestNextSiblings_1 ? __spreadArray(__spreadArray([], childs, true), getNextSiblings(elem, adapter), true) : childs;
            return adapter.existsOne(hasElement, nextElements);
          };
        }
        return function(elem) {
          return next(elem) && adapter.existsOne(hasElement, adapter.getChildren(elem));
        };
      }
    };
  }
});

// node_modules/css-select/lib/pseudo-selectors/index.js
var require_pseudo_selectors = __commonJS({
  "node_modules/css-select/lib/pseudo-selectors/index.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.compilePseudoSelector = exports.aliases = exports.pseudos = exports.filters = void 0;
    var css_what_1 = require_commonjs();
    var filters_js_1 = require_filters();
    Object.defineProperty(exports, "filters", { enumerable: true, get: function() {
      return filters_js_1.filters;
    } });
    var pseudos_js_1 = require_pseudos();
    Object.defineProperty(exports, "pseudos", { enumerable: true, get: function() {
      return pseudos_js_1.pseudos;
    } });
    var aliases_js_1 = require_aliases();
    Object.defineProperty(exports, "aliases", { enumerable: true, get: function() {
      return aliases_js_1.aliases;
    } });
    var subselects_js_1 = require_subselects();
    function compilePseudoSelector(next, selector, options, context, compileToken) {
      var _a;
      var name = selector.name, data = selector.data;
      if (Array.isArray(data)) {
        if (!(name in subselects_js_1.subselects)) {
          throw new Error("Unknown pseudo-class :".concat(name, "(").concat(data, ")"));
        }
        return subselects_js_1.subselects[name](next, data, options, context, compileToken);
      }
      var userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];
      var stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases_js_1.aliases[name];
      if (typeof stringPseudo === "string") {
        if (data != null) {
          throw new Error("Pseudo ".concat(name, " doesn't have any arguments"));
        }
        var alias = (0, css_what_1.parse)(stringPseudo);
        return subselects_js_1.subselects["is"](next, alias, options, context, compileToken);
      }
      if (typeof userPseudo === "function") {
        (0, pseudos_js_1.verifyPseudoArgs)(userPseudo, name, data, 1);
        return function(elem) {
          return userPseudo(elem, data) && next(elem);
        };
      }
      if (name in filters_js_1.filters) {
        return filters_js_1.filters[name](next, data, options, context);
      }
      if (name in pseudos_js_1.pseudos) {
        var pseudo_1 = pseudos_js_1.pseudos[name];
        (0, pseudos_js_1.verifyPseudoArgs)(pseudo_1, name, data, 2);
        return function(elem) {
          return pseudo_1(elem, options, data) && next(elem);
        };
      }
      throw new Error("Unknown pseudo-class :".concat(name));
    }
    exports.compilePseudoSelector = compilePseudoSelector;
  }
});

// node_modules/css-select/lib/general.js
var require_general = __commonJS({
  "node_modules/css-select/lib/general.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.compileGeneralSelector = void 0;
    var attributes_js_1 = require_attributes();
    var index_js_1 = require_pseudo_selectors();
    var css_what_1 = require_commonjs();
    function getElementParent(node, adapter) {
      var parent = adapter.getParent(node);
      if (parent && adapter.isTag(parent)) {
        return parent;
      }
      return null;
    }
    function compileGeneralSelector(next, selector, options, context, compileToken) {
      var adapter = options.adapter, equals = options.equals;
      switch (selector.type) {
        case css_what_1.SelectorType.PseudoElement: {
          throw new Error("Pseudo-elements are not supported by css-select");
        }
        case css_what_1.SelectorType.ColumnCombinator: {
          throw new Error("Column combinators are not yet supported by css-select");
        }
        case css_what_1.SelectorType.Attribute: {
          if (selector.namespace != null) {
            throw new Error("Namespaced attributes are not yet supported by css-select");
          }
          if (!options.xmlMode || options.lowerCaseAttributeNames) {
            selector.name = selector.name.toLowerCase();
          }
          return attributes_js_1.attributeRules[selector.action](next, selector, options);
        }
        case css_what_1.SelectorType.Pseudo: {
          return (0, index_js_1.compilePseudoSelector)(next, selector, options, context, compileToken);
        }
        // Tags
        case css_what_1.SelectorType.Tag: {
          if (selector.namespace != null) {
            throw new Error("Namespaced tag names are not yet supported by css-select");
          }
          var name_1 = selector.name;
          if (!options.xmlMode || options.lowerCaseTags) {
            name_1 = name_1.toLowerCase();
          }
          return function tag(elem) {
            return adapter.getName(elem) === name_1 && next(elem);
          };
        }
        // Traversal
        case css_what_1.SelectorType.Descendant: {
          if (options.cacheResults === false || typeof WeakSet === "undefined") {
            return function descendant(elem) {
              var current = elem;
              while (current = getElementParent(current, adapter)) {
                if (next(current)) {
                  return true;
                }
              }
              return false;
            };
          }
          var isFalseCache_1 = /* @__PURE__ */ new WeakSet();
          return function cachedDescendant(elem) {
            var current = elem;
            while (current = getElementParent(current, adapter)) {
              if (!isFalseCache_1.has(current)) {
                if (adapter.isTag(current) && next(current)) {
                  return true;
                }
                isFalseCache_1.add(current);
              }
            }
            return false;
          };
        }
        case "_flexibleDescendant": {
          return function flexibleDescendant(elem) {
            var current = elem;
            do {
              if (next(current))
                return true;
            } while (current = getElementParent(current, adapter));
            return false;
          };
        }
        case css_what_1.SelectorType.Parent: {
          return function parent(elem) {
            return adapter.getChildren(elem).some(function(elem2) {
              return adapter.isTag(elem2) && next(elem2);
            });
          };
        }
        case css_what_1.SelectorType.Child: {
          return function child(elem) {
            var parent = adapter.getParent(elem);
            return parent != null && adapter.isTag(parent) && next(parent);
          };
        }
        case css_what_1.SelectorType.Sibling: {
          return function sibling(elem) {
            var siblings = adapter.getSiblings(elem);
            for (var i = 0; i < siblings.length; i++) {
              var currentSibling = siblings[i];
              if (equals(elem, currentSibling))
                break;
              if (adapter.isTag(currentSibling) && next(currentSibling)) {
                return true;
              }
            }
            return false;
          };
        }
        case css_what_1.SelectorType.Adjacent: {
          if (adapter.prevElementSibling) {
            return function adjacent(elem) {
              var previous = adapter.prevElementSibling(elem);
              return previous != null && next(previous);
            };
          }
          return function adjacent(elem) {
            var siblings = adapter.getSiblings(elem);
            var lastElement;
            for (var i = 0; i < siblings.length; i++) {
              var currentSibling = siblings[i];
              if (equals(elem, currentSibling))
                break;
              if (adapter.isTag(currentSibling)) {
                lastElement = currentSibling;
              }
            }
            return !!lastElement && next(lastElement);
          };
        }
        case css_what_1.SelectorType.Universal: {
          if (selector.namespace != null && selector.namespace !== "*") {
            throw new Error("Namespaced universal selectors are not yet supported by css-select");
          }
          return next;
        }
      }
    }
    exports.compileGeneralSelector = compileGeneralSelector;
  }
});

// node_modules/css-select/lib/compile.js
var require_compile2 = __commonJS({
  "node_modules/css-select/lib/compile.js"(exports) {
    "use strict";
    var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m, k);
      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    } : function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m[k];
    });
    var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    } : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports && exports.__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 __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.compileToken = exports.compileUnsafe = exports.compile = void 0;
    var css_what_1 = require_commonjs();
    var boolbase_1 = __importDefault(require_boolbase());
    var sort_js_1 = __importStar(require_sort());
    var general_js_1 = require_general();
    var subselects_js_1 = require_subselects();
    function compile(selector, options, context) {
      var next = compileUnsafe(selector, options, context);
      return (0, subselects_js_1.ensureIsTag)(next, options.adapter);
    }
    exports.compile = compile;
    function compileUnsafe(selector, options, context) {
      var token = typeof selector === "string" ? (0, css_what_1.parse)(selector) : selector;
      return compileToken(token, options, context);
    }
    exports.compileUnsafe = compileUnsafe;
    function includesScopePseudo(t) {
      return t.type === css_what_1.SelectorType.Pseudo && (t.name === "scope" || Array.isArray(t.data) && t.data.some(function(data) {
        return data.some(includesScopePseudo);
      }));
    }
    var DESCENDANT_TOKEN = { type: css_what_1.SelectorType.Descendant };
    var FLEXIBLE_DESCENDANT_TOKEN = {
      type: "_flexibleDescendant"
    };
    var SCOPE_TOKEN = {
      type: css_what_1.SelectorType.Pseudo,
      name: "scope",
      data: null
    };
    function absolutize(token, _a, context) {
      var adapter = _a.adapter;
      var hasContext = !!(context === null || context === void 0 ? void 0 : context.every(function(e) {
        var parent = adapter.isTag(e) && adapter.getParent(e);
        return e === subselects_js_1.PLACEHOLDER_ELEMENT || parent && adapter.isTag(parent);
      }));
      for (var _i = 0, token_1 = token; _i < token_1.length; _i++) {
        var t = token_1[_i];
        if (t.length > 0 && (0, sort_js_1.isTraversal)(t[0]) && t[0].type !== css_what_1.SelectorType.Descendant) {
        } else if (hasContext && !t.some(includesScopePseudo)) {
          t.unshift(DESCENDANT_TOKEN);
        } else {
          continue;
        }
        t.unshift(SCOPE_TOKEN);
      }
    }
    function compileToken(token, options, context) {
      var _a;
      token.forEach(sort_js_1.default);
      context = (_a = options.context) !== null && _a !== void 0 ? _a : context;
      var isArrayContext = Array.isArray(context);
      var finalContext = context && (Array.isArray(context) ? context : [context]);
      if (options.relativeSelector !== false) {
        absolutize(token, options, finalContext);
      } else if (token.some(function(t) {
        return t.length > 0 && (0, sort_js_1.isTraversal)(t[0]);
      })) {
        throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled");
      }
      var shouldTestNextSiblings = false;
      var query = token.map(function(rules) {
        if (rules.length >= 2) {
          var first = rules[0], second = rules[1];
          if (first.type !== css_what_1.SelectorType.Pseudo || first.name !== "scope") {
          } else if (isArrayContext && second.type === css_what_1.SelectorType.Descendant) {
            rules[1] = FLEXIBLE_DESCENDANT_TOKEN;
          } else if (second.type === css_what_1.SelectorType.Adjacent || second.type === css_what_1.SelectorType.Sibling) {
            shouldTestNextSiblings = true;
          }
        }
        return compileRules(rules, options, finalContext);
      }).reduce(reduceRules, boolbase_1.default.falseFunc);
      query.shouldTestNextSiblings = shouldTestNextSiblings;
      return query;
    }
    exports.compileToken = compileToken;
    function compileRules(rules, options, context) {
      var _a;
      return rules.reduce(function(previous, rule) {
        return previous === boolbase_1.default.falseFunc ? boolbase_1.default.falseFunc : (0, general_js_1.compileGeneralSelector)(previous, rule, options, context, compileToken);
      }, (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase_1.default.trueFunc);
    }
    function reduceRules(a, b) {
      if (b === boolbase_1.default.falseFunc || a === boolbase_1.default.trueFunc) {
        return a;
      }
      if (a === boolbase_1.default.falseFunc || b === boolbase_1.default.trueFunc) {
        return b;
      }
      return function combine(elem) {
        return a(elem) || b(elem);
      };
    }
  }
});

// node_modules/css-select/lib/index.js
var require_lib7 = __commonJS({
  "node_modules/css-select/lib/index.js"(exports) {
    "use strict";
    var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      var desc = Object.getOwnPropertyDescriptor(m, k);
      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
        desc = { enumerable: true, get: function() {
          return m[k];
        } };
      }
      Object.defineProperty(o, k2, desc);
    } : function(o, m, k, k2) {
      if (k2 === void 0) k2 = k;
      o[k2] = m[k];
    });
    var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
      Object.defineProperty(o, "default", { enumerable: true, value: v });
    } : function(o, v) {
      o["default"] = v;
    });
    var __importStar = exports && exports.__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 __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { "default": mod };
    };
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.aliases = exports.pseudos = exports.filters = exports.is = exports.selectOne = exports.selectAll = exports.prepareContext = exports._compileToken = exports._compileUnsafe = exports.compile = void 0;
    var DomUtils = __importStar(require_lib5());
    var boolbase_1 = __importDefault(require_boolbase());
    var compile_js_1 = require_compile2();
    var subselects_js_1 = require_subselects();
    var defaultEquals = function(a, b) {
      return a === b;
    };
    var defaultOptions = {
      adapter: DomUtils,
      equals: defaultEquals
    };
    function convertOptionFormats(options) {
      var _a, _b, _c, _d;
      var opts = options !== null && options !== void 0 ? options : defaultOptions;
      (_a = opts.adapter) !== null && _a !== void 0 ? _a : opts.adapter = DomUtils;
      (_b = opts.equals) !== null && _b !== void 0 ? _b : opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals;
      return opts;
    }
    function wrapCompile(func) {
      return function addAdapter(selector, options, context) {
        var opts = convertOptionFormats(options);
        return func(selector, opts, context);
      };
    }
    exports.compile = wrapCompile(compile_js_1.compile);
    exports._compileUnsafe = wrapCompile(compile_js_1.compileUnsafe);
    exports._compileToken = wrapCompile(compile_js_1.compileToken);
    function getSelectorFunc(searchFunc) {
      return function select(query, elements, options) {
        var opts = convertOptionFormats(options);
        if (typeof query !== "function") {
          query = (0, compile_js_1.compileUnsafe)(query, opts, elements);
        }
        var filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);
        return searchFunc(query, filteredElements, opts);
      };
    }
    function prepareContext(elems, adapter, shouldTestNextSiblings) {
      if (shouldTestNextSiblings === void 0) {
        shouldTestNextSiblings = false;
      }
      if (shouldTestNextSiblings) {
        elems = appendNextSiblings(elems, adapter);
      }
      return Array.isArray(elems) ? adapter.removeSubsets(elems) : adapter.getChildren(elems);
    }
    exports.prepareContext = prepareContext;
    function appendNextSiblings(elem, adapter) {
      var elems = Array.isArray(elem) ? elem.slice(0) : [elem];
      var elemsLength = elems.length;
      for (var i = 0; i < elemsLength; i++) {
        var nextSiblings = (0, subselects_js_1.getNextSiblings)(elems[i], adapter);
        elems.push.apply(elems, nextSiblings);
      }
      return elems;
    }
    exports.selectAll = getSelectorFunc(function(query, elems, options) {
      return query === boolbase_1.default.falseFunc || !elems || elems.length === 0 ? [] : options.adapter.findAll(query, elems);
    });
    exports.selectOne = getSelectorFunc(function(query, elems, options) {
      return query === boolbase_1.default.falseFunc || !elems || elems.length === 0 ? null : options.adapter.findOne(query, elems);
    });
    function is(elem, query, options) {
      var opts = convertOptionFormats(options);
      return (typeof query === "function" ? query : (0, compile_js_1.compile)(query, opts))(elem);
    }
    exports.is = is;
    exports.default = exports.selectAll;
    var index_js_1 = require_pseudo_selectors();
    Object.defineProperty(exports, "filters", { enumerable: true, get: function() {
      return index_js_1.filters;
    } });
    Object.defineProperty(exports, "pseudos", { enumerable: true, get: function() {
      return index_js_1.pseudos;
    } });
    Object.defineProperty(exports, "aliases", { enumerable: true, get: function() {
      return index_js_1.aliases;
    } });
  }
});

// src/svgo/css-select-adapter.js
var require_css_select_adapter = __commonJS({
  "src/svgo/css-select-adapter.js"(exports, module) {
    "use strict";
    var isTag = (node) => {
      return node.type === "element";
    };
    var existsOne = (test, elems) => {
      return elems.some((elem) => {
        if (isTag(elem)) {
          return test(elem) || existsOne(test, getChildren(elem));
        } else {
          return false;
        }
      });
    };
    var getAttributeValue = (elem, name) => {
      return elem.attributes[name];
    };
    var getChildren = (node) => {
      return node.children || [];
    };
    var getName = (elemAst) => {
      return elemAst.name;
    };
    var getParent = (node) => {
      return node.parentNode || null;
    };
    var getSiblings = (elem) => {
      var parent = getParent(elem);
      return parent ? getChildren(parent) : [];
    };
    var getText = (node) => {
      if (node.children[0].type === "text" && node.children[0].type === "cdata") {
        return node.children[0].value;
      }
      return "";
    };
    var hasAttrib = (elem, name) => {
      return elem.attributes[name] !== void 0;
    };
    var removeSubsets = (nodes) => {
      let idx = nodes.length;
      let node;
      let ancestor;
      let replace;
      while (--idx > -1) {
        node = ancestor = nodes[idx];
        nodes[idx] = null;
        replace = true;
        while (ancestor) {
          if (nodes.includes(ancestor)) {
            replace = false;
            nodes.splice(idx, 1);
            break;
          }
          ancestor = getParent(ancestor);
        }
        if (replace) {
          nodes[idx] = node;
        }
      }
      return nodes;
    };
    var findAll = (test, elems) => {
      const result = [];
      for (const elem of elems) {
        if (isTag(elem)) {
          if (test(elem)) {
            result.push(elem);
          }
          result.push(...findAll(test, getChildren(elem)));
        }
      }
      return result;
    };
    var findOne = (test, elems) => {
      for (const elem of elems) {
        if (isTag(elem)) {
          if (test(elem)) {
            return elem;
          }
          const result = findOne(test, getChildren(elem));
          if (result) {
            return result;
          }
        }
      }
      return null;
    };
    var svgoCssSelectAdapter = {
      isTag,
      existsOne,
      getAttributeValue,
      getChildren,
      getName,
      getParent,
      getSiblings,
      getText,
      hasAttrib,
      removeSubsets,
      findAll,
      findOne
    };
    module.exports = svgoCssSelectAdapter;
  }
});

// src/svgo/xast.js
var require_xast = __commonJS({
  "src/svgo/xast.js"(exports) {
    "use strict";
    var { selectAll, selectOne, is } = require_lib7();
    var xastAdaptor = require_css_select_adapter();
    var cssSelectOptions = {
      xmlMode: true,
      adapter: xastAdaptor
    };
    var querySelectorAll = (node, selector) => {
      return selectAll(selector, node, cssSelectOptions);
    };
    exports.querySelectorAll = querySelectorAll;
    var querySelector = (node, selector) => {
      return selectOne(selector, node, cssSelectOptions);
    };
    exports.querySelector = querySelector;
    var matches = (node, selector) => {
      return is(node, selector, cssSelectOptions);
    };
    exports.matches = matches;
    var visitSkip = Symbol();
    exports.visitSkip = visitSkip;
    var visit = (node, visitor, parentNode) => {
      const callbacks = visitor[node.type];
      if (callbacks && callbacks.enter) {
        const symbol = callbacks.enter(node, parentNode);
        if (symbol === visitSkip) {
          return;
        }
      }
      if (node.type === "root") {
        for (const child of node.children) {
          visit(child, visitor, node);
        }
      }
      if (node.type === "element") {
        if (parentNode.children.includes(node)) {
          for (const child of node.children) {
            visit(child, visitor, node);
          }
        }
      }
      if (callbacks && callbacks.exit) {
        callbacks.exit(node, parentNode);
      }
    };
    exports.visit = visit;
    var detachNodeFromParent = (node, parentNode) => {
      parentNode.children = parentNode.children.filter((child) => child !== node);
    };
    exports.detachNodeFromParent = detachNodeFromParent;
  }
});

// src/svgo/tools.js
var require_tools = __commonJS({
  "src/svgo/tools.js"(exports) {
    "use strict";
    var { visit } = require_xast();
    exports.cleanupOutData = (data, params, command) => {
      let str = "";
      let delimiter;
      let prev;
      data.forEach((item, i) => {
        delimiter = " ";
        if (i == 0) delimiter = "";
        if (params.noSpaceAfterFlags && (command == "A" || command == "a")) {
          var pos = i % 7;
          if (pos == 4 || pos == 5) delimiter = "";
        }
        const itemStr = params.leadingZero ? removeLeadingZero(item) : item.toString();
        if (params.negativeExtraSpace && delimiter != "" && (item < 0 || itemStr.charAt(0) === "." && prev % 1 !== 0)) {
          delimiter = "";
        }
        prev = item;
        str += delimiter + itemStr;
      });
      return str;
    };
    var removeLeadingZero = (num) => {
      var strNum = num.toString();
      if (0 < num && num < 1 && strNum.charAt(0) === "0") {
        strNum = strNum.slice(1);
      } else if (-1 < num && num < 0 && strNum.charAt(1) === "0") {
        strNum = strNum.charAt(0) + strNum.slice(2);
      }
      return strNum;
    };
    exports.removeLeadingZero = removeLeadingZero;
    function invokePlugins(ast, info, plugins, overrides, globalOverrides) {
      for (const plugin of plugins) {
        const override = overrides == null ? null : overrides[plugin.name];
        if (override === false) {
          continue;
        }
        const params = { ...plugin.params, ...globalOverrides, ...override };
        const visitor = plugin.fn(ast, params, info);
        if (visitor != null) {
          visit(ast, visitor);
        }
      }
    }
    function createPreset({ name, plugins }) {
      return {
        name,
        fn: (ast, params, info) => {
          const { floatPrecision, overrides } = params;
          const globalOverrides = {};
          if (floatPrecision != null) {
            globalOverrides.floatPrecision = floatPrecision;
          }
          invokePlugins(ast, info, plugins, overrides, globalOverrides);
        }
      };
    }
    exports.invokePlugins = invokePlugins;
    exports.createPreset = createPreset;
  }
});

// src/svgo/plugins/removeDoctype.js
var require_removeDoctype = __commonJS({
  "src/svgo/plugins/removeDoctype.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeDoctype";
    exports.description = "removes doctype declaration";
    exports.fn = () => {
      return {
        doctype: {
          enter: (node, parentNode) => {
            detachNodeFromParent(node, parentNode);
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeXMLProcInst.js
var require_removeXMLProcInst = __commonJS({
  "src/svgo/plugins/removeXMLProcInst.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeXMLProcInst";
    exports.description = "removes XML processing instructions";
    exports.fn = () => {
      return {
        instruction: {
          enter: (node, parentNode) => {
            if (node.name === "xml") {
              detachNodeFromParent(node, parentNode);
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeComments.js
var require_removeComments = __commonJS({
  "src/svgo/plugins/removeComments.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeComments";
    exports.description = "removes comments";
    exports.fn = () => {
      return {
        comment: {
          enter: (node, parentNode) => {
            if (node.value.charAt(0) !== "!") {
              detachNodeFromParent(node, parentNode);
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeMetadata.js
var require_removeMetadata = __commonJS({
  "src/svgo/plugins/removeMetadata.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeMetadata";
    exports.description = "removes <metadata>";
    exports.fn = () => {
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "metadata") {
              detachNodeFromParent(node, parentNode);
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeEditorsNSData.js
var require_removeEditorsNSData = __commonJS({
  "src/svgo/plugins/removeEditorsNSData.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    var { editorNamespaces } = require_collections();
    exports.name = "removeEditorsNSData";
    exports.description = "removes editors namespaces, elements and attributes";
    exports.fn = (_root, params) => {
      let namespaces = editorNamespaces;
      if (Array.isArray(params.additionalNamespaces)) {
        namespaces = [...editorNamespaces, ...params.additionalNamespaces];
      }
      const prefixes = [];
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "svg") {
              for (const [name, value] of Object.entries(node.attributes)) {
                if (name.startsWith("xmlns:") && namespaces.includes(value)) {
                  prefixes.push(name.slice("xmlns:".length));
                  delete node.attributes[name];
                }
              }
            }
            for (const name of Object.keys(node.attributes)) {
              if (name.includes(":")) {
                const [prefix] = name.split(":");
                if (prefixes.includes(prefix)) {
                  delete node.attributes[name];
                }
              }
            }
            if (node.name.includes(":")) {
              const [prefix] = node.name.split(":");
              if (prefixes.includes(prefix)) {
                detachNodeFromParent(node, parentNode);
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/cleanupAttrs.js
var require_cleanupAttrs = __commonJS({
  "src/svgo/plugins/cleanupAttrs.js"(exports) {
    "use strict";
    exports.name = "cleanupAttrs";
    exports.description = "cleanups attributes from newlines, trailing and repeating spaces";
    var regNewlinesNeedSpace = /(\S)\r?\n(\S)/g;
    var regNewlines = /\r?\n/g;
    var regSpaces = /\s{2,}/g;
    exports.fn = (root, params) => {
      const { newlines = true, trim = true, spaces = true } = params;
      return {
        element: {
          enter: (node) => {
            for (const name of Object.keys(node.attributes)) {
              if (newlines) {
                node.attributes[name] = node.attributes[name].replace(
                  regNewlinesNeedSpace,
                  (match, p1, p2) => p1 + " " + p2
                );
                node.attributes[name] = node.attributes[name].replace(
                  regNewlines,
                  ""
                );
              }
              if (trim) {
                node.attributes[name] = node.attributes[name].trim();
              }
              if (spaces) {
                node.attributes[name] = node.attributes[name].replace(
                  regSpaces,
                  " "
                );
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/mergeStyles.js
var require_mergeStyles = __commonJS({
  "src/svgo/plugins/mergeStyles.js"(exports) {
    "use strict";
    var { visitSkip, detachNodeFromParent } = require_xast();
    exports.name = "mergeStyles";
    exports.description = "merge multiple style elements into one";
    exports.fn = () => {
      let firstStyleElement = null;
      let collectedStyles = "";
      let styleContentType = "text";
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "foreignObject") {
              return visitSkip;
            }
            if (node.name !== "style") {
              return;
            }
            if (node.attributes.type != null && node.attributes.type !== "" && node.attributes.type !== "text/css") {
              return;
            }
            let css = "";
            for (const child of node.children) {
              if (child.type === "text") {
                css += child.value;
              }
              if (child.type === "cdata") {
                styleContentType = "cdata";
                css += child.value;
              }
            }
            if (css.trim().length === 0) {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (node.attributes.media == null) {
              collectedStyles += css;
            } else {
              collectedStyles += `@media ${node.attributes.media}{${css}}`;
              delete node.attributes.media;
            }
            if (firstStyleElement == null) {
              firstStyleElement = node;
            } else {
              detachNodeFromParent(node, parentNode);
              const child = { type: styleContentType, value: collectedStyles };
              Object.defineProperty(child, "parentNode", {
                writable: true,
                value: firstStyleElement
              });
              firstStyleElement.children = [child];
            }
          }
        }
      };
    };
  }
});

// node_modules/css-tree/cjs/tokenizer/types.cjs
var require_types2 = __commonJS({
  "node_modules/css-tree/cjs/tokenizer/types.cjs"(exports) {
    "use strict";
    var EOF = 0;
    var Ident = 1;
    var Function2 = 2;
    var AtKeyword = 3;
    var Hash = 4;
    var String2 = 5;
    var BadString = 6;
    var Url = 7;
    var BadUrl = 8;
    var Delim = 9;
    var Number2 = 10;
    var Percentage = 11;
    var Dimension = 12;
    var WhiteSpace = 13;
    var CDO = 14;
    var CDC = 15;
    var Colon = 16;
    var Semicolon = 17;
    var Comma = 18;
    var LeftSquareBracket = 19;
    var RightSquareBracket = 20;
    var LeftParenthesis = 21;
    var RightParenthesis = 22;
    var LeftCurlyBracket = 23;
    var RightCurlyBracket = 24;
    var Comment = 25;
    exports.AtKeyword = AtKeyword;
    exports.BadString = BadString;
    exports.BadUrl = BadUrl;
    exports.CDC = CDC;
    exports.CDO = CDO;
    exports.Colon = Colon;
    exports.Comma = Comma;
    exports.Comment = Comment;
    exports.Delim = Delim;
    exports.Dimension = Dimension;
    exports.EOF = EOF;
    exports.Function = Function2;
    exports.Hash = Hash;
    exports.Ident = Ident;
    exports.LeftCurlyBracket = LeftCurlyBracket;
    exports.LeftParenthesis = LeftParenthesis;
    exports.LeftSquareBracket = LeftSquareBracket;
    exports.Number = Number2;
    exports.Percentage = Percentage;
    exports.RightCurlyBracket = RightCurlyBracket;
    exports.RightParenthesis = RightParenthesis;
    exports.RightSquareBracket = RightSquareBracket;
    exports.Semicolon = Semicolon;
    exports.String = String2;
    exports.Url = Url;
    exports.WhiteSpace = WhiteSpace;
  }
});

// node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs
var require_char_code_definitions = __commonJS({
  "node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs"(exports) {
    "use strict";
    var EOF = 0;
    function isDigit(code) {
      return code >= 48 && code <= 57;
    }
    function isHexDigit(code) {
      return isDigit(code) || // 0 .. 9
      code >= 65 && code <= 70 || // A .. F
      code >= 97 && code <= 102;
    }
    function isUppercaseLetter(code) {
      return code >= 65 && code <= 90;
    }
    function isLowercaseLetter(code) {
      return code >= 97 && code <= 122;
    }
    function isLetter(code) {
      return isUppercaseLetter(code) || isLowercaseLetter(code);
    }
    function isNonAscii(code) {
      return code >= 128;
    }
    function isNameStart(code) {
      return isLetter(code) || isNonAscii(code) || code === 95;
    }
    function isName(code) {
      return isNameStart(code) || isDigit(code) || code === 45;
    }
    function isNonPrintable(code) {
      return code >= 0 && code <= 8 || code === 11 || code >= 14 && code <= 31 || code === 127;
    }
    function isNewline(code) {
      return code === 10 || code === 13 || code === 12;
    }
    function isWhiteSpace(code) {
      return isNewline(code) || code === 32 || code === 9;
    }
    function isValidEscape(first, second) {
      if (first !== 92) {
        return false;
      }
      if (isNewline(second) || second === EOF) {
        return false;
      }
      return true;
    }
    function isIdentifierStart(first, second, third) {
      if (first === 45) {
        return isNameStart(second) || second === 45 || isValidEscape(second, third);
      }
      if (isNameStart(first)) {
        return true;
      }
      if (first === 92) {
        return isValidEscape(first, second);
      }
      return false;
    }
    function isNumberStart(first, second, third) {
      if (first === 43 || first === 45) {
        if (isDigit(second)) {
          return 2;
        }
        return second === 46 && isDigit(third) ? 3 : 0;
      }
      if (first === 46) {
        return isDigit(second) ? 2 : 0;
      }
      if (isDigit(first)) {
        return 1;
      }
      return 0;
    }
    function isBOM(code) {
      if (code === 65279) {
        return 1;
      }
      if (code === 65534) {
        return 1;
      }
      return 0;
    }
    var CATEGORY = new Array(128);
    var EofCategory = 128;
    var WhiteSpaceCategory = 130;
    var DigitCategory = 131;
    var NameStartCategory = 132;
    var NonPrintableCategory = 133;
    for (let i = 0; i < CATEGORY.length; i++) {
      CATEGORY[i] = isWhiteSpace(i) && WhiteSpaceCategory || isDigit(i) && DigitCategory || isNameStart(i) && NameStartCategory || isNonPrintable(i) && NonPrintableCategory || i || EofCategory;
    }
    function charCodeCategory(code) {
      return code < 128 ? CATEGORY[code] : NameStartCategory;
    }
    exports.DigitCategory = DigitCategory;
    exports.EofCategory = EofCategory;
    exports.NameStartCategory = NameStartCategory;
    exports.NonPrintableCategory = NonPrintableCategory;
    exports.WhiteSpaceCategory = WhiteSpaceCategory;
    exports.charCodeCategory = charCodeCategory;
    exports.isBOM = isBOM;
    exports.isDigit = isDigit;
    exports.isHexDigit = isHexDigit;
    exports.isIdentifierStart = isIdentifierStart;
    exports.isLetter = isLetter;
    exports.isLowercaseLetter = isLowercaseLetter;
    exports.isName = isName;
    exports.isNameStart = isNameStart;
    exports.isNewline = isNewline;
    exports.isNonAscii = isNonAscii;
    exports.isNonPrintable = isNonPrintable;
    exports.isNumberStart = isNumberStart;
    exports.isUppercaseLetter = isUppercaseLetter;
    exports.isValidEscape = isValidEscape;
    exports.isWhiteSpace = isWhiteSpace;
  }
});

// node_modules/css-tree/cjs/tokenizer/utils.cjs
var require_utils = __commonJS({
  "node_modules/css-tree/cjs/tokenizer/utils.cjs"(exports) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions();
    function getCharCode(source, offset) {
      return offset < source.length ? source.charCodeAt(offset) : 0;
    }
    function getNewlineLength(source, offset, code) {
      if (code === 13 && getCharCode(source, offset + 1) === 10) {
        return 2;
      }
      return 1;
    }
    function cmpChar(testStr, offset, referenceCode) {
      let code = testStr.charCodeAt(offset);
      if (charCodeDefinitions.isUppercaseLetter(code)) {
        code = code | 32;
      }
      return code === referenceCode;
    }
    function cmpStr(testStr, start, end, referenceStr) {
      if (end - start !== referenceStr.length) {
        return false;
      }
      if (start < 0 || end > testStr.length) {
        return false;
      }
      for (let i = start; i < end; i++) {
        const referenceCode = referenceStr.charCodeAt(i - start);
        let testCode = testStr.charCodeAt(i);
        if (charCodeDefinitions.isUppercaseLetter(testCode)) {
          testCode = testCode | 32;
        }
        if (testCode !== referenceCode) {
          return false;
        }
      }
      return true;
    }
    function findWhiteSpaceStart(source, offset) {
      for (; offset >= 0; offset--) {
        if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) {
          break;
        }
      }
      return offset + 1;
    }
    function findWhiteSpaceEnd(source, offset) {
      for (; offset < source.length; offset++) {
        if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) {
          break;
        }
      }
      return offset;
    }
    function findDecimalNumberEnd(source, offset) {
      for (; offset < source.length; offset++) {
        if (!charCodeDefinitions.isDigit(source.charCodeAt(offset))) {
          break;
        }
      }
      return offset;
    }
    function consumeEscaped(source, offset) {
      offset += 2;
      if (charCodeDefinitions.isHexDigit(getCharCode(source, offset - 1))) {
        for (const maxOffset = Math.min(source.length, offset + 5); offset < maxOffset; offset++) {
          if (!charCodeDefinitions.isHexDigit(getCharCode(source, offset))) {
            break;
          }
        }
        const code = getCharCode(source, offset);
        if (charCodeDefinitions.isWhiteSpace(code)) {
          offset += getNewlineLength(source, offset, code);
        }
      }
      return offset;
    }
    function consumeName(source, offset) {
      for (; offset < source.length; offset++) {
        const code = source.charCodeAt(offset);
        if (charCodeDefinitions.isName(code)) {
          continue;
        }
        if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) {
          offset = consumeEscaped(source, offset) - 1;
          continue;
        }
        break;
      }
      return offset;
    }
    function consumeNumber(source, offset) {
      let code = source.charCodeAt(offset);
      if (code === 43 || code === 45) {
        code = source.charCodeAt(offset += 1);
      }
      if (charCodeDefinitions.isDigit(code)) {
        offset = findDecimalNumberEnd(source, offset + 1);
        code = source.charCodeAt(offset);
      }
      if (code === 46 && charCodeDefinitions.isDigit(source.charCodeAt(offset + 1))) {
        offset += 2;
        offset = findDecimalNumberEnd(source, offset);
      }
      if (cmpChar(
        source,
        offset,
        101
        /* e */
      )) {
        let sign = 0;
        code = source.charCodeAt(offset + 1);
        if (code === 45 || code === 43) {
          sign = 1;
          code = source.charCodeAt(offset + 2);
        }
        if (charCodeDefinitions.isDigit(code)) {
          offset = findDecimalNumberEnd(source, offset + 1 + sign + 1);
        }
      }
      return offset;
    }
    function consumeBadUrlRemnants(source, offset) {
      for (; offset < source.length; offset++) {
        const code = source.charCodeAt(offset);
        if (code === 41) {
          offset++;
          break;
        }
        if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) {
          offset = consumeEscaped(source, offset);
        }
      }
      return offset;
    }
    function decodeEscaped(escaped) {
      if (escaped.length === 1 && !charCodeDefinitions.isHexDigit(escaped.charCodeAt(0))) {
        return escaped[0];
      }
      let code = parseInt(escaped, 16);
      if (code === 0 || // If this number is zero,
      code >= 55296 && code <= 57343 || // or is for a surrogate,
      code > 1114111) {
        code = 65533;
      }
      return String.fromCodePoint(code);
    }
    exports.cmpChar = cmpChar;
    exports.cmpStr = cmpStr;
    exports.consumeBadUrlRemnants = consumeBadUrlRemnants;
    exports.consumeEscaped = consumeEscaped;
    exports.consumeName = consumeName;
    exports.consumeNumber = consumeNumber;
    exports.decodeEscaped = decodeEscaped;
    exports.findDecimalNumberEnd = findDecimalNumberEnd;
    exports.findWhiteSpaceEnd = findWhiteSpaceEnd;
    exports.findWhiteSpaceStart = findWhiteSpaceStart;
    exports.getNewlineLength = getNewlineLength;
  }
});

// node_modules/css-tree/cjs/tokenizer/names.cjs
var require_names = __commonJS({
  "node_modules/css-tree/cjs/tokenizer/names.cjs"(exports, module) {
    "use strict";
    var tokenNames = [
      "EOF-token",
      "ident-token",
      "function-token",
      "at-keyword-token",
      "hash-token",
      "string-token",
      "bad-string-token",
      "url-token",
      "bad-url-token",
      "delim-token",
      "number-token",
      "percentage-token",
      "dimension-token",
      "whitespace-token",
      "CDO-token",
      "CDC-token",
      "colon-token",
      "semicolon-token",
      "comma-token",
      "[-token",
      "]-token",
      "(-token",
      ")-token",
      "{-token",
      "}-token",
      "comment-token"
    ];
    module.exports = tokenNames;
  }
});

// node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs
var require_adopt_buffer = __commonJS({
  "node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs"(exports) {
    "use strict";
    var MIN_SIZE = 16 * 1024;
    function adoptBuffer(buffer = null, size) {
      if (buffer === null || buffer.length < size) {
        return new Uint32Array(Math.max(size + 1024, MIN_SIZE));
      }
      return buffer;
    }
    exports.adoptBuffer = adoptBuffer;
  }
});

// node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs
var require_OffsetToLocation = __commonJS({
  "node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs"(exports) {
    "use strict";
    var adoptBuffer = require_adopt_buffer();
    var charCodeDefinitions = require_char_code_definitions();
    var N = 10;
    var F = 12;
    var R = 13;
    function computeLinesAndColumns(host) {
      const source = host.source;
      const sourceLength = source.length;
      const startOffset = source.length > 0 ? charCodeDefinitions.isBOM(source.charCodeAt(0)) : 0;
      const lines = adoptBuffer.adoptBuffer(host.lines, sourceLength);
      const columns = adoptBuffer.adoptBuffer(host.columns, sourceLength);
      let line = host.startLine;
      let column = host.startColumn;
      for (let i = startOffset; i < sourceLength; i++) {
        const code = source.charCodeAt(i);
        lines[i] = line;
        columns[i] = column++;
        if (code === N || code === R || code === F) {
          if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) {
            i++;
            lines[i] = line;
            columns[i] = column;
          }
          line++;
          column = 1;
        }
      }
      lines[sourceLength] = line;
      columns[sourceLength] = column;
      host.lines = lines;
      host.columns = columns;
      host.computed = true;
    }
    var OffsetToLocation = class {
      constructor() {
        this.lines = null;
        this.columns = null;
        this.computed = false;
      }
      setSource(source, startOffset = 0, startLine = 1, startColumn = 1) {
        this.source = source;
        this.startOffset = startOffset;
        this.startLine = startLine;
        this.startColumn = startColumn;
        this.computed = false;
      }
      getLocation(offset, filename) {
        if (!this.computed) {
          computeLinesAndColumns(this);
        }
        return {
          source: filename,
          offset: this.startOffset + offset,
          line: this.lines[offset],
          column: this.columns[offset]
        };
      }
      getLocationRange(start, end, filename) {
        if (!this.computed) {
          computeLinesAndColumns(this);
        }
        return {
          source: filename,
          start: {
            offset: this.startOffset + start,
            line: this.lines[start],
            column: this.columns[start]
          },
          end: {
            offset: this.startOffset + end,
            line: this.lines[end],
            column: this.columns[end]
          }
        };
      }
    };
    exports.OffsetToLocation = OffsetToLocation;
  }
});

// node_modules/css-tree/cjs/tokenizer/TokenStream.cjs
var require_TokenStream = __commonJS({
  "node_modules/css-tree/cjs/tokenizer/TokenStream.cjs"(exports) {
    "use strict";
    var adoptBuffer = require_adopt_buffer();
    var utils = require_utils();
    var names = require_names();
    var types = require_types2();
    var OFFSET_MASK = 16777215;
    var TYPE_SHIFT = 24;
    var balancePair = /* @__PURE__ */ new Map([
      [types.Function, types.RightParenthesis],
      [types.LeftParenthesis, types.RightParenthesis],
      [types.LeftSquareBracket, types.RightSquareBracket],
      [types.LeftCurlyBracket, types.RightCurlyBracket]
    ]);
    var TokenStream = class {
      constructor(source, tokenize) {
        this.setSource(source, tokenize);
      }
      reset() {
        this.eof = false;
        this.tokenIndex = -1;
        this.tokenType = 0;
        this.tokenStart = this.firstCharOffset;
        this.tokenEnd = this.firstCharOffset;
      }
      setSource(source = "", tokenize = () => {
      }) {
        source = String(source || "");
        const sourceLength = source.length;
        const offsetAndType = adoptBuffer.adoptBuffer(this.offsetAndType, source.length + 1);
        const balance = adoptBuffer.adoptBuffer(this.balance, source.length + 1);
        let tokenCount = 0;
        let balanceCloseType = 0;
        let balanceStart = 0;
        let firstCharOffset = -1;
        this.offsetAndType = null;
        this.balance = null;
        tokenize(source, (type, start, end) => {
          switch (type) {
            default:
              balance[tokenCount] = sourceLength;
              break;
            case balanceCloseType: {
              let balancePrev = balanceStart & OFFSET_MASK;
              balanceStart = balance[balancePrev];
              balanceCloseType = balanceStart >> TYPE_SHIFT;
              balance[tokenCount] = balancePrev;
              balance[balancePrev++] = tokenCount;
              for (; balancePrev < tokenCount; balancePrev++) {
                if (balance[balancePrev] === sourceLength) {
                  balance[balancePrev] = tokenCount;
                }
              }
              break;
            }
            case types.LeftParenthesis:
            case types.Function:
            case types.LeftSquareBracket:
            case types.LeftCurlyBracket:
              balance[tokenCount] = balanceStart;
              balanceCloseType = balancePair.get(type);
              balanceStart = balanceCloseType << TYPE_SHIFT | tokenCount;
              break;
          }
          offsetAndType[tokenCount++] = type << TYPE_SHIFT | end;
          if (firstCharOffset === -1) {
            firstCharOffset = start;
          }
        });
        offsetAndType[tokenCount] = types.EOF << TYPE_SHIFT | sourceLength;
        balance[tokenCount] = sourceLength;
        balance[sourceLength] = sourceLength;
        while (balanceStart !== 0) {
          const balancePrev = balanceStart & OFFSET_MASK;
          balanceStart = balance[balancePrev];
          balance[balancePrev] = sourceLength;
        }
        this.source = source;
        this.firstCharOffset = firstCharOffset === -1 ? 0 : firstCharOffset;
        this.tokenCount = tokenCount;
        this.offsetAndType = offsetAndType;
        this.balance = balance;
        this.reset();
        this.next();
      }
      lookupType(offset) {
        offset += this.tokenIndex;
        if (offset < this.tokenCount) {
          return this.offsetAndType[offset] >> TYPE_SHIFT;
        }
        return types.EOF;
      }
      lookupTypeNonSC(idx) {
        for (let offset = this.tokenIndex; offset < this.tokenCount; offset++) {
          const tokenType = this.offsetAndType[offset] >> TYPE_SHIFT;
          if (tokenType !== types.WhiteSpace && tokenType !== types.Comment) {
            if (idx-- === 0) {
              return tokenType;
            }
          }
        }
        return types.EOF;
      }
      lookupOffset(offset) {
        offset += this.tokenIndex;
        if (offset < this.tokenCount) {
          return this.offsetAndType[offset - 1] & OFFSET_MASK;
        }
        return this.source.length;
      }
      lookupOffsetNonSC(idx) {
        for (let offset = this.tokenIndex; offset < this.tokenCount; offset++) {
          const tokenType = this.offsetAndType[offset] >> TYPE_SHIFT;
          if (tokenType !== types.WhiteSpace && tokenType !== types.Comment) {
            if (idx-- === 0) {
              return offset - this.tokenIndex;
            }
          }
        }
        return types.EOF;
      }
      lookupValue(offset, referenceStr) {
        offset += this.tokenIndex;
        if (offset < this.tokenCount) {
          return utils.cmpStr(
            this.source,
            this.offsetAndType[offset - 1] & OFFSET_MASK,
            this.offsetAndType[offset] & OFFSET_MASK,
            referenceStr
          );
        }
        return false;
      }
      getTokenStart(tokenIndex) {
        if (tokenIndex === this.tokenIndex) {
          return this.tokenStart;
        }
        if (tokenIndex > 0) {
          return tokenIndex < this.tokenCount ? this.offsetAndType[tokenIndex - 1] & OFFSET_MASK : this.offsetAndType[this.tokenCount] & OFFSET_MASK;
        }
        return this.firstCharOffset;
      }
      substrToCursor(start) {
        return this.source.substring(start, this.tokenStart);
      }
      isBalanceEdge(pos) {
        return this.balance[this.tokenIndex] < pos;
      }
      isDelim(code, offset) {
        if (offset) {
          return this.lookupType(offset) === types.Delim && this.source.charCodeAt(this.lookupOffset(offset)) === code;
        }
        return this.tokenType === types.Delim && this.source.charCodeAt(this.tokenStart) === code;
      }
      skip(tokenCount) {
        let next = this.tokenIndex + tokenCount;
        if (next < this.tokenCount) {
          this.tokenIndex = next;
          this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK;
          next = this.offsetAndType[next];
          this.tokenType = next >> TYPE_SHIFT;
          this.tokenEnd = next & OFFSET_MASK;
        } else {
          this.tokenIndex = this.tokenCount;
          this.next();
        }
      }
      next() {
        let next = this.tokenIndex + 1;
        if (next < this.tokenCount) {
          this.tokenIndex = next;
          this.tokenStart = this.tokenEnd;
          next = this.offsetAndType[next];
          this.tokenType = next >> TYPE_SHIFT;
          this.tokenEnd = next & OFFSET_MASK;
        } else {
          this.eof = true;
          this.tokenIndex = this.tokenCount;
          this.tokenType = types.EOF;
          this.tokenStart = this.tokenEnd = this.source.length;
        }
      }
      skipSC() {
        while (this.tokenType === types.WhiteSpace || this.tokenType === types.Comment) {
          this.next();
        }
      }
      skipUntilBalanced(startToken, stopConsume) {
        let cursor = startToken;
        let balanceEnd;
        let offset;
        loop:
          for (; cursor < this.tokenCount; cursor++) {
            balanceEnd = this.balance[cursor];
            if (balanceEnd < startToken) {
              break loop;
            }
            offset = cursor > 0 ? this.offsetAndType[cursor - 1] & OFFSET_MASK : this.firstCharOffset;
            switch (stopConsume(this.source.charCodeAt(offset))) {
              case 1:
                break loop;
              case 2:
                cursor++;
                break loop;
              default:
                if (this.balance[balanceEnd] === cursor) {
                  cursor = balanceEnd;
                }
            }
          }
        this.skip(cursor - this.tokenIndex);
      }
      forEachToken(fn) {
        for (let i = 0, offset = this.firstCharOffset; i < this.tokenCount; i++) {
          const start = offset;
          const item = this.offsetAndType[i];
          const end = item & OFFSET_MASK;
          const type = item >> TYPE_SHIFT;
          offset = end;
          fn(type, start, end, i);
        }
      }
      dump() {
        const tokens = new Array(this.tokenCount);
        this.forEachToken((type, start, end, index) => {
          tokens[index] = {
            idx: index,
            type: names[type],
            chunk: this.source.substring(start, end),
            balance: this.balance[index]
          };
        });
        return tokens;
      }
    };
    exports.TokenStream = TokenStream;
  }
});

// node_modules/css-tree/cjs/tokenizer/index.cjs
var require_tokenizer = __commonJS({
  "node_modules/css-tree/cjs/tokenizer/index.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var charCodeDefinitions = require_char_code_definitions();
    var utils = require_utils();
    var names = require_names();
    var OffsetToLocation = require_OffsetToLocation();
    var TokenStream = require_TokenStream();
    function tokenize(source, onToken) {
      function getCharCode(offset2) {
        return offset2 < sourceLength ? source.charCodeAt(offset2) : 0;
      }
      function consumeNumericToken() {
        offset = utils.consumeNumber(source, offset);
        if (charCodeDefinitions.isIdentifierStart(getCharCode(offset), getCharCode(offset + 1), getCharCode(offset + 2))) {
          type = types.Dimension;
          offset = utils.consumeName(source, offset);
          return;
        }
        if (getCharCode(offset) === 37) {
          type = types.Percentage;
          offset++;
          return;
        }
        type = types.Number;
      }
      function consumeIdentLikeToken() {
        const nameStartOffset = offset;
        offset = utils.consumeName(source, offset);
        if (utils.cmpStr(source, nameStartOffset, offset, "url") && getCharCode(offset) === 40) {
          offset = utils.findWhiteSpaceEnd(source, offset + 1);
          if (getCharCode(offset) === 34 || getCharCode(offset) === 39) {
            type = types.Function;
            offset = nameStartOffset + 4;
            return;
          }
          consumeUrlToken();
          return;
        }
        if (getCharCode(offset) === 40) {
          type = types.Function;
          offset++;
          return;
        }
        type = types.Ident;
      }
      function consumeStringToken(endingCodePoint) {
        if (!endingCodePoint) {
          endingCodePoint = getCharCode(offset++);
        }
        type = types.String;
        for (; offset < source.length; offset++) {
          const code = source.charCodeAt(offset);
          switch (charCodeDefinitions.charCodeCategory(code)) {
            // ending code point
            case endingCodePoint:
              offset++;
              return;
            // EOF
            // case EofCategory:
            // This is a parse error. Return the <string-token>.
            // return;
            // newline
            case charCodeDefinitions.WhiteSpaceCategory:
              if (charCodeDefinitions.isNewline(code)) {
                offset += utils.getNewlineLength(source, offset, code);
                type = types.BadString;
                return;
              }
              break;
            // U+005C REVERSE SOLIDUS (\)
            case 92:
              if (offset === source.length - 1) {
                break;
              }
              const nextCode = getCharCode(offset + 1);
              if (charCodeDefinitions.isNewline(nextCode)) {
                offset += utils.getNewlineLength(source, offset + 1, nextCode);
              } else if (charCodeDefinitions.isValidEscape(code, nextCode)) {
                offset = utils.consumeEscaped(source, offset) - 1;
              }
              break;
          }
        }
      }
      function consumeUrlToken() {
        type = types.Url;
        offset = utils.findWhiteSpaceEnd(source, offset);
        for (; offset < source.length; offset++) {
          const code = source.charCodeAt(offset);
          switch (charCodeDefinitions.charCodeCategory(code)) {
            // U+0029 RIGHT PARENTHESIS ())
            case 41:
              offset++;
              return;
            // EOF
            // case EofCategory:
            // This is a parse error. Return the <url-token>.
            // return;
            // whitespace
            case charCodeDefinitions.WhiteSpaceCategory:
              offset = utils.findWhiteSpaceEnd(source, offset);
              if (getCharCode(offset) === 41 || offset >= source.length) {
                if (offset < source.length) {
                  offset++;
                }
                return;
              }
              offset = utils.consumeBadUrlRemnants(source, offset);
              type = types.BadUrl;
              return;
            // U+0022 QUOTATION MARK (")
            // U+0027 APOSTROPHE (')
            // U+0028 LEFT PARENTHESIS (()
            // non-printable code point
            case 34:
            case 39:
            case 40:
            case charCodeDefinitions.NonPrintableCategory:
              offset = utils.consumeBadUrlRemnants(source, offset);
              type = types.BadUrl;
              return;
            // U+005C REVERSE SOLIDUS (\)
            case 92:
              if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) {
                offset = utils.consumeEscaped(source, offset) - 1;
                break;
              }
              offset = utils.consumeBadUrlRemnants(source, offset);
              type = types.BadUrl;
              return;
          }
        }
      }
      source = String(source || "");
      const sourceLength = source.length;
      let start = charCodeDefinitions.isBOM(getCharCode(0));
      let offset = start;
      let type;
      while (offset < sourceLength) {
        const code = source.charCodeAt(offset);
        switch (charCodeDefinitions.charCodeCategory(code)) {
          // whitespace
          case charCodeDefinitions.WhiteSpaceCategory:
            type = types.WhiteSpace;
            offset = utils.findWhiteSpaceEnd(source, offset + 1);
            break;
          // U+0022 QUOTATION MARK (")
          case 34:
            consumeStringToken();
            break;
          // U+0023 NUMBER SIGN (#)
          case 35:
            if (charCodeDefinitions.isName(getCharCode(offset + 1)) || charCodeDefinitions.isValidEscape(getCharCode(offset + 1), getCharCode(offset + 2))) {
              type = types.Hash;
              offset = utils.consumeName(source, offset + 1);
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+0027 APOSTROPHE (')
          case 39:
            consumeStringToken();
            break;
          // U+0028 LEFT PARENTHESIS (()
          case 40:
            type = types.LeftParenthesis;
            offset++;
            break;
          // U+0029 RIGHT PARENTHESIS ())
          case 41:
            type = types.RightParenthesis;
            offset++;
            break;
          // U+002B PLUS SIGN (+)
          case 43:
            if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
              consumeNumericToken();
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+002C COMMA (,)
          case 44:
            type = types.Comma;
            offset++;
            break;
          // U+002D HYPHEN-MINUS (-)
          case 45:
            if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
              consumeNumericToken();
            } else {
              if (getCharCode(offset + 1) === 45 && getCharCode(offset + 2) === 62) {
                type = types.CDC;
                offset = offset + 3;
              } else {
                if (charCodeDefinitions.isIdentifierStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
                  consumeIdentLikeToken();
                } else {
                  type = types.Delim;
                  offset++;
                }
              }
            }
            break;
          // U+002E FULL STOP (.)
          case 46:
            if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
              consumeNumericToken();
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+002F SOLIDUS (/)
          case 47:
            if (getCharCode(offset + 1) === 42) {
              type = types.Comment;
              offset = source.indexOf("*/", offset + 2);
              offset = offset === -1 ? source.length : offset + 2;
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+003A COLON (:)
          case 58:
            type = types.Colon;
            offset++;
            break;
          // U+003B SEMICOLON (;)
          case 59:
            type = types.Semicolon;
            offset++;
            break;
          // U+003C LESS-THAN SIGN (<)
          case 60:
            if (getCharCode(offset + 1) === 33 && getCharCode(offset + 2) === 45 && getCharCode(offset + 3) === 45) {
              type = types.CDO;
              offset = offset + 4;
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+0040 COMMERCIAL AT (@)
          case 64:
            if (charCodeDefinitions.isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) {
              type = types.AtKeyword;
              offset = utils.consumeName(source, offset + 1);
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+005B LEFT SQUARE BRACKET ([)
          case 91:
            type = types.LeftSquareBracket;
            offset++;
            break;
          // U+005C REVERSE SOLIDUS (\)
          case 92:
            if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) {
              consumeIdentLikeToken();
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+005D RIGHT SQUARE BRACKET (])
          case 93:
            type = types.RightSquareBracket;
            offset++;
            break;
          // U+007B LEFT CURLY BRACKET ({)
          case 123:
            type = types.LeftCurlyBracket;
            offset++;
            break;
          // U+007D RIGHT CURLY BRACKET (})
          case 125:
            type = types.RightCurlyBracket;
            offset++;
            break;
          // digit
          case charCodeDefinitions.DigitCategory:
            consumeNumericToken();
            break;
          // name-start code point
          case charCodeDefinitions.NameStartCategory:
            consumeIdentLikeToken();
            break;
          // EOF
          // case EofCategory:
          // Return an <EOF-token>.
          // break;
          // anything else
          default:
            type = types.Delim;
            offset++;
        }
        onToken(type, start, start = offset);
      }
    }
    exports.AtKeyword = types.AtKeyword;
    exports.BadString = types.BadString;
    exports.BadUrl = types.BadUrl;
    exports.CDC = types.CDC;
    exports.CDO = types.CDO;
    exports.Colon = types.Colon;
    exports.Comma = types.Comma;
    exports.Comment = types.Comment;
    exports.Delim = types.Delim;
    exports.Dimension = types.Dimension;
    exports.EOF = types.EOF;
    exports.Function = types.Function;
    exports.Hash = types.Hash;
    exports.Ident = types.Ident;
    exports.LeftCurlyBracket = types.LeftCurlyBracket;
    exports.LeftParenthesis = types.LeftParenthesis;
    exports.LeftSquareBracket = types.LeftSquareBracket;
    exports.Number = types.Number;
    exports.Percentage = types.Percentage;
    exports.RightCurlyBracket = types.RightCurlyBracket;
    exports.RightParenthesis = types.RightParenthesis;
    exports.RightSquareBracket = types.RightSquareBracket;
    exports.Semicolon = types.Semicolon;
    exports.String = types.String;
    exports.Url = types.Url;
    exports.WhiteSpace = types.WhiteSpace;
    exports.tokenTypes = types;
    exports.DigitCategory = charCodeDefinitions.DigitCategory;
    exports.EofCategory = charCodeDefinitions.EofCategory;
    exports.NameStartCategory = charCodeDefinitions.NameStartCategory;
    exports.NonPrintableCategory = charCodeDefinitions.NonPrintableCategory;
    exports.WhiteSpaceCategory = charCodeDefinitions.WhiteSpaceCategory;
    exports.charCodeCategory = charCodeDefinitions.charCodeCategory;
    exports.isBOM = charCodeDefinitions.isBOM;
    exports.isDigit = charCodeDefinitions.isDigit;
    exports.isHexDigit = charCodeDefinitions.isHexDigit;
    exports.isIdentifierStart = charCodeDefinitions.isIdentifierStart;
    exports.isLetter = charCodeDefinitions.isLetter;
    exports.isLowercaseLetter = charCodeDefinitions.isLowercaseLetter;
    exports.isName = charCodeDefinitions.isName;
    exports.isNameStart = charCodeDefinitions.isNameStart;
    exports.isNewline = charCodeDefinitions.isNewline;
    exports.isNonAscii = charCodeDefinitions.isNonAscii;
    exports.isNonPrintable = charCodeDefinitions.isNonPrintable;
    exports.isNumberStart = charCodeDefinitions.isNumberStart;
    exports.isUppercaseLetter = charCodeDefinitions.isUppercaseLetter;
    exports.isValidEscape = charCodeDefinitions.isValidEscape;
    exports.isWhiteSpace = charCodeDefinitions.isWhiteSpace;
    exports.cmpChar = utils.cmpChar;
    exports.cmpStr = utils.cmpStr;
    exports.consumeBadUrlRemnants = utils.consumeBadUrlRemnants;
    exports.consumeEscaped = utils.consumeEscaped;
    exports.consumeName = utils.consumeName;
    exports.consumeNumber = utils.consumeNumber;
    exports.decodeEscaped = utils.decodeEscaped;
    exports.findDecimalNumberEnd = utils.findDecimalNumberEnd;
    exports.findWhiteSpaceEnd = utils.findWhiteSpaceEnd;
    exports.findWhiteSpaceStart = utils.findWhiteSpaceStart;
    exports.getNewlineLength = utils.getNewlineLength;
    exports.tokenNames = names;
    exports.OffsetToLocation = OffsetToLocation.OffsetToLocation;
    exports.TokenStream = TokenStream.TokenStream;
    exports.tokenize = tokenize;
  }
});

// node_modules/css-tree/cjs/utils/List.cjs
var require_List = __commonJS({
  "node_modules/css-tree/cjs/utils/List.cjs"(exports) {
    "use strict";
    var releasedCursors = null;
    var List = class _List {
      static createItem(data) {
        return {
          prev: null,
          next: null,
          data
        };
      }
      constructor() {
        this.head = null;
        this.tail = null;
        this.cursor = null;
      }
      createItem(data) {
        return _List.createItem(data);
      }
      // cursor helpers
      allocateCursor(prev, next) {
        let cursor;
        if (releasedCursors !== null) {
          cursor = releasedCursors;
          releasedCursors = releasedCursors.cursor;
          cursor.prev = prev;
          cursor.next = next;
          cursor.cursor = this.cursor;
        } else {
          cursor = {
            prev,
            next,
            cursor: this.cursor
          };
        }
        this.cursor = cursor;
        return cursor;
      }
      releaseCursor() {
        const { cursor } = this;
        this.cursor = cursor.cursor;
        cursor.prev = null;
        cursor.next = null;
        cursor.cursor = releasedCursors;
        releasedCursors = cursor;
      }
      updateCursors(prevOld, prevNew, nextOld, nextNew) {
        let { cursor } = this;
        while (cursor !== null) {
          if (cursor.prev === prevOld) {
            cursor.prev = prevNew;
          }
          if (cursor.next === nextOld) {
            cursor.next = nextNew;
          }
          cursor = cursor.cursor;
        }
      }
      *[Symbol.iterator]() {
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          yield cursor.data;
        }
      }
      // getters
      get size() {
        let size = 0;
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          size++;
        }
        return size;
      }
      get isEmpty() {
        return this.head === null;
      }
      get first() {
        return this.head && this.head.data;
      }
      get last() {
        return this.tail && this.tail.data;
      }
      // convertors
      fromArray(array) {
        let cursor = null;
        this.head = null;
        for (let data of array) {
          const item = _List.createItem(data);
          if (cursor !== null) {
            cursor.next = item;
          } else {
            this.head = item;
          }
          item.prev = cursor;
          cursor = item;
        }
        this.tail = cursor;
        return this;
      }
      toArray() {
        return [...this];
      }
      toJSON() {
        return [...this];
      }
      // array-like methods
      forEach(fn, thisArg = this) {
        const cursor = this.allocateCursor(null, this.head);
        while (cursor.next !== null) {
          const item = cursor.next;
          cursor.next = item.next;
          fn.call(thisArg, item.data, item, this);
        }
        this.releaseCursor();
      }
      forEachRight(fn, thisArg = this) {
        const cursor = this.allocateCursor(this.tail, null);
        while (cursor.prev !== null) {
          const item = cursor.prev;
          cursor.prev = item.prev;
          fn.call(thisArg, item.data, item, this);
        }
        this.releaseCursor();
      }
      reduce(fn, initialValue, thisArg = this) {
        let cursor = this.allocateCursor(null, this.head);
        let acc = initialValue;
        let item;
        while (cursor.next !== null) {
          item = cursor.next;
          cursor.next = item.next;
          acc = fn.call(thisArg, acc, item.data, item, this);
        }
        this.releaseCursor();
        return acc;
      }
      reduceRight(fn, initialValue, thisArg = this) {
        let cursor = this.allocateCursor(this.tail, null);
        let acc = initialValue;
        let item;
        while (cursor.prev !== null) {
          item = cursor.prev;
          cursor.prev = item.prev;
          acc = fn.call(thisArg, acc, item.data, item, this);
        }
        this.releaseCursor();
        return acc;
      }
      some(fn, thisArg = this) {
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          if (fn.call(thisArg, cursor.data, cursor, this)) {
            return true;
          }
        }
        return false;
      }
      map(fn, thisArg = this) {
        const result = new _List();
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          result.appendData(fn.call(thisArg, cursor.data, cursor, this));
        }
        return result;
      }
      filter(fn, thisArg = this) {
        const result = new _List();
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          if (fn.call(thisArg, cursor.data, cursor, this)) {
            result.appendData(cursor.data);
          }
        }
        return result;
      }
      nextUntil(start, fn, thisArg = this) {
        if (start === null) {
          return;
        }
        const cursor = this.allocateCursor(null, start);
        while (cursor.next !== null) {
          const item = cursor.next;
          cursor.next = item.next;
          if (fn.call(thisArg, item.data, item, this)) {
            break;
          }
        }
        this.releaseCursor();
      }
      prevUntil(start, fn, thisArg = this) {
        if (start === null) {
          return;
        }
        const cursor = this.allocateCursor(start, null);
        while (cursor.prev !== null) {
          const item = cursor.prev;
          cursor.prev = item.prev;
          if (fn.call(thisArg, item.data, item, this)) {
            break;
          }
        }
        this.releaseCursor();
      }
      // mutation
      clear() {
        this.head = null;
        this.tail = null;
      }
      copy() {
        const result = new _List();
        for (let data of this) {
          result.appendData(data);
        }
        return result;
      }
      prepend(item) {
        this.updateCursors(null, item, this.head, item);
        if (this.head !== null) {
          this.head.prev = item;
          item.next = this.head;
        } else {
          this.tail = item;
        }
        this.head = item;
        return this;
      }
      prependData(data) {
        return this.prepend(_List.createItem(data));
      }
      append(item) {
        return this.insert(item);
      }
      appendData(data) {
        return this.insert(_List.createItem(data));
      }
      insert(item, before = null) {
        if (before !== null) {
          this.updateCursors(before.prev, item, before, item);
          if (before.prev === null) {
            if (this.head !== before) {
              throw new Error("before doesn't belong to list");
            }
            this.head = item;
            before.prev = item;
            item.next = before;
            this.updateCursors(null, item);
          } else {
            before.prev.next = item;
            item.prev = before.prev;
            before.prev = item;
            item.next = before;
          }
        } else {
          this.updateCursors(this.tail, item, null, item);
          if (this.tail !== null) {
            this.tail.next = item;
            item.prev = this.tail;
          } else {
            this.head = item;
          }
          this.tail = item;
        }
        return this;
      }
      insertData(data, before) {
        return this.insert(_List.createItem(data), before);
      }
      remove(item) {
        this.updateCursors(item, item.prev, item, item.next);
        if (item.prev !== null) {
          item.prev.next = item.next;
        } else {
          if (this.head !== item) {
            throw new Error("item doesn't belong to list");
          }
          this.head = item.next;
        }
        if (item.next !== null) {
          item.next.prev = item.prev;
        } else {
          if (this.tail !== item) {
            throw new Error("item doesn't belong to list");
          }
          this.tail = item.prev;
        }
        item.prev = null;
        item.next = null;
        return item;
      }
      push(data) {
        this.insert(_List.createItem(data));
      }
      pop() {
        return this.tail !== null ? this.remove(this.tail) : null;
      }
      unshift(data) {
        this.prepend(_List.createItem(data));
      }
      shift() {
        return this.head !== null ? this.remove(this.head) : null;
      }
      prependList(list) {
        return this.insertList(list, this.head);
      }
      appendList(list) {
        return this.insertList(list);
      }
      insertList(list, before) {
        if (list.head === null) {
          return this;
        }
        if (before !== void 0 && before !== null) {
          this.updateCursors(before.prev, list.tail, before, list.head);
          if (before.prev !== null) {
            before.prev.next = list.head;
            list.head.prev = before.prev;
          } else {
            this.head = list.head;
          }
          before.prev = list.tail;
          list.tail.next = before;
        } else {
          this.updateCursors(this.tail, list.tail, null, list.head);
          if (this.tail !== null) {
            this.tail.next = list.head;
            list.head.prev = this.tail;
          } else {
            this.head = list.head;
          }
          this.tail = list.tail;
        }
        list.head = null;
        list.tail = null;
        return this;
      }
      replace(oldItem, newItemOrList) {
        if ("head" in newItemOrList) {
          this.insertList(newItemOrList, oldItem);
        } else {
          this.insert(newItemOrList, oldItem);
        }
        this.remove(oldItem);
      }
    };
    exports.List = List;
  }
});

// node_modules/css-tree/cjs/utils/create-custom-error.cjs
var require_create_custom_error = __commonJS({
  "node_modules/css-tree/cjs/utils/create-custom-error.cjs"(exports) {
    "use strict";
    function createCustomError(name, message) {
      const error = Object.create(SyntaxError.prototype);
      const errorStack = new Error();
      return Object.assign(error, {
        name,
        message,
        get stack() {
          return (errorStack.stack || "").replace(/^(.+\n){1,3}/, `${name}: ${message}
`);
        }
      });
    }
    exports.createCustomError = createCustomError;
  }
});

// node_modules/css-tree/cjs/parser/SyntaxError.cjs
var require_SyntaxError = __commonJS({
  "node_modules/css-tree/cjs/parser/SyntaxError.cjs"(exports) {
    "use strict";
    var createCustomError = require_create_custom_error();
    var MAX_LINE_LENGTH = 100;
    var OFFSET_CORRECTION = 60;
    var TAB_REPLACEMENT = "    ";
    function sourceFragment({ source, line, column, baseLine, baseColumn }, extraLines) {
      function processLines(start, end) {
        return lines.slice(start, end).map(
          (line2, idx) => String(start + idx + 1).padStart(maxNumLength) + " |" + line2
        ).join("\n");
      }
      const prelines = "\n".repeat(Math.max(baseLine - 1, 0));
      const precolumns = " ".repeat(Math.max(baseColumn - 1, 0));
      const lines = (prelines + precolumns + source).split(/\r\n?|\n|\f/);
      const startLine = Math.max(1, line - extraLines) - 1;
      const endLine = Math.min(line + extraLines, lines.length + 1);
      const maxNumLength = Math.max(4, String(endLine).length) + 1;
      let cutLeft = 0;
      column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\t/g) || []).length;
      if (column > MAX_LINE_LENGTH) {
        cutLeft = column - OFFSET_CORRECTION + 3;
        column = OFFSET_CORRECTION - 2;
      }
      for (let i = startLine; i <= endLine; i++) {
        if (i >= 0 && i < lines.length) {
          lines[i] = lines[i].replace(/\t/g, TAB_REPLACEMENT);
          lines[i] = (cutLeft > 0 && lines[i].length > cutLeft ? "\u2026" : "") + lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) + (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? "\u2026" : "");
        }
      }
      return [
        processLines(startLine, line),
        new Array(column + maxNumLength + 2).join("-") + "^",
        processLines(line, endLine)
      ].filter(Boolean).join("\n").replace(/^(\s+\d+\s+\|\n)+/, "").replace(/\n(\s+\d+\s+\|)+$/, "");
    }
    function SyntaxError2(message, source, offset, line, column, baseLine = 1, baseColumn = 1) {
      const error = Object.assign(createCustomError.createCustomError("SyntaxError", message), {
        source,
        offset,
        line,
        column,
        sourceFragment(extraLines) {
          return sourceFragment({ source, line, column, baseLine, baseColumn }, isNaN(extraLines) ? 0 : extraLines);
        },
        get formattedMessage() {
          return `Parse error: ${message}
` + sourceFragment({ source, line, column, baseLine, baseColumn }, 2);
        }
      });
      return error;
    }
    exports.SyntaxError = SyntaxError2;
  }
});

// node_modules/css-tree/cjs/parser/sequence.cjs
var require_sequence = __commonJS({
  "node_modules/css-tree/cjs/parser/sequence.cjs"(exports) {
    "use strict";
    var types = require_types2();
    function readSequence(recognizer) {
      const children = this.createList();
      let space = false;
      const context = {
        recognizer
      };
      while (!this.eof) {
        switch (this.tokenType) {
          case types.Comment:
            this.next();
            continue;
          case types.WhiteSpace:
            space = true;
            this.next();
            continue;
        }
        let child = recognizer.getNode.call(this, context);
        if (child === void 0) {
          break;
        }
        if (space) {
          if (recognizer.onWhiteSpace) {
            recognizer.onWhiteSpace.call(this, child, children, context);
          }
          space = false;
        }
        children.push(child);
      }
      if (space && recognizer.onWhiteSpace) {
        recognizer.onWhiteSpace.call(this, null, children, context);
      }
      return children;
    }
    exports.readSequence = readSequence;
  }
});

// node_modules/css-tree/cjs/parser/create.cjs
var require_create = __commonJS({
  "node_modules/css-tree/cjs/parser/create.cjs"(exports) {
    "use strict";
    var List = require_List();
    var SyntaxError2 = require_SyntaxError();
    var index = require_tokenizer();
    var sequence = require_sequence();
    var OffsetToLocation = require_OffsetToLocation();
    var TokenStream = require_TokenStream();
    var utils = require_utils();
    var types = require_types2();
    var names = require_names();
    var NOOP = () => {
    };
    var EXCLAMATIONMARK = 33;
    var NUMBERSIGN = 35;
    var SEMICOLON = 59;
    var LEFTCURLYBRACKET = 123;
    var NULL = 0;
    function createParseContext(name) {
      return function() {
        return this[name]();
      };
    }
    function fetchParseValues(dict) {
      const result = /* @__PURE__ */ Object.create(null);
      for (const name of Object.keys(dict)) {
        const item = dict[name];
        const fn = item.parse || item;
        if (fn) {
          result[name] = fn;
        }
      }
      return result;
    }
    function processConfig(config) {
      const parseConfig = {
        context: /* @__PURE__ */ Object.create(null),
        features: Object.assign(/* @__PURE__ */ Object.create(null), config.features),
        scope: Object.assign(/* @__PURE__ */ Object.create(null), config.scope),
        atrule: fetchParseValues(config.atrule),
        pseudo: fetchParseValues(config.pseudo),
        node: fetchParseValues(config.node)
      };
      for (const [name, context] of Object.entries(config.parseContext)) {
        switch (typeof context) {
          case "function":
            parseConfig.context[name] = context;
            break;
          case "string":
            parseConfig.context[name] = createParseContext(context);
            break;
        }
      }
      return {
        config: parseConfig,
        ...parseConfig,
        ...parseConfig.node
      };
    }
    function createParser(config) {
      let source = "";
      let filename = "<unknown>";
      let needPositions = false;
      let onParseError = NOOP;
      let onParseErrorThrow = false;
      const locationMap = new OffsetToLocation.OffsetToLocation();
      const parser = Object.assign(new TokenStream.TokenStream(), processConfig(config || {}), {
        parseAtrulePrelude: true,
        parseRulePrelude: true,
        parseValue: true,
        parseCustomProperty: false,
        readSequence: sequence.readSequence,
        consumeUntilBalanceEnd: () => 0,
        consumeUntilLeftCurlyBracket(code) {
          return code === LEFTCURLYBRACKET ? 1 : 0;
        },
        consumeUntilLeftCurlyBracketOrSemicolon(code) {
          return code === LEFTCURLYBRACKET || code === SEMICOLON ? 1 : 0;
        },
        consumeUntilExclamationMarkOrSemicolon(code) {
          return code === EXCLAMATIONMARK || code === SEMICOLON ? 1 : 0;
        },
        consumeUntilSemicolonIncluded(code) {
          return code === SEMICOLON ? 2 : 0;
        },
        createList() {
          return new List.List();
        },
        createSingleNodeList(node) {
          return new List.List().appendData(node);
        },
        getFirstListNode(list) {
          return list && list.first;
        },
        getLastListNode(list) {
          return list && list.last;
        },
        parseWithFallback(consumer, fallback) {
          const startIndex = this.tokenIndex;
          try {
            return consumer.call(this);
          } catch (e) {
            if (onParseErrorThrow) {
              throw e;
            }
            this.skip(startIndex - this.tokenIndex);
            const fallbackNode = fallback.call(this);
            onParseErrorThrow = true;
            onParseError(e, fallbackNode);
            onParseErrorThrow = false;
            return fallbackNode;
          }
        },
        lookupNonWSType(offset) {
          let type;
          do {
            type = this.lookupType(offset++);
            if (type !== types.WhiteSpace && type !== types.Comment) {
              return type;
            }
          } while (type !== NULL);
          return NULL;
        },
        charCodeAt(offset) {
          return offset >= 0 && offset < source.length ? source.charCodeAt(offset) : 0;
        },
        substring(offsetStart, offsetEnd) {
          return source.substring(offsetStart, offsetEnd);
        },
        substrToCursor(start) {
          return this.source.substring(start, this.tokenStart);
        },
        cmpChar(offset, charCode) {
          return utils.cmpChar(source, offset, charCode);
        },
        cmpStr(offsetStart, offsetEnd, str) {
          return utils.cmpStr(source, offsetStart, offsetEnd, str);
        },
        consume(tokenType) {
          const start = this.tokenStart;
          this.eat(tokenType);
          return this.substrToCursor(start);
        },
        consumeFunctionName() {
          const name = source.substring(this.tokenStart, this.tokenEnd - 1);
          this.eat(types.Function);
          return name;
        },
        consumeNumber(type) {
          const number = source.substring(this.tokenStart, utils.consumeNumber(source, this.tokenStart));
          this.eat(type);
          return number;
        },
        eat(tokenType) {
          if (this.tokenType !== tokenType) {
            const tokenName = names[tokenType].slice(0, -6).replace(/-/g, " ").replace(/^./, (m) => m.toUpperCase());
            let message = `${/[[\](){}]/.test(tokenName) ? `"${tokenName}"` : tokenName} is expected`;
            let offset = this.tokenStart;
            switch (tokenType) {
              case types.Ident:
                if (this.tokenType === types.Function || this.tokenType === types.Url) {
                  offset = this.tokenEnd - 1;
                  message = "Identifier is expected but function found";
                } else {
                  message = "Identifier is expected";
                }
                break;
              case types.Hash:
                if (this.isDelim(NUMBERSIGN)) {
                  this.next();
                  offset++;
                  message = "Name is expected";
                }
                break;
              case types.Percentage:
                if (this.tokenType === types.Number) {
                  offset = this.tokenEnd;
                  message = "Percent sign is expected";
                }
                break;
            }
            this.error(message, offset);
          }
          this.next();
        },
        eatIdent(name) {
          if (this.tokenType !== types.Ident || this.lookupValue(0, name) === false) {
            this.error(`Identifier "${name}" is expected`);
          }
          this.next();
        },
        eatDelim(code) {
          if (!this.isDelim(code)) {
            this.error(`Delim "${String.fromCharCode(code)}" is expected`);
          }
          this.next();
        },
        getLocation(start, end) {
          if (needPositions) {
            return locationMap.getLocationRange(
              start,
              end,
              filename
            );
          }
          return null;
        },
        getLocationFromList(list) {
          if (needPositions) {
            const head = this.getFirstListNode(list);
            const tail = this.getLastListNode(list);
            return locationMap.getLocationRange(
              head !== null ? head.loc.start.offset - locationMap.startOffset : this.tokenStart,
              tail !== null ? tail.loc.end.offset - locationMap.startOffset : this.tokenStart,
              filename
            );
          }
          return null;
        },
        error(message, offset) {
          const location = typeof offset !== "undefined" && offset < source.length ? locationMap.getLocation(offset) : this.eof ? locationMap.getLocation(utils.findWhiteSpaceStart(source, source.length - 1)) : locationMap.getLocation(this.tokenStart);
          throw new SyntaxError2.SyntaxError(
            message || "Unexpected input",
            source,
            location.offset,
            location.line,
            location.column,
            locationMap.startLine,
            locationMap.startColumn
          );
        }
      });
      const parse = function(source_, options) {
        source = source_;
        options = options || {};
        parser.setSource(source, index.tokenize);
        locationMap.setSource(
          source,
          options.offset,
          options.line,
          options.column
        );
        filename = options.filename || "<unknown>";
        needPositions = Boolean(options.positions);
        onParseError = typeof options.onParseError === "function" ? options.onParseError : NOOP;
        onParseErrorThrow = false;
        parser.parseAtrulePrelude = "parseAtrulePrelude" in options ? Boolean(options.parseAtrulePrelude) : true;
        parser.parseRulePrelude = "parseRulePrelude" in options ? Boolean(options.parseRulePrelude) : true;
        parser.parseValue = "parseValue" in options ? Boolean(options.parseValue) : true;
        parser.parseCustomProperty = "parseCustomProperty" in options ? Boolean(options.parseCustomProperty) : false;
        const { context = "default", onComment } = options;
        if (context in parser.context === false) {
          throw new Error("Unknown context `" + context + "`");
        }
        if (typeof onComment === "function") {
          parser.forEachToken((type, start, end) => {
            if (type === types.Comment) {
              const loc = parser.getLocation(start, end);
              const value = utils.cmpStr(source, end - 2, end, "*/") ? source.slice(start + 2, end - 2) : source.slice(start + 2, end);
              onComment(value, loc);
            }
          });
        }
        const ast = parser.context[context].call(parser, options);
        if (!parser.eof) {
          parser.error();
        }
        return ast;
      };
      return Object.assign(parse, {
        SyntaxError: SyntaxError2.SyntaxError,
        config: parser.config
      });
    }
    exports.createParser = createParser;
  }
});

// node_modules/source-map-js/lib/base64.js
var require_base64 = __commonJS({
  "node_modules/source-map-js/lib/base64.js"(exports) {
    var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
    exports.encode = function(number) {
      if (0 <= number && number < intToCharMap.length) {
        return intToCharMap[number];
      }
      throw new TypeError("Must be between 0 and 63: " + number);
    };
    exports.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"(exports) {
    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;
    }
    exports.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;
    };
    exports.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_util = __commonJS({
  "node_modules/source-map-js/lib/util.js"(exports) {
    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.');
      }
    }
    exports.getArg = getArg;
    var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
    var dataUrlRegexp = /^data:.+\,.+$/;
    function urlParse(aUrl) {
      var match = aUrl.match(urlRegexp);
      if (!match) {
        return null;
      }
      return {
        scheme: match[1],
        auth: match[2],
        host: match[3],
        port: match[4],
        path: match[5]
      };
    }
    exports.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;
    }
    exports.urlGenerate = urlGenerate;
    var MAX_CACHED_INPUTS = 32;
    function lruMemoize(f) {
      var cache = [];
      return function(input) {
        for (var i = 0; i < cache.length; i++) {
          if (cache[i].input === input) {
            var temp = cache[0];
            cache[0] = cache[i];
            cache[i] = temp;
            return cache[0].result;
          }
        }
        var result = f(input);
        cache.unshift({
          input,
          result
        });
        if (cache.length > MAX_CACHED_INPUTS) {
          cache.pop();
        }
        return result;
      };
    }
    var normalize = lruMemoize(function normalize2(aPath) {
      var path = aPath;
      var url = urlParse(aPath);
      if (url) {
        if (!url.path) {
          return aPath;
        }
        path = url.path;
      }
      var isAbsolute = exports.isAbsolute(path);
      var parts = [];
      var start = 0;
      var i = 0;
      while (true) {
        start = i;
        i = path.indexOf("/", start);
        if (i === -1) {
          parts.push(path.slice(start));
          break;
        } else {
          parts.push(path.slice(start, i));
          while (i < path.length && path[i] === "/") {
            i++;
          }
        }
      }
      for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
        part = parts[i];
        if (part === ".") {
          parts.splice(i, 1);
        } else if (part === "..") {
          up++;
        } else if (up > 0) {
          if (part === "") {
            parts.splice(i + 1, up);
            up = 0;
          } else {
            parts.splice(i, 2);
            up--;
          }
        }
      }
      path = parts.join("/");
      if (path === "") {
        path = isAbsolute ? "/" : ".";
      }
      if (url) {
        url.path = path;
        return urlGenerate(url);
      }
      return path;
    });
    exports.normalize = normalize;
    function join(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 : normalize(aRoot.replace(/\/+$/, "") + "/" + aPath);
      if (aRootUrl) {
        aRootUrl.path = joined;
        return urlGenerate(aRootUrl);
      }
      return joined;
    }
    exports.join = join;
    exports.isAbsolute = function(aPath) {
      return aPath.charAt(0) === "/" || urlRegexp.test(aPath);
    };
    function relative(aRoot, aPath) {
      if (aRoot === "") {
        aRoot = ".";
      }
      aRoot = aRoot.replace(/\/$/, "");
      var level = 0;
      while (aPath.indexOf(aRoot + "/") !== 0) {
        var index = aRoot.lastIndexOf("/");
        if (index < 0) {
          return aPath;
        }
        aRoot = aRoot.slice(0, index);
        if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
          return aPath;
        }
        ++level;
      }
      return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
    }
    exports.relative = relative;
    var supportsNullProto = function() {
      var obj = /* @__PURE__ */ Object.create(null);
      return !("__proto__" in obj);
    }();
    function identity(s) {
      return s;
    }
    function toSetString(aStr) {
      if (isProtoString(aStr)) {
        return "$" + aStr;
      }
      return aStr;
    }
    exports.toSetString = supportsNullProto ? identity : toSetString;
    function fromSetString(aStr) {
      if (isProtoString(aStr)) {
        return aStr.slice(1);
      }
      return aStr;
    }
    exports.fromSetString = supportsNullProto ? identity : fromSetString;
    function isProtoString(s) {
      if (!s) {
        return false;
      }
      var length = s.length;
      if (length < 9) {
        return false;
      }
      if (s.charCodeAt(length - 1) !== 95 || s.charCodeAt(length - 2) !== 95 || s.charCodeAt(length - 3) !== 111 || s.charCodeAt(length - 4) !== 116 || s.charCodeAt(length - 5) !== 111 || s.charCodeAt(length - 6) !== 114 || s.charCodeAt(length - 7) !== 112 || s.charCodeAt(length - 8) !== 95 || s.charCodeAt(length - 9) !== 95) {
        return false;
      }
      for (var i = length - 10; i >= 0; i--) {
        if (s.charCodeAt(i) !== 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);
    }
    exports.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);
    }
    exports.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);
    }
    exports.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);
    }
    exports.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);
    }
    exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
    function parseSourceMapInput(str) {
      return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ""));
    }
    exports.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 index = parsed.path.lastIndexOf("/");
          if (index >= 0) {
            parsed.path = parsed.path.substring(0, index + 1);
          }
        }
        sourceURL = join(urlGenerate(parsed), sourceURL);
      }
      return normalize(sourceURL);
    }
    exports.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"(exports) {
    var util = require_util();
    var has = 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 set = new ArraySet();
      for (var i = 0, len = aArray.length; i < len; i++) {
        set.add(aArray[i], aAllowDuplicates);
      }
      return set;
    };
    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 : util.toSetString(aStr);
      var isDuplicate = hasNativeMap ? this.has(aStr) : has.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 = util.toSetString(aStr);
        return has.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 = util.toSetString(aStr);
        if (has.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();
    };
    exports.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"(exports) {
    var util = require_util();
    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 || util.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(util.compareByGeneratedPositionsInflated);
        this._sorted = true;
      }
      return this._array;
    };
    exports.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"(exports) {
    var base64VLQ = require_base64_vlq();
    var util = require_util();
    var ArraySet = require_array_set().ArraySet;
    var MappingList = require_mapping_list().MappingList;
    function SourceMapGenerator(aArgs) {
      if (!aArgs) {
        aArgs = {};
      }
      this._file = util.getArg(aArgs, "file", null);
      this._sourceRoot = util.getArg(aArgs, "sourceRoot", null);
      this._skipValidation = util.getArg(aArgs, "skipValidation", 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) {
      var sourceRoot = aSourceMapConsumer.sourceRoot;
      var generator = new SourceMapGenerator({
        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 = util.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 = util.relative(sourceRoot, sourceFile);
        }
        if (!generator._sources.has(sourceRelative)) {
          generator._sources.add(sourceRelative);
        }
        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
        if (content != null) {
          generator.setSourceContent(sourceFile, content);
        }
      });
      return generator;
    };
    SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) {
      var generated = util.getArg(aArgs, "generated");
      var original = util.getArg(aArgs, "original", null);
      var source = util.getArg(aArgs, "source", null);
      var name = util.getArg(aArgs, "name", null);
      if (!this._skipValidation) {
        this._validateMapping(generated, original, source, name);
      }
      if (source != null) {
        source = String(source);
        if (!this._sources.has(source)) {
          this._sources.add(source);
        }
      }
      if (name != null) {
        name = String(name);
        if (!this._names.has(name)) {
          this._names.add(name);
        }
      }
      this._mappings.add({
        generatedLine: generated.line,
        generatedColumn: generated.column,
        originalLine: original != null && original.line,
        originalColumn: original != null && original.column,
        source,
        name
      });
    };
    SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
      var source = aSourceFile;
      if (this._sourceRoot != null) {
        source = util.relative(this._sourceRoot, source);
      }
      if (aSourceContent != null) {
        if (!this._sourcesContents) {
          this._sourcesContents = /* @__PURE__ */ Object.create(null);
        }
        this._sourcesContents[util.toSetString(source)] = aSourceContent;
      } else if (this._sourcesContents) {
        delete this._sourcesContents[util.toSetString(source)];
        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 = util.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 = util.join(aSourceMapPath, mapping.source);
            }
            if (sourceRoot != null) {
              mapping.source = util.relative(sourceRoot, mapping.source);
            }
            mapping.originalLine = original.line;
            mapping.originalColumn = original.column;
            if (original.name != null) {
              mapping.name = original.name;
            }
          }
        }
        var source = mapping.source;
        if (source != null && !newSources.has(source)) {
          newSources.add(source);
        }
        var name = mapping.name;
        if (name != null && !newNames.has(name)) {
          newNames.add(name);
        }
      }, this);
      this._sources = newSources;
      this._names = newNames;
      aSourceMapConsumer.sources.forEach(function(sourceFile2) {
        var content = aSourceMapConsumer.sourceContentFor(sourceFile2);
        if (content != null) {
          if (aSourceMapPath != null) {
            sourceFile2 = util.join(aSourceMapPath, sourceFile2);
          }
          if (sourceRoot != null) {
            sourceFile2 = util.relative(sourceRoot, sourceFile2);
          }
          this.setSourceContent(sourceFile2, content);
        }
      }, this);
    };
    SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) {
      if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") {
        throw new Error(
          "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 (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 {
        throw new Error("Invalid mapping: " + JSON.stringify({
          generated: aGenerated,
          source: aSource,
          original: aOriginal,
          name: aName
        }));
      }
    };
    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 i = 0, len = mappings.length; i < len; i++) {
        mapping = mappings[i];
        next = "";
        if (mapping.generatedLine !== previousGeneratedLine) {
          previousGeneratedColumn = 0;
          while (mapping.generatedLine !== previousGeneratedLine) {
            next += ";";
            previousGeneratedLine++;
          }
        } else {
          if (i > 0) {
            if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 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(source) {
        if (!this._sourcesContents) {
          return null;
        }
        if (aSourceRoot != null) {
          source = util.relative(aSourceRoot, source);
        }
        var key = util.toSetString(source);
        return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null;
      }, this);
    };
    SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() {
      var map = {
        version: this._version,
        sources: this._sources.toArray(),
        names: this._names.toArray(),
        mappings: this._serializeMappings()
      };
      if (this._file != null) {
        map.file = this._file;
      }
      if (this._sourceRoot != null) {
        map.sourceRoot = this._sourceRoot;
      }
      if (this._sourcesContents) {
        map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
      }
      return map;
    };
    SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() {
      return JSON.stringify(this.toJSON());
    };
    exports.SourceMapGenerator = SourceMapGenerator;
  }
});

// node_modules/css-tree/cjs/generator/sourceMap.cjs
var require_sourceMap = __commonJS({
  "node_modules/css-tree/cjs/generator/sourceMap.cjs"(exports) {
    "use strict";
    var sourceMapGenerator_js = require_source_map_generator();
    var trackNodes = /* @__PURE__ */ new Set(["Atrule", "Selector", "Declaration"]);
    function generateSourceMap(handlers) {
      const map = new sourceMapGenerator_js.SourceMapGenerator();
      const generated = {
        line: 1,
        column: 0
      };
      const original = {
        line: 0,
        // should be zero to add first mapping
        column: 0
      };
      const activatedGenerated = {
        line: 1,
        column: 0
      };
      const activatedMapping = {
        generated: activatedGenerated
      };
      let line = 1;
      let column = 0;
      let sourceMappingActive = false;
      const origHandlersNode = handlers.node;
      handlers.node = function(node) {
        if (node.loc && node.loc.start && trackNodes.has(node.type)) {
          const nodeLine = node.loc.start.line;
          const nodeColumn = node.loc.start.column - 1;
          if (original.line !== nodeLine || original.column !== nodeColumn) {
            original.line = nodeLine;
            original.column = nodeColumn;
            generated.line = line;
            generated.column = column;
            if (sourceMappingActive) {
              sourceMappingActive = false;
              if (generated.line !== activatedGenerated.line || generated.column !== activatedGenerated.column) {
                map.addMapping(activatedMapping);
              }
            }
            sourceMappingActive = true;
            map.addMapping({
              source: node.loc.source,
              original,
              generated
            });
          }
        }
        origHandlersNode.call(this, node);
        if (sourceMappingActive && trackNodes.has(node.type)) {
          activatedGenerated.line = line;
          activatedGenerated.column = column;
        }
      };
      const origHandlersEmit = handlers.emit;
      handlers.emit = function(value, type, auto) {
        for (let i = 0; i < value.length; i++) {
          if (value.charCodeAt(i) === 10) {
            line++;
            column = 0;
          } else {
            column++;
          }
        }
        origHandlersEmit(value, type, auto);
      };
      const origHandlersResult = handlers.result;
      handlers.result = function() {
        if (sourceMappingActive) {
          map.addMapping(activatedMapping);
        }
        return {
          css: origHandlersResult(),
          map
        };
      };
      return handlers;
    }
    exports.generateSourceMap = generateSourceMap;
  }
});

// node_modules/css-tree/cjs/generator/token-before.cjs
var require_token_before = __commonJS({
  "node_modules/css-tree/cjs/generator/token-before.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var code = (type, value) => {
      if (type === types.Delim) {
        type = value;
      }
      if (typeof type === "string") {
        const charCode = type.charCodeAt(0);
        return charCode > 127 ? 32768 : charCode << 8;
      }
      return type;
    };
    var specPairs = [
      [types.Ident, types.Ident],
      [types.Ident, types.Function],
      [types.Ident, types.Url],
      [types.Ident, types.BadUrl],
      [types.Ident, "-"],
      [types.Ident, types.Number],
      [types.Ident, types.Percentage],
      [types.Ident, types.Dimension],
      [types.Ident, types.CDC],
      [types.Ident, types.LeftParenthesis],
      [types.AtKeyword, types.Ident],
      [types.AtKeyword, types.Function],
      [types.AtKeyword, types.Url],
      [types.AtKeyword, types.BadUrl],
      [types.AtKeyword, "-"],
      [types.AtKeyword, types.Number],
      [types.AtKeyword, types.Percentage],
      [types.AtKeyword, types.Dimension],
      [types.AtKeyword, types.CDC],
      [types.Hash, types.Ident],
      [types.Hash, types.Function],
      [types.Hash, types.Url],
      [types.Hash, types.BadUrl],
      [types.Hash, "-"],
      [types.Hash, types.Number],
      [types.Hash, types.Percentage],
      [types.Hash, types.Dimension],
      [types.Hash, types.CDC],
      [types.Dimension, types.Ident],
      [types.Dimension, types.Function],
      [types.Dimension, types.Url],
      [types.Dimension, types.BadUrl],
      [types.Dimension, "-"],
      [types.Dimension, types.Number],
      [types.Dimension, types.Percentage],
      [types.Dimension, types.Dimension],
      [types.Dimension, types.CDC],
      ["#", types.Ident],
      ["#", types.Function],
      ["#", types.Url],
      ["#", types.BadUrl],
      ["#", "-"],
      ["#", types.Number],
      ["#", types.Percentage],
      ["#", types.Dimension],
      ["#", types.CDC],
      // https://github.com/w3c/csswg-drafts/pull/6874
      ["-", types.Ident],
      ["-", types.Function],
      ["-", types.Url],
      ["-", types.BadUrl],
      ["-", "-"],
      ["-", types.Number],
      ["-", types.Percentage],
      ["-", types.Dimension],
      ["-", types.CDC],
      // https://github.com/w3c/csswg-drafts/pull/6874
      [types.Number, types.Ident],
      [types.Number, types.Function],
      [types.Number, types.Url],
      [types.Number, types.BadUrl],
      [types.Number, types.Number],
      [types.Number, types.Percentage],
      [types.Number, types.Dimension],
      [types.Number, "%"],
      [types.Number, types.CDC],
      // https://github.com/w3c/csswg-drafts/pull/6874
      ["@", types.Ident],
      ["@", types.Function],
      ["@", types.Url],
      ["@", types.BadUrl],
      ["@", "-"],
      ["@", types.CDC],
      // https://github.com/w3c/csswg-drafts/pull/6874
      [".", types.Number],
      [".", types.Percentage],
      [".", types.Dimension],
      ["+", types.Number],
      ["+", types.Percentage],
      ["+", types.Dimension],
      ["/", "*"]
    ];
    var safePairs = specPairs.concat([
      [types.Ident, types.Hash],
      [types.Dimension, types.Hash],
      [types.Hash, types.Hash],
      [types.AtKeyword, types.LeftParenthesis],
      [types.AtKeyword, types.String],
      [types.AtKeyword, types.Colon],
      [types.Percentage, types.Percentage],
      [types.Percentage, types.Dimension],
      [types.Percentage, types.Function],
      [types.Percentage, "-"],
      [types.RightParenthesis, types.Ident],
      [types.RightParenthesis, types.Function],
      [types.RightParenthesis, types.Percentage],
      [types.RightParenthesis, types.Dimension],
      [types.RightParenthesis, types.Hash],
      [types.RightParenthesis, "-"]
    ]);
    function createMap(pairs) {
      const isWhiteSpaceRequired = new Set(
        pairs.map(([prev, next]) => code(prev) << 16 | code(next))
      );
      return function(prevCode, type, value) {
        const nextCode = code(type, value);
        const nextCharCode = value.charCodeAt(0);
        const emitWs = nextCharCode === HYPHENMINUS && type !== types.Ident && type !== types.Function && type !== types.CDC || nextCharCode === PLUSSIGN ? isWhiteSpaceRequired.has(prevCode << 16 | nextCharCode << 8) : isWhiteSpaceRequired.has(prevCode << 16 | nextCode);
        if (emitWs) {
          this.emit(" ", types.WhiteSpace, true);
        }
        return nextCode;
      };
    }
    var spec = createMap(specPairs);
    var safe = createMap(safePairs);
    exports.safe = safe;
    exports.spec = spec;
  }
});

// node_modules/css-tree/cjs/generator/create.cjs
var require_create2 = __commonJS({
  "node_modules/css-tree/cjs/generator/create.cjs"(exports) {
    "use strict";
    var index = require_tokenizer();
    var sourceMap = require_sourceMap();
    var tokenBefore = require_token_before();
    var types = require_types2();
    var REVERSESOLIDUS = 92;
    function processChildren(node, delimeter) {
      if (typeof delimeter === "function") {
        let prev = null;
        node.children.forEach((node2) => {
          if (prev !== null) {
            delimeter.call(this, prev);
          }
          this.node(node2);
          prev = node2;
        });
        return;
      }
      node.children.forEach(this.node, this);
    }
    function processChunk(chunk) {
      index.tokenize(chunk, (type, start, end) => {
        this.token(type, chunk.slice(start, end));
      });
    }
    function createGenerator(config) {
      const types$1 = /* @__PURE__ */ new Map();
      for (let [name, item] of Object.entries(config.node)) {
        const fn = item.generate || item;
        if (typeof fn === "function") {
          types$1.set(name, item.generate || item);
        }
      }
      return function(node, options) {
        let buffer = "";
        let prevCode = 0;
        let handlers = {
          node(node2) {
            if (types$1.has(node2.type)) {
              types$1.get(node2.type).call(publicApi, node2);
            } else {
              throw new Error("Unknown node type: " + node2.type);
            }
          },
          tokenBefore: tokenBefore.safe,
          token(type, value) {
            prevCode = this.tokenBefore(prevCode, type, value);
            this.emit(value, type, false);
            if (type === types.Delim && value.charCodeAt(0) === REVERSESOLIDUS) {
              this.emit("\n", types.WhiteSpace, true);
            }
          },
          emit(value) {
            buffer += value;
          },
          result() {
            return buffer;
          }
        };
        if (options) {
          if (typeof options.decorator === "function") {
            handlers = options.decorator(handlers);
          }
          if (options.sourceMap) {
            handlers = sourceMap.generateSourceMap(handlers);
          }
          if (options.mode in tokenBefore) {
            handlers.tokenBefore = tokenBefore[options.mode];
          }
        }
        const publicApi = {
          node: (node2) => handlers.node(node2),
          children: processChildren,
          token: (type, value) => handlers.token(type, value),
          tokenize: processChunk
        };
        handlers.node(node);
        return handlers.result();
      };
    }
    exports.createGenerator = createGenerator;
  }
});

// node_modules/css-tree/cjs/convertor/create.cjs
var require_create3 = __commonJS({
  "node_modules/css-tree/cjs/convertor/create.cjs"(exports) {
    "use strict";
    var List = require_List();
    function createConvertor(walk) {
      return {
        fromPlainObject(ast) {
          walk(ast, {
            enter(node) {
              if (node.children && node.children instanceof List.List === false) {
                node.children = new List.List().fromArray(node.children);
              }
            }
          });
          return ast;
        },
        toPlainObject(ast) {
          walk(ast, {
            leave(node) {
              if (node.children && node.children instanceof List.List) {
                node.children = node.children.toArray();
              }
            }
          });
          return ast;
        }
      };
    }
    exports.createConvertor = createConvertor;
  }
});

// node_modules/css-tree/cjs/walker/create.cjs
var require_create4 = __commonJS({
  "node_modules/css-tree/cjs/walker/create.cjs"(exports) {
    "use strict";
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    var noop = function() {
    };
    function ensureFunction(value) {
      return typeof value === "function" ? value : noop;
    }
    function invokeForType(fn, type) {
      return function(node, item, list) {
        if (node.type === type) {
          fn.call(this, node, item, list);
        }
      };
    }
    function getWalkersFromStructure(name, nodeType) {
      const structure = nodeType.structure;
      const walkers = [];
      for (const key in structure) {
        if (hasOwnProperty2.call(structure, key) === false) {
          continue;
        }
        let fieldTypes = structure[key];
        const walker = {
          name: key,
          type: false,
          nullable: false
        };
        if (!Array.isArray(fieldTypes)) {
          fieldTypes = [fieldTypes];
        }
        for (const fieldType of fieldTypes) {
          if (fieldType === null) {
            walker.nullable = true;
          } else if (typeof fieldType === "string") {
            walker.type = "node";
          } else if (Array.isArray(fieldType)) {
            walker.type = "list";
          }
        }
        if (walker.type) {
          walkers.push(walker);
        }
      }
      if (walkers.length) {
        return {
          context: nodeType.walkContext,
          fields: walkers
        };
      }
      return null;
    }
    function getTypesFromConfig(config) {
      const types = {};
      for (const name in config.node) {
        if (hasOwnProperty2.call(config.node, name)) {
          const nodeType = config.node[name];
          if (!nodeType.structure) {
            throw new Error("Missed `structure` field in `" + name + "` node type definition");
          }
          types[name] = getWalkersFromStructure(name, nodeType);
        }
      }
      return types;
    }
    function createTypeIterator(config, reverse) {
      const fields = config.fields.slice();
      const contextName = config.context;
      const useContext = typeof contextName === "string";
      if (reverse) {
        fields.reverse();
      }
      return function(node, context, walk, walkReducer) {
        let prevContextValue;
        if (useContext) {
          prevContextValue = context[contextName];
          context[contextName] = node;
        }
        for (const field of fields) {
          const ref = node[field.name];
          if (!field.nullable || ref) {
            if (field.type === "list") {
              const breakWalk = reverse ? ref.reduceRight(walkReducer, false) : ref.reduce(walkReducer, false);
              if (breakWalk) {
                return true;
              }
            } else if (walk(ref)) {
              return true;
            }
          }
        }
        if (useContext) {
          context[contextName] = prevContextValue;
        }
      };
    }
    function createFastTraveralMap({
      StyleSheet,
      Atrule,
      Rule,
      Block,
      DeclarationList
    }) {
      return {
        Atrule: {
          StyleSheet,
          Atrule,
          Rule,
          Block
        },
        Rule: {
          StyleSheet,
          Atrule,
          Rule,
          Block
        },
        Declaration: {
          StyleSheet,
          Atrule,
          Rule,
          Block,
          DeclarationList
        }
      };
    }
    function createWalker(config) {
      const types = getTypesFromConfig(config);
      const iteratorsNatural = {};
      const iteratorsReverse = {};
      const breakWalk = Symbol("break-walk");
      const skipNode = Symbol("skip-node");
      for (const name in types) {
        if (hasOwnProperty2.call(types, name) && types[name] !== null) {
          iteratorsNatural[name] = createTypeIterator(types[name], false);
          iteratorsReverse[name] = createTypeIterator(types[name], true);
        }
      }
      const fastTraversalIteratorsNatural = createFastTraveralMap(iteratorsNatural);
      const fastTraversalIteratorsReverse = createFastTraveralMap(iteratorsReverse);
      const walk = function(root, options) {
        function walkNode(node, item, list) {
          const enterRet = enter.call(context, node, item, list);
          if (enterRet === breakWalk) {
            return true;
          }
          if (enterRet === skipNode) {
            return false;
          }
          if (iterators.hasOwnProperty(node.type)) {
            if (iterators[node.type](node, context, walkNode, walkReducer)) {
              return true;
            }
          }
          if (leave.call(context, node, item, list) === breakWalk) {
            return true;
          }
          return false;
        }
        let enter = noop;
        let leave = noop;
        let iterators = iteratorsNatural;
        let walkReducer = (ret, data, item, list) => ret || walkNode(data, item, list);
        const context = {
          break: breakWalk,
          skip: skipNode,
          root,
          stylesheet: null,
          atrule: null,
          atrulePrelude: null,
          rule: null,
          selector: null,
          block: null,
          declaration: null,
          function: null
        };
        if (typeof options === "function") {
          enter = options;
        } else if (options) {
          enter = ensureFunction(options.enter);
          leave = ensureFunction(options.leave);
          if (options.reverse) {
            iterators = iteratorsReverse;
          }
          if (options.visit) {
            if (fastTraversalIteratorsNatural.hasOwnProperty(options.visit)) {
              iterators = options.reverse ? fastTraversalIteratorsReverse[options.visit] : fastTraversalIteratorsNatural[options.visit];
            } else if (!types.hasOwnProperty(options.visit)) {
              throw new Error("Bad value `" + options.visit + "` for `visit` option (should be: " + Object.keys(types).sort().join(", ") + ")");
            }
            enter = invokeForType(enter, options.visit);
            leave = invokeForType(leave, options.visit);
          }
        }
        if (enter === noop && leave === noop) {
          throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");
        }
        walkNode(root);
      };
      walk.break = breakWalk;
      walk.skip = skipNode;
      walk.find = function(ast, fn) {
        let found = null;
        walk(ast, function(node, item, list) {
          if (fn.call(this, node, item, list)) {
            found = node;
            return breakWalk;
          }
        });
        return found;
      };
      walk.findLast = function(ast, fn) {
        let found = null;
        walk(ast, {
          reverse: true,
          enter(node, item, list) {
            if (fn.call(this, node, item, list)) {
              found = node;
              return breakWalk;
            }
          }
        });
        return found;
      };
      walk.findAll = function(ast, fn) {
        const found = [];
        walk(ast, function(node, item, list) {
          if (fn.call(this, node, item, list)) {
            found.push(node);
          }
        });
        return found;
      };
      return walk;
    }
    exports.createWalker = createWalker;
  }
});

// node_modules/css-tree/cjs/definition-syntax/generate.cjs
var require_generate = __commonJS({
  "node_modules/css-tree/cjs/definition-syntax/generate.cjs"(exports) {
    "use strict";
    function noop(value) {
      return value;
    }
    function generateMultiplier(multiplier) {
      const { min, max, comma } = multiplier;
      if (min === 0 && max === 0) {
        return comma ? "#?" : "*";
      }
      if (min === 0 && max === 1) {
        return "?";
      }
      if (min === 1 && max === 0) {
        return comma ? "#" : "+";
      }
      if (min === 1 && max === 1) {
        return "";
      }
      return (comma ? "#" : "") + (min === max ? "{" + min + "}" : "{" + min + "," + (max !== 0 ? max : "") + "}");
    }
    function generateTypeOpts(node) {
      switch (node.type) {
        case "Range":
          return " [" + (node.min === null ? "-\u221E" : node.min) + "," + (node.max === null ? "\u221E" : node.max) + "]";
        default:
          throw new Error("Unknown node type `" + node.type + "`");
      }
    }
    function generateSequence(node, decorate, forceBraces, compact) {
      const combinator = node.combinator === " " || compact ? node.combinator : " " + node.combinator + " ";
      const result = node.terms.map((term) => internalGenerate(term, decorate, forceBraces, compact)).join(combinator);
      if (node.explicit || forceBraces) {
        return (compact || result[0] === "," ? "[" : "[ ") + result + (compact ? "]" : " ]");
      }
      return result;
    }
    function internalGenerate(node, decorate, forceBraces, compact) {
      let result;
      switch (node.type) {
        case "Group":
          result = generateSequence(node, decorate, forceBraces, compact) + (node.disallowEmpty ? "!" : "");
          break;
        case "Multiplier":
          return internalGenerate(node.term, decorate, forceBraces, compact) + decorate(generateMultiplier(node), node);
        case "Type":
          result = "<" + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : "") + ">";
          break;
        case "Property":
          result = "<'" + node.name + "'>";
          break;
        case "Keyword":
          result = node.name;
          break;
        case "AtKeyword":
          result = "@" + node.name;
          break;
        case "Function":
          result = node.name + "(";
          break;
        case "String":
        case "Token":
          result = node.value;
          break;
        case "Comma":
          result = ",";
          break;
        default:
          throw new Error("Unknown node type `" + node.type + "`");
      }
      return decorate(result, node);
    }
    function generate(node, options) {
      let decorate = noop;
      let forceBraces = false;
      let compact = false;
      if (typeof options === "function") {
        decorate = options;
      } else if (options) {
        forceBraces = Boolean(options.forceBraces);
        compact = Boolean(options.compact);
        if (typeof options.decorate === "function") {
          decorate = options.decorate;
        }
      }
      return internalGenerate(node, decorate, forceBraces, compact);
    }
    exports.generate = generate;
  }
});

// node_modules/css-tree/cjs/lexer/error.cjs
var require_error = __commonJS({
  "node_modules/css-tree/cjs/lexer/error.cjs"(exports) {
    "use strict";
    var createCustomError = require_create_custom_error();
    var generate = require_generate();
    var defaultLoc = { offset: 0, line: 1, column: 1 };
    function locateMismatch(matchResult, node) {
      const tokens = matchResult.tokens;
      const longestMatch = matchResult.longestMatch;
      const mismatchNode = longestMatch < tokens.length ? tokens[longestMatch].node || null : null;
      const badNode = mismatchNode !== node ? mismatchNode : null;
      let mismatchOffset = 0;
      let mismatchLength = 0;
      let entries = 0;
      let css = "";
      let start;
      let end;
      for (let i = 0; i < tokens.length; i++) {
        const token = tokens[i].value;
        if (i === longestMatch) {
          mismatchLength = token.length;
          mismatchOffset = css.length;
        }
        if (badNode !== null && tokens[i].node === badNode) {
          if (i <= longestMatch) {
            entries++;
          } else {
            entries = 0;
          }
        }
        css += token;
      }
      if (longestMatch === tokens.length || entries > 1) {
        start = fromLoc(badNode || node, "end") || buildLoc(defaultLoc, css);
        end = buildLoc(start);
      } else {
        start = fromLoc(badNode, "start") || buildLoc(fromLoc(node, "start") || defaultLoc, css.slice(0, mismatchOffset));
        end = fromLoc(badNode, "end") || buildLoc(start, css.substr(mismatchOffset, mismatchLength));
      }
      return {
        css,
        mismatchOffset,
        mismatchLength,
        start,
        end
      };
    }
    function fromLoc(node, point) {
      const value = node && node.loc && node.loc[point];
      if (value) {
        return "line" in value ? buildLoc(value) : value;
      }
      return null;
    }
    function buildLoc({ offset, line, column }, extra) {
      const loc = {
        offset,
        line,
        column
      };
      if (extra) {
        const lines = extra.split(/\n|\r\n?|\f/);
        loc.offset += extra.length;
        loc.line += lines.length - 1;
        loc.column = lines.length === 1 ? loc.column + extra.length : lines.pop().length + 1;
      }
      return loc;
    }
    var SyntaxReferenceError = function(type, referenceName) {
      const error = createCustomError.createCustomError(
        "SyntaxReferenceError",
        type + (referenceName ? " `" + referenceName + "`" : "")
      );
      error.reference = referenceName;
      return error;
    };
    var SyntaxMatchError = function(message, syntax, node, matchResult) {
      const error = createCustomError.createCustomError("SyntaxMatchError", message);
      const {
        css,
        mismatchOffset,
        mismatchLength,
        start,
        end
      } = locateMismatch(matchResult, node);
      error.rawMessage = message;
      error.syntax = syntax ? generate.generate(syntax) : "<generic>";
      error.css = css;
      error.mismatchOffset = mismatchOffset;
      error.mismatchLength = mismatchLength;
      error.message = message + "\n  syntax: " + error.syntax + "\n   value: " + (css || "<empty string>") + "\n  --------" + new Array(error.mismatchOffset + 1).join("-") + "^";
      Object.assign(error, start);
      error.loc = {
        source: node && node.loc && node.loc.source || "<unknown>",
        start,
        end
      };
      return error;
    };
    exports.SyntaxMatchError = SyntaxMatchError;
    exports.SyntaxReferenceError = SyntaxReferenceError;
  }
});

// node_modules/css-tree/cjs/utils/names.cjs
var require_names2 = __commonJS({
  "node_modules/css-tree/cjs/utils/names.cjs"(exports) {
    "use strict";
    var keywords = /* @__PURE__ */ new Map();
    var properties = /* @__PURE__ */ new Map();
    var HYPHENMINUS = 45;
    var keyword = getKeywordDescriptor;
    var property = getPropertyDescriptor;
    var vendorPrefix = getVendorPrefix;
    function isCustomProperty(str, offset) {
      offset = offset || 0;
      return str.length - offset >= 2 && str.charCodeAt(offset) === HYPHENMINUS && str.charCodeAt(offset + 1) === HYPHENMINUS;
    }
    function getVendorPrefix(str, offset) {
      offset = offset || 0;
      if (str.length - offset >= 3) {
        if (str.charCodeAt(offset) === HYPHENMINUS && str.charCodeAt(offset + 1) !== HYPHENMINUS) {
          const secondDashIndex = str.indexOf("-", offset + 2);
          if (secondDashIndex !== -1) {
            return str.substring(offset, secondDashIndex + 1);
          }
        }
      }
      return "";
    }
    function getKeywordDescriptor(keyword2) {
      if (keywords.has(keyword2)) {
        return keywords.get(keyword2);
      }
      const name = keyword2.toLowerCase();
      let descriptor = keywords.get(name);
      if (descriptor === void 0) {
        const custom = isCustomProperty(name, 0);
        const vendor = !custom ? getVendorPrefix(name, 0) : "";
        descriptor = Object.freeze({
          basename: name.substr(vendor.length),
          name,
          prefix: vendor,
          vendor,
          custom
        });
      }
      keywords.set(keyword2, descriptor);
      return descriptor;
    }
    function getPropertyDescriptor(property2) {
      if (properties.has(property2)) {
        return properties.get(property2);
      }
      let name = property2;
      let hack = property2[0];
      if (hack === "/") {
        hack = property2[1] === "/" ? "//" : "/";
      } else if (hack !== "_" && hack !== "*" && hack !== "$" && hack !== "#" && hack !== "+" && hack !== "&") {
        hack = "";
      }
      const custom = isCustomProperty(name, hack.length);
      if (!custom) {
        name = name.toLowerCase();
        if (properties.has(name)) {
          const descriptor2 = properties.get(name);
          properties.set(property2, descriptor2);
          return descriptor2;
        }
      }
      const vendor = !custom ? getVendorPrefix(name, hack.length) : "";
      const prefix = name.substr(0, hack.length + vendor.length);
      const descriptor = Object.freeze({
        basename: name.substr(prefix.length),
        name: name.substr(hack.length),
        hack,
        vendor,
        prefix,
        custom
      });
      properties.set(property2, descriptor);
      return descriptor;
    }
    exports.isCustomProperty = isCustomProperty;
    exports.keyword = keyword;
    exports.property = property;
    exports.vendorPrefix = vendorPrefix;
  }
});

// node_modules/css-tree/cjs/lexer/generic-const.cjs
var require_generic_const = __commonJS({
  "node_modules/css-tree/cjs/lexer/generic-const.cjs"(exports) {
    "use strict";
    var cssWideKeywords = [
      "initial",
      "inherit",
      "unset",
      "revert",
      "revert-layer"
    ];
    exports.cssWideKeywords = cssWideKeywords;
  }
});

// node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs
var require_generic_an_plus_b = __commonJS({
  "node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs"(exports, module) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions();
    var types = require_types2();
    var utils = require_utils();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var N = 110;
    var DISALLOW_SIGN = true;
    var ALLOW_SIGN = false;
    function isDelim(token, code) {
      return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;
    }
    function skipSC(token, offset, getNextToken) {
      while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment)) {
        token = getNextToken(++offset);
      }
      return offset;
    }
    function checkInteger(token, valueOffset, disallowSign, offset) {
      if (!token) {
        return 0;
      }
      const code = token.value.charCodeAt(valueOffset);
      if (code === PLUSSIGN || code === HYPHENMINUS) {
        if (disallowSign) {
          return 0;
        }
        valueOffset++;
      }
      for (; valueOffset < token.value.length; valueOffset++) {
        if (!charCodeDefinitions.isDigit(token.value.charCodeAt(valueOffset))) {
          return 0;
        }
      }
      return offset + 1;
    }
    function consumeB(token, offset_, getNextToken) {
      let sign = false;
      let offset = skipSC(token, offset_, getNextToken);
      token = getNextToken(offset);
      if (token === null) {
        return offset_;
      }
      if (token.type !== types.Number) {
        if (isDelim(token, PLUSSIGN) || isDelim(token, HYPHENMINUS)) {
          sign = true;
          offset = skipSC(getNextToken(++offset), offset, getNextToken);
          token = getNextToken(offset);
          if (token === null || token.type !== types.Number) {
            return 0;
          }
        } else {
          return offset_;
        }
      }
      if (!sign) {
        const code = token.value.charCodeAt(0);
        if (code !== PLUSSIGN && code !== HYPHENMINUS) {
          return 0;
        }
      }
      return checkInteger(token, sign ? 0 : 1, sign, offset);
    }
    function anPlusB(token, getNextToken) {
      let offset = 0;
      if (!token) {
        return 0;
      }
      if (token.type === types.Number) {
        return checkInteger(token, 0, ALLOW_SIGN, offset);
      } else if (token.type === types.Ident && token.value.charCodeAt(0) === HYPHENMINUS) {
        if (!utils.cmpChar(token.value, 1, N)) {
          return 0;
        }
        switch (token.value.length) {
          // -n
          // -n <signed-integer>
          // -n ['+' | '-'] <signless-integer>
          case 2:
            return consumeB(getNextToken(++offset), offset, getNextToken);
          // -n- <signless-integer>
          case 3:
            if (token.value.charCodeAt(2) !== HYPHENMINUS) {
              return 0;
            }
            offset = skipSC(getNextToken(++offset), offset, getNextToken);
            token = getNextToken(offset);
            return checkInteger(token, 0, DISALLOW_SIGN, offset);
          // <dashndashdigit-ident>
          default:
            if (token.value.charCodeAt(2) !== HYPHENMINUS) {
              return 0;
            }
            return checkInteger(token, 3, DISALLOW_SIGN, offset);
        }
      } else if (token.type === types.Ident || isDelim(token, PLUSSIGN) && getNextToken(offset + 1).type === types.Ident) {
        if (token.type !== types.Ident) {
          token = getNextToken(++offset);
        }
        if (token === null || !utils.cmpChar(token.value, 0, N)) {
          return 0;
        }
        switch (token.value.length) {
          // '+'? n
          // '+'? n <signed-integer>
          // '+'? n ['+' | '-'] <signless-integer>
          case 1:
            return consumeB(getNextToken(++offset), offset, getNextToken);
          // '+'? n- <signless-integer>
          case 2:
            if (token.value.charCodeAt(1) !== HYPHENMINUS) {
              return 0;
            }
            offset = skipSC(getNextToken(++offset), offset, getNextToken);
            token = getNextToken(offset);
            return checkInteger(token, 0, DISALLOW_SIGN, offset);
          // '+'? <ndashdigit-ident>
          default:
            if (token.value.charCodeAt(1) !== HYPHENMINUS) {
              return 0;
            }
            return checkInteger(token, 2, DISALLOW_SIGN, offset);
        }
      } else if (token.type === types.Dimension) {
        let code = token.value.charCodeAt(0);
        let sign = code === PLUSSIGN || code === HYPHENMINUS ? 1 : 0;
        let i = sign;
        for (; i < token.value.length; i++) {
          if (!charCodeDefinitions.isDigit(token.value.charCodeAt(i))) {
            break;
          }
        }
        if (i === sign) {
          return 0;
        }
        if (!utils.cmpChar(token.value, i, N)) {
          return 0;
        }
        if (i + 1 === token.value.length) {
          return consumeB(getNextToken(++offset), offset, getNextToken);
        } else {
          if (token.value.charCodeAt(i + 1) !== HYPHENMINUS) {
            return 0;
          }
          if (i + 2 === token.value.length) {
            offset = skipSC(getNextToken(++offset), offset, getNextToken);
            token = getNextToken(offset);
            return checkInteger(token, 0, DISALLOW_SIGN, offset);
          } else {
            return checkInteger(token, i + 2, DISALLOW_SIGN, offset);
          }
        }
      }
      return 0;
    }
    module.exports = anPlusB;
  }
});

// node_modules/css-tree/cjs/lexer/generic-urange.cjs
var require_generic_urange = __commonJS({
  "node_modules/css-tree/cjs/lexer/generic-urange.cjs"(exports, module) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions();
    var types = require_types2();
    var utils = require_utils();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var QUESTIONMARK = 63;
    var U = 117;
    function isDelim(token, code) {
      return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;
    }
    function startsWith(token, code) {
      return token.value.charCodeAt(0) === code;
    }
    function hexSequence(token, offset, allowDash) {
      let hexlen = 0;
      for (let pos = offset; pos < token.value.length; pos++) {
        const code = token.value.charCodeAt(pos);
        if (code === HYPHENMINUS && allowDash && hexlen !== 0) {
          hexSequence(token, offset + hexlen + 1, false);
          return 6;
        }
        if (!charCodeDefinitions.isHexDigit(code)) {
          return 0;
        }
        if (++hexlen > 6) {
          return 0;
        }
      }
      return hexlen;
    }
    function withQuestionMarkSequence(consumed, length, getNextToken) {
      if (!consumed) {
        return 0;
      }
      while (isDelim(getNextToken(length), QUESTIONMARK)) {
        if (++consumed > 6) {
          return 0;
        }
        length++;
      }
      return length;
    }
    function urange(token, getNextToken) {
      let length = 0;
      if (token === null || token.type !== types.Ident || !utils.cmpChar(token.value, 0, U)) {
        return 0;
      }
      token = getNextToken(++length);
      if (token === null) {
        return 0;
      }
      if (isDelim(token, PLUSSIGN)) {
        token = getNextToken(++length);
        if (token === null) {
          return 0;
        }
        if (token.type === types.Ident) {
          return withQuestionMarkSequence(hexSequence(token, 0, true), ++length, getNextToken);
        }
        if (isDelim(token, QUESTIONMARK)) {
          return withQuestionMarkSequence(1, ++length, getNextToken);
        }
        return 0;
      }
      if (token.type === types.Number) {
        const consumedHexLength = hexSequence(token, 1, true);
        if (consumedHexLength === 0) {
          return 0;
        }
        token = getNextToken(++length);
        if (token === null) {
          return length;
        }
        if (token.type === types.Dimension || token.type === types.Number) {
          if (!startsWith(token, HYPHENMINUS) || !hexSequence(token, 1, false)) {
            return 0;
          }
          return length + 1;
        }
        return withQuestionMarkSequence(consumedHexLength, length, getNextToken);
      }
      if (token.type === types.Dimension) {
        return withQuestionMarkSequence(hexSequence(token, 1, true), ++length, getNextToken);
      }
      return 0;
    }
    module.exports = urange;
  }
});

// node_modules/css-tree/cjs/lexer/generic.cjs
var require_generic = __commonJS({
  "node_modules/css-tree/cjs/lexer/generic.cjs"(exports) {
    "use strict";
    var genericConst = require_generic_const();
    var genericAnPlusB = require_generic_an_plus_b();
    var genericUrange = require_generic_urange();
    var types = require_types2();
    var charCodeDefinitions = require_char_code_definitions();
    var utils = require_utils();
    var calcFunctionNames = ["calc(", "-moz-calc(", "-webkit-calc("];
    var balancePair = /* @__PURE__ */ new Map([
      [types.Function, types.RightParenthesis],
      [types.LeftParenthesis, types.RightParenthesis],
      [types.LeftSquareBracket, types.RightSquareBracket],
      [types.LeftCurlyBracket, types.RightCurlyBracket]
    ]);
    function charCodeAt(str, index) {
      return index < str.length ? str.charCodeAt(index) : 0;
    }
    function eqStr(actual, expected) {
      return utils.cmpStr(actual, 0, actual.length, expected);
    }
    function eqStrAny(actual, expected) {
      for (let i = 0; i < expected.length; i++) {
        if (eqStr(actual, expected[i])) {
          return true;
        }
      }
      return false;
    }
    function isPostfixIeHack(str, offset) {
      if (offset !== str.length - 2) {
        return false;
      }
      return charCodeAt(str, offset) === 92 && // U+005C REVERSE SOLIDUS (\)
      charCodeDefinitions.isDigit(charCodeAt(str, offset + 1));
    }
    function outOfRange(opts, value, numEnd) {
      if (opts && opts.type === "Range") {
        const num = Number(
          numEnd !== void 0 && numEnd !== value.length ? value.substr(0, numEnd) : value
        );
        if (isNaN(num)) {
          return true;
        }
        if (opts.min !== null && num < opts.min && typeof opts.min !== "string") {
          return true;
        }
        if (opts.max !== null && num > opts.max && typeof opts.max !== "string") {
          return true;
        }
      }
      return false;
    }
    function consumeFunction(token, getNextToken) {
      let balanceCloseType = 0;
      let balanceStash = [];
      let length = 0;
      scan:
        do {
          switch (token.type) {
            case types.RightCurlyBracket:
            case types.RightParenthesis:
            case types.RightSquareBracket:
              if (token.type !== balanceCloseType) {
                break scan;
              }
              balanceCloseType = balanceStash.pop();
              if (balanceStash.length === 0) {
                length++;
                break scan;
              }
              break;
            case types.Function:
            case types.LeftParenthesis:
            case types.LeftSquareBracket:
            case types.LeftCurlyBracket:
              balanceStash.push(balanceCloseType);
              balanceCloseType = balancePair.get(token.type);
              break;
          }
          length++;
        } while (token = getNextToken(length));
      return length;
    }
    function calc(next) {
      return function(token, getNextToken, opts) {
        if (token === null) {
          return 0;
        }
        if (token.type === types.Function && eqStrAny(token.value, calcFunctionNames)) {
          return consumeFunction(token, getNextToken);
        }
        return next(token, getNextToken, opts);
      };
    }
    function tokenType(expectedTokenType) {
      return function(token) {
        if (token === null || token.type !== expectedTokenType) {
          return 0;
        }
        return 1;
      };
    }
    function customIdent(token) {
      if (token === null || token.type !== types.Ident) {
        return 0;
      }
      const name = token.value.toLowerCase();
      if (eqStrAny(name, genericConst.cssWideKeywords)) {
        return 0;
      }
      if (eqStr(name, "default")) {
        return 0;
      }
      return 1;
    }
    function dashedIdent(token) {
      if (token === null || token.type !== types.Ident) {
        return 0;
      }
      if (charCodeAt(token.value, 0) !== 45 || charCodeAt(token.value, 1) !== 45) {
        return 0;
      }
      return 1;
    }
    function customPropertyName(token) {
      if (!dashedIdent(token)) {
        return 0;
      }
      if (token.value === "--") {
        return 0;
      }
      return 1;
    }
    function hexColor(token) {
      if (token === null || token.type !== types.Hash) {
        return 0;
      }
      const length = token.value.length;
      if (length !== 4 && length !== 5 && length !== 7 && length !== 9) {
        return 0;
      }
      for (let i = 1; i < length; i++) {
        if (!charCodeDefinitions.isHexDigit(charCodeAt(token.value, i))) {
          return 0;
        }
      }
      return 1;
    }
    function idSelector(token) {
      if (token === null || token.type !== types.Hash) {
        return 0;
      }
      if (!charCodeDefinitions.isIdentifierStart(charCodeAt(token.value, 1), charCodeAt(token.value, 2), charCodeAt(token.value, 3))) {
        return 0;
      }
      return 1;
    }
    function declarationValue(token, getNextToken) {
      if (!token) {
        return 0;
      }
      let balanceCloseType = 0;
      let balanceStash = [];
      let length = 0;
      scan:
        do {
          switch (token.type) {
            // ... <bad-string-token>, <bad-url-token>,
            case types.BadString:
            case types.BadUrl:
              break scan;
            // ... unmatched <)-token>, <]-token>, or <}-token>,
            case types.RightCurlyBracket:
            case types.RightParenthesis:
            case types.RightSquareBracket:
              if (token.type !== balanceCloseType) {
                break scan;
              }
              balanceCloseType = balanceStash.pop();
              break;
            // ... or top-level <semicolon-token> tokens
            case types.Semicolon:
              if (balanceCloseType === 0) {
                break scan;
              }
              break;
            // ... or <delim-token> tokens with a value of "!"
            case types.Delim:
              if (balanceCloseType === 0 && token.value === "!") {
                break scan;
              }
              break;
            case types.Function:
            case types.LeftParenthesis:
            case types.LeftSquareBracket:
            case types.LeftCurlyBracket:
              balanceStash.push(balanceCloseType);
              balanceCloseType = balancePair.get(token.type);
              break;
          }
          length++;
        } while (token = getNextToken(length));
      return length;
    }
    function anyValue(token, getNextToken) {
      if (!token) {
        return 0;
      }
      let balanceCloseType = 0;
      let balanceStash = [];
      let length = 0;
      scan:
        do {
          switch (token.type) {
            // ... does not contain <bad-string-token>, <bad-url-token>,
            case types.BadString:
            case types.BadUrl:
              break scan;
            // ... unmatched <)-token>, <]-token>, or <}-token>,
            case types.RightCurlyBracket:
            case types.RightParenthesis:
            case types.RightSquareBracket:
              if (token.type !== balanceCloseType) {
                break scan;
              }
              balanceCloseType = balanceStash.pop();
              break;
            case types.Function:
            case types.LeftParenthesis:
            case types.LeftSquareBracket:
            case types.LeftCurlyBracket:
              balanceStash.push(balanceCloseType);
              balanceCloseType = balancePair.get(token.type);
              break;
          }
          length++;
        } while (token = getNextToken(length));
      return length;
    }
    function dimension(type) {
      if (type) {
        type = new Set(type);
      }
      return function(token, getNextToken, opts) {
        if (token === null || token.type !== types.Dimension) {
          return 0;
        }
        const numberEnd = utils.consumeNumber(token.value, 0);
        if (type !== null) {
          const reverseSolidusOffset = token.value.indexOf("\\", numberEnd);
          const unit = reverseSolidusOffset === -1 || !isPostfixIeHack(token.value, reverseSolidusOffset) ? token.value.substr(numberEnd) : token.value.substring(numberEnd, reverseSolidusOffset);
          if (type.has(unit.toLowerCase()) === false) {
            return 0;
          }
        }
        if (outOfRange(opts, token.value, numberEnd)) {
          return 0;
        }
        return 1;
      };
    }
    function percentage(token, getNextToken, opts) {
      if (token === null || token.type !== types.Percentage) {
        return 0;
      }
      if (outOfRange(opts, token.value, token.value.length - 1)) {
        return 0;
      }
      return 1;
    }
    function zero(next) {
      if (typeof next !== "function") {
        next = function() {
          return 0;
        };
      }
      return function(token, getNextToken, opts) {
        if (token !== null && token.type === types.Number) {
          if (Number(token.value) === 0) {
            return 1;
          }
        }
        return next(token, getNextToken, opts);
      };
    }
    function number(token, getNextToken, opts) {
      if (token === null) {
        return 0;
      }
      const numberEnd = utils.consumeNumber(token.value, 0);
      const isNumber = numberEnd === token.value.length;
      if (!isNumber && !isPostfixIeHack(token.value, numberEnd)) {
        return 0;
      }
      if (outOfRange(opts, token.value, numberEnd)) {
        return 0;
      }
      return 1;
    }
    function integer(token, getNextToken, opts) {
      if (token === null || token.type !== types.Number) {
        return 0;
      }
      let i = charCodeAt(token.value, 0) === 43 || // U+002B PLUS SIGN (+)
      charCodeAt(token.value, 0) === 45 ? 1 : 0;
      for (; i < token.value.length; i++) {
        if (!charCodeDefinitions.isDigit(charCodeAt(token.value, i))) {
          return 0;
        }
      }
      if (outOfRange(opts, token.value, i)) {
        return 0;
      }
      return 1;
    }
    var tokenTypes = {
      "ident-token": tokenType(types.Ident),
      "function-token": tokenType(types.Function),
      "at-keyword-token": tokenType(types.AtKeyword),
      "hash-token": tokenType(types.Hash),
      "string-token": tokenType(types.String),
      "bad-string-token": tokenType(types.BadString),
      "url-token": tokenType(types.Url),
      "bad-url-token": tokenType(types.BadUrl),
      "delim-token": tokenType(types.Delim),
      "number-token": tokenType(types.Number),
      "percentage-token": tokenType(types.Percentage),
      "dimension-token": tokenType(types.Dimension),
      "whitespace-token": tokenType(types.WhiteSpace),
      "CDO-token": tokenType(types.CDO),
      "CDC-token": tokenType(types.CDC),
      "colon-token": tokenType(types.Colon),
      "semicolon-token": tokenType(types.Semicolon),
      "comma-token": tokenType(types.Comma),
      "[-token": tokenType(types.LeftSquareBracket),
      "]-token": tokenType(types.RightSquareBracket),
      "(-token": tokenType(types.LeftParenthesis),
      ")-token": tokenType(types.RightParenthesis),
      "{-token": tokenType(types.LeftCurlyBracket),
      "}-token": tokenType(types.RightCurlyBracket)
    };
    var productionTypes = {
      // token type aliases
      "string": tokenType(types.String),
      "ident": tokenType(types.Ident),
      // percentage
      "percentage": calc(percentage),
      // numeric
      "zero": zero(),
      "number": calc(number),
      "integer": calc(integer),
      // complex types
      "custom-ident": customIdent,
      "dashed-ident": dashedIdent,
      "custom-property-name": customPropertyName,
      "hex-color": hexColor,
      "id-selector": idSelector,
      // element( <id-selector> )
      "an-plus-b": genericAnPlusB,
      "urange": genericUrange,
      "declaration-value": declarationValue,
      "any-value": anyValue
    };
    function createDemensionTypes(units) {
      const {
        angle,
        decibel,
        frequency,
        flex,
        length,
        resolution,
        semitones,
        time
      } = units || {};
      return {
        "dimension": calc(dimension(null)),
        "angle": calc(dimension(angle)),
        "decibel": calc(dimension(decibel)),
        "frequency": calc(dimension(frequency)),
        "flex": calc(dimension(flex)),
        "length": calc(zero(dimension(length))),
        "resolution": calc(dimension(resolution)),
        "semitones": calc(dimension(semitones)),
        "time": calc(dimension(time))
      };
    }
    function createGenericTypes(units) {
      return {
        ...tokenTypes,
        ...productionTypes,
        ...createDemensionTypes(units)
      };
    }
    exports.createDemensionTypes = createDemensionTypes;
    exports.createGenericTypes = createGenericTypes;
    exports.productionTypes = productionTypes;
    exports.tokenTypes = tokenTypes;
  }
});

// node_modules/css-tree/cjs/lexer/units.cjs
var require_units = __commonJS({
  "node_modules/css-tree/cjs/lexer/units.cjs"(exports) {
    "use strict";
    var length = [
      // absolute length units https://www.w3.org/TR/css-values-3/#lengths
      "cm",
      "mm",
      "q",
      "in",
      "pt",
      "pc",
      "px",
      // font-relative length units https://drafts.csswg.org/css-values-4/#font-relative-lengths
      "em",
      "rem",
      "ex",
      "rex",
      "cap",
      "rcap",
      "ch",
      "rch",
      "ic",
      "ric",
      "lh",
      "rlh",
      // viewport-percentage lengths https://drafts.csswg.org/css-values-4/#viewport-relative-lengths
      "vw",
      "svw",
      "lvw",
      "dvw",
      "vh",
      "svh",
      "lvh",
      "dvh",
      "vi",
      "svi",
      "lvi",
      "dvi",
      "vb",
      "svb",
      "lvb",
      "dvb",
      "vmin",
      "svmin",
      "lvmin",
      "dvmin",
      "vmax",
      "svmax",
      "lvmax",
      "dvmax",
      // container relative lengths https://drafts.csswg.org/css-contain-3/#container-lengths
      "cqw",
      "cqh",
      "cqi",
      "cqb",
      "cqmin",
      "cqmax"
    ];
    var angle = ["deg", "grad", "rad", "turn"];
    var time = ["s", "ms"];
    var frequency = ["hz", "khz"];
    var resolution = ["dpi", "dpcm", "dppx", "x"];
    var flex = ["fr"];
    var decibel = ["db"];
    var semitones = ["st"];
    exports.angle = angle;
    exports.decibel = decibel;
    exports.flex = flex;
    exports.frequency = frequency;
    exports.length = length;
    exports.resolution = resolution;
    exports.semitones = semitones;
    exports.time = time;
  }
});

// node_modules/css-tree/cjs/lexer/prepare-tokens.cjs
var require_prepare_tokens = __commonJS({
  "node_modules/css-tree/cjs/lexer/prepare-tokens.cjs"(exports, module) {
    "use strict";
    var index = require_tokenizer();
    var astToTokens = {
      decorator(handlers) {
        const tokens = [];
        let curNode = null;
        return {
          ...handlers,
          node(node) {
            const tmp = curNode;
            curNode = node;
            handlers.node.call(this, node);
            curNode = tmp;
          },
          emit(value, type, auto) {
            tokens.push({
              type,
              value,
              node: auto ? null : curNode
            });
          },
          result() {
            return tokens;
          }
        };
      }
    };
    function stringToTokens(str) {
      const tokens = [];
      index.tokenize(
        str,
        (type, start, end) => tokens.push({
          type,
          value: str.slice(start, end),
          node: null
        })
      );
      return tokens;
    }
    function prepareTokens(value, syntax) {
      if (typeof value === "string") {
        return stringToTokens(value);
      }
      return syntax.generate(value, astToTokens);
    }
    module.exports = prepareTokens;
  }
});

// node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs
var require_SyntaxError2 = __commonJS({
  "node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs"(exports) {
    "use strict";
    var createCustomError = require_create_custom_error();
    function SyntaxError2(message, input, offset) {
      return Object.assign(createCustomError.createCustomError("SyntaxError", message), {
        input,
        offset,
        rawMessage: message,
        message: message + "\n  " + input + "\n--" + new Array((offset || input.length) + 1).join("-") + "^"
      });
    }
    exports.SyntaxError = SyntaxError2;
  }
});

// node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs
var require_tokenizer2 = __commonJS({
  "node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs"(exports) {
    "use strict";
    var SyntaxError2 = require_SyntaxError2();
    var TAB = 9;
    var N = 10;
    var F = 12;
    var R = 13;
    var SPACE = 32;
    var Tokenizer = class {
      constructor(str) {
        this.str = str;
        this.pos = 0;
      }
      charCodeAt(pos) {
        return pos < this.str.length ? this.str.charCodeAt(pos) : 0;
      }
      charCode() {
        return this.charCodeAt(this.pos);
      }
      nextCharCode() {
        return this.charCodeAt(this.pos + 1);
      }
      nextNonWsCode(pos) {
        return this.charCodeAt(this.findWsEnd(pos));
      }
      skipWs() {
        this.pos = this.findWsEnd(this.pos);
      }
      findWsEnd(pos) {
        for (; pos < this.str.length; pos++) {
          const code = this.str.charCodeAt(pos);
          if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) {
            break;
          }
        }
        return pos;
      }
      substringToPos(end) {
        return this.str.substring(this.pos, this.pos = end);
      }
      eat(code) {
        if (this.charCode() !== code) {
          this.error("Expect `" + String.fromCharCode(code) + "`");
        }
        this.pos++;
      }
      peek() {
        return this.pos < this.str.length ? this.str.charAt(this.pos++) : "";
      }
      error(message) {
        throw new SyntaxError2.SyntaxError(message, this.str, this.pos);
      }
    };
    exports.Tokenizer = Tokenizer;
  }
});

// node_modules/css-tree/cjs/definition-syntax/parse.cjs
var require_parse3 = __commonJS({
  "node_modules/css-tree/cjs/definition-syntax/parse.cjs"(exports) {
    "use strict";
    var tokenizer = require_tokenizer2();
    var TAB = 9;
    var N = 10;
    var F = 12;
    var R = 13;
    var SPACE = 32;
    var EXCLAMATIONMARK = 33;
    var NUMBERSIGN = 35;
    var AMPERSAND = 38;
    var APOSTROPHE = 39;
    var LEFTPARENTHESIS = 40;
    var RIGHTPARENTHESIS = 41;
    var ASTERISK = 42;
    var PLUSSIGN = 43;
    var COMMA = 44;
    var HYPERMINUS = 45;
    var LESSTHANSIGN = 60;
    var GREATERTHANSIGN = 62;
    var QUESTIONMARK = 63;
    var COMMERCIALAT = 64;
    var LEFTSQUAREBRACKET = 91;
    var RIGHTSQUAREBRACKET = 93;
    var LEFTCURLYBRACKET = 123;
    var VERTICALLINE = 124;
    var RIGHTCURLYBRACKET = 125;
    var INFINITY = 8734;
    var NAME_CHAR = new Uint8Array(128).map(
      (_, idx) => /[a-zA-Z0-9\-]/.test(String.fromCharCode(idx)) ? 1 : 0
    );
    var COMBINATOR_PRECEDENCE = {
      " ": 1,
      "&&": 2,
      "||": 3,
      "|": 4
    };
    function scanSpaces(tokenizer2) {
      return tokenizer2.substringToPos(
        tokenizer2.findWsEnd(tokenizer2.pos)
      );
    }
    function scanWord(tokenizer2) {
      let end = tokenizer2.pos;
      for (; end < tokenizer2.str.length; end++) {
        const code = tokenizer2.str.charCodeAt(end);
        if (code >= 128 || NAME_CHAR[code] === 0) {
          break;
        }
      }
      if (tokenizer2.pos === end) {
        tokenizer2.error("Expect a keyword");
      }
      return tokenizer2.substringToPos(end);
    }
    function scanNumber(tokenizer2) {
      let end = tokenizer2.pos;
      for (; end < tokenizer2.str.length; end++) {
        const code = tokenizer2.str.charCodeAt(end);
        if (code < 48 || code > 57) {
          break;
        }
      }
      if (tokenizer2.pos === end) {
        tokenizer2.error("Expect a number");
      }
      return tokenizer2.substringToPos(end);
    }
    function scanString(tokenizer2) {
      const end = tokenizer2.str.indexOf("'", tokenizer2.pos + 1);
      if (end === -1) {
        tokenizer2.pos = tokenizer2.str.length;
        tokenizer2.error("Expect an apostrophe");
      }
      return tokenizer2.substringToPos(end + 1);
    }
    function readMultiplierRange(tokenizer2) {
      let min = null;
      let max = null;
      tokenizer2.eat(LEFTCURLYBRACKET);
      tokenizer2.skipWs();
      min = scanNumber(tokenizer2);
      tokenizer2.skipWs();
      if (tokenizer2.charCode() === COMMA) {
        tokenizer2.pos++;
        tokenizer2.skipWs();
        if (tokenizer2.charCode() !== RIGHTCURLYBRACKET) {
          max = scanNumber(tokenizer2);
          tokenizer2.skipWs();
        }
      } else {
        max = min;
      }
      tokenizer2.eat(RIGHTCURLYBRACKET);
      return {
        min: Number(min),
        max: max ? Number(max) : 0
      };
    }
    function readMultiplier(tokenizer2) {
      let range = null;
      let comma = false;
      switch (tokenizer2.charCode()) {
        case ASTERISK:
          tokenizer2.pos++;
          range = {
            min: 0,
            max: 0
          };
          break;
        case PLUSSIGN:
          tokenizer2.pos++;
          range = {
            min: 1,
            max: 0
          };
          break;
        case QUESTIONMARK:
          tokenizer2.pos++;
          range = {
            min: 0,
            max: 1
          };
          break;
        case NUMBERSIGN:
          tokenizer2.pos++;
          comma = true;
          if (tokenizer2.charCode() === LEFTCURLYBRACKET) {
            range = readMultiplierRange(tokenizer2);
          } else if (tokenizer2.charCode() === QUESTIONMARK) {
            tokenizer2.pos++;
            range = {
              min: 0,
              max: 0
            };
          } else {
            range = {
              min: 1,
              max: 0
            };
          }
          break;
        case LEFTCURLYBRACKET:
          range = readMultiplierRange(tokenizer2);
          break;
        default:
          return null;
      }
      return {
        type: "Multiplier",
        comma,
        min: range.min,
        max: range.max,
        term: null
      };
    }
    function maybeMultiplied(tokenizer2, node) {
      const multiplier = readMultiplier(tokenizer2);
      if (multiplier !== null) {
        multiplier.term = node;
        if (tokenizer2.charCode() === NUMBERSIGN && tokenizer2.charCodeAt(tokenizer2.pos - 1) === PLUSSIGN) {
          return maybeMultiplied(tokenizer2, multiplier);
        }
        return multiplier;
      }
      return node;
    }
    function maybeToken(tokenizer2) {
      const ch = tokenizer2.peek();
      if (ch === "") {
        return null;
      }
      return {
        type: "Token",
        value: ch
      };
    }
    function readProperty(tokenizer2) {
      let name;
      tokenizer2.eat(LESSTHANSIGN);
      tokenizer2.eat(APOSTROPHE);
      name = scanWord(tokenizer2);
      tokenizer2.eat(APOSTROPHE);
      tokenizer2.eat(GREATERTHANSIGN);
      return maybeMultiplied(tokenizer2, {
        type: "Property",
        name
      });
    }
    function readTypeRange(tokenizer2) {
      let min = null;
      let max = null;
      let sign = 1;
      tokenizer2.eat(LEFTSQUAREBRACKET);
      if (tokenizer2.charCode() === HYPERMINUS) {
        tokenizer2.peek();
        sign = -1;
      }
      if (sign == -1 && tokenizer2.charCode() === INFINITY) {
        tokenizer2.peek();
      } else {
        min = sign * Number(scanNumber(tokenizer2));
        if (NAME_CHAR[tokenizer2.charCode()] !== 0) {
          min += scanWord(tokenizer2);
        }
      }
      scanSpaces(tokenizer2);
      tokenizer2.eat(COMMA);
      scanSpaces(tokenizer2);
      if (tokenizer2.charCode() === INFINITY) {
        tokenizer2.peek();
      } else {
        sign = 1;
        if (tokenizer2.charCode() === HYPERMINUS) {
          tokenizer2.peek();
          sign = -1;
        }
        max = sign * Number(scanNumber(tokenizer2));
        if (NAME_CHAR[tokenizer2.charCode()] !== 0) {
          max += scanWord(tokenizer2);
        }
      }
      tokenizer2.eat(RIGHTSQUAREBRACKET);
      return {
        type: "Range",
        min,
        max
      };
    }
    function readType(tokenizer2) {
      let name;
      let opts = null;
      tokenizer2.eat(LESSTHANSIGN);
      name = scanWord(tokenizer2);
      if (tokenizer2.charCode() === LEFTPARENTHESIS && tokenizer2.nextCharCode() === RIGHTPARENTHESIS) {
        tokenizer2.pos += 2;
        name += "()";
      }
      if (tokenizer2.charCodeAt(tokenizer2.findWsEnd(tokenizer2.pos)) === LEFTSQUAREBRACKET) {
        scanSpaces(tokenizer2);
        opts = readTypeRange(tokenizer2);
      }
      tokenizer2.eat(GREATERTHANSIGN);
      return maybeMultiplied(tokenizer2, {
        type: "Type",
        name,
        opts
      });
    }
    function readKeywordOrFunction(tokenizer2) {
      const name = scanWord(tokenizer2);
      if (tokenizer2.charCode() === LEFTPARENTHESIS) {
        tokenizer2.pos++;
        return {
          type: "Function",
          name
        };
      }
      return maybeMultiplied(tokenizer2, {
        type: "Keyword",
        name
      });
    }
    function regroupTerms(terms, combinators) {
      function createGroup(terms2, combinator2) {
        return {
          type: "Group",
          terms: terms2,
          combinator: combinator2,
          disallowEmpty: false,
          explicit: false
        };
      }
      let combinator;
      combinators = Object.keys(combinators).sort((a, b) => COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]);
      while (combinators.length > 0) {
        combinator = combinators.shift();
        let i = 0;
        let subgroupStart = 0;
        for (; i < terms.length; i++) {
          const term = terms[i];
          if (term.type === "Combinator") {
            if (term.value === combinator) {
              if (subgroupStart === -1) {
                subgroupStart = i - 1;
              }
              terms.splice(i, 1);
              i--;
            } else {
              if (subgroupStart !== -1 && i - subgroupStart > 1) {
                terms.splice(
                  subgroupStart,
                  i - subgroupStart,
                  createGroup(terms.slice(subgroupStart, i), combinator)
                );
                i = subgroupStart + 1;
              }
              subgroupStart = -1;
            }
          }
        }
        if (subgroupStart !== -1 && combinators.length) {
          terms.splice(
            subgroupStart,
            i - subgroupStart,
            createGroup(terms.slice(subgroupStart, i), combinator)
          );
        }
      }
      return combinator;
    }
    function readImplicitGroup(tokenizer2) {
      const terms = [];
      const combinators = {};
      let token;
      let prevToken = null;
      let prevTokenPos = tokenizer2.pos;
      while (token = peek(tokenizer2)) {
        if (token.type !== "Spaces") {
          if (token.type === "Combinator") {
            if (prevToken === null || prevToken.type === "Combinator") {
              tokenizer2.pos = prevTokenPos;
              tokenizer2.error("Unexpected combinator");
            }
            combinators[token.value] = true;
          } else if (prevToken !== null && prevToken.type !== "Combinator") {
            combinators[" "] = true;
            terms.push({
              type: "Combinator",
              value: " "
            });
          }
          terms.push(token);
          prevToken = token;
          prevTokenPos = tokenizer2.pos;
        }
      }
      if (prevToken !== null && prevToken.type === "Combinator") {
        tokenizer2.pos -= prevTokenPos;
        tokenizer2.error("Unexpected combinator");
      }
      return {
        type: "Group",
        terms,
        combinator: regroupTerms(terms, combinators) || " ",
        disallowEmpty: false,
        explicit: false
      };
    }
    function readGroup(tokenizer2) {
      let result;
      tokenizer2.eat(LEFTSQUAREBRACKET);
      result = readImplicitGroup(tokenizer2);
      tokenizer2.eat(RIGHTSQUAREBRACKET);
      result.explicit = true;
      if (tokenizer2.charCode() === EXCLAMATIONMARK) {
        tokenizer2.pos++;
        result.disallowEmpty = true;
      }
      return result;
    }
    function peek(tokenizer2) {
      let code = tokenizer2.charCode();
      if (code < 128 && NAME_CHAR[code] === 1) {
        return readKeywordOrFunction(tokenizer2);
      }
      switch (code) {
        case RIGHTSQUAREBRACKET:
          break;
        case LEFTSQUAREBRACKET:
          return maybeMultiplied(tokenizer2, readGroup(tokenizer2));
        case LESSTHANSIGN:
          return tokenizer2.nextCharCode() === APOSTROPHE ? readProperty(tokenizer2) : readType(tokenizer2);
        case VERTICALLINE:
          return {
            type: "Combinator",
            value: tokenizer2.substringToPos(
              tokenizer2.pos + (tokenizer2.nextCharCode() === VERTICALLINE ? 2 : 1)
            )
          };
        case AMPERSAND:
          tokenizer2.pos++;
          tokenizer2.eat(AMPERSAND);
          return {
            type: "Combinator",
            value: "&&"
          };
        case COMMA:
          tokenizer2.pos++;
          return {
            type: "Comma"
          };
        case APOSTROPHE:
          return maybeMultiplied(tokenizer2, {
            type: "String",
            value: scanString(tokenizer2)
          });
        case SPACE:
        case TAB:
        case N:
        case R:
        case F:
          return {
            type: "Spaces",
            value: scanSpaces(tokenizer2)
          };
        case COMMERCIALAT:
          code = tokenizer2.nextCharCode();
          if (code < 128 && NAME_CHAR[code] === 1) {
            tokenizer2.pos++;
            return {
              type: "AtKeyword",
              name: scanWord(tokenizer2)
            };
          }
          return maybeToken(tokenizer2);
        case ASTERISK:
        case PLUSSIGN:
        case QUESTIONMARK:
        case NUMBERSIGN:
        case EXCLAMATIONMARK:
          break;
        case LEFTCURLYBRACKET:
          code = tokenizer2.nextCharCode();
          if (code < 48 || code > 57) {
            return maybeToken(tokenizer2);
          }
          break;
        default:
          return maybeToken(tokenizer2);
      }
    }
    function parse(source) {
      const tokenizer$1 = new tokenizer.Tokenizer(source);
      const result = readImplicitGroup(tokenizer$1);
      if (tokenizer$1.pos !== source.length) {
        tokenizer$1.error("Unexpected input");
      }
      if (result.terms.length === 1 && result.terms[0].type === "Group") {
        return result.terms[0];
      }
      return result;
    }
    exports.parse = parse;
  }
});

// node_modules/css-tree/cjs/lexer/match-graph.cjs
var require_match_graph = __commonJS({
  "node_modules/css-tree/cjs/lexer/match-graph.cjs"(exports) {
    "use strict";
    var parse = require_parse3();
    var MATCH = { type: "Match" };
    var MISMATCH = { type: "Mismatch" };
    var DISALLOW_EMPTY = { type: "DisallowEmpty" };
    var LEFTPARENTHESIS = 40;
    var RIGHTPARENTHESIS = 41;
    function createCondition(match, thenBranch, elseBranch) {
      if (thenBranch === MATCH && elseBranch === MISMATCH) {
        return match;
      }
      if (match === MATCH && thenBranch === MATCH && elseBranch === MATCH) {
        return match;
      }
      if (match.type === "If" && match.else === MISMATCH && thenBranch === MATCH) {
        thenBranch = match.then;
        match = match.match;
      }
      return {
        type: "If",
        match,
        then: thenBranch,
        else: elseBranch
      };
    }
    function isFunctionType(name) {
      return name.length > 2 && name.charCodeAt(name.length - 2) === LEFTPARENTHESIS && name.charCodeAt(name.length - 1) === RIGHTPARENTHESIS;
    }
    function isEnumCapatible(term) {
      return term.type === "Keyword" || term.type === "AtKeyword" || term.type === "Function" || term.type === "Type" && isFunctionType(term.name);
    }
    function buildGroupMatchGraph(combinator, terms, atLeastOneTermMatched) {
      switch (combinator) {
        case " ": {
          let result = MATCH;
          for (let i = terms.length - 1; i >= 0; i--) {
            const term = terms[i];
            result = createCondition(
              term,
              result,
              MISMATCH
            );
          }
          return result;
        }
        case "|": {
          let result = MISMATCH;
          let map = null;
          for (let i = terms.length - 1; i >= 0; i--) {
            let term = terms[i];
            if (isEnumCapatible(term)) {
              if (map === null && i > 0 && isEnumCapatible(terms[i - 1])) {
                map = /* @__PURE__ */ Object.create(null);
                result = createCondition(
                  {
                    type: "Enum",
                    map
                  },
                  MATCH,
                  result
                );
              }
              if (map !== null) {
                const key = (isFunctionType(term.name) ? term.name.slice(0, -1) : term.name).toLowerCase();
                if (key in map === false) {
                  map[key] = term;
                  continue;
                }
              }
            }
            map = null;
            result = createCondition(
              term,
              MATCH,
              result
            );
          }
          return result;
        }
        case "&&": {
          if (terms.length > 5) {
            return {
              type: "MatchOnce",
              terms,
              all: true
            };
          }
          let result = MISMATCH;
          for (let i = terms.length - 1; i >= 0; i--) {
            const term = terms[i];
            let thenClause;
            if (terms.length > 1) {
              thenClause = buildGroupMatchGraph(
                combinator,
                terms.filter(function(newGroupTerm) {
                  return newGroupTerm !== term;
                }),
                false
              );
            } else {
              thenClause = MATCH;
            }
            result = createCondition(
              term,
              thenClause,
              result
            );
          }
          return result;
        }
        case "||": {
          if (terms.length > 5) {
            return {
              type: "MatchOnce",
              terms,
              all: false
            };
          }
          let result = atLeastOneTermMatched ? MATCH : MISMATCH;
          for (let i = terms.length - 1; i >= 0; i--) {
            const term = terms[i];
            let thenClause;
            if (terms.length > 1) {
              thenClause = buildGroupMatchGraph(
                combinator,
                terms.filter(function(newGroupTerm) {
                  return newGroupTerm !== term;
                }),
                true
              );
            } else {
              thenClause = MATCH;
            }
            result = createCondition(
              term,
              thenClause,
              result
            );
          }
          return result;
        }
      }
    }
    function buildMultiplierMatchGraph(node) {
      let result = MATCH;
      let matchTerm = buildMatchGraphInternal(node.term);
      if (node.max === 0) {
        matchTerm = createCondition(
          matchTerm,
          DISALLOW_EMPTY,
          MISMATCH
        );
        result = createCondition(
          matchTerm,
          null,
          // will be a loop
          MISMATCH
        );
        result.then = createCondition(
          MATCH,
          MATCH,
          result
          // make a loop
        );
        if (node.comma) {
          result.then.else = createCondition(
            { type: "Comma", syntax: node },
            result,
            MISMATCH
          );
        }
      } else {
        for (let i = node.min || 1; i <= node.max; i++) {
          if (node.comma && result !== MATCH) {
            result = createCondition(
              { type: "Comma", syntax: node },
              result,
              MISMATCH
            );
          }
          result = createCondition(
            matchTerm,
            createCondition(
              MATCH,
              MATCH,
              result
            ),
            MISMATCH
          );
        }
      }
      if (node.min === 0) {
        result = createCondition(
          MATCH,
          MATCH,
          result
        );
      } else {
        for (let i = 0; i < node.min - 1; i++) {
          if (node.comma && result !== MATCH) {
            result = createCondition(
              { type: "Comma", syntax: node },
              result,
              MISMATCH
            );
          }
          result = createCondition(
            matchTerm,
            result,
            MISMATCH
          );
        }
      }
      return result;
    }
    function buildMatchGraphInternal(node) {
      if (typeof node === "function") {
        return {
          type: "Generic",
          fn: node
        };
      }
      switch (node.type) {
        case "Group": {
          let result = buildGroupMatchGraph(
            node.combinator,
            node.terms.map(buildMatchGraphInternal),
            false
          );
          if (node.disallowEmpty) {
            result = createCondition(
              result,
              DISALLOW_EMPTY,
              MISMATCH
            );
          }
          return result;
        }
        case "Multiplier":
          return buildMultiplierMatchGraph(node);
        case "Type":
        case "Property":
          return {
            type: node.type,
            name: node.name,
            syntax: node
          };
        case "Keyword":
          return {
            type: node.type,
            name: node.name.toLowerCase(),
            syntax: node
          };
        case "AtKeyword":
          return {
            type: node.type,
            name: "@" + node.name.toLowerCase(),
            syntax: node
          };
        case "Function":
          return {
            type: node.type,
            name: node.name.toLowerCase() + "(",
            syntax: node
          };
        case "String":
          if (node.value.length === 3) {
            return {
              type: "Token",
              value: node.value.charAt(1),
              syntax: node
            };
          }
          return {
            type: node.type,
            value: node.value.substr(1, node.value.length - 2).replace(/\\'/g, "'"),
            syntax: node
          };
        case "Token":
          return {
            type: node.type,
            value: node.value,
            syntax: node
          };
        case "Comma":
          return {
            type: node.type,
            syntax: node
          };
        default:
          throw new Error("Unknown node type:", node.type);
      }
    }
    function buildMatchGraph(syntaxTree, ref) {
      if (typeof syntaxTree === "string") {
        syntaxTree = parse.parse(syntaxTree);
      }
      return {
        type: "MatchGraph",
        match: buildMatchGraphInternal(syntaxTree),
        syntax: ref || null,
        source: syntaxTree
      };
    }
    exports.DISALLOW_EMPTY = DISALLOW_EMPTY;
    exports.MATCH = MATCH;
    exports.MISMATCH = MISMATCH;
    exports.buildMatchGraph = buildMatchGraph;
  }
});

// node_modules/css-tree/cjs/lexer/match.cjs
var require_match = __commonJS({
  "node_modules/css-tree/cjs/lexer/match.cjs"(exports) {
    "use strict";
    var matchGraph = require_match_graph();
    var types = require_types2();
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    var STUB = 0;
    var TOKEN = 1;
    var OPEN_SYNTAX = 2;
    var CLOSE_SYNTAX = 3;
    var EXIT_REASON_MATCH = "Match";
    var EXIT_REASON_MISMATCH = "Mismatch";
    var EXIT_REASON_ITERATION_LIMIT = "Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)";
    var ITERATION_LIMIT = 15e3;
    function reverseList(list) {
      let prev = null;
      let next = null;
      let item = list;
      while (item !== null) {
        next = item.prev;
        item.prev = prev;
        prev = item;
        item = next;
      }
      return prev;
    }
    function areStringsEqualCaseInsensitive(testStr, referenceStr) {
      if (testStr.length !== referenceStr.length) {
        return false;
      }
      for (let i = 0; i < testStr.length; i++) {
        const referenceCode = referenceStr.charCodeAt(i);
        let testCode = testStr.charCodeAt(i);
        if (testCode >= 65 && testCode <= 90) {
          testCode = testCode | 32;
        }
        if (testCode !== referenceCode) {
          return false;
        }
      }
      return true;
    }
    function isContextEdgeDelim(token) {
      if (token.type !== types.Delim) {
        return false;
      }
      return token.value !== "?";
    }
    function isCommaContextStart(token) {
      if (token === null) {
        return true;
      }
      return token.type === types.Comma || token.type === types.Function || token.type === types.LeftParenthesis || token.type === types.LeftSquareBracket || token.type === types.LeftCurlyBracket || isContextEdgeDelim(token);
    }
    function isCommaContextEnd(token) {
      if (token === null) {
        return true;
      }
      return token.type === types.RightParenthesis || token.type === types.RightSquareBracket || token.type === types.RightCurlyBracket || token.type === types.Delim && token.value === "/";
    }
    function internalMatch(tokens, state, syntaxes) {
      function moveToNextToken() {
        do {
          tokenIndex++;
          token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;
        } while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment));
      }
      function getNextToken(offset) {
        const nextIndex = tokenIndex + offset;
        return nextIndex < tokens.length ? tokens[nextIndex] : null;
      }
      function stateSnapshotFromSyntax(nextState, prev) {
        return {
          nextState,
          matchStack,
          syntaxStack,
          thenStack,
          tokenIndex,
          prev
        };
      }
      function pushThenStack(nextState) {
        thenStack = {
          nextState,
          matchStack,
          syntaxStack,
          prev: thenStack
        };
      }
      function pushElseStack(nextState) {
        elseStack = stateSnapshotFromSyntax(nextState, elseStack);
      }
      function addTokenToMatch() {
        matchStack = {
          type: TOKEN,
          syntax: state.syntax,
          token,
          prev: matchStack
        };
        moveToNextToken();
        syntaxStash = null;
        if (tokenIndex > longestMatch) {
          longestMatch = tokenIndex;
        }
      }
      function openSyntax() {
        syntaxStack = {
          syntax: state.syntax,
          opts: state.syntax.opts || syntaxStack !== null && syntaxStack.opts || null,
          prev: syntaxStack
        };
        matchStack = {
          type: OPEN_SYNTAX,
          syntax: state.syntax,
          token: matchStack.token,
          prev: matchStack
        };
      }
      function closeSyntax() {
        if (matchStack.type === OPEN_SYNTAX) {
          matchStack = matchStack.prev;
        } else {
          matchStack = {
            type: CLOSE_SYNTAX,
            syntax: syntaxStack.syntax,
            token: matchStack.token,
            prev: matchStack
          };
        }
        syntaxStack = syntaxStack.prev;
      }
      let syntaxStack = null;
      let thenStack = null;
      let elseStack = null;
      let syntaxStash = null;
      let iterationCount = 0;
      let exitReason = null;
      let token = null;
      let tokenIndex = -1;
      let longestMatch = 0;
      let matchStack = {
        type: STUB,
        syntax: null,
        token: null,
        prev: null
      };
      moveToNextToken();
      while (exitReason === null && ++iterationCount < ITERATION_LIMIT) {
        switch (state.type) {
          case "Match":
            if (thenStack === null) {
              if (token !== null) {
                if (tokenIndex !== tokens.length - 1 || token.value !== "\\0" && token.value !== "\\9") {
                  state = matchGraph.MISMATCH;
                  break;
                }
              }
              exitReason = EXIT_REASON_MATCH;
              break;
            }
            state = thenStack.nextState;
            if (state === matchGraph.DISALLOW_EMPTY) {
              if (thenStack.matchStack === matchStack) {
                state = matchGraph.MISMATCH;
                break;
              } else {
                state = matchGraph.MATCH;
              }
            }
            while (thenStack.syntaxStack !== syntaxStack) {
              closeSyntax();
            }
            thenStack = thenStack.prev;
            break;
          case "Mismatch":
            if (syntaxStash !== null && syntaxStash !== false) {
              if (elseStack === null || tokenIndex > elseStack.tokenIndex) {
                elseStack = syntaxStash;
                syntaxStash = false;
              }
            } else if (elseStack === null) {
              exitReason = EXIT_REASON_MISMATCH;
              break;
            }
            state = elseStack.nextState;
            thenStack = elseStack.thenStack;
            syntaxStack = elseStack.syntaxStack;
            matchStack = elseStack.matchStack;
            tokenIndex = elseStack.tokenIndex;
            token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;
            elseStack = elseStack.prev;
            break;
          case "MatchGraph":
            state = state.match;
            break;
          case "If":
            if (state.else !== matchGraph.MISMATCH) {
              pushElseStack(state.else);
            }
            if (state.then !== matchGraph.MATCH) {
              pushThenStack(state.then);
            }
            state = state.match;
            break;
          case "MatchOnce":
            state = {
              type: "MatchOnceBuffer",
              syntax: state,
              index: 0,
              mask: 0
            };
            break;
          case "MatchOnceBuffer": {
            const terms = state.syntax.terms;
            if (state.index === terms.length) {
              if (state.mask === 0 || state.syntax.all) {
                state = matchGraph.MISMATCH;
                break;
              }
              state = matchGraph.MATCH;
              break;
            }
            if (state.mask === (1 << terms.length) - 1) {
              state = matchGraph.MATCH;
              break;
            }
            for (; state.index < terms.length; state.index++) {
              const matchFlag = 1 << state.index;
              if ((state.mask & matchFlag) === 0) {
                pushElseStack(state);
                pushThenStack({
                  type: "AddMatchOnce",
                  syntax: state.syntax,
                  mask: state.mask | matchFlag
                });
                state = terms[state.index++];
                break;
              }
            }
            break;
          }
          case "AddMatchOnce":
            state = {
              type: "MatchOnceBuffer",
              syntax: state.syntax,
              index: 0,
              mask: state.mask
            };
            break;
          case "Enum":
            if (token !== null) {
              let name = token.value.toLowerCase();
              if (name.indexOf("\\") !== -1) {
                name = name.replace(/\\[09].*$/, "");
              }
              if (hasOwnProperty2.call(state.map, name)) {
                state = state.map[name];
                break;
              }
            }
            state = matchGraph.MISMATCH;
            break;
          case "Generic": {
            const opts = syntaxStack !== null ? syntaxStack.opts : null;
            const lastTokenIndex2 = tokenIndex + Math.floor(state.fn(token, getNextToken, opts));
            if (!isNaN(lastTokenIndex2) && lastTokenIndex2 > tokenIndex) {
              while (tokenIndex < lastTokenIndex2) {
                addTokenToMatch();
              }
              state = matchGraph.MATCH;
            } else {
              state = matchGraph.MISMATCH;
            }
            break;
          }
          case "Type":
          case "Property": {
            const syntaxDict = state.type === "Type" ? "types" : "properties";
            const dictSyntax = hasOwnProperty2.call(syntaxes, syntaxDict) ? syntaxes[syntaxDict][state.name] : null;
            if (!dictSyntax || !dictSyntax.match) {
              throw new Error(
                "Bad syntax reference: " + (state.type === "Type" ? "<" + state.name + ">" : "<'" + state.name + "'>")
              );
            }
            if (syntaxStash !== false && token !== null && state.type === "Type") {
              const lowPriorityMatching = (
                // https://drafts.csswg.org/css-values-4/#custom-idents
                // When parsing positionally-ambiguous keywords in a property value, a <custom-ident> production
                // can only claim the keyword if no other unfulfilled production can claim it.
                state.name === "custom-ident" && token.type === types.Ident || // https://drafts.csswg.org/css-values-4/#lengths
                // ... if a `0` could be parsed as either a <number> or a <length> in a property (such as line-height),
                // it must parse as a <number>
                state.name === "length" && token.value === "0"
              );
              if (lowPriorityMatching) {
                if (syntaxStash === null) {
                  syntaxStash = stateSnapshotFromSyntax(state, elseStack);
                }
                state = matchGraph.MISMATCH;
                break;
              }
            }
            openSyntax();
            state = dictSyntax.matchRef || dictSyntax.match;
            break;
          }
          case "Keyword": {
            const name = state.name;
            if (token !== null) {
              let keywordName = token.value;
              if (keywordName.indexOf("\\") !== -1) {
                keywordName = keywordName.replace(/\\[09].*$/, "");
              }
              if (areStringsEqualCaseInsensitive(keywordName, name)) {
                addTokenToMatch();
                state = matchGraph.MATCH;
                break;
              }
            }
            state = matchGraph.MISMATCH;
            break;
          }
          case "AtKeyword":
          case "Function":
            if (token !== null && areStringsEqualCaseInsensitive(token.value, state.name)) {
              addTokenToMatch();
              state = matchGraph.MATCH;
              break;
            }
            state = matchGraph.MISMATCH;
            break;
          case "Token":
            if (token !== null && token.value === state.value) {
              addTokenToMatch();
              state = matchGraph.MATCH;
              break;
            }
            state = matchGraph.MISMATCH;
            break;
          case "Comma":
            if (token !== null && token.type === types.Comma) {
              if (isCommaContextStart(matchStack.token)) {
                state = matchGraph.MISMATCH;
              } else {
                addTokenToMatch();
                state = isCommaContextEnd(token) ? matchGraph.MISMATCH : matchGraph.MATCH;
              }
            } else {
              state = isCommaContextStart(matchStack.token) || isCommaContextEnd(token) ? matchGraph.MATCH : matchGraph.MISMATCH;
            }
            break;
          case "String":
            let string = "";
            let lastTokenIndex = tokenIndex;
            for (; lastTokenIndex < tokens.length && string.length < state.value.length; lastTokenIndex++) {
              string += tokens[lastTokenIndex].value;
            }
            if (areStringsEqualCaseInsensitive(string, state.value)) {
              while (tokenIndex < lastTokenIndex) {
                addTokenToMatch();
              }
              state = matchGraph.MATCH;
            } else {
              state = matchGraph.MISMATCH;
            }
            break;
          default:
            throw new Error("Unknown node type: " + state.type);
        }
      }
      switch (exitReason) {
        case null:
          console.warn("[csstree-match] BREAK after " + ITERATION_LIMIT + " iterations");
          exitReason = EXIT_REASON_ITERATION_LIMIT;
          matchStack = null;
          break;
        case EXIT_REASON_MATCH:
          while (syntaxStack !== null) {
            closeSyntax();
          }
          break;
        default:
          matchStack = null;
      }
      return {
        tokens,
        reason: exitReason,
        iterations: iterationCount,
        match: matchStack,
        longestMatch
      };
    }
    function matchAsList(tokens, matchGraph2, syntaxes) {
      const matchResult = internalMatch(tokens, matchGraph2, syntaxes || {});
      if (matchResult.match !== null) {
        let item = reverseList(matchResult.match).prev;
        matchResult.match = [];
        while (item !== null) {
          switch (item.type) {
            case OPEN_SYNTAX:
            case CLOSE_SYNTAX:
              matchResult.match.push({
                type: item.type,
                syntax: item.syntax
              });
              break;
            default:
              matchResult.match.push({
                token: item.token.value,
                node: item.token.node
              });
              break;
          }
          item = item.prev;
        }
      }
      return matchResult;
    }
    function matchAsTree(tokens, matchGraph2, syntaxes) {
      const matchResult = internalMatch(tokens, matchGraph2, syntaxes || {});
      if (matchResult.match === null) {
        return matchResult;
      }
      let item = matchResult.match;
      let host = matchResult.match = {
        syntax: matchGraph2.syntax || null,
        match: []
      };
      const hostStack = [host];
      item = reverseList(item).prev;
      while (item !== null) {
        switch (item.type) {
          case OPEN_SYNTAX:
            host.match.push(host = {
              syntax: item.syntax,
              match: []
            });
            hostStack.push(host);
            break;
          case CLOSE_SYNTAX:
            hostStack.pop();
            host = hostStack[hostStack.length - 1];
            break;
          default:
            host.match.push({
              syntax: item.syntax || null,
              token: item.token.value,
              node: item.token.node
            });
        }
        item = item.prev;
      }
      return matchResult;
    }
    exports.matchAsList = matchAsList;
    exports.matchAsTree = matchAsTree;
  }
});

// node_modules/css-tree/cjs/lexer/trace.cjs
var require_trace = __commonJS({
  "node_modules/css-tree/cjs/lexer/trace.cjs"(exports) {
    "use strict";
    function getTrace(node) {
      function shouldPutToTrace(syntax) {
        if (syntax === null) {
          return false;
        }
        return syntax.type === "Type" || syntax.type === "Property" || syntax.type === "Keyword";
      }
      function hasMatch(matchNode) {
        if (Array.isArray(matchNode.match)) {
          for (let i = 0; i < matchNode.match.length; i++) {
            if (hasMatch(matchNode.match[i])) {
              if (shouldPutToTrace(matchNode.syntax)) {
                result.unshift(matchNode.syntax);
              }
              return true;
            }
          }
        } else if (matchNode.node === node) {
          result = shouldPutToTrace(matchNode.syntax) ? [matchNode.syntax] : [];
          return true;
        }
        return false;
      }
      let result = null;
      if (this.matched !== null) {
        hasMatch(this.matched);
      }
      return result;
    }
    function isType(node, type) {
      return testNode(this, node, (match) => match.type === "Type" && match.name === type);
    }
    function isProperty(node, property) {
      return testNode(this, node, (match) => match.type === "Property" && match.name === property);
    }
    function isKeyword(node) {
      return testNode(this, node, (match) => match.type === "Keyword");
    }
    function testNode(match, node, fn) {
      const trace = getTrace.call(match, node);
      if (trace === null) {
        return false;
      }
      return trace.some(fn);
    }
    exports.getTrace = getTrace;
    exports.isKeyword = isKeyword;
    exports.isProperty = isProperty;
    exports.isType = isType;
  }
});

// node_modules/css-tree/cjs/lexer/search.cjs
var require_search = __commonJS({
  "node_modules/css-tree/cjs/lexer/search.cjs"(exports) {
    "use strict";
    var List = require_List();
    function getFirstMatchNode(matchNode) {
      if ("node" in matchNode) {
        return matchNode.node;
      }
      return getFirstMatchNode(matchNode.match[0]);
    }
    function getLastMatchNode(matchNode) {
      if ("node" in matchNode) {
        return matchNode.node;
      }
      return getLastMatchNode(matchNode.match[matchNode.match.length - 1]);
    }
    function matchFragments(lexer, ast, match, type, name) {
      function findFragments(matchNode) {
        if (matchNode.syntax !== null && matchNode.syntax.type === type && matchNode.syntax.name === name) {
          const start = getFirstMatchNode(matchNode);
          const end = getLastMatchNode(matchNode);
          lexer.syntax.walk(ast, function(node, item, list) {
            if (node === start) {
              const nodes = new List.List();
              do {
                nodes.appendData(item.data);
                if (item.data === end) {
                  break;
                }
                item = item.next;
              } while (item !== null);
              fragments.push({
                parent: list,
                nodes
              });
            }
          });
        }
        if (Array.isArray(matchNode.match)) {
          matchNode.match.forEach(findFragments);
        }
      }
      const fragments = [];
      if (match.matched !== null) {
        findFragments(match.matched);
      }
      return fragments;
    }
    exports.matchFragments = matchFragments;
  }
});

// node_modules/css-tree/cjs/lexer/structure.cjs
var require_structure = __commonJS({
  "node_modules/css-tree/cjs/lexer/structure.cjs"(exports) {
    "use strict";
    var List = require_List();
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    function isValidNumber(value) {
      return typeof value === "number" && isFinite(value) && Math.floor(value) === value && value >= 0;
    }
    function isValidLocation(loc) {
      return Boolean(loc) && isValidNumber(loc.offset) && isValidNumber(loc.line) && isValidNumber(loc.column);
    }
    function createNodeStructureChecker(type, fields) {
      return function checkNode(node, warn) {
        if (!node || node.constructor !== Object) {
          return warn(node, "Type of node should be an Object");
        }
        for (let key in node) {
          let valid = true;
          if (hasOwnProperty2.call(node, key) === false) {
            continue;
          }
          if (key === "type") {
            if (node.type !== type) {
              warn(node, "Wrong node type `" + node.type + "`, expected `" + type + "`");
            }
          } else if (key === "loc") {
            if (node.loc === null) {
              continue;
            } else if (node.loc && node.loc.constructor === Object) {
              if (typeof node.loc.source !== "string") {
                key += ".source";
              } else if (!isValidLocation(node.loc.start)) {
                key += ".start";
              } else if (!isValidLocation(node.loc.end)) {
                key += ".end";
              } else {
                continue;
              }
            }
            valid = false;
          } else if (fields.hasOwnProperty(key)) {
            valid = false;
            for (let i = 0; !valid && i < fields[key].length; i++) {
              const fieldType = fields[key][i];
              switch (fieldType) {
                case String:
                  valid = typeof node[key] === "string";
                  break;
                case Boolean:
                  valid = typeof node[key] === "boolean";
                  break;
                case null:
                  valid = node[key] === null;
                  break;
                default:
                  if (typeof fieldType === "string") {
                    valid = node[key] && node[key].type === fieldType;
                  } else if (Array.isArray(fieldType)) {
                    valid = node[key] instanceof List.List;
                  }
              }
            }
          } else {
            warn(node, "Unknown field `" + key + "` for " + type + " node type");
          }
          if (!valid) {
            warn(node, "Bad value for `" + type + "." + key + "`");
          }
        }
        for (const key in fields) {
          if (hasOwnProperty2.call(fields, key) && hasOwnProperty2.call(node, key) === false) {
            warn(node, "Field `" + type + "." + key + "` is missed");
          }
        }
      };
    }
    function genTypesList(fieldTypes, path) {
      const docsTypes = [];
      for (let i = 0; i < fieldTypes.length; i++) {
        const fieldType = fieldTypes[i];
        if (fieldType === String || fieldType === Boolean) {
          docsTypes.push(fieldType.name.toLowerCase());
        } else if (fieldType === null) {
          docsTypes.push("null");
        } else if (typeof fieldType === "string") {
          docsTypes.push(fieldType);
        } else if (Array.isArray(fieldType)) {
          docsTypes.push("List<" + (genTypesList(fieldType, path) || "any") + ">");
        } else {
          throw new Error("Wrong value `" + fieldType + "` in `" + path + "` structure definition");
        }
      }
      return docsTypes.join(" | ");
    }
    function processStructure(name, nodeType) {
      const structure = nodeType.structure;
      const fields = {
        type: String,
        loc: true
      };
      const docs = {
        type: '"' + name + '"'
      };
      for (const key in structure) {
        if (hasOwnProperty2.call(structure, key) === false) {
          continue;
        }
        const fieldTypes = fields[key] = Array.isArray(structure[key]) ? structure[key].slice() : [structure[key]];
        docs[key] = genTypesList(fieldTypes, name + "." + key);
      }
      return {
        docs,
        check: createNodeStructureChecker(name, fields)
      };
    }
    function getStructureFromConfig(config) {
      const structure = {};
      if (config.node) {
        for (const name in config.node) {
          if (hasOwnProperty2.call(config.node, name)) {
            const nodeType = config.node[name];
            if (nodeType.structure) {
              structure[name] = processStructure(name, nodeType);
            } else {
              throw new Error("Missed `structure` field in `" + name + "` node type definition");
            }
          }
        }
      }
      return structure;
    }
    exports.getStructureFromConfig = getStructureFromConfig;
  }
});

// node_modules/css-tree/cjs/definition-syntax/walk.cjs
var require_walk = __commonJS({
  "node_modules/css-tree/cjs/definition-syntax/walk.cjs"(exports) {
    "use strict";
    var noop = function() {
    };
    function ensureFunction(value) {
      return typeof value === "function" ? value : noop;
    }
    function walk(node, options, context) {
      function walk2(node2) {
        enter.call(context, node2);
        switch (node2.type) {
          case "Group":
            node2.terms.forEach(walk2);
            break;
          case "Multiplier":
            walk2(node2.term);
            break;
          case "Type":
          case "Property":
          case "Keyword":
          case "AtKeyword":
          case "Function":
          case "String":
          case "Token":
          case "Comma":
            break;
          default:
            throw new Error("Unknown type: " + node2.type);
        }
        leave.call(context, node2);
      }
      let enter = noop;
      let leave = noop;
      if (typeof options === "function") {
        enter = options;
      } else if (options) {
        enter = ensureFunction(options.enter);
        leave = ensureFunction(options.leave);
      }
      if (enter === noop && leave === noop) {
        throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");
      }
      walk2(node);
    }
    exports.walk = walk;
  }
});

// node_modules/css-tree/cjs/lexer/Lexer.cjs
var require_Lexer = __commonJS({
  "node_modules/css-tree/cjs/lexer/Lexer.cjs"(exports) {
    "use strict";
    var error = require_error();
    var names = require_names2();
    var genericConst = require_generic_const();
    var generic = require_generic();
    var units = require_units();
    var prepareTokens = require_prepare_tokens();
    var matchGraph = require_match_graph();
    var match = require_match();
    var trace = require_trace();
    var search = require_search();
    var structure = require_structure();
    var parse = require_parse3();
    var generate = require_generate();
    var walk = require_walk();
    var cssWideKeywordsSyntax = matchGraph.buildMatchGraph(genericConst.cssWideKeywords.join(" | "));
    function dumpMapSyntax(map, compact, syntaxAsAst) {
      const result = {};
      for (const name in map) {
        if (map[name].syntax) {
          result[name] = syntaxAsAst ? map[name].syntax : generate.generate(map[name].syntax, { compact });
        }
      }
      return result;
    }
    function dumpAtruleMapSyntax(map, compact, syntaxAsAst) {
      const result = {};
      for (const [name, atrule] of Object.entries(map)) {
        result[name] = {
          prelude: atrule.prelude && (syntaxAsAst ? atrule.prelude.syntax : generate.generate(atrule.prelude.syntax, { compact })),
          descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst)
        };
      }
      return result;
    }
    function valueHasVar(tokens) {
      for (let i = 0; i < tokens.length; i++) {
        if (tokens[i].value.toLowerCase() === "var(") {
          return true;
        }
      }
      return false;
    }
    function syntaxHasTopLevelCommaMultiplier(syntax) {
      const singleTerm = syntax.terms[0];
      return syntax.explicit === false && syntax.terms.length === 1 && singleTerm.type === "Multiplier" && singleTerm.comma === true;
    }
    function buildMatchResult(matched, error2, iterations) {
      return {
        matched,
        iterations,
        error: error2,
        ...trace
      };
    }
    function matchSyntax(lexer, syntax, value, useCssWideKeywords) {
      const tokens = prepareTokens(value, lexer.syntax);
      let result;
      if (valueHasVar(tokens)) {
        return buildMatchResult(null, new Error("Matching for a tree with var() is not supported"));
      }
      if (useCssWideKeywords) {
        result = match.matchAsTree(tokens, lexer.cssWideKeywordsSyntax, lexer);
      }
      if (!useCssWideKeywords || !result.match) {
        result = match.matchAsTree(tokens, syntax.match, lexer);
        if (!result.match) {
          return buildMatchResult(
            null,
            new error.SyntaxMatchError(result.reason, syntax.syntax, value, result),
            result.iterations
          );
        }
      }
      return buildMatchResult(result.match, null, result.iterations);
    }
    var Lexer = class {
      constructor(config, syntax, structure$1) {
        this.cssWideKeywordsSyntax = cssWideKeywordsSyntax;
        this.syntax = syntax;
        this.generic = false;
        this.units = { ...units };
        this.atrules = /* @__PURE__ */ Object.create(null);
        this.properties = /* @__PURE__ */ Object.create(null);
        this.types = /* @__PURE__ */ Object.create(null);
        this.structure = structure$1 || structure.getStructureFromConfig(config);
        if (config) {
          if (config.units) {
            for (const group of Object.keys(units)) {
              if (Array.isArray(config.units[group])) {
                this.units[group] = config.units[group];
              }
            }
          }
          if (config.types) {
            for (const [name, type] of Object.entries(config.types)) {
              this.addType_(name, type);
            }
          }
          if (config.generic) {
            this.generic = true;
            for (const [name, value] of Object.entries(generic.createGenericTypes(this.units))) {
              this.addType_(name, value);
            }
          }
          if (config.atrules) {
            for (const [name, atrule] of Object.entries(config.atrules)) {
              this.addAtrule_(name, atrule);
            }
          }
          if (config.properties) {
            for (const [name, property] of Object.entries(config.properties)) {
              this.addProperty_(name, property);
            }
          }
        }
      }
      checkStructure(ast) {
        function collectWarning(node, message) {
          warns.push({ node, message });
        }
        const structure2 = this.structure;
        const warns = [];
        this.syntax.walk(ast, function(node) {
          if (structure2.hasOwnProperty(node.type)) {
            structure2[node.type].check(node, collectWarning);
          } else {
            collectWarning(node, "Unknown node type `" + node.type + "`");
          }
        });
        return warns.length ? warns : false;
      }
      createDescriptor(syntax, type, name, parent = null) {
        const ref = {
          type,
          name
        };
        const descriptor = {
          type,
          name,
          parent,
          serializable: typeof syntax === "string" || syntax && typeof syntax.type === "string",
          syntax: null,
          match: null,
          matchRef: null
          // used for properties when a syntax referenced as <'property'> in other syntax definitions
        };
        if (typeof syntax === "function") {
          descriptor.match = matchGraph.buildMatchGraph(syntax, ref);
        } else {
          if (typeof syntax === "string") {
            Object.defineProperty(descriptor, "syntax", {
              get() {
                Object.defineProperty(descriptor, "syntax", {
                  value: parse.parse(syntax)
                });
                return descriptor.syntax;
              }
            });
          } else {
            descriptor.syntax = syntax;
          }
          Object.defineProperty(descriptor, "match", {
            get() {
              Object.defineProperty(descriptor, "match", {
                value: matchGraph.buildMatchGraph(descriptor.syntax, ref)
              });
              return descriptor.match;
            }
          });
          if (type === "Property") {
            Object.defineProperty(descriptor, "matchRef", {
              get() {
                const syntax2 = descriptor.syntax;
                const value = syntaxHasTopLevelCommaMultiplier(syntax2) ? matchGraph.buildMatchGraph({
                  ...syntax2,
                  terms: [syntax2.terms[0].term]
                }, ref) : null;
                Object.defineProperty(descriptor, "matchRef", {
                  value
                });
                return value;
              }
            });
          }
        }
        return descriptor;
      }
      addAtrule_(name, syntax) {
        if (!syntax) {
          return;
        }
        this.atrules[name] = {
          type: "Atrule",
          name,
          prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, "AtrulePrelude", name) : null,
          descriptors: syntax.descriptors ? Object.keys(syntax.descriptors).reduce(
            (map, descName) => {
              map[descName] = this.createDescriptor(syntax.descriptors[descName], "AtruleDescriptor", descName, name);
              return map;
            },
            /* @__PURE__ */ Object.create(null)
          ) : null
        };
      }
      addProperty_(name, syntax) {
        if (!syntax) {
          return;
        }
        this.properties[name] = this.createDescriptor(syntax, "Property", name);
      }
      addType_(name, syntax) {
        if (!syntax) {
          return;
        }
        this.types[name] = this.createDescriptor(syntax, "Type", name);
      }
      checkAtruleName(atruleName) {
        if (!this.getAtrule(atruleName)) {
          return new error.SyntaxReferenceError("Unknown at-rule", "@" + atruleName);
        }
      }
      checkAtrulePrelude(atruleName, prelude) {
        const error2 = this.checkAtruleName(atruleName);
        if (error2) {
          return error2;
        }
        const atrule = this.getAtrule(atruleName);
        if (!atrule.prelude && prelude) {
          return new SyntaxError("At-rule `@" + atruleName + "` should not contain a prelude");
        }
        if (atrule.prelude && !prelude) {
          if (!matchSyntax(this, atrule.prelude, "", false).matched) {
            return new SyntaxError("At-rule `@" + atruleName + "` should contain a prelude");
          }
        }
      }
      checkAtruleDescriptorName(atruleName, descriptorName) {
        const error$1 = this.checkAtruleName(atruleName);
        if (error$1) {
          return error$1;
        }
        const atrule = this.getAtrule(atruleName);
        const descriptor = names.keyword(descriptorName);
        if (!atrule.descriptors) {
          return new SyntaxError("At-rule `@" + atruleName + "` has no known descriptors");
        }
        if (!atrule.descriptors[descriptor.name] && !atrule.descriptors[descriptor.basename]) {
          return new error.SyntaxReferenceError("Unknown at-rule descriptor", descriptorName);
        }
      }
      checkPropertyName(propertyName) {
        if (!this.getProperty(propertyName)) {
          return new error.SyntaxReferenceError("Unknown property", propertyName);
        }
      }
      matchAtrulePrelude(atruleName, prelude) {
        const error2 = this.checkAtrulePrelude(atruleName, prelude);
        if (error2) {
          return buildMatchResult(null, error2);
        }
        const atrule = this.getAtrule(atruleName);
        if (!atrule.prelude) {
          return buildMatchResult(null, null);
        }
        return matchSyntax(this, atrule.prelude, prelude || "", false);
      }
      matchAtruleDescriptor(atruleName, descriptorName, value) {
        const error2 = this.checkAtruleDescriptorName(atruleName, descriptorName);
        if (error2) {
          return buildMatchResult(null, error2);
        }
        const atrule = this.getAtrule(atruleName);
        const descriptor = names.keyword(descriptorName);
        return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false);
      }
      matchDeclaration(node) {
        if (node.type !== "Declaration") {
          return buildMatchResult(null, new Error("Not a Declaration node"));
        }
        return this.matchProperty(node.property, node.value);
      }
      matchProperty(propertyName, value) {
        if (names.property(propertyName).custom) {
          return buildMatchResult(null, new Error("Lexer matching doesn't applicable for custom properties"));
        }
        const error2 = this.checkPropertyName(propertyName);
        if (error2) {
          return buildMatchResult(null, error2);
        }
        return matchSyntax(this, this.getProperty(propertyName), value, true);
      }
      matchType(typeName, value) {
        const typeSyntax = this.getType(typeName);
        if (!typeSyntax) {
          return buildMatchResult(null, new error.SyntaxReferenceError("Unknown type", typeName));
        }
        return matchSyntax(this, typeSyntax, value, false);
      }
      match(syntax, value) {
        if (typeof syntax !== "string" && (!syntax || !syntax.type)) {
          return buildMatchResult(null, new error.SyntaxReferenceError("Bad syntax"));
        }
        if (typeof syntax === "string" || !syntax.match) {
          syntax = this.createDescriptor(syntax, "Type", "anonymous");
        }
        return matchSyntax(this, syntax, value, false);
      }
      findValueFragments(propertyName, value, type, name) {
        return search.matchFragments(this, value, this.matchProperty(propertyName, value), type, name);
      }
      findDeclarationValueFragments(declaration, type, name) {
        return search.matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name);
      }
      findAllFragments(ast, type, name) {
        const result = [];
        this.syntax.walk(ast, {
          visit: "Declaration",
          enter: (declaration) => {
            result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name));
          }
        });
        return result;
      }
      getAtrule(atruleName, fallbackBasename = true) {
        const atrule = names.keyword(atruleName);
        const atruleEntry = atrule.vendor && fallbackBasename ? this.atrules[atrule.name] || this.atrules[atrule.basename] : this.atrules[atrule.name];
        return atruleEntry || null;
      }
      getAtrulePrelude(atruleName, fallbackBasename = true) {
        const atrule = this.getAtrule(atruleName, fallbackBasename);
        return atrule && atrule.prelude || null;
      }
      getAtruleDescriptor(atruleName, name) {
        return this.atrules.hasOwnProperty(atruleName) && this.atrules.declarators ? this.atrules[atruleName].declarators[name] || null : null;
      }
      getProperty(propertyName, fallbackBasename = true) {
        const property = names.property(propertyName);
        const propertyEntry = property.vendor && fallbackBasename ? this.properties[property.name] || this.properties[property.basename] : this.properties[property.name];
        return propertyEntry || null;
      }
      getType(name) {
        return hasOwnProperty.call(this.types, name) ? this.types[name] : null;
      }
      validate() {
        function validate(syntax, name, broken, descriptor) {
          if (broken.has(name)) {
            return broken.get(name);
          }
          broken.set(name, false);
          if (descriptor.syntax !== null) {
            walk.walk(descriptor.syntax, function(node) {
              if (node.type !== "Type" && node.type !== "Property") {
                return;
              }
              const map = node.type === "Type" ? syntax.types : syntax.properties;
              const brokenMap = node.type === "Type" ? brokenTypes : brokenProperties;
              if (!hasOwnProperty.call(map, node.name) || validate(syntax, node.name, brokenMap, map[node.name])) {
                broken.set(name, true);
              }
            }, this);
          }
        }
        let brokenTypes = /* @__PURE__ */ new Map();
        let brokenProperties = /* @__PURE__ */ new Map();
        for (const key in this.types) {
          validate(this, key, brokenTypes, this.types[key]);
        }
        for (const key in this.properties) {
          validate(this, key, brokenProperties, this.properties[key]);
        }
        brokenTypes = [...brokenTypes.keys()].filter((name) => brokenTypes.get(name));
        brokenProperties = [...brokenProperties.keys()].filter((name) => brokenProperties.get(name));
        if (brokenTypes.length || brokenProperties.length) {
          return {
            types: brokenTypes,
            properties: brokenProperties
          };
        }
        return null;
      }
      dump(syntaxAsAst, pretty) {
        return {
          generic: this.generic,
          units: this.units,
          types: dumpMapSyntax(this.types, !pretty, syntaxAsAst),
          properties: dumpMapSyntax(this.properties, !pretty, syntaxAsAst),
          atrules: dumpAtruleMapSyntax(this.atrules, !pretty, syntaxAsAst)
        };
      }
      toString() {
        return JSON.stringify(this.dump());
      }
    };
    exports.Lexer = Lexer;
  }
});

// node_modules/css-tree/cjs/syntax/config/mix.cjs
var require_mix = __commonJS({
  "node_modules/css-tree/cjs/syntax/config/mix.cjs"(exports, module) {
    "use strict";
    function appendOrSet(a, b) {
      if (typeof b === "string" && /^\s*\|/.test(b)) {
        return typeof a === "string" ? a + b : b.replace(/^\s*\|\s*/, "");
      }
      return b || null;
    }
    function sliceProps(obj, props) {
      const result = /* @__PURE__ */ Object.create(null);
      for (const [key, value] of Object.entries(obj)) {
        if (value) {
          result[key] = {};
          for (const prop of Object.keys(value)) {
            if (props.includes(prop)) {
              result[key][prop] = value[prop];
            }
          }
        }
      }
      return result;
    }
    function mix(dest, src) {
      const result = { ...dest };
      for (const [prop, value] of Object.entries(src)) {
        switch (prop) {
          case "generic":
            result[prop] = Boolean(value);
            break;
          case "units":
            result[prop] = { ...dest[prop] };
            for (const [name, patch] of Object.entries(value)) {
              result[prop][name] = Array.isArray(patch) ? patch : [];
            }
            break;
          case "atrules":
            result[prop] = { ...dest[prop] };
            for (const [name, atrule] of Object.entries(value)) {
              const exists = result[prop][name] || {};
              const current = result[prop][name] = {
                prelude: exists.prelude || null,
                descriptors: {
                  ...exists.descriptors
                }
              };
              if (!atrule) {
                continue;
              }
              current.prelude = atrule.prelude ? appendOrSet(current.prelude, atrule.prelude) : current.prelude || null;
              for (const [descriptorName, descriptorValue] of Object.entries(atrule.descriptors || {})) {
                current.descriptors[descriptorName] = descriptorValue ? appendOrSet(current.descriptors[descriptorName], descriptorValue) : null;
              }
              if (!Object.keys(current.descriptors).length) {
                current.descriptors = null;
              }
            }
            break;
          case "types":
          case "properties":
            result[prop] = { ...dest[prop] };
            for (const [name, syntax] of Object.entries(value)) {
              result[prop][name] = appendOrSet(result[prop][name], syntax);
            }
            break;
          case "scope":
          case "features":
            result[prop] = { ...dest[prop] };
            for (const [name, props] of Object.entries(value)) {
              result[prop][name] = { ...result[prop][name], ...props };
            }
            break;
          case "parseContext":
            result[prop] = {
              ...dest[prop],
              ...value
            };
            break;
          case "atrule":
          case "pseudo":
            result[prop] = {
              ...dest[prop],
              ...sliceProps(value, ["parse"])
            };
            break;
          case "node":
            result[prop] = {
              ...dest[prop],
              ...sliceProps(value, ["name", "structure", "parse", "generate", "walkContext"])
            };
            break;
        }
      }
      return result;
    }
    module.exports = mix;
  }
});

// node_modules/css-tree/cjs/syntax/create.cjs
var require_create5 = __commonJS({
  "node_modules/css-tree/cjs/syntax/create.cjs"(exports, module) {
    "use strict";
    var index = require_tokenizer();
    var create = require_create();
    var create$2 = require_create2();
    var create$3 = require_create3();
    var create$1 = require_create4();
    var Lexer = require_Lexer();
    var mix = require_mix();
    function createSyntax(config) {
      const parse = create.createParser(config);
      const walk = create$1.createWalker(config);
      const generate = create$2.createGenerator(config);
      const { fromPlainObject, toPlainObject } = create$3.createConvertor(walk);
      const syntax = {
        lexer: null,
        createLexer: (config2) => new Lexer.Lexer(config2, syntax, syntax.lexer.structure),
        tokenize: index.tokenize,
        parse,
        generate,
        walk,
        find: walk.find,
        findLast: walk.findLast,
        findAll: walk.findAll,
        fromPlainObject,
        toPlainObject,
        fork(extension) {
          const base = mix({}, config);
          return createSyntax(
            typeof extension === "function" ? extension(base, Object.assign) : mix(base, extension)
          );
        }
      };
      syntax.lexer = new Lexer.Lexer({
        generic: config.generic,
        units: config.units,
        types: config.types,
        atrules: config.atrules,
        properties: config.properties,
        node: config.node
      }, syntax);
      return syntax;
    }
    var createSyntax$1 = (config) => createSyntax(mix({}, config));
    module.exports = createSyntax$1;
  }
});

// node_modules/css-tree/dist/data.cjs
var require_data = __commonJS({
  "node_modules/css-tree/dist/data.cjs"(exports, module) {
    module.exports = {
      "generic": true,
      "units": {
        "angle": [
          "deg",
          "grad",
          "rad",
          "turn"
        ],
        "decibel": [
          "db"
        ],
        "flex": [
          "fr"
        ],
        "frequency": [
          "hz",
          "khz"
        ],
        "length": [
          "cm",
          "mm",
          "q",
          "in",
          "pt",
          "pc",
          "px",
          "em",
          "rem",
          "ex",
          "rex",
          "cap",
          "rcap",
          "ch",
          "rch",
          "ic",
          "ric",
          "lh",
          "rlh",
          "vw",
          "svw",
          "lvw",
          "dvw",
          "vh",
          "svh",
          "lvh",
          "dvh",
          "vi",
          "svi",
          "lvi",
          "dvi",
          "vb",
          "svb",
          "lvb",
          "dvb",
          "vmin",
          "svmin",
          "lvmin",
          "dvmin",
          "vmax",
          "svmax",
          "lvmax",
          "dvmax",
          "cqw",
          "cqh",
          "cqi",
          "cqb",
          "cqmin",
          "cqmax"
        ],
        "resolution": [
          "dpi",
          "dpcm",
          "dppx",
          "x"
        ],
        "semitones": [
          "st"
        ],
        "time": [
          "s",
          "ms"
        ]
      },
      "types": {
        "abs()": "abs( <calc-sum> )",
        "absolute-size": "xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large",
        "acos()": "acos( <calc-sum> )",
        "alpha-value": "<number>|<percentage>",
        "angle-percentage": "<angle>|<percentage>",
        "angular-color-hint": "<angle-percentage>",
        "angular-color-stop": "<color>&&<color-stop-angle>?",
        "angular-color-stop-list": "[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>",
        "animateable-feature": "scroll-position|contents|<custom-ident>",
        "asin()": "asin( <calc-sum> )",
        "atan()": "atan( <calc-sum> )",
        "atan2()": "atan2( <calc-sum> , <calc-sum> )",
        "attachment": "scroll|fixed|local",
        "attr()": "attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )",
        "attr-matcher": "['~'|'|'|'^'|'$'|'*']? '='",
        "attr-modifier": "i|s",
        "attribute-selector": "'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'",
        "auto-repeat": "repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )",
        "auto-track-list": "[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?",
        "axis": "block|inline|vertical|horizontal",
        "baseline-position": "[first|last]? baseline",
        "basic-shape": "<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>",
        "bg-image": "none|<image>",
        "bg-layer": "<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>",
        "bg-position": "[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]",
        "bg-size": "[<length-percentage>|auto]{1,2}|cover|contain",
        "blur()": "blur( <length> )",
        "blend-mode": "normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",
        "box": "border-box|padding-box|content-box",
        "brightness()": "brightness( <number-percentage> )",
        "calc()": "calc( <calc-sum> )",
        "calc-sum": "<calc-product> [['+'|'-'] <calc-product>]*",
        "calc-product": "<calc-value> ['*' <calc-value>|'/' <number>]*",
        "calc-value": "<number>|<dimension>|<percentage>|<calc-constant>|( <calc-sum> )",
        "calc-constant": "e|pi|infinity|-infinity|NaN",
        "cf-final-image": "<image>|<color>",
        "cf-mixing-image": "<percentage>?&&<image>",
        "circle()": "circle( [<shape-radius>]? [at <position>]? )",
        "clamp()": "clamp( <calc-sum>#{3} )",
        "class-selector": "'.' <ident-token>",
        "clip-source": "<url>",
        "color": "<color-base>|currentColor|<system-color>|<device-cmyk()>|<light-dark()>|<-non-standard-color>",
        "color-stop": "<color-stop-length>|<color-stop-angle>",
        "color-stop-angle": "<angle-percentage>{1,2}",
        "color-stop-length": "<length-percentage>{1,2}",
        "color-stop-list": "[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>",
        "combinator": "'>'|'+'|'~'|['|' '|']",
        "common-lig-values": "[common-ligatures|no-common-ligatures]",
        "compat-auto": "searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button",
        "composite-style": "clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor",
        "compositing-operator": "add|subtract|intersect|exclude",
        "compound-selector": "[<type-selector>? <subclass-selector>*]!",
        "compound-selector-list": "<compound-selector>#",
        "complex-selector": "<complex-selector-unit> [<combinator>? <complex-selector-unit>]*",
        "complex-selector-list": "<complex-selector>#",
        "conic-gradient()": "conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )",
        "contextual-alt-values": "[contextual|no-contextual]",
        "content-distribution": "space-between|space-around|space-evenly|stretch",
        "content-list": "[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+",
        "content-position": "center|start|end|flex-start|flex-end",
        "content-replacement": "<image>",
        "contrast()": "contrast( [<number-percentage>] )",
        "cos()": "cos( <calc-sum> )",
        "counter": "<counter()>|<counters()>",
        "counter()": "counter( <counter-name> , <counter-style>? )",
        "counter-name": "<custom-ident>",
        "counter-style": "<counter-style-name>|symbols( )",
        "counter-style-name": "<custom-ident>",
        "counters()": "counters( <counter-name> , <string> , <counter-style>? )",
        "cross-fade()": "cross-fade( <cf-mixing-image> , <cf-final-image>? )",
        "cubic-bezier-timing-function": "ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )",
        "deprecated-system-color": "ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText",
        "discretionary-lig-values": "[discretionary-ligatures|no-discretionary-ligatures]",
        "display-box": "contents|none",
        "display-inside": "flow|flow-root|table|flex|grid|ruby",
        "display-internal": "table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container",
        "display-legacy": "inline-block|inline-list-item|inline-table|inline-flex|inline-grid",
        "display-listitem": "<display-outside>?&&[flow|flow-root]?&&list-item",
        "display-outside": "block|inline|run-in",
        "drop-shadow()": "drop-shadow( <length>{2,3} <color>? )",
        "east-asian-variant-values": "[jis78|jis83|jis90|jis04|simplified|traditional]",
        "east-asian-width-values": "[full-width|proportional-width]",
        "element()": "element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )",
        "ellipse()": "ellipse( [<shape-radius>{2}]? [at <position>]? )",
        "ending-shape": "circle|ellipse",
        "env()": "env( <custom-ident> , <declaration-value>? )",
        "exp()": "exp( <calc-sum> )",
        "explicit-track-list": "[<line-names>? <track-size>]+ <line-names>?",
        "family-name": "<string>|<custom-ident>+",
        "feature-tag-value": "<string> [<integer>|on|off]?",
        "feature-type": "@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation",
        "feature-value-block": "<feature-type> '{' <feature-value-declaration-list> '}'",
        "feature-value-block-list": "<feature-value-block>+",
        "feature-value-declaration": "<custom-ident> : <integer>+ ;",
        "feature-value-declaration-list": "<feature-value-declaration>",
        "feature-value-name": "<custom-ident>",
        "fill-rule": "nonzero|evenodd",
        "filter-function": "<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>",
        "filter-function-list": "[<filter-function>|<url>]+",
        "final-bg-layer": "<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>",
        "fixed-breadth": "<length-percentage>",
        "fixed-repeat": "repeat( [<integer [1,\u221E]>] , [<line-names>? <fixed-size>]+ <line-names>? )",
        "fixed-size": "<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )",
        "font-stretch-absolute": "normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>",
        "font-variant-css21": "[normal|small-caps]",
        "font-weight-absolute": "normal|bold|<number [1,1000]>",
        "frequency-percentage": "<frequency>|<percentage>",
        "general-enclosed": "[<function-token> <any-value>? )]|[( <any-value>? )]",
        "generic-family": "<generic-script-specific>|<generic-complete>|<generic-incomplete>|<-non-standard-generic-family>",
        "generic-name": "serif|sans-serif|cursive|fantasy|monospace",
        "geometry-box": "<shape-box>|fill-box|stroke-box|view-box",
        "gradient": "<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>",
        "grayscale()": "grayscale( <number-percentage> )",
        "grid-line": "auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]",
        "historical-lig-values": "[historical-ligatures|no-historical-ligatures]",
        "hsl()": "hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )",
        "hsla()": "hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )",
        "hue": "<number>|<angle>",
        "hue-rotate()": "hue-rotate( <angle> )",
        "hwb()": "hwb( [<hue>|none] [<percentage>|none] [<percentage>|none] [/ [<alpha-value>|none]]? )",
        "hypot()": "hypot( <calc-sum># )",
        "image": "<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>",
        "image()": "image( <image-tags>? [<image-src>? , <color>?]! )",
        "image-set()": "image-set( <image-set-option># )",
        "image-set-option": "[<image>|<string>] [<resolution>||type( <string> )]",
        "image-src": "<url>|<string>",
        "image-tags": "ltr|rtl",
        "inflexible-breadth": "<length-percentage>|min-content|max-content|auto",
        "inset()": "inset( <length-percentage>{1,4} [round <'border-radius'>]? )",
        "invert()": "invert( <number-percentage> )",
        "keyframes-name": "<custom-ident>|<string>",
        "keyframe-block": "<keyframe-selector># { <declaration-list> }",
        "keyframe-block-list": "<keyframe-block>+",
        "keyframe-selector": "from|to|<percentage>|<timeline-range-name> <percentage>",
        "lab()": "lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )",
        "layer()": "layer( <layer-name> )",
        "layer-name": "<ident> ['.' <ident>]*",
        "lch()": "lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )",
        "leader()": "leader( <leader-type> )",
        "leader-type": "dotted|solid|space|<string>",
        "length-percentage": "<length>|<percentage>",
        "light-dark()": "light-dark( <color> , <color> )",
        "line-names": "'[' <custom-ident>* ']'",
        "line-name-list": "[<line-names>|<name-repeat>]+",
        "line-style": "none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset",
        "line-width": "<length>|thin|medium|thick",
        "linear-color-hint": "<length-percentage>",
        "linear-color-stop": "<color> <color-stop-length>?",
        "linear-gradient()": "linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )",
        "log()": "log( <calc-sum> , <calc-sum>? )",
        "mask-layer": "<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>",
        "mask-position": "[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?",
        "mask-reference": "none|<image>|<mask-source>",
        "mask-source": "<url>",
        "masking-mode": "alpha|luminance|match-source",
        "matrix()": "matrix( <number>#{6} )",
        "matrix3d()": "matrix3d( <number>#{16} )",
        "max()": "max( <calc-sum># )",
        "media-and": "<media-in-parens> [and <media-in-parens>]+",
        "media-condition": "<media-not>|<media-and>|<media-or>|<media-in-parens>",
        "media-condition-without-or": "<media-not>|<media-and>|<media-in-parens>",
        "media-feature": "( [<mf-plain>|<mf-boolean>|<mf-range>] )",
        "media-in-parens": "( <media-condition> )|<media-feature>|<general-enclosed>",
        "media-not": "not <media-in-parens>",
        "media-or": "<media-in-parens> [or <media-in-parens>]+",
        "media-query": "<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?",
        "media-query-list": "<media-query>#",
        "media-type": "<ident>",
        "mf-boolean": "<mf-name>",
        "mf-name": "<ident>",
        "mf-plain": "<mf-name> : <mf-value>",
        "mf-range": "<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>",
        "mf-value": "<number>|<dimension>|<ident>|<ratio>",
        "min()": "min( <calc-sum># )",
        "minmax()": "minmax( [<length-percentage>|min-content|max-content|auto] , [<length-percentage>|<flex>|min-content|max-content|auto] )",
        "mod()": "mod( <calc-sum> , <calc-sum> )",
        "name-repeat": "repeat( [<integer [1,\u221E]>|auto-fill] , <line-names>+ )",
        "named-color": "transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",
        "namespace-prefix": "<ident>",
        "ns-prefix": "[<ident-token>|'*']? '|'",
        "number-percentage": "<number>|<percentage>",
        "numeric-figure-values": "[lining-nums|oldstyle-nums]",
        "numeric-fraction-values": "[diagonal-fractions|stacked-fractions]",
        "numeric-spacing-values": "[proportional-nums|tabular-nums]",
        "nth": "<an-plus-b>|even|odd",
        "opacity()": "opacity( [<number-percentage>] )",
        "overflow-position": "unsafe|safe",
        "outline-radius": "<length>|<percentage>",
        "page-body": "<declaration>? [; <page-body>]?|<page-margin-box> <page-body>",
        "page-margin-box": "<page-margin-box-type> '{' <declaration-list> '}'",
        "page-margin-box-type": "@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom",
        "page-selector-list": "[<page-selector>#]?",
        "page-selector": "<pseudo-page>+|<ident> <pseudo-page>*",
        "page-size": "A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger",
        "path()": "path( [<fill-rule> ,]? <string> )",
        "paint()": "paint( <ident> , <declaration-value>? )",
        "perspective()": "perspective( [<length [0,\u221E]>|none] )",
        "polygon()": "polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )",
        "position": "[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]",
        "pow()": "pow( <calc-sum> , <calc-sum> )",
        "pseudo-class-selector": "':' <ident-token>|':' <function-token> <any-value> ')'",
        "pseudo-element-selector": "':' <pseudo-class-selector>|<legacy-pseudo-element-selector>",
        "pseudo-page": ": [left|right|first|blank]",
        "quote": "open-quote|close-quote|no-open-quote|no-close-quote",
        "radial-gradient()": "radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )",
        "ratio": "<number [0,\u221E]> [/ <number [0,\u221E]>]?",
        "ray()": "ray( <angle>&&<ray-size>?&&contain?&&[at <position>]? )",
        "ray-size": "closest-side|closest-corner|farthest-side|farthest-corner|sides",
        "relative-selector": "<combinator>? <complex-selector>",
        "relative-selector-list": "<relative-selector>#",
        "relative-size": "larger|smaller",
        "rem()": "rem( <calc-sum> , <calc-sum> )",
        "repeat-style": "repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}",
        "repeating-conic-gradient()": "repeating-conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )",
        "repeating-linear-gradient()": "repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )",
        "repeating-radial-gradient()": "repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )",
        "reversed-counter-name": "reversed( <counter-name> )",
        "rgb()": "rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )",
        "rgba()": "rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )",
        "rotate()": "rotate( [<angle>|<zero>] )",
        "rotate3d()": "rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )",
        "rotateX()": "rotateX( [<angle>|<zero>] )",
        "rotateY()": "rotateY( [<angle>|<zero>] )",
        "rotateZ()": "rotateZ( [<angle>|<zero>] )",
        "round()": "round( <rounding-strategy>? , <calc-sum> , <calc-sum> )",
        "rounding-strategy": "nearest|up|down|to-zero",
        "saturate()": "saturate( <number-percentage> )",
        "scale()": "scale( [<number>|<percentage>]#{1,2} )",
        "scale3d()": "scale3d( [<number>|<percentage>]#{3} )",
        "scaleX()": "scaleX( [<number>|<percentage>] )",
        "scaleY()": "scaleY( [<number>|<percentage>] )",
        "scaleZ()": "scaleZ( [<number>|<percentage>] )",
        "scroll()": "scroll( [<axis>||<scroller>]? )",
        "scroller": "root|nearest",
        "self-position": "center|start|end|self-start|self-end|flex-start|flex-end",
        "shape-radius": "<length-percentage>|closest-side|farthest-side",
        "sign()": "sign( <calc-sum> )",
        "skew()": "skew( [<angle>|<zero>] , [<angle>|<zero>]? )",
        "skewX()": "skewX( [<angle>|<zero>] )",
        "skewY()": "skewY( [<angle>|<zero>] )",
        "sepia()": "sepia( <number-percentage> )",
        "shadow": "inset?&&<length>{2,4}&&<color>?",
        "shadow-t": "[<length>{2,3}&&<color>?]",
        "shape": "rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )",
        "shape-box": "<box>|margin-box",
        "side-or-corner": "[left|right]||[top|bottom]",
        "sin()": "sin( <calc-sum> )",
        "single-animation": "<'animation-duration'>||<easing-function>||<'animation-delay'>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]||<single-animation-timeline>",
        "single-animation-direction": "normal|reverse|alternate|alternate-reverse",
        "single-animation-fill-mode": "none|forwards|backwards|both",
        "single-animation-iteration-count": "infinite|<number>",
        "single-animation-play-state": "running|paused",
        "single-animation-timeline": "auto|none|<dashed-ident>|<scroll()>|<view()>",
        "single-transition": "[none|<single-transition-property>]||<time>||<easing-function>||<time>||<transition-behavior-value>",
        "single-transition-property": "all|<custom-ident>",
        "size": "closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}",
        "sqrt()": "sqrt( <calc-sum> )",
        "step-position": "jump-start|jump-end|jump-none|jump-both|start|end",
        "step-timing-function": "step-start|step-end|steps( <integer> [, <step-position>]? )",
        "subclass-selector": "<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>",
        "supports-condition": "not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*",
        "supports-in-parens": "( <supports-condition> )|<supports-feature>|<general-enclosed>",
        "supports-feature": "<supports-decl>|<supports-selector-fn>",
        "supports-decl": "( <declaration> )",
        "supports-selector-fn": "selector( <complex-selector> )",
        "symbol": "<string>|<image>|<custom-ident>",
        "tan()": "tan( <calc-sum> )",
        "target": "<target-counter()>|<target-counters()>|<target-text()>",
        "target-counter()": "target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )",
        "target-counters()": "target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )",
        "target-text()": "target-text( [<string>|<url>] , [content|before|after|first-letter]? )",
        "time-percentage": "<time>|<percentage>",
        "timeline-range-name": "cover|contain|entry|exit|entry-crossing|exit-crossing",
        "easing-function": "linear|<cubic-bezier-timing-function>|<step-timing-function>",
        "track-breadth": "<length-percentage>|<flex>|min-content|max-content|auto",
        "track-list": "[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?",
        "track-repeat": "repeat( [<integer [1,\u221E]>] , [<line-names>? <track-size>]+ <line-names>? )",
        "track-size": "<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( <length-percentage> )",
        "transform-function": "<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>",
        "transform-list": "<transform-function>+",
        "transition-behavior-value": "normal|allow-discrete",
        "translate()": "translate( <length-percentage> , <length-percentage>? )",
        "translate3d()": "translate3d( <length-percentage> , <length-percentage> , <length> )",
        "translateX()": "translateX( <length-percentage> )",
        "translateY()": "translateY( <length-percentage> )",
        "translateZ()": "translateZ( <length> )",
        "type-or-unit": "string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%",
        "type-selector": "<wq-name>|<ns-prefix>? '*'",
        "var()": "var( <custom-property-name> , <declaration-value>? )",
        "view()": "view( [<axis>||<'view-timeline-inset'>]? )",
        "viewport-length": "auto|<length-percentage>",
        "visual-box": "content-box|padding-box|border-box",
        "wq-name": "<ns-prefix>? <ident-token>",
        "-legacy-gradient": "<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>",
        "-legacy-linear-gradient": "-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )",
        "-legacy-repeating-linear-gradient": "-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )",
        "-legacy-linear-gradient-arguments": "[<angle>|<side-or-corner>]? , <color-stop-list>",
        "-legacy-radial-gradient": "-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )",
        "-legacy-repeating-radial-gradient": "-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )",
        "-legacy-radial-gradient-arguments": "[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>",
        "-legacy-radial-gradient-size": "closest-side|closest-corner|farthest-side|farthest-corner|contain|cover",
        "-legacy-radial-gradient-shape": "circle|ellipse",
        "-non-standard-font": "-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body",
        "-non-standard-color": "-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text",
        "-non-standard-image-rendering": "optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast",
        "-non-standard-overflow": "overlay|-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable",
        "-non-standard-size": "intrinsic|min-intrinsic|-webkit-fill-available|-webkit-fit-content|-webkit-min-content|-webkit-max-content|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content",
        "-webkit-gradient()": "-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )",
        "-webkit-gradient-color-stop": "from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )",
        "-webkit-gradient-point": "[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]",
        "-webkit-gradient-radius": "<length>|<percentage>",
        "-webkit-gradient-type": "linear|radial",
        "-webkit-mask-box-repeat": "repeat|stretch|round",
        "-ms-filter-function-list": "<-ms-filter-function>+",
        "-ms-filter-function": "<-ms-filter-function-progid>|<-ms-filter-function-legacy>",
        "-ms-filter-function-progid": "'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]",
        "-ms-filter-function-legacy": "<ident-token>|<function-token> <any-value>? )",
        "absolute-color-base": "<hex-color>|<absolute-color-function>|<named-color>|transparent",
        "absolute-color-function": "rgb( ) >|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<oklab()>|<oklch()>|<color()>",
        "age": "child|young|old",
        "attr-name": "<wq-name>",
        "attr-fallback": "<any-value>",
        "bg-clip": "<box>|border|text",
        "bottom": "<length>|auto",
        "container-name": "<custom-ident>",
        "container-condition": "not <query-in-parens>|<query-in-parens> [[and <query-in-parens>]*|[or <query-in-parens>]*]",
        "coord-box": "content-box|padding-box|border-box|fill-box|stroke-box|view-box",
        "generic-voice": "[<age>? <gender> <integer>?]",
        "gender": "male|female|neutral",
        "generic-script-specific": "generic( kai )|generic( fangsong )|generic( nastaliq )",
        "generic-complete": "serif|sans-serif|system-ui|cursive|fantasy|math|monospace",
        "generic-incomplete": "ui-serif|ui-sans-serif|ui-monospace|ui-rounded",
        "-non-standard-generic-family": "-apple-system|BlinkMacSystemFont",
        "left": "<length>|auto",
        "color-base": "<hex-color>|<color-function>|<named-color>|<color-mix()>|transparent",
        "color-function": "<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<oklab()>|<oklch()>|<color()>",
        "system-color": "AccentColor|AccentColorText|ActiveText|ButtonBorder|ButtonFace|ButtonText|Canvas|CanvasText|Field|FieldText|GrayText|Highlight|HighlightText|LinkText|Mark|MarkText|SelectedItem|SelectedItemText|VisitedText",
        "device-cmyk()": "<legacy-device-cmyk-syntax>|<modern-device-cmyk-syntax>",
        "legacy-device-cmyk-syntax": "device-cmyk( <number>#{4} )",
        "modern-device-cmyk-syntax": "device-cmyk( <cmyk-component>{4} [/ [<alpha-value>|none]]? )",
        "cmyk-component": "<number>|<percentage>|none",
        "color-mix()": "color-mix( <color-interpolation-method> , [<color>&&<percentage [0,100]>?]#{2} )",
        "color-interpolation-method": "in [<rectangular-color-space>|<polar-color-space> <hue-interpolation-method>?|<custom-color-space>]",
        "color-space": "<rectangular-color-space>|<polar-color-space>|<custom-color-space>",
        "rectangular-color-space": "srgb|srgb-linear|display-p3|a98-rgb|prophoto-rgb|rec2020|lab|oklab|xyz|xyz-d50|xyz-d65",
        "polar-color-space": "hsl|hwb|lch|oklch",
        "custom-color-space": "<dashed-ident>",
        "hue-interpolation-method": "[shorter|longer|increasing|decreasing] hue",
        "paint": "none|<color>|<url> [none|<color>]?|context-fill|context-stroke",
        "palette-identifier": "<dashed-ident>",
        "right": "<length>|auto",
        "scope-start": "<forgiving-selector-list>",
        "scope-end": "<forgiving-selector-list>",
        "forgiving-selector-list": "<complex-real-selector-list>",
        "forgiving-relative-selector-list": "<relative-real-selector-list>",
        "selector-list": "<complex-selector-list>",
        "complex-real-selector-list": "<complex-real-selector>#",
        "simple-selector-list": "<simple-selector>#",
        "relative-real-selector-list": "<relative-real-selector>#",
        "complex-selector-unit": "[<compound-selector>? <pseudo-compound-selector>*]!",
        "complex-real-selector": "<compound-selector> [<combinator>? <compound-selector>]*",
        "relative-real-selector": "<combinator>? <complex-real-selector>",
        "pseudo-compound-selector": "<pseudo-element-selector> <pseudo-class-selector>*",
        "simple-selector": "<type-selector>|<subclass-selector>",
        "legacy-pseudo-element-selector": "':' [before|after|first-line|first-letter]",
        "single-animation-composition": "replace|add|accumulate",
        "svg-length": "<percentage>|<length>|<number>",
        "svg-writing-mode": "lr-tb|rl-tb|tb-rl|lr|rl|tb",
        "top": "<length>|auto",
        "x": "<number>",
        "y": "<number>",
        "declaration": "<ident-token> : <declaration-value>? ['!' important]?",
        "declaration-list": "[<declaration>? ';']* <declaration>?",
        "url": "url( <string> <url-modifier>* )|<url-token>",
        "url-modifier": "<ident>|<function-token> <any-value> )",
        "number-zero-one": "<number [0,1]>",
        "number-one-or-greater": "<number [1,\u221E]>",
        "color()": "color( <colorspace-params> [/ [<alpha-value>|none]]? )",
        "colorspace-params": "[<predefined-rgb-params>|<xyz-params>]",
        "predefined-rgb-params": "<predefined-rgb> [<number>|<percentage>|none]{3}",
        "predefined-rgb": "srgb|srgb-linear|display-p3|a98-rgb|prophoto-rgb|rec2020",
        "xyz-params": "<xyz-space> [<number>|<percentage>|none]{3}",
        "xyz-space": "xyz|xyz-d50|xyz-d65",
        "oklab()": "oklab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )",
        "oklch()": "oklch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )",
        "offset-path": "<ray()>|<url>|<basic-shape>",
        "query-in-parens": "( <container-condition> )|( <size-feature> )|style( <style-query> )|<general-enclosed>",
        "size-feature": "<mf-plain>|<mf-boolean>|<mf-range>",
        "style-feature": "<declaration>",
        "style-query": "<style-condition>|<style-feature>",
        "style-condition": "not <style-in-parens>|<style-in-parens> [[and <style-in-parens>]*|[or <style-in-parens>]*]",
        "style-in-parens": "( <style-condition> )|( <style-feature> )|<general-enclosed>",
        "-non-standard-display": "-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box",
        "inset-area": "[[left|center|right|span-left|span-right|x-start|x-end|span-x-start|span-x-end|x-self-start|x-self-end|span-x-self-start|span-x-self-end|span-all]||[top|center|bottom|span-top|span-bottom|y-start|y-end|span-y-start|span-y-end|y-self-start|y-self-end|span-y-self-start|span-y-self-end|span-all]|[block-start|center|block-end|span-block-start|span-block-end|span-all]||[inline-start|center|inline-end|span-inline-start|span-inline-end|span-all]|[self-block-start|self-block-end|span-self-block-start|span-self-block-end|span-all]||[self-inline-start|self-inline-end|span-self-inline-start|span-self-inline-end|span-all]|[start|center|end|span-start|span-end|span-all]{1,2}|[self-start|center|self-end|span-self-start|span-self-end|span-all]{1,2}]",
        "position-area": "[[left|center|right|span-left|span-right|x-start|x-end|span-x-start|span-x-end|x-self-start|x-self-end|span-x-self-start|span-x-self-end|span-all]||[top|center|bottom|span-top|span-bottom|y-start|y-end|span-y-start|span-y-end|y-self-start|y-self-end|span-y-self-start|span-y-self-end|span-all]|[block-start|center|block-end|span-block-start|span-block-end|span-all]||[inline-start|center|inline-end|span-inline-start|span-inline-end|span-all]|[self-block-start|center|self-block-end|span-self-block-start|span-self-block-end|span-all]||[self-inline-start|center|self-inline-end|span-self-inline-start|span-self-inline-end|span-all]|[start|center|end|span-start|span-end|span-all]{1,2}|[self-start|center|self-end|span-self-start|span-self-end|span-all]{1,2}]",
        "anchor()": "anchor( <anchor-element>?&&<anchor-side> , <length-percentage>? )",
        "anchor-side": "inside|outside|top|left|right|bottom|start|end|self-start|self-end|<percentage>|center",
        "anchor-size()": "anchor-size( [<anchor-element>||<anchor-size>]? , <length-percentage>? )",
        "anchor-size": "width|height|block|inline|self-block|self-inline",
        "anchor-element": "<dashed-ident>",
        "try-size": "most-width|most-height|most-block-size|most-inline-size",
        "try-tactic": "flip-block||flip-inline||flip-start",
        "font-variant-css2": "normal|small-caps",
        "font-width-css3": "normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded",
        "system-family-name": "caption|icon|menu|message-box|small-caption|status-bar"
      },
      "properties": {
        "--*": "<declaration-value>",
        "-ms-accelerator": "false|true",
        "-ms-block-progression": "tb|rl|bt|lr",
        "-ms-content-zoom-chaining": "none|chained",
        "-ms-content-zooming": "none|zoom",
        "-ms-content-zoom-limit": "<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>",
        "-ms-content-zoom-limit-max": "<percentage>",
        "-ms-content-zoom-limit-min": "<percentage>",
        "-ms-content-zoom-snap": "<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>",
        "-ms-content-zoom-snap-points": "snapInterval( <percentage> , <percentage> )|snapList( <percentage># )",
        "-ms-content-zoom-snap-type": "none|proximity|mandatory",
        "-ms-filter": "<string>",
        "-ms-flow-from": "[none|<custom-ident>]#",
        "-ms-flow-into": "[none|<custom-ident>]#",
        "-ms-grid-columns": "none|<track-list>|<auto-track-list>",
        "-ms-grid-rows": "none|<track-list>|<auto-track-list>",
        "-ms-high-contrast-adjust": "auto|none",
        "-ms-hyphenate-limit-chars": "auto|<integer>{1,3}",
        "-ms-hyphenate-limit-lines": "no-limit|<integer>",
        "-ms-hyphenate-limit-zone": "<percentage>|<length>",
        "-ms-ime-align": "auto|after",
        "-ms-overflow-style": "auto|none|scrollbar|-ms-autohiding-scrollbar",
        "-ms-scrollbar-3dlight-color": "<color>",
        "-ms-scrollbar-arrow-color": "<color>",
        "-ms-scrollbar-base-color": "<color>",
        "-ms-scrollbar-darkshadow-color": "<color>",
        "-ms-scrollbar-face-color": "<color>",
        "-ms-scrollbar-highlight-color": "<color>",
        "-ms-scrollbar-shadow-color": "<color>",
        "-ms-scrollbar-track-color": "<color>",
        "-ms-scroll-chaining": "chained|none",
        "-ms-scroll-limit": "<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>",
        "-ms-scroll-limit-x-max": "auto|<length>",
        "-ms-scroll-limit-x-min": "<length>",
        "-ms-scroll-limit-y-max": "auto|<length>",
        "-ms-scroll-limit-y-min": "<length>",
        "-ms-scroll-rails": "none|railed",
        "-ms-scroll-snap-points-x": "snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )",
        "-ms-scroll-snap-points-y": "snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )",
        "-ms-scroll-snap-type": "none|proximity|mandatory",
        "-ms-scroll-snap-x": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>",
        "-ms-scroll-snap-y": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>",
        "-ms-scroll-translation": "none|vertical-to-horizontal",
        "-ms-text-autospace": "none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space",
        "-ms-touch-select": "grippers|none",
        "-ms-user-select": "none|element|text",
        "-ms-wrap-flow": "auto|both|start|end|maximum|clear",
        "-ms-wrap-margin": "<length>",
        "-ms-wrap-through": "wrap|none",
        "-moz-appearance": "none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized",
        "-moz-binding": "<url>|none",
        "-moz-border-bottom-colors": "<color>+|none",
        "-moz-border-left-colors": "<color>+|none",
        "-moz-border-right-colors": "<color>+|none",
        "-moz-border-top-colors": "<color>+|none",
        "-moz-context-properties": "none|[fill|fill-opacity|stroke|stroke-opacity]#",
        "-moz-float-edge": "border-box|content-box|margin-box|padding-box",
        "-moz-force-broken-image-icon": "0|1",
        "-moz-image-region": "<shape>|auto",
        "-moz-orient": "inline|block|horizontal|vertical",
        "-moz-outline-radius": "<outline-radius>{1,4} [/ <outline-radius>{1,4}]?",
        "-moz-outline-radius-bottomleft": "<outline-radius>",
        "-moz-outline-radius-bottomright": "<outline-radius>",
        "-moz-outline-radius-topleft": "<outline-radius>",
        "-moz-outline-radius-topright": "<outline-radius>",
        "-moz-stack-sizing": "ignore|stretch-to-fit",
        "-moz-text-blink": "none|blink",
        "-moz-user-focus": "ignore|normal|select-after|select-before|select-menu|select-same|select-all|none",
        "-moz-user-input": "auto|none|enabled|disabled",
        "-moz-user-modify": "read-only|read-write|write-only",
        "-moz-window-dragging": "drag|no-drag",
        "-moz-window-shadow": "default|menu|tooltip|sheet|none",
        "-webkit-appearance": "none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button",
        "-webkit-border-before": "<'border-width'>||<'border-style'>||<color>",
        "-webkit-border-before-color": "<color>",
        "-webkit-border-before-style": "<'border-style'>",
        "-webkit-border-before-width": "<'border-width'>",
        "-webkit-box-reflect": "[above|below|right|left]? <length>? <image>?",
        "-webkit-line-clamp": "none|<integer>",
        "-webkit-mask": "[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#",
        "-webkit-mask-attachment": "<attachment>#",
        "-webkit-mask-clip": "[<box>|border|padding|content|text]#",
        "-webkit-mask-composite": "<composite-style>#",
        "-webkit-mask-image": "<mask-reference>#",
        "-webkit-mask-origin": "[<box>|border|padding|content]#",
        "-webkit-mask-position": "<position>#",
        "-webkit-mask-position-x": "[<length-percentage>|left|center|right]#",
        "-webkit-mask-position-y": "[<length-percentage>|top|center|bottom]#",
        "-webkit-mask-repeat": "<repeat-style>#",
        "-webkit-mask-repeat-x": "repeat|no-repeat|space|round",
        "-webkit-mask-repeat-y": "repeat|no-repeat|space|round",
        "-webkit-mask-size": "<bg-size>#",
        "-webkit-overflow-scrolling": "auto|touch",
        "-webkit-tap-highlight-color": "<color>",
        "-webkit-text-fill-color": "<color>",
        "-webkit-text-stroke": "<length>||<color>",
        "-webkit-text-stroke-color": "<color>",
        "-webkit-text-stroke-width": "<length>",
        "-webkit-touch-callout": "default|none",
        "-webkit-user-modify": "read-only|read-write|read-write-plaintext-only",
        "accent-color": "auto|<color>",
        "align-content": "normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>",
        "align-items": "normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]",
        "align-self": "auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>",
        "align-tracks": "[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#",
        "all": "initial|inherit|unset|revert|revert-layer",
        "anchor-name": "none|<dashed-ident>#",
        "anchor-scope": "none|all|<dashed-ident>#",
        "animation": "<single-animation>#",
        "animation-composition": "<single-animation-composition>#",
        "animation-delay": "<time>#",
        "animation-direction": "<single-animation-direction>#",
        "animation-duration": "<time>#",
        "animation-fill-mode": "<single-animation-fill-mode>#",
        "animation-iteration-count": "<single-animation-iteration-count>#",
        "animation-name": "[none|<keyframes-name>]#",
        "animation-play-state": "<single-animation-play-state>#",
        "animation-range": "[<'animation-range-start'> <'animation-range-end'>?]#",
        "animation-range-end": "[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#",
        "animation-range-start": "[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#",
        "animation-timing-function": "<easing-function>#",
        "animation-timeline": "<single-animation-timeline>#",
        "appearance": "none|auto|textfield|menulist-button|<compat-auto>",
        "aspect-ratio": "auto|<ratio>",
        "azimuth": "<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards",
        "backdrop-filter": "none|<filter-function-list>",
        "backface-visibility": "visible|hidden",
        "background": "[<bg-layer> ,]* <final-bg-layer>",
        "background-attachment": "<attachment>#",
        "background-blend-mode": "<blend-mode>#",
        "background-clip": "<bg-clip>#",
        "background-color": "<color>",
        "background-image": "<bg-image>#",
        "background-origin": "<box>#",
        "background-position": "<bg-position>#",
        "background-position-x": "[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#",
        "background-position-y": "[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#",
        "background-repeat": "<repeat-style>#",
        "background-size": "<bg-size>#",
        "block-size": "<'width'>",
        "border": "<line-width>||<line-style>||<color>",
        "border-block": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-block-color": "<'border-top-color'>{1,2}",
        "border-block-style": "<'border-top-style'>",
        "border-block-width": "<'border-top-width'>",
        "border-block-end": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-block-end-color": "<'border-top-color'>",
        "border-block-end-style": "<'border-top-style'>",
        "border-block-end-width": "<'border-top-width'>",
        "border-block-start": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-block-start-color": "<'border-top-color'>",
        "border-block-start-style": "<'border-top-style'>",
        "border-block-start-width": "<'border-top-width'>",
        "border-bottom": "<line-width>||<line-style>||<color>",
        "border-bottom-color": "<'border-top-color'>",
        "border-bottom-left-radius": "<length-percentage>{1,2}",
        "border-bottom-right-radius": "<length-percentage>{1,2}",
        "border-bottom-style": "<line-style>",
        "border-bottom-width": "<line-width>",
        "border-collapse": "collapse|separate",
        "border-color": "<color>{1,4}",
        "border-end-end-radius": "<length-percentage>{1,2}",
        "border-end-start-radius": "<length-percentage>{1,2}",
        "border-image": "<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>",
        "border-image-outset": "[<length>|<number>]{1,4}",
        "border-image-repeat": "[stretch|repeat|round|space]{1,2}",
        "border-image-slice": "<number-percentage>{1,4}&&fill?",
        "border-image-source": "none|<image>",
        "border-image-width": "[<length-percentage>|<number>|auto]{1,4}",
        "border-inline": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-inline-end": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-inline-color": "<'border-top-color'>{1,2}",
        "border-inline-style": "<'border-top-style'>",
        "border-inline-width": "<'border-top-width'>",
        "border-inline-end-color": "<'border-top-color'>",
        "border-inline-end-style": "<'border-top-style'>",
        "border-inline-end-width": "<'border-top-width'>",
        "border-inline-start": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-inline-start-color": "<'border-top-color'>",
        "border-inline-start-style": "<'border-top-style'>",
        "border-inline-start-width": "<'border-top-width'>",
        "border-left": "<line-width>||<line-style>||<color>",
        "border-left-color": "<color>",
        "border-left-style": "<line-style>",
        "border-left-width": "<line-width>",
        "border-radius": "<length-percentage>{1,4} [/ <length-percentage>{1,4}]?",
        "border-right": "<line-width>||<line-style>||<color>",
        "border-right-color": "<color>",
        "border-right-style": "<line-style>",
        "border-right-width": "<line-width>",
        "border-spacing": "<length> <length>?",
        "border-start-end-radius": "<length-percentage>{1,2}",
        "border-start-start-radius": "<length-percentage>{1,2}",
        "border-style": "<line-style>{1,4}",
        "border-top": "<line-width>||<line-style>||<color>",
        "border-top-color": "<color>",
        "border-top-left-radius": "<length-percentage>{1,2}",
        "border-top-right-radius": "<length-percentage>{1,2}",
        "border-top-style": "<line-style>",
        "border-top-width": "<line-width>",
        "border-width": "<line-width>{1,4}",
        "bottom": "<length>|<percentage>|auto",
        "box-align": "start|center|end|baseline|stretch",
        "box-decoration-break": "slice|clone",
        "box-direction": "normal|reverse|inherit",
        "box-flex": "<number>",
        "box-flex-group": "<integer>",
        "box-lines": "single|multiple",
        "box-ordinal-group": "<integer>",
        "box-orient": "horizontal|vertical|inline-axis|block-axis|inherit",
        "box-pack": "start|center|end|justify",
        "box-shadow": "none|<shadow>#",
        "box-sizing": "content-box|border-box",
        "break-after": "auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region",
        "break-before": "auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region",
        "break-inside": "auto|avoid|avoid-page|avoid-column|avoid-region",
        "caption-side": "top|bottom|block-start|block-end|inline-start|inline-end",
        "caret": "<'caret-color'>||<'caret-shape'>",
        "caret-color": "auto|<color>",
        "caret-shape": "auto|bar|block|underscore",
        "clear": "none|left|right|both|inline-start|inline-end",
        "clip": "<shape>|auto",
        "clip-path": "<clip-source>|[<basic-shape>||<geometry-box>]|none",
        "clip-rule": "nonzero|evenodd",
        "color": "<color>",
        "color-interpolation-filters": "auto|sRGB|linearRGB",
        "color-scheme": "normal|[light|dark|<custom-ident>]+&&only?",
        "column-count": "<integer>|auto",
        "column-fill": "auto|balance|balance-all",
        "column-gap": "normal|<length-percentage>",
        "column-rule": "<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>",
        "column-rule-color": "<color>",
        "column-rule-style": "<'border-style'>",
        "column-rule-width": "<'border-width'>",
        "column-span": "none|all",
        "column-width": "<length>|auto",
        "columns": "<'column-width'>||<'column-count'>",
        "contain": "none|strict|content|[[size||inline-size]||layout||style||paint]",
        "contain-intrinsic-size": "[auto? [none|<length>]]{1,2}",
        "contain-intrinsic-block-size": "auto? [none|<length>]",
        "contain-intrinsic-height": "auto? [none|<length>]",
        "contain-intrinsic-inline-size": "auto? [none|<length>]",
        "contain-intrinsic-width": "auto? [none|<length>]",
        "container": "<'container-name'> [/ <'container-type'>]?",
        "container-name": "none|<custom-ident>+",
        "container-type": "normal||[size|inline-size]",
        "content": "normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>]+]?",
        "content-visibility": "visible|auto|hidden",
        "counter-increment": "[<counter-name> <integer>?]+|none",
        "counter-reset": "[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none",
        "counter-set": "[<counter-name> <integer>?]+|none",
        "cursor": "[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",
        "d": "none|path( <string> )",
        "cx": "<length>|<percentage>",
        "cy": "<length>|<percentage>",
        "direction": "ltr|rtl",
        "display": "[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>",
        "dominant-baseline": "auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge",
        "empty-cells": "show|hide",
        "field-sizing": "content|fixed",
        "fill": "<paint>",
        "fill-opacity": "<number-zero-one>",
        "fill-rule": "nonzero|evenodd",
        "filter": "none|<filter-function-list>|<-ms-filter-function-list>",
        "flex": "none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]",
        "flex-basis": "content|<'width'>",
        "flex-direction": "row|row-reverse|column|column-reverse",
        "flex-flow": "<'flex-direction'>||<'flex-wrap'>",
        "flex-grow": "<number>",
        "flex-shrink": "<number>",
        "flex-wrap": "nowrap|wrap|wrap-reverse",
        "float": "left|right|none|inline-start|inline-end",
        "font": "[[<'font-style'>||<font-variant-css2>||<'font-weight'>||<font-width-css3>]? <'font-size'> [/ <'line-height'>]? <'font-family'>#]|<system-family-name>|<-non-standard-font>",
        "font-family": "[<family-name>|<generic-family>]#",
        "font-feature-settings": "normal|<feature-tag-value>#",
        "font-kerning": "auto|normal|none",
        "font-language-override": "normal|<string>",
        "font-optical-sizing": "auto|none",
        "font-palette": "normal|light|dark|<palette-identifier>",
        "font-variation-settings": "normal|[<string> <number>]#",
        "font-size": "<absolute-size>|<relative-size>|<length-percentage>",
        "font-size-adjust": "none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]",
        "font-smooth": "auto|never|always|<absolute-size>|<length>",
        "font-stretch": "<font-stretch-absolute>",
        "font-style": "normal|italic|oblique <angle>?",
        "font-synthesis": "none|[weight||style||small-caps||position]",
        "font-synthesis-position": "auto|none",
        "font-synthesis-small-caps": "auto|none",
        "font-synthesis-style": "auto|none",
        "font-synthesis-weight": "auto|none",
        "font-variant": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]",
        "font-variant-alternates": "normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]",
        "font-variant-caps": "normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps",
        "font-variant-east-asian": "normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]",
        "font-variant-emoji": "normal|text|emoji|unicode",
        "font-variant-ligatures": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]",
        "font-variant-numeric": "normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]",
        "font-variant-position": "normal|sub|super",
        "font-weight": "<font-weight-absolute>|bolder|lighter",
        "forced-color-adjust": "auto|none",
        "gap": "<'row-gap'> <'column-gap'>?",
        "grid": "<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>",
        "grid-area": "<grid-line> [/ <grid-line>]{0,3}",
        "grid-auto-columns": "<track-size>+",
        "grid-auto-flow": "[row|column]||dense",
        "grid-auto-rows": "<track-size>+",
        "grid-column": "<grid-line> [/ <grid-line>]?",
        "grid-column-end": "<grid-line>",
        "grid-column-gap": "<length-percentage>",
        "grid-column-start": "<grid-line>",
        "grid-gap": "<'grid-row-gap'> <'grid-column-gap'>?",
        "grid-row": "<grid-line> [/ <grid-line>]?",
        "grid-row-end": "<grid-line>",
        "grid-row-gap": "<length-percentage>",
        "grid-row-start": "<grid-line>",
        "grid-template": "none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?",
        "grid-template-areas": "none|<string>+",
        "grid-template-columns": "none|<track-list>|<auto-track-list>|subgrid <line-name-list>?",
        "grid-template-rows": "none|<track-list>|<auto-track-list>|subgrid <line-name-list>?",
        "hanging-punctuation": "none|[first||[force-end|allow-end]||last]",
        "height": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|stretch|<-non-standard-size>",
        "hyphenate-character": "auto|<string>",
        "hyphenate-limit-chars": "[auto|<integer>]{1,3}",
        "hyphens": "none|manual|auto",
        "image-orientation": "from-image|<angle>|[<angle>? flip]",
        "image-rendering": "auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>",
        "image-resolution": "[from-image||<resolution>]&&snap?",
        "ime-mode": "auto|normal|active|inactive|disabled",
        "initial-letter": "normal|[<number> <integer>?]",
        "initial-letter-align": "[auto|alphabetic|hanging|ideographic]",
        "inline-size": "<'width'>",
        "input-security": "auto|none",
        "inset": "<'top'>{1,4}",
        "inset-area": "none|<inset-area>",
        "inset-block": "<'top'>{1,2}",
        "inset-block-end": "<'top'>",
        "inset-block-start": "<'top'>",
        "inset-inline": "<'top'>{1,2}",
        "inset-inline-end": "<'top'>",
        "inset-inline-start": "<'top'>",
        "isolation": "auto|isolate",
        "justify-content": "normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]",
        "justify-items": "normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]",
        "justify-self": "auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]",
        "justify-tracks": "[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",
        "left": "<length>|<percentage>|auto",
        "letter-spacing": "normal|<length-percentage>",
        "line-break": "auto|loose|normal|strict|anywhere",
        "line-clamp": "none|<integer>",
        "line-height": "normal|<number>|<length>|<percentage>",
        "line-height-step": "<length>",
        "list-style": "<'list-style-type'>||<'list-style-position'>||<'list-style-image'>",
        "list-style-image": "<image>|none",
        "list-style-position": "inside|outside",
        "list-style-type": "<counter-style>|<string>|none",
        "margin": "[<length>|<percentage>|auto]{1,4}",
        "margin-block": "<'margin-left'>{1,2}",
        "margin-block-end": "<'margin-left'>",
        "margin-block-start": "<'margin-left'>",
        "margin-bottom": "<length>|<percentage>|auto",
        "margin-inline": "<'margin-left'>{1,2}",
        "margin-inline-end": "<'margin-left'>",
        "margin-inline-start": "<'margin-left'>",
        "margin-left": "<length>|<percentage>|auto",
        "margin-right": "<length>|<percentage>|auto",
        "margin-top": "<length>|<percentage>|auto",
        "margin-trim": "none|in-flow|all",
        "marker": "none|<url>",
        "marker-end": "none|<url>",
        "marker-mid": "none|<url>",
        "marker-start": "none|<url>",
        "mask": "<mask-layer>#",
        "mask-border": "<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>",
        "mask-border-mode": "luminance|alpha",
        "mask-border-outset": "[<length>|<number>]{1,4}",
        "mask-border-repeat": "[stretch|repeat|round|space]{1,2}",
        "mask-border-slice": "<number-percentage>{1,4} fill?",
        "mask-border-source": "none|<image>",
        "mask-border-width": "[<length-percentage>|<number>|auto]{1,4}",
        "mask-clip": "[<geometry-box>|no-clip]#",
        "mask-composite": "<compositing-operator>#",
        "mask-image": "<mask-reference>#",
        "mask-mode": "<masking-mode>#",
        "mask-origin": "<geometry-box>#",
        "mask-position": "<position>#",
        "mask-repeat": "<repeat-style>#",
        "mask-size": "<bg-size>#",
        "mask-type": "luminance|alpha",
        "masonry-auto-flow": "[pack|next]||[definite-first|ordered]",
        "math-depth": "auto-add|add( <integer> )|<integer>",
        "math-shift": "normal|compact",
        "math-style": "normal|compact",
        "max-block-size": "<'max-width'>",
        "max-height": "none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|stretch|<-non-standard-size>",
        "max-inline-size": "<'max-width'>",
        "max-lines": "none|<integer>",
        "max-width": "none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|stretch|<-non-standard-size>",
        "min-block-size": "<'min-width'>",
        "min-height": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|stretch|<-non-standard-size>",
        "min-inline-size": "<'min-width'>",
        "min-width": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|stretch|<-non-standard-size>",
        "mix-blend-mode": "<blend-mode>|plus-lighter",
        "object-fit": "fill|contain|cover|none|scale-down",
        "object-position": "<position>",
        "offset": "[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?",
        "offset-anchor": "auto|<position>",
        "offset-distance": "<length-percentage>",
        "offset-path": "none|<offset-path>||<coord-box>",
        "offset-position": "normal|auto|<position>",
        "offset-rotate": "[auto|reverse]||<angle>",
        "opacity": "<alpha-value>",
        "order": "<integer>",
        "orphans": "<integer>",
        "outline": "[<'outline-width'>||<'outline-style'>||<'outline-color'>]",
        "outline-color": "auto|<color>",
        "outline-offset": "<length>",
        "outline-style": "auto|<'border-style'>",
        "outline-width": "<line-width>",
        "overflow": "[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>",
        "overflow-anchor": "auto|none",
        "overflow-block": "visible|hidden|clip|scroll|auto",
        "overflow-clip-box": "padding-box|content-box",
        "overflow-clip-margin": "<visual-box>||<length [0,\u221E]>",
        "overflow-inline": "visible|hidden|clip|scroll|auto",
        "overflow-wrap": "normal|break-word|anywhere",
        "overflow-x": "visible|hidden|clip|scroll|auto",
        "overflow-y": "visible|hidden|clip|scroll|auto",
        "overlay": "none|auto",
        "overscroll-behavior": "[contain|none|auto]{1,2}",
        "overscroll-behavior-block": "contain|none|auto",
        "overscroll-behavior-inline": "contain|none|auto",
        "overscroll-behavior-x": "contain|none|auto",
        "overscroll-behavior-y": "contain|none|auto",
        "padding": "[<length>|<percentage>]{1,4}",
        "padding-block": "<'padding-left'>{1,2}",
        "padding-block-end": "<'padding-left'>",
        "padding-block-start": "<'padding-left'>",
        "padding-bottom": "<length>|<percentage>",
        "padding-inline": "<'padding-left'>{1,2}",
        "padding-inline-end": "<'padding-left'>",
        "padding-inline-start": "<'padding-left'>",
        "padding-left": "<length>|<percentage>",
        "padding-right": "<length>|<percentage>",
        "padding-top": "<length>|<percentage>",
        "page": "auto|<custom-ident>",
        "page-break-after": "auto|always|avoid|left|right|recto|verso",
        "page-break-before": "auto|always|avoid|left|right|recto|verso",
        "page-break-inside": "auto|avoid",
        "paint-order": "normal|[fill||stroke||markers]",
        "perspective": "none|<length>",
        "perspective-origin": "<position>",
        "place-content": "<'align-content'> <'justify-content'>?",
        "place-items": "<'align-items'> <'justify-items'>?",
        "place-self": "<'align-self'> <'justify-self'>?",
        "pointer-events": "auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",
        "position": "static|relative|absolute|sticky|fixed|-webkit-sticky",
        "position-anchor": "<anchor-element>",
        "position-try": "<'position-try-order'>? <'position-try-fallbacks'>",
        "position-try-fallbacks": "none|[[<dashed-ident>||<try-tactic>]|<'position-area'>]#",
        "position-try-order": "normal|<try-size>",
        "position-visibility": "always|[anchors-valid||anchors-visible||no-overflow]",
        "print-color-adjust": "economy|exact",
        "quotes": "none|auto|[<string> <string>]+",
        "r": "<length>|<percentage>",
        "resize": "none|both|horizontal|vertical|block|inline",
        "right": "<length>|<percentage>|auto",
        "rotate": "none|<angle>|[x|y|z|<number>{3}]&&<angle>",
        "row-gap": "normal|<length-percentage>",
        "ruby-align": "start|center|space-between|space-around",
        "ruby-merge": "separate|collapse|auto",
        "ruby-position": "[alternate||[over|under]]|inter-character",
        "rx": "<length>|<percentage>",
        "ry": "<length>|<percentage>",
        "scale": "none|<number>{1,3}",
        "scrollbar-color": "auto|<color>{2}",
        "scrollbar-gutter": "auto|stable&&both-edges?",
        "scrollbar-width": "auto|thin|none",
        "scroll-behavior": "auto|smooth",
        "scroll-margin": "<length>{1,4}",
        "scroll-margin-block": "<length>{1,2}",
        "scroll-margin-block-start": "<length>",
        "scroll-margin-block-end": "<length>",
        "scroll-margin-bottom": "<length>",
        "scroll-margin-inline": "<length>{1,2}",
        "scroll-margin-inline-start": "<length>",
        "scroll-margin-inline-end": "<length>",
        "scroll-margin-left": "<length>",
        "scroll-margin-right": "<length>",
        "scroll-margin-top": "<length>",
        "scroll-padding": "[auto|<length-percentage>]{1,4}",
        "scroll-padding-block": "[auto|<length-percentage>]{1,2}",
        "scroll-padding-block-start": "auto|<length-percentage>",
        "scroll-padding-block-end": "auto|<length-percentage>",
        "scroll-padding-bottom": "auto|<length-percentage>",
        "scroll-padding-inline": "[auto|<length-percentage>]{1,2}",
        "scroll-padding-inline-start": "auto|<length-percentage>",
        "scroll-padding-inline-end": "auto|<length-percentage>",
        "scroll-padding-left": "auto|<length-percentage>",
        "scroll-padding-right": "auto|<length-percentage>",
        "scroll-padding-top": "auto|<length-percentage>",
        "scroll-snap-align": "[none|start|end|center]{1,2}",
        "scroll-snap-coordinate": "none|<position>#",
        "scroll-snap-destination": "<position>",
        "scroll-snap-points-x": "none|repeat( <length-percentage> )",
        "scroll-snap-points-y": "none|repeat( <length-percentage> )",
        "scroll-snap-stop": "normal|always",
        "scroll-snap-type": "none|[x|y|block|inline|both] [mandatory|proximity]?",
        "scroll-snap-type-x": "none|mandatory|proximity",
        "scroll-snap-type-y": "none|mandatory|proximity",
        "scroll-timeline": "[<'scroll-timeline-name'>||<'scroll-timeline-axis'>]#",
        "scroll-timeline-axis": "[block|inline|x|y]#",
        "scroll-timeline-name": "[none|<dashed-ident>]#",
        "shape-image-threshold": "<alpha-value>",
        "shape-margin": "<length-percentage>",
        "shape-outside": "none|[<shape-box>||<basic-shape>]|<image>",
        "shape-rendering": "auto|optimizeSpeed|crispEdges|geometricPrecision",
        "tab-size": "<integer>|<length>",
        "table-layout": "auto|fixed",
        "text-align": "start|end|left|right|center|justify|match-parent",
        "text-align-last": "auto|start|end|left|right|center|justify",
        "text-anchor": "start|middle|end",
        "text-combine-upright": "none|all|[digits <integer>?]",
        "text-decoration": "<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>",
        "text-decoration-color": "<color>",
        "text-decoration-line": "none|[underline||overline||line-through||blink]|spelling-error|grammar-error",
        "text-decoration-skip": "none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]",
        "text-decoration-skip-ink": "auto|all|none",
        "text-decoration-style": "solid|double|dotted|dashed|wavy",
        "text-decoration-thickness": "auto|from-font|<length>|<percentage>",
        "text-emphasis": "<'text-emphasis-style'>||<'text-emphasis-color'>",
        "text-emphasis-color": "<color>",
        "text-emphasis-position": "[over|under]&&[right|left]",
        "text-emphasis-style": "none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>",
        "text-indent": "<length-percentage>&&hanging?&&each-line?",
        "text-justify": "auto|inter-character|inter-word|none",
        "text-orientation": "mixed|upright|sideways",
        "text-overflow": "[clip|ellipsis|<string>]{1,2}",
        "text-rendering": "auto|optimizeSpeed|optimizeLegibility|geometricPrecision",
        "text-shadow": "none|<shadow-t>#",
        "text-size-adjust": "none|auto|<percentage>",
        "text-spacing-trim": "space-all|normal|space-first|trim-start|trim-both|trim-all|auto",
        "text-transform": "none|capitalize|uppercase|lowercase|full-width|full-size-kana",
        "text-underline-offset": "auto|<length>|<percentage>",
        "text-underline-position": "auto|from-font|[under||[left|right]]",
        "text-wrap": "wrap|nowrap|balance|stable|pretty",
        "text-wrap-mode": "auto|wrap|nowrap",
        "text-wrap-style": "auto|balance|stable|pretty",
        "timeline-scope": "none|<dashed-ident>#",
        "top": "<length>|<percentage>|auto",
        "touch-action": "auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",
        "transform": "none|<transform-list>",
        "transform-box": "content-box|border-box|fill-box|stroke-box|view-box",
        "transform-origin": "[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?",
        "transform-style": "flat|preserve-3d",
        "transition": "<single-transition>#",
        "transition-behavior": "<transition-behavior-value>#",
        "transition-delay": "<time>#",
        "transition-duration": "<time>#",
        "transition-property": "none|<single-transition-property>#",
        "transition-timing-function": "<easing-function>#",
        "translate": "none|<length-percentage> [<length-percentage> <length>?]?",
        "unicode-bidi": "normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext",
        "user-select": "auto|text|none|contain|all",
        "vector-effect": "none|non-scaling-stroke|non-scaling-size|non-rotation|fixed-position",
        "vertical-align": "baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>",
        "view-timeline": "[<'view-timeline-name'> <'view-timeline-axis'>?]#",
        "view-timeline-axis": "[block|inline|x|y]#",
        "view-timeline-inset": "[[auto|<length-percentage>]{1,2}]#",
        "view-timeline-name": "none|<dashed-ident>#",
        "view-transition-name": "none|<custom-ident>",
        "visibility": "visible|hidden|collapse",
        "white-space": "normal|pre|nowrap|pre-wrap|pre-line|break-spaces|[<'white-space-collapse'>||<'text-wrap'>||<'white-space-trim'>]",
        "white-space-collapse": "collapse|discard|preserve|preserve-breaks|preserve-spaces|break-spaces",
        "widows": "<integer>",
        "width": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|stretch|<-non-standard-size>",
        "will-change": "auto|<animateable-feature>#",
        "word-break": "normal|break-all|keep-all|break-word|auto-phrase",
        "word-spacing": "normal|<length>",
        "word-wrap": "normal|break-word",
        "writing-mode": "horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>",
        "x": "<length>|<percentage>",
        "y": "<length>|<percentage>",
        "z-index": "auto|<integer>",
        "zoom": "normal|reset|<number>|<percentage>",
        "-moz-background-clip": "padding|border",
        "-moz-border-radius-bottomleft": "<'border-bottom-left-radius'>",
        "-moz-border-radius-bottomright": "<'border-bottom-right-radius'>",
        "-moz-border-radius-topleft": "<'border-top-left-radius'>",
        "-moz-border-radius-topright": "<'border-bottom-right-radius'>",
        "-moz-control-character-visibility": "visible|hidden",
        "-moz-osx-font-smoothing": "auto|grayscale",
        "-moz-user-select": "none|text|all|-moz-none",
        "-ms-flex-align": "start|end|center|baseline|stretch",
        "-ms-flex-item-align": "auto|start|end|center|baseline|stretch",
        "-ms-flex-line-pack": "start|end|center|justify|distribute|stretch",
        "-ms-flex-negative": "<'flex-shrink'>",
        "-ms-flex-pack": "start|end|center|justify|distribute",
        "-ms-flex-order": "<integer>",
        "-ms-flex-positive": "<'flex-grow'>",
        "-ms-flex-preferred-size": "<'flex-basis'>",
        "-ms-interpolation-mode": "nearest-neighbor|bicubic",
        "-ms-grid-column-align": "start|end|center|stretch",
        "-ms-grid-row-align": "start|end|center|stretch",
        "-ms-hyphenate-limit-last": "none|always|column|page|spread",
        "-webkit-background-clip": "[<box>|border|padding|content|text]#",
        "-webkit-column-break-after": "always|auto|avoid",
        "-webkit-column-break-before": "always|auto|avoid",
        "-webkit-column-break-inside": "always|auto|avoid",
        "-webkit-font-smoothing": "auto|none|antialiased|subpixel-antialiased",
        "-webkit-mask-box-image": "[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?",
        "-webkit-print-color-adjust": "economy|exact",
        "-webkit-text-security": "none|circle|disc|square",
        "-webkit-user-drag": "none|element|auto",
        "-webkit-user-select": "auto|none|text|all",
        "alignment-baseline": "auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical",
        "baseline-shift": "baseline|sub|super|<svg-length>",
        "behavior": "<url>+",
        "cue": "<'cue-before'> <'cue-after'>?",
        "cue-after": "<url> <decibel>?|none",
        "cue-before": "<url> <decibel>?|none",
        "glyph-orientation-horizontal": "<angle>",
        "glyph-orientation-vertical": "<angle>",
        "kerning": "auto|<svg-length>",
        "pause": "<'pause-before'> <'pause-after'>?",
        "pause-after": "<time>|none|x-weak|weak|medium|strong|x-strong",
        "pause-before": "<time>|none|x-weak|weak|medium|strong|x-strong",
        "rest": "<'rest-before'> <'rest-after'>?",
        "rest-after": "<time>|none|x-weak|weak|medium|strong|x-strong",
        "rest-before": "<time>|none|x-weak|weak|medium|strong|x-strong",
        "src": "[<url> [format( <string># )]?|local( <family-name> )]#",
        "speak": "auto|never|always",
        "speak-as": "normal|spell-out||digits||[literal-punctuation|no-punctuation]",
        "stroke": "<paint>",
        "stroke-dasharray": "none|[<svg-length>+]#",
        "stroke-dashoffset": "<svg-length>",
        "stroke-linecap": "butt|round|square",
        "stroke-linejoin": "miter|round|bevel",
        "stroke-miterlimit": "<number-one-or-greater>",
        "stroke-opacity": "<number-zero-one>",
        "stroke-width": "<svg-length>",
        "unicode-range": "<urange>#",
        "voice-balance": "<number>|left|center|right|leftwards|rightwards",
        "voice-duration": "auto|<time>",
        "voice-family": "[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve",
        "voice-pitch": "<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]",
        "voice-range": "<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]",
        "voice-rate": "[normal|x-slow|slow|medium|fast|x-fast]||<percentage>",
        "voice-stress": "normal|strong|moderate|none|reduced",
        "voice-volume": "silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]",
        "white-space-trim": "none|discard-before||discard-after||discard-inner",
        "position-area": "none|<position-area>"
      },
      "atrules": {
        "charset": {
          "prelude": "<string>",
          "descriptors": null
        },
        "counter-style": {
          "prelude": "<counter-style-name>",
          "descriptors": {
            "additive-symbols": "[<integer>&&<symbol>]#",
            "fallback": "<counter-style-name>",
            "negative": "<symbol> <symbol>?",
            "pad": "<integer>&&<symbol>",
            "prefix": "<symbol>",
            "range": "[[<integer>|infinite]{2}]#|auto",
            "speak-as": "auto|bullets|numbers|words|spell-out|<counter-style-name>",
            "suffix": "<symbol>",
            "symbols": "<symbol>+",
            "system": "cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"
          }
        },
        "document": {
          "prelude": "[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",
          "descriptors": null
        },
        "font-palette-values": {
          "prelude": "<dashed-ident>",
          "descriptors": {
            "base-palette": "light|dark|<integer [0,\u221E]>",
            "font-family": "<family-name>#",
            "override-colors": "[<integer [0,\u221E]> <absolute-color-base>]#"
          }
        },
        "font-face": {
          "prelude": null,
          "descriptors": {
            "ascent-override": "normal|<percentage>",
            "descent-override": "normal|<percentage>",
            "font-display": "[auto|block|swap|fallback|optional]",
            "font-family": "<family-name>",
            "font-feature-settings": "normal|<feature-tag-value>#",
            "font-variation-settings": "normal|[<string> <number>]#",
            "font-stretch": "<font-stretch-absolute>{1,2}",
            "font-style": "normal|italic|oblique <angle>{0,2}",
            "font-weight": "<font-weight-absolute>{1,2}",
            "line-gap-override": "normal|<percentage>",
            "size-adjust": "<percentage>",
            "src": "[<url> [format( <string># )]?|local( <family-name> )]#",
            "unicode-range": "<urange>#"
          }
        },
        "font-feature-values": {
          "prelude": "<family-name>#",
          "descriptors": null
        },
        "import": {
          "prelude": "[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?",
          "descriptors": null
        },
        "keyframes": {
          "prelude": "<keyframes-name>",
          "descriptors": null
        },
        "layer": {
          "prelude": "[<layer-name>#|<layer-name>?]",
          "descriptors": null
        },
        "media": {
          "prelude": "<media-query-list>",
          "descriptors": null
        },
        "namespace": {
          "prelude": "<namespace-prefix>? [<string>|<url>]",
          "descriptors": null
        },
        "page": {
          "prelude": "<page-selector-list>",
          "descriptors": {
            "bleed": "auto|<length>",
            "marks": "none|[crop||cross]",
            "page-orientation": "upright|rotate-left|rotate-right",
            "size": "<length>{1,2}|auto|[<page-size>||[portrait|landscape]]"
          }
        },
        "position-try": {
          "prelude": "<dashed-ident>",
          "descriptors": {
            "top": "<'top'>",
            "left": "<'left'>",
            "bottom": "<'bottom'>",
            "right": "<'right'>",
            "inset-block-start": "<'inset-block-start'>",
            "inset-block-end": "<'inset-block-end'>",
            "inset-inline-start": "<'inset-inline-start'>",
            "inset-inline-end": "<'inset-inline-end'>",
            "inset-block": "<'inset-block'>",
            "inset-inline": "<'inset-inline'>",
            "inset": "<'inset'>",
            "margin-top": "<'margin-top'>",
            "margin-left": "<'margin-left'>",
            "margin-bottom": "<'margin-bottom'>",
            "margin-right": "<'margin-right'>",
            "margin-block-start": "<'margin-block-start'>",
            "margin-block-end": "<'margin-block-end'>",
            "margin-inline-start": "<'margin-inline-start'>",
            "margin-inline-end": "<'margin-inline-end'>",
            "margin": "<'margin'>",
            "margin-block": "<'margin-block'>",
            "margin-inline": "<'margin-inline'>",
            "width": "<'width'>",
            "height": "<'height'>",
            "min-width": "<'min-width'>",
            "min-height": "<'min-height'>",
            "max-width": "<'max-width'>",
            "max-height": "<'max-height'>",
            "block-size": "<'block-size'>",
            "inline-size": "<'inline-size'>",
            "min-block-size": "<'min-block-size'>",
            "min-inline-size": "<'min-inline-size'>",
            "max-block-size": "<'max-block-size'>",
            "max-inline-size": "<'max-inline-size'>",
            "align-self": "<'align-self'>|anchor-center",
            "justify-self": "<'justify-self'>|anchor-center"
          }
        },
        "property": {
          "prelude": "<custom-property-name>",
          "descriptors": {
            "syntax": "<string>",
            "inherits": "true|false",
            "initial-value": "<declaration-value>?"
          }
        },
        "scope": {
          "prelude": "[( <scope-start> )]? [to ( <scope-end> )]?",
          "descriptors": null
        },
        "starting-style": {
          "prelude": null,
          "descriptors": null
        },
        "supports": {
          "prelude": "<supports-condition>",
          "descriptors": null
        },
        "container": {
          "prelude": "[<container-name>]? <container-condition>",
          "descriptors": null
        },
        "nest": {
          "prelude": "<complex-selector-list>",
          "descriptors": null
        }
      }
    };
  }
});

// node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs
var require_AnPlusB = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var charCodeDefinitions = require_char_code_definitions();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var N = 110;
    var DISALLOW_SIGN = true;
    var ALLOW_SIGN = false;
    function checkInteger(offset, disallowSign) {
      let pos = this.tokenStart + offset;
      const code = this.charCodeAt(pos);
      if (code === PLUSSIGN || code === HYPHENMINUS) {
        if (disallowSign) {
          this.error("Number sign is not allowed");
        }
        pos++;
      }
      for (; pos < this.tokenEnd; pos++) {
        if (!charCodeDefinitions.isDigit(this.charCodeAt(pos))) {
          this.error("Integer is expected", pos);
        }
      }
    }
    function checkTokenIsInteger(disallowSign) {
      return checkInteger.call(this, 0, disallowSign);
    }
    function expectCharCode(offset, code) {
      if (!this.cmpChar(this.tokenStart + offset, code)) {
        let msg = "";
        switch (code) {
          case N:
            msg = "N is expected";
            break;
          case HYPHENMINUS:
            msg = "HyphenMinus is expected";
            break;
        }
        this.error(msg, this.tokenStart + offset);
      }
    }
    function consumeB() {
      let offset = 0;
      let sign = 0;
      let type = this.tokenType;
      while (type === types.WhiteSpace || type === types.Comment) {
        type = this.lookupType(++offset);
      }
      if (type !== types.Number) {
        if (this.isDelim(PLUSSIGN, offset) || this.isDelim(HYPHENMINUS, offset)) {
          sign = this.isDelim(PLUSSIGN, offset) ? PLUSSIGN : HYPHENMINUS;
          do {
            type = this.lookupType(++offset);
          } while (type === types.WhiteSpace || type === types.Comment);
          if (type !== types.Number) {
            this.skip(offset);
            checkTokenIsInteger.call(this, DISALLOW_SIGN);
          }
        } else {
          return null;
        }
      }
      if (offset > 0) {
        this.skip(offset);
      }
      if (sign === 0) {
        type = this.charCodeAt(this.tokenStart);
        if (type !== PLUSSIGN && type !== HYPHENMINUS) {
          this.error("Number sign is expected");
        }
      }
      checkTokenIsInteger.call(this, sign !== 0);
      return sign === HYPHENMINUS ? "-" + this.consume(types.Number) : this.consume(types.Number);
    }
    var name = "AnPlusB";
    var structure = {
      a: [String, null],
      b: [String, null]
    };
    function parse() {
      const start = this.tokenStart;
      let a = null;
      let b = null;
      if (this.tokenType === types.Number) {
        checkTokenIsInteger.call(this, ALLOW_SIGN);
        b = this.consume(types.Number);
      } else if (this.tokenType === types.Ident && this.cmpChar(this.tokenStart, HYPHENMINUS)) {
        a = "-1";
        expectCharCode.call(this, 1, N);
        switch (this.tokenEnd - this.tokenStart) {
          // -n
          // -n <signed-integer>
          // -n ['+' | '-'] <signless-integer>
          case 2:
            this.next();
            b = consumeB.call(this);
            break;
          // -n- <signless-integer>
          case 3:
            expectCharCode.call(this, 2, HYPHENMINUS);
            this.next();
            this.skipSC();
            checkTokenIsInteger.call(this, DISALLOW_SIGN);
            b = "-" + this.consume(types.Number);
            break;
          // <dashndashdigit-ident>
          default:
            expectCharCode.call(this, 2, HYPHENMINUS);
            checkInteger.call(this, 3, DISALLOW_SIGN);
            this.next();
            b = this.substrToCursor(start + 2);
        }
      } else if (this.tokenType === types.Ident || this.isDelim(PLUSSIGN) && this.lookupType(1) === types.Ident) {
        let sign = 0;
        a = "1";
        if (this.isDelim(PLUSSIGN)) {
          sign = 1;
          this.next();
        }
        expectCharCode.call(this, 0, N);
        switch (this.tokenEnd - this.tokenStart) {
          // '+'? n
          // '+'? n <signed-integer>
          // '+'? n ['+' | '-'] <signless-integer>
          case 1:
            this.next();
            b = consumeB.call(this);
            break;
          // '+'? n- <signless-integer>
          case 2:
            expectCharCode.call(this, 1, HYPHENMINUS);
            this.next();
            this.skipSC();
            checkTokenIsInteger.call(this, DISALLOW_SIGN);
            b = "-" + this.consume(types.Number);
            break;
          // '+'? <ndashdigit-ident>
          default:
            expectCharCode.call(this, 1, HYPHENMINUS);
            checkInteger.call(this, 2, DISALLOW_SIGN);
            this.next();
            b = this.substrToCursor(start + sign + 1);
        }
      } else if (this.tokenType === types.Dimension) {
        const code = this.charCodeAt(this.tokenStart);
        const sign = code === PLUSSIGN || code === HYPHENMINUS;
        let i = this.tokenStart + sign;
        for (; i < this.tokenEnd; i++) {
          if (!charCodeDefinitions.isDigit(this.charCodeAt(i))) {
            break;
          }
        }
        if (i === this.tokenStart + sign) {
          this.error("Integer is expected", this.tokenStart + sign);
        }
        expectCharCode.call(this, i - this.tokenStart, N);
        a = this.substring(start, i);
        if (i + 1 === this.tokenEnd) {
          this.next();
          b = consumeB.call(this);
        } else {
          expectCharCode.call(this, i - this.tokenStart + 1, HYPHENMINUS);
          if (i + 2 === this.tokenEnd) {
            this.next();
            this.skipSC();
            checkTokenIsInteger.call(this, DISALLOW_SIGN);
            b = "-" + this.consume(types.Number);
          } else {
            checkInteger.call(this, i - this.tokenStart + 2, DISALLOW_SIGN);
            this.next();
            b = this.substrToCursor(i + 1);
          }
        }
      } else {
        this.error();
      }
      if (a !== null && a.charCodeAt(0) === PLUSSIGN) {
        a = a.substr(1);
      }
      if (b !== null && b.charCodeAt(0) === PLUSSIGN) {
        b = b.substr(1);
      }
      return {
        type: "AnPlusB",
        loc: this.getLocation(start, this.tokenStart),
        a,
        b
      };
    }
    function generate(node) {
      if (node.a) {
        const a = node.a === "+1" && "n" || node.a === "1" && "n" || node.a === "-1" && "-n" || node.a + "n";
        if (node.b) {
          const b = node.b[0] === "-" || node.b[0] === "+" ? node.b : "+" + node.b;
          this.tokenize(a + b);
        } else {
          this.tokenize(a);
        }
      } else {
        this.tokenize(node.b);
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Atrule.cjs
var require_Atrule = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Atrule.cjs"(exports) {
    "use strict";
    var types = require_types2();
    function consumeRaw() {
      return this.Raw(this.consumeUntilLeftCurlyBracketOrSemicolon, true);
    }
    function isDeclarationBlockAtrule() {
      for (let offset = 1, type; type = this.lookupType(offset); offset++) {
        if (type === types.RightCurlyBracket) {
          return true;
        }
        if (type === types.LeftCurlyBracket || type === types.AtKeyword) {
          return false;
        }
      }
      return false;
    }
    var name = "Atrule";
    var walkContext = "atrule";
    var structure = {
      name: String,
      prelude: ["AtrulePrelude", "Raw", null],
      block: ["Block", null]
    };
    function parse(isDeclaration = false) {
      const start = this.tokenStart;
      let name2;
      let nameLowerCase;
      let prelude = null;
      let block = null;
      this.eat(types.AtKeyword);
      name2 = this.substrToCursor(start + 1);
      nameLowerCase = name2.toLowerCase();
      this.skipSC();
      if (this.eof === false && this.tokenType !== types.LeftCurlyBracket && this.tokenType !== types.Semicolon) {
        if (this.parseAtrulePrelude) {
          prelude = this.parseWithFallback(this.AtrulePrelude.bind(this, name2, isDeclaration), consumeRaw);
        } else {
          prelude = consumeRaw.call(this, this.tokenIndex);
        }
        this.skipSC();
      }
      switch (this.tokenType) {
        case types.Semicolon:
          this.next();
          break;
        case types.LeftCurlyBracket:
          this.eat(types.LeftCurlyBracket);
          if (hasOwnProperty.call(this.atrule, nameLowerCase) && typeof this.atrule[nameLowerCase].block === "function") {
            block = this.atrule[nameLowerCase].block.call(this, isDeclaration);
          } else {
            block = this.Block(isDeclarationBlockAtrule.call(this));
          }
          if (!this.eof) {
            this.eat(types.RightCurlyBracket);
          }
          break;
      }
      return {
        type: "Atrule",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        prelude,
        block
      };
    }
    function generate(node) {
      this.token(types.AtKeyword, "@" + node.name);
      if (node.prelude !== null) {
        this.node(node.prelude);
      }
      if (node.block) {
        this.token(types.LeftCurlyBracket, "{");
        this.node(node.block);
        this.token(types.RightCurlyBracket, "}");
      } else {
        this.token(types.Semicolon, ";");
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs
var require_AtrulePrelude = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "AtrulePrelude";
    var walkContext = "atrulePrelude";
    var structure = {
      children: [[]]
    };
    function parse(name2) {
      let children = null;
      if (name2 !== null) {
        name2 = name2.toLowerCase();
      }
      this.skipSC();
      if (hasOwnProperty.call(this.atrule, name2) && typeof this.atrule[name2].prelude === "function") {
        children = this.atrule[name2].prelude.call(this);
      } else {
        children = this.readSequence(this.scope.AtrulePrelude);
      }
      this.skipSC();
      if (this.eof !== true && this.tokenType !== types.LeftCurlyBracket && this.tokenType !== types.Semicolon) {
        this.error("Semicolon or block is expected");
      }
      return {
        type: "AtrulePrelude",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs
var require_AttributeSelector = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var DOLLARSIGN = 36;
    var ASTERISK = 42;
    var EQUALSSIGN = 61;
    var CIRCUMFLEXACCENT = 94;
    var VERTICALLINE = 124;
    var TILDE = 126;
    function getAttributeName() {
      if (this.eof) {
        this.error("Unexpected end of input");
      }
      const start = this.tokenStart;
      let expectIdent = false;
      if (this.isDelim(ASTERISK)) {
        expectIdent = true;
        this.next();
      } else if (!this.isDelim(VERTICALLINE)) {
        this.eat(types.Ident);
      }
      if (this.isDelim(VERTICALLINE)) {
        if (this.charCodeAt(this.tokenStart + 1) !== EQUALSSIGN) {
          this.next();
          this.eat(types.Ident);
        } else if (expectIdent) {
          this.error("Identifier is expected", this.tokenEnd);
        }
      } else if (expectIdent) {
        this.error("Vertical line is expected");
      }
      return {
        type: "Identifier",
        loc: this.getLocation(start, this.tokenStart),
        name: this.substrToCursor(start)
      };
    }
    function getOperator() {
      const start = this.tokenStart;
      const code = this.charCodeAt(start);
      if (code !== EQUALSSIGN && // =
      code !== TILDE && // ~=
      code !== CIRCUMFLEXACCENT && // ^=
      code !== DOLLARSIGN && // $=
      code !== ASTERISK && // *=
      code !== VERTICALLINE) {
        this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected");
      }
      this.next();
      if (code !== EQUALSSIGN) {
        if (!this.isDelim(EQUALSSIGN)) {
          this.error("Equal sign is expected");
        }
        this.next();
      }
      return this.substrToCursor(start);
    }
    var name = "AttributeSelector";
    var structure = {
      name: "Identifier",
      matcher: [String, null],
      value: ["String", "Identifier", null],
      flags: [String, null]
    };
    function parse() {
      const start = this.tokenStart;
      let name2;
      let matcher = null;
      let value = null;
      let flags = null;
      this.eat(types.LeftSquareBracket);
      this.skipSC();
      name2 = getAttributeName.call(this);
      this.skipSC();
      if (this.tokenType !== types.RightSquareBracket) {
        if (this.tokenType !== types.Ident) {
          matcher = getOperator.call(this);
          this.skipSC();
          value = this.tokenType === types.String ? this.String() : this.Identifier();
          this.skipSC();
        }
        if (this.tokenType === types.Ident) {
          flags = this.consume(types.Ident);
          this.skipSC();
        }
      }
      this.eat(types.RightSquareBracket);
      return {
        type: "AttributeSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        matcher,
        value,
        flags
      };
    }
    function generate(node) {
      this.token(types.Delim, "[");
      this.node(node.name);
      if (node.matcher !== null) {
        this.tokenize(node.matcher);
        this.node(node.value);
      }
      if (node.flags !== null) {
        this.token(types.Ident, node.flags);
      }
      this.token(types.Delim, "]");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Block.cjs
var require_Block = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Block.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var AMPERSAND = 38;
    function consumeRaw() {
      return this.Raw(null, true);
    }
    function consumeRule() {
      return this.parseWithFallback(this.Rule, consumeRaw);
    }
    function consumeRawDeclaration() {
      return this.Raw(this.consumeUntilSemicolonIncluded, true);
    }
    function consumeDeclaration() {
      if (this.tokenType === types.Semicolon) {
        return consumeRawDeclaration.call(this, this.tokenIndex);
      }
      const node = this.parseWithFallback(this.Declaration, consumeRawDeclaration);
      if (this.tokenType === types.Semicolon) {
        this.next();
      }
      return node;
    }
    var name = "Block";
    var walkContext = "block";
    var structure = {
      children: [[
        "Atrule",
        "Rule",
        "Declaration"
      ]]
    };
    function parse(isStyleBlock) {
      const consumer = isStyleBlock ? consumeDeclaration : consumeRule;
      const start = this.tokenStart;
      let children = this.createList();
      scan:
        while (!this.eof) {
          switch (this.tokenType) {
            case types.RightCurlyBracket:
              break scan;
            case types.WhiteSpace:
            case types.Comment:
              this.next();
              break;
            case types.AtKeyword:
              children.push(this.parseWithFallback(this.Atrule.bind(this, isStyleBlock), consumeRaw));
              break;
            default:
              if (isStyleBlock && this.isDelim(AMPERSAND)) {
                children.push(consumeRule.call(this));
              } else {
                children.push(consumer.call(this));
              }
          }
        }
      return {
        type: "Block",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.children(node, (prev) => {
        if (prev.type === "Declaration") {
          this.token(types.Semicolon, ";");
        }
      });
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/syntax/node/Brackets.cjs
var require_Brackets = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Brackets.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "Brackets";
    var structure = {
      children: [[]]
    };
    function parse(readSequence, recognizer) {
      const start = this.tokenStart;
      let children = null;
      this.eat(types.LeftSquareBracket);
      children = readSequence.call(this, recognizer);
      if (!this.eof) {
        this.eat(types.RightSquareBracket);
      }
      return {
        type: "Brackets",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.token(types.Delim, "[");
      this.children(node);
      this.token(types.Delim, "]");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/CDC.cjs
var require_CDC = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/CDC.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "CDC";
    var structure = [];
    function parse() {
      const start = this.tokenStart;
      this.eat(types.CDC);
      return {
        type: "CDC",
        loc: this.getLocation(start, this.tokenStart)
      };
    }
    function generate() {
      this.token(types.CDC, "-->");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/CDO.cjs
var require_CDO = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/CDO.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "CDO";
    var structure = [];
    function parse() {
      const start = this.tokenStart;
      this.eat(types.CDO);
      return {
        type: "CDO",
        loc: this.getLocation(start, this.tokenStart)
      };
    }
    function generate() {
      this.token(types.CDO, "<!--");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs
var require_ClassSelector = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var FULLSTOP = 46;
    var name = "ClassSelector";
    var structure = {
      name: String
    };
    function parse() {
      this.eatDelim(FULLSTOP);
      return {
        type: "ClassSelector",
        loc: this.getLocation(this.tokenStart - 1, this.tokenEnd),
        name: this.consume(types.Ident)
      };
    }
    function generate(node) {
      this.token(types.Delim, ".");
      this.token(types.Ident, node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Combinator.cjs
var require_Combinator = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Combinator.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var PLUSSIGN = 43;
    var SOLIDUS = 47;
    var GREATERTHANSIGN = 62;
    var TILDE = 126;
    var name = "Combinator";
    var structure = {
      name: String
    };
    function parse() {
      const start = this.tokenStart;
      let name2;
      switch (this.tokenType) {
        case types.WhiteSpace:
          name2 = " ";
          break;
        case types.Delim:
          switch (this.charCodeAt(this.tokenStart)) {
            case GREATERTHANSIGN:
            case PLUSSIGN:
            case TILDE:
              this.next();
              break;
            case SOLIDUS:
              this.next();
              this.eatIdent("deep");
              this.eatDelim(SOLIDUS);
              break;
            default:
              this.error("Combinator is expected");
          }
          name2 = this.substrToCursor(start);
          break;
      }
      return {
        type: "Combinator",
        loc: this.getLocation(start, this.tokenStart),
        name: name2
      };
    }
    function generate(node) {
      this.tokenize(node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Comment.cjs
var require_Comment = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Comment.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var ASTERISK = 42;
    var SOLIDUS = 47;
    var name = "Comment";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      let end = this.tokenEnd;
      this.eat(types.Comment);
      if (end - start + 2 >= 2 && this.charCodeAt(end - 2) === ASTERISK && this.charCodeAt(end - 1) === SOLIDUS) {
        end -= 2;
      }
      return {
        type: "Comment",
        loc: this.getLocation(start, this.tokenStart),
        value: this.substring(start + 2, end)
      };
    }
    function generate(node) {
      this.token(types.Comment, "/*" + node.value + "*/");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Condition.cjs
var require_Condition = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Condition.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var likelyFeatureToken = /* @__PURE__ */ new Set([types.Colon, types.RightParenthesis, types.EOF]);
    var name = "Condition";
    var structure = {
      kind: String,
      children: [[
        "Identifier",
        "Feature",
        "FeatureFunction",
        "FeatureRange",
        "SupportsDeclaration"
      ]]
    };
    function featureOrRange(kind) {
      if (this.lookupTypeNonSC(1) === types.Ident && likelyFeatureToken.has(this.lookupTypeNonSC(2))) {
        return this.Feature(kind);
      }
      return this.FeatureRange(kind);
    }
    var parentheses = {
      media: featureOrRange,
      container: featureOrRange,
      supports() {
        return this.SupportsDeclaration();
      }
    };
    function parse(kind = "media") {
      const children = this.createList();
      scan: while (!this.eof) {
        switch (this.tokenType) {
          case types.Comment:
          case types.WhiteSpace:
            this.next();
            continue;
          case types.Ident:
            children.push(this.Identifier());
            break;
          case types.LeftParenthesis: {
            let term = this.parseWithFallback(
              () => parentheses[kind].call(this, kind),
              () => null
            );
            if (!term) {
              term = this.parseWithFallback(
                () => {
                  this.eat(types.LeftParenthesis);
                  const res = this.Condition(kind);
                  this.eat(types.RightParenthesis);
                  return res;
                },
                () => {
                  return this.GeneralEnclosed(kind);
                }
              );
            }
            children.push(term);
            break;
          }
          case types.Function: {
            let term = this.parseWithFallback(
              () => this.FeatureFunction(kind),
              () => null
            );
            if (!term) {
              term = this.GeneralEnclosed(kind);
            }
            children.push(term);
            break;
          }
          default:
            break scan;
        }
      }
      if (children.isEmpty) {
        this.error("Condition is expected");
      }
      return {
        type: "Condition",
        loc: this.getLocationFromList(children),
        kind,
        children
      };
    }
    function generate(node) {
      node.children.forEach((child) => {
        if (child.type === "Condition") {
          this.token(types.LeftParenthesis, "(");
          this.node(child);
          this.token(types.RightParenthesis, ")");
        } else {
          this.node(child);
        }
      });
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Declaration.cjs
var require_Declaration = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Declaration.cjs"(exports) {
    "use strict";
    var names = require_names2();
    var types = require_types2();
    var EXCLAMATIONMARK = 33;
    var NUMBERSIGN = 35;
    var DOLLARSIGN = 36;
    var AMPERSAND = 38;
    var ASTERISK = 42;
    var PLUSSIGN = 43;
    var SOLIDUS = 47;
    function consumeValueRaw() {
      return this.Raw(this.consumeUntilExclamationMarkOrSemicolon, true);
    }
    function consumeCustomPropertyRaw() {
      return this.Raw(this.consumeUntilExclamationMarkOrSemicolon, false);
    }
    function consumeValue() {
      const startValueToken = this.tokenIndex;
      const value = this.Value();
      if (value.type !== "Raw" && this.eof === false && this.tokenType !== types.Semicolon && this.isDelim(EXCLAMATIONMARK) === false && this.isBalanceEdge(startValueToken) === false) {
        this.error();
      }
      return value;
    }
    var name = "Declaration";
    var walkContext = "declaration";
    var structure = {
      important: [Boolean, String],
      property: String,
      value: ["Value", "Raw"]
    };
    function parse() {
      const start = this.tokenStart;
      const startToken = this.tokenIndex;
      const property = readProperty.call(this);
      const customProperty = names.isCustomProperty(property);
      const parseValue = customProperty ? this.parseCustomProperty : this.parseValue;
      const consumeRaw = customProperty ? consumeCustomPropertyRaw : consumeValueRaw;
      let important = false;
      let value;
      this.skipSC();
      this.eat(types.Colon);
      const valueStart = this.tokenIndex;
      if (!customProperty) {
        this.skipSC();
      }
      if (parseValue) {
        value = this.parseWithFallback(consumeValue, consumeRaw);
      } else {
        value = consumeRaw.call(this, this.tokenIndex);
      }
      if (customProperty && value.type === "Value" && value.children.isEmpty) {
        for (let offset = valueStart - this.tokenIndex; offset <= 0; offset++) {
          if (this.lookupType(offset) === types.WhiteSpace) {
            value.children.appendData({
              type: "WhiteSpace",
              loc: null,
              value: " "
            });
            break;
          }
        }
      }
      if (this.isDelim(EXCLAMATIONMARK)) {
        important = getImportant.call(this);
        this.skipSC();
      }
      if (this.eof === false && this.tokenType !== types.Semicolon && this.isBalanceEdge(startToken) === false) {
        this.error();
      }
      return {
        type: "Declaration",
        loc: this.getLocation(start, this.tokenStart),
        important,
        property,
        value
      };
    }
    function generate(node) {
      this.token(types.Ident, node.property);
      this.token(types.Colon, ":");
      this.node(node.value);
      if (node.important) {
        this.token(types.Delim, "!");
        this.token(types.Ident, node.important === true ? "important" : node.important);
      }
    }
    function readProperty() {
      const start = this.tokenStart;
      if (this.tokenType === types.Delim) {
        switch (this.charCodeAt(this.tokenStart)) {
          case ASTERISK:
          case DOLLARSIGN:
          case PLUSSIGN:
          case NUMBERSIGN:
          case AMPERSAND:
            this.next();
            break;
          // TODO: not sure we should support this hack
          case SOLIDUS:
            this.next();
            if (this.isDelim(SOLIDUS)) {
              this.next();
            }
            break;
        }
      }
      if (this.tokenType === types.Hash) {
        this.eat(types.Hash);
      } else {
        this.eat(types.Ident);
      }
      return this.substrToCursor(start);
    }
    function getImportant() {
      this.eat(types.Delim);
      this.skipSC();
      const important = this.consume(types.Ident);
      return important === "important" ? true : important;
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs
var require_DeclarationList = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var AMPERSAND = 38;
    function consumeRaw() {
      return this.Raw(this.consumeUntilSemicolonIncluded, true);
    }
    var name = "DeclarationList";
    var structure = {
      children: [[
        "Declaration",
        "Atrule",
        "Rule"
      ]]
    };
    function parse() {
      const children = this.createList();
      while (!this.eof) {
        switch (this.tokenType) {
          case types.WhiteSpace:
          case types.Comment:
          case types.Semicolon:
            this.next();
            break;
          case types.AtKeyword:
            children.push(this.parseWithFallback(this.Atrule.bind(this, true), consumeRaw));
            break;
          default:
            if (this.isDelim(AMPERSAND)) {
              children.push(this.parseWithFallback(this.Rule, consumeRaw));
            } else {
              children.push(this.parseWithFallback(this.Declaration, consumeRaw));
            }
        }
      }
      return {
        type: "DeclarationList",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node, (prev) => {
        if (prev.type === "Declaration") {
          this.token(types.Semicolon, ";");
        }
      });
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Dimension.cjs
var require_Dimension = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Dimension.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "Dimension";
    var structure = {
      value: String,
      unit: String
    };
    function parse() {
      const start = this.tokenStart;
      const value = this.consumeNumber(types.Dimension);
      return {
        type: "Dimension",
        loc: this.getLocation(start, this.tokenStart),
        value,
        unit: this.substring(start + value.length, this.tokenStart)
      };
    }
    function generate(node) {
      this.token(types.Dimension, node.value + node.unit);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Feature.cjs
var require_Feature = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Feature.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var SOLIDUS = 47;
    var name = "Feature";
    var structure = {
      kind: String,
      name: String,
      value: ["Identifier", "Number", "Dimension", "Ratio", "Function", null]
    };
    function parse(kind) {
      const start = this.tokenStart;
      let name2;
      let value = null;
      this.eat(types.LeftParenthesis);
      this.skipSC();
      name2 = this.consume(types.Ident);
      this.skipSC();
      if (this.tokenType !== types.RightParenthesis) {
        this.eat(types.Colon);
        this.skipSC();
        switch (this.tokenType) {
          case types.Number:
            if (this.lookupNonWSType(1) === types.Delim) {
              value = this.Ratio();
            } else {
              value = this.Number();
            }
            break;
          case types.Dimension:
            value = this.Dimension();
            break;
          case types.Ident:
            value = this.Identifier();
            break;
          case types.Function:
            value = this.parseWithFallback(
              () => {
                const res = this.Function(this.readSequence, this.scope.Value);
                this.skipSC();
                if (this.isDelim(SOLIDUS)) {
                  this.error();
                }
                return res;
              },
              () => {
                return this.Ratio();
              }
            );
            break;
          default:
            this.error("Number, dimension, ratio or identifier is expected");
        }
        this.skipSC();
      }
      if (!this.eof) {
        this.eat(types.RightParenthesis);
      }
      return {
        type: "Feature",
        loc: this.getLocation(start, this.tokenStart),
        kind,
        name: name2,
        value
      };
    }
    function generate(node) {
      this.token(types.LeftParenthesis, "(");
      this.token(types.Ident, node.name);
      if (node.value !== null) {
        this.token(types.Colon, ":");
        this.node(node.value);
      }
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/FeatureFunction.cjs
var require_FeatureFunction = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/FeatureFunction.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "FeatureFunction";
    var structure = {
      kind: String,
      feature: String,
      value: ["Declaration", "Selector"]
    };
    function getFeatureParser(kind, name2) {
      const featuresOfKind = this.features[kind] || {};
      const parser = featuresOfKind[name2];
      if (typeof parser !== "function") {
        this.error(`Unknown feature ${name2}()`);
      }
      return parser;
    }
    function parse(kind = "unknown") {
      const start = this.tokenStart;
      const functionName = this.consumeFunctionName();
      const valueParser = getFeatureParser.call(this, kind, functionName.toLowerCase());
      this.skipSC();
      const value = this.parseWithFallback(
        () => {
          const startValueToken = this.tokenIndex;
          const value2 = valueParser.call(this);
          if (this.eof === false && this.isBalanceEdge(startValueToken) === false) {
            this.error();
          }
          return value2;
        },
        () => this.Raw(null, false)
      );
      if (!this.eof) {
        this.eat(types.RightParenthesis);
      }
      return {
        type: "FeatureFunction",
        loc: this.getLocation(start, this.tokenStart),
        kind,
        feature: functionName,
        value
      };
    }
    function generate(node) {
      this.token(types.Function, node.feature + "(");
      this.node(node.value);
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/FeatureRange.cjs
var require_FeatureRange = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/FeatureRange.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var SOLIDUS = 47;
    var LESSTHANSIGN = 60;
    var EQUALSSIGN = 61;
    var GREATERTHANSIGN = 62;
    var name = "FeatureRange";
    var structure = {
      kind: String,
      left: ["Identifier", "Number", "Dimension", "Ratio", "Function"],
      leftComparison: String,
      middle: ["Identifier", "Number", "Dimension", "Ratio", "Function"],
      rightComparison: [String, null],
      right: ["Identifier", "Number", "Dimension", "Ratio", "Function", null]
    };
    function readTerm() {
      this.skipSC();
      switch (this.tokenType) {
        case types.Number:
          if (this.isDelim(SOLIDUS, this.lookupOffsetNonSC(1))) {
            return this.Ratio();
          } else {
            return this.Number();
          }
        case types.Dimension:
          return this.Dimension();
        case types.Ident:
          return this.Identifier();
        case types.Function:
          return this.parseWithFallback(
            () => {
              const res = this.Function(this.readSequence, this.scope.Value);
              this.skipSC();
              if (this.isDelim(SOLIDUS)) {
                this.error();
              }
              return res;
            },
            () => {
              return this.Ratio();
            }
          );
        default:
          this.error("Number, dimension, ratio or identifier is expected");
      }
    }
    function readComparison(expectColon) {
      this.skipSC();
      if (this.isDelim(LESSTHANSIGN) || this.isDelim(GREATERTHANSIGN)) {
        const value = this.source[this.tokenStart];
        this.next();
        if (this.isDelim(EQUALSSIGN)) {
          this.next();
          return value + "=";
        }
        return value;
      }
      if (this.isDelim(EQUALSSIGN)) {
        return "=";
      }
      this.error(`Expected ${expectColon ? '":", ' : ""}"<", ">", "=" or ")"`);
    }
    function parse(kind = "unknown") {
      const start = this.tokenStart;
      this.skipSC();
      this.eat(types.LeftParenthesis);
      const left = readTerm.call(this);
      const leftComparison = readComparison.call(this, left.type === "Identifier");
      const middle = readTerm.call(this);
      let rightComparison = null;
      let right = null;
      if (this.lookupNonWSType(0) !== types.RightParenthesis) {
        rightComparison = readComparison.call(this);
        right = readTerm.call(this);
      }
      this.skipSC();
      this.eat(types.RightParenthesis);
      return {
        type: "FeatureRange",
        loc: this.getLocation(start, this.tokenStart),
        kind,
        left,
        leftComparison,
        middle,
        rightComparison,
        right
      };
    }
    function generate(node) {
      this.token(types.LeftParenthesis, "(");
      this.node(node.left);
      this.tokenize(node.leftComparison);
      this.node(node.middle);
      if (node.right) {
        this.tokenize(node.rightComparison);
        this.node(node.right);
      }
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Function.cjs
var require_Function = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Function.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "Function";
    var walkContext = "function";
    var structure = {
      name: String,
      children: [[]]
    };
    function parse(readSequence, recognizer) {
      const start = this.tokenStart;
      const name2 = this.consumeFunctionName();
      const nameLowerCase = name2.toLowerCase();
      let children;
      children = recognizer.hasOwnProperty(nameLowerCase) ? recognizer[nameLowerCase].call(this, recognizer) : readSequence.call(this, recognizer);
      if (!this.eof) {
        this.eat(types.RightParenthesis);
      }
      return {
        type: "Function",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        children
      };
    }
    function generate(node) {
      this.token(types.Function, node.name + "(");
      this.children(node);
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/syntax/node/GeneralEnclosed.cjs
var require_GeneralEnclosed = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/GeneralEnclosed.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "GeneralEnclosed";
    var structure = {
      kind: String,
      function: [String, null],
      children: [[]]
    };
    function parse(kind) {
      const start = this.tokenStart;
      let functionName = null;
      if (this.tokenType === types.Function) {
        functionName = this.consumeFunctionName();
      } else {
        this.eat(types.LeftParenthesis);
      }
      const children = this.parseWithFallback(
        () => {
          const startValueToken = this.tokenIndex;
          const children2 = this.readSequence(this.scope.Value);
          if (this.eof === false && this.isBalanceEdge(startValueToken) === false) {
            this.error();
          }
          return children2;
        },
        () => this.createSingleNodeList(
          this.Raw(null, false)
        )
      );
      if (!this.eof) {
        this.eat(types.RightParenthesis);
      }
      return {
        type: "GeneralEnclosed",
        loc: this.getLocation(start, this.tokenStart),
        kind,
        function: functionName,
        children
      };
    }
    function generate(node) {
      if (node.function) {
        this.token(types.Function, node.function + "(");
      } else {
        this.token(types.LeftParenthesis, "(");
      }
      this.children(node);
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Hash.cjs
var require_Hash = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Hash.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var xxx = "XXX";
    var name = "Hash";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      this.eat(types.Hash);
      return {
        type: "Hash",
        loc: this.getLocation(start, this.tokenStart),
        value: this.substrToCursor(start + 1)
      };
    }
    function generate(node) {
      this.token(types.Hash, "#" + node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.xxx = xxx;
  }
});

// node_modules/css-tree/cjs/syntax/node/Identifier.cjs
var require_Identifier = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Identifier.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "Identifier";
    var structure = {
      name: String
    };
    function parse() {
      return {
        type: "Identifier",
        loc: this.getLocation(this.tokenStart, this.tokenEnd),
        name: this.consume(types.Ident)
      };
    }
    function generate(node) {
      this.token(types.Ident, node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/IdSelector.cjs
var require_IdSelector = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/IdSelector.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "IdSelector";
    var structure = {
      name: String
    };
    function parse() {
      const start = this.tokenStart;
      this.eat(types.Hash);
      return {
        type: "IdSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: this.substrToCursor(start + 1)
      };
    }
    function generate(node) {
      this.token(types.Delim, "#" + node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Layer.cjs
var require_Layer = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Layer.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var FULLSTOP = 46;
    var name = "Layer";
    var structure = {
      name: String
    };
    function parse() {
      let name2 = this.consume(types.Ident);
      while (this.isDelim(FULLSTOP)) {
        this.eat(types.Delim);
        name2 += "." + this.consume(types.Ident);
      }
      return {
        type: "Layer",
        loc: this.getLocation(this.tokenStart, this.tokenEnd),
        name: name2
      };
    }
    function generate(node) {
      this.tokenize(node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/LayerList.cjs
var require_LayerList = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/LayerList.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "LayerList";
    var structure = {
      children: [[
        "Layer"
      ]]
    };
    function parse() {
      const children = this.createList();
      this.skipSC();
      while (!this.eof) {
        children.push(this.Layer());
        if (this.lookupTypeNonSC(0) !== types.Comma) {
          break;
        }
        this.skipSC();
        this.next();
        this.skipSC();
      }
      return {
        type: "LayerList",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node, () => this.token(types.Comma, ","));
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs
var require_MediaQuery = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "MediaQuery";
    var structure = {
      modifier: [String, null],
      mediaType: [String, null],
      condition: ["Condition", null]
    };
    function parse() {
      const start = this.tokenStart;
      let modifier = null;
      let mediaType = null;
      let condition = null;
      this.skipSC();
      if (this.tokenType === types.Ident && this.lookupTypeNonSC(1) !== types.LeftParenthesis) {
        const ident = this.consume(types.Ident);
        const identLowerCase = ident.toLowerCase();
        if (identLowerCase === "not" || identLowerCase === "only") {
          this.skipSC();
          modifier = identLowerCase;
          mediaType = this.consume(types.Ident);
        } else {
          mediaType = ident;
        }
        switch (this.lookupTypeNonSC(0)) {
          case types.Ident: {
            this.skipSC();
            this.eatIdent("and");
            condition = this.Condition("media");
            break;
          }
          case types.LeftCurlyBracket:
          case types.Semicolon:
          case types.Comma:
          case types.EOF:
            break;
          default:
            this.error("Identifier or parenthesis is expected");
        }
      } else {
        switch (this.tokenType) {
          case types.Ident:
          case types.LeftParenthesis:
          case types.Function: {
            condition = this.Condition("media");
            break;
          }
          case types.LeftCurlyBracket:
          case types.Semicolon:
          case types.EOF:
            break;
          default:
            this.error("Identifier or parenthesis is expected");
        }
      }
      return {
        type: "MediaQuery",
        loc: this.getLocation(start, this.tokenStart),
        modifier,
        mediaType,
        condition
      };
    }
    function generate(node) {
      if (node.mediaType) {
        if (node.modifier) {
          this.token(types.Ident, node.modifier);
        }
        this.token(types.Ident, node.mediaType);
        if (node.condition) {
          this.token(types.Ident, "and");
          this.node(node.condition);
        }
      } else if (node.condition) {
        this.node(node.condition);
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs
var require_MediaQueryList = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "MediaQueryList";
    var structure = {
      children: [[
        "MediaQuery"
      ]]
    };
    function parse() {
      const children = this.createList();
      this.skipSC();
      while (!this.eof) {
        children.push(this.MediaQuery());
        if (this.tokenType !== types.Comma) {
          break;
        }
        this.next();
      }
      return {
        type: "MediaQueryList",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node, () => this.token(types.Comma, ","));
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs
var require_NestingSelector = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var AMPERSAND = 38;
    var name = "NestingSelector";
    var structure = {};
    function parse() {
      const start = this.tokenStart;
      this.eatDelim(AMPERSAND);
      return {
        type: "NestingSelector",
        loc: this.getLocation(start, this.tokenStart)
      };
    }
    function generate() {
      this.token(types.Delim, "&");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Nth.cjs
var require_Nth = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Nth.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "Nth";
    var structure = {
      nth: ["AnPlusB", "Identifier"],
      selector: ["SelectorList", null]
    };
    function parse() {
      this.skipSC();
      const start = this.tokenStart;
      let end = start;
      let selector = null;
      let nth;
      if (this.lookupValue(0, "odd") || this.lookupValue(0, "even")) {
        nth = this.Identifier();
      } else {
        nth = this.AnPlusB();
      }
      end = this.tokenStart;
      this.skipSC();
      if (this.lookupValue(0, "of")) {
        this.next();
        selector = this.SelectorList();
        end = this.tokenStart;
      }
      return {
        type: "Nth",
        loc: this.getLocation(start, end),
        nth,
        selector
      };
    }
    function generate(node) {
      this.node(node.nth);
      if (node.selector !== null) {
        this.token(types.Ident, "of");
        this.node(node.selector);
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Number.cjs
var require_Number = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Number.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "Number";
    var structure = {
      value: String
    };
    function parse() {
      return {
        type: "Number",
        loc: this.getLocation(this.tokenStart, this.tokenEnd),
        value: this.consume(types.Number)
      };
    }
    function generate(node) {
      this.token(types.Number, node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Operator.cjs
var require_Operator = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Operator.cjs"(exports) {
    "use strict";
    var name = "Operator";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      this.next();
      return {
        type: "Operator",
        loc: this.getLocation(start, this.tokenStart),
        value: this.substrToCursor(start)
      };
    }
    function generate(node) {
      this.tokenize(node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Parentheses.cjs
var require_Parentheses = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Parentheses.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "Parentheses";
    var structure = {
      children: [[]]
    };
    function parse(readSequence, recognizer) {
      const start = this.tokenStart;
      let children = null;
      this.eat(types.LeftParenthesis);
      children = readSequence.call(this, recognizer);
      if (!this.eof) {
        this.eat(types.RightParenthesis);
      }
      return {
        type: "Parentheses",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.token(types.LeftParenthesis, "(");
      this.children(node);
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Percentage.cjs
var require_Percentage = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Percentage.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "Percentage";
    var structure = {
      value: String
    };
    function parse() {
      return {
        type: "Percentage",
        loc: this.getLocation(this.tokenStart, this.tokenEnd),
        value: this.consumeNumber(types.Percentage)
      };
    }
    function generate(node) {
      this.token(types.Percentage, node.value + "%");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs
var require_PseudoClassSelector = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "PseudoClassSelector";
    var walkContext = "function";
    var structure = {
      name: String,
      children: [["Raw"], null]
    };
    function parse() {
      const start = this.tokenStart;
      let children = null;
      let name2;
      let nameLowerCase;
      this.eat(types.Colon);
      if (this.tokenType === types.Function) {
        name2 = this.consumeFunctionName();
        nameLowerCase = name2.toLowerCase();
        if (this.lookupNonWSType(0) == types.RightParenthesis) {
          children = this.createList();
        } else if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {
          this.skipSC();
          children = this.pseudo[nameLowerCase].call(this);
          this.skipSC();
        } else {
          children = this.createList();
          children.push(
            this.Raw(null, false)
          );
        }
        this.eat(types.RightParenthesis);
      } else {
        name2 = this.consume(types.Ident);
      }
      return {
        type: "PseudoClassSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        children
      };
    }
    function generate(node) {
      this.token(types.Colon, ":");
      if (node.children === null) {
        this.token(types.Ident, node.name);
      } else {
        this.token(types.Function, node.name + "(");
        this.children(node);
        this.token(types.RightParenthesis, ")");
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs
var require_PseudoElementSelector = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "PseudoElementSelector";
    var walkContext = "function";
    var structure = {
      name: String,
      children: [["Raw"], null]
    };
    function parse() {
      const start = this.tokenStart;
      let children = null;
      let name2;
      let nameLowerCase;
      this.eat(types.Colon);
      this.eat(types.Colon);
      if (this.tokenType === types.Function) {
        name2 = this.consumeFunctionName();
        nameLowerCase = name2.toLowerCase();
        if (this.lookupNonWSType(0) == types.RightParenthesis) {
          children = this.createList();
        } else if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {
          this.skipSC();
          children = this.pseudo[nameLowerCase].call(this);
          this.skipSC();
        } else {
          children = this.createList();
          children.push(
            this.Raw(null, false)
          );
        }
        this.eat(types.RightParenthesis);
      } else {
        name2 = this.consume(types.Ident);
      }
      return {
        type: "PseudoElementSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        children
      };
    }
    function generate(node) {
      this.token(types.Colon, ":");
      this.token(types.Colon, ":");
      if (node.children === null) {
        this.token(types.Ident, node.name);
      } else {
        this.token(types.Function, node.name + "(");
        this.children(node);
        this.token(types.RightParenthesis, ")");
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/syntax/node/Ratio.cjs
var require_Ratio = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Ratio.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var SOLIDUS = 47;
    function consumeTerm() {
      this.skipSC();
      switch (this.tokenType) {
        case types.Number:
          return this.Number();
        case types.Function:
          return this.Function(this.readSequence, this.scope.Value);
        default:
          this.error("Number of function is expected");
      }
    }
    var name = "Ratio";
    var structure = {
      left: ["Number", "Function"],
      right: ["Number", "Function", null]
    };
    function parse() {
      const start = this.tokenStart;
      const left = consumeTerm.call(this);
      let right = null;
      this.skipSC();
      if (this.isDelim(SOLIDUS)) {
        this.eatDelim(SOLIDUS);
        right = consumeTerm.call(this);
      }
      return {
        type: "Ratio",
        loc: this.getLocation(start, this.tokenStart),
        left,
        right
      };
    }
    function generate(node) {
      this.node(node.left);
      this.token(types.Delim, "/");
      if (node.right) {
        this.node(node.right);
      } else {
        this.node(types.Number, 1);
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Raw.cjs
var require_Raw = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Raw.cjs"(exports) {
    "use strict";
    var types = require_types2();
    function getOffsetExcludeWS() {
      if (this.tokenIndex > 0) {
        if (this.lookupType(-1) === types.WhiteSpace) {
          return this.tokenIndex > 1 ? this.getTokenStart(this.tokenIndex - 1) : this.firstCharOffset;
        }
      }
      return this.tokenStart;
    }
    var name = "Raw";
    var structure = {
      value: String
    };
    function parse(consumeUntil, excludeWhiteSpace) {
      const startOffset = this.getTokenStart(this.tokenIndex);
      let endOffset;
      this.skipUntilBalanced(this.tokenIndex, consumeUntil || this.consumeUntilBalanceEnd);
      if (excludeWhiteSpace && this.tokenStart > startOffset) {
        endOffset = getOffsetExcludeWS.call(this);
      } else {
        endOffset = this.tokenStart;
      }
      return {
        type: "Raw",
        loc: this.getLocation(startOffset, endOffset),
        value: this.substring(startOffset, endOffset)
      };
    }
    function generate(node) {
      this.tokenize(node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Rule.cjs
var require_Rule = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Rule.cjs"(exports) {
    "use strict";
    var types = require_types2();
    function consumeRaw() {
      return this.Raw(this.consumeUntilLeftCurlyBracket, true);
    }
    function consumePrelude() {
      const prelude = this.SelectorList();
      if (prelude.type !== "Raw" && this.eof === false && this.tokenType !== types.LeftCurlyBracket) {
        this.error();
      }
      return prelude;
    }
    var name = "Rule";
    var walkContext = "rule";
    var structure = {
      prelude: ["SelectorList", "Raw"],
      block: ["Block"]
    };
    function parse() {
      const startToken = this.tokenIndex;
      const startOffset = this.tokenStart;
      let prelude;
      let block;
      if (this.parseRulePrelude) {
        prelude = this.parseWithFallback(consumePrelude, consumeRaw);
      } else {
        prelude = consumeRaw.call(this, startToken);
      }
      this.skipSC();
      this.eat(types.LeftCurlyBracket);
      block = this.Block(true);
      if (!this.eof) {
        this.eat(types.RightCurlyBracket);
      }
      return {
        type: "Rule",
        loc: this.getLocation(startOffset, this.tokenStart),
        prelude,
        block
      };
    }
    function generate(node) {
      this.node(node.prelude);
      this.token(types.LeftCurlyBracket, "{");
      this.node(node.block);
      this.token(types.RightCurlyBracket, "}");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/syntax/node/Scope.cjs
var require_Scope = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Scope.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "Scope";
    var structure = {
      root: ["SelectorList", "Raw", null],
      limit: ["SelectorList", "Raw", null]
    };
    function parse() {
      let root = null;
      let limit = null;
      this.skipSC();
      const startOffset = this.tokenStart;
      if (this.tokenType === types.LeftParenthesis) {
        this.next();
        this.skipSC();
        root = this.parseWithFallback(
          this.SelectorList,
          () => this.Raw(false, true)
        );
        this.skipSC();
        this.eat(types.RightParenthesis);
      }
      if (this.lookupNonWSType(0) === types.Ident) {
        this.skipSC();
        this.eatIdent("to");
        this.skipSC();
        this.eat(types.LeftParenthesis);
        this.skipSC();
        limit = this.parseWithFallback(
          this.SelectorList,
          () => this.Raw(false, true)
        );
        this.skipSC();
        this.eat(types.RightParenthesis);
      }
      return {
        type: "Scope",
        loc: this.getLocation(startOffset, this.tokenStart),
        root,
        limit
      };
    }
    function generate(node) {
      if (node.root) {
        this.token(types.LeftParenthesis, "(");
        this.node(node.root);
        this.token(types.RightParenthesis, ")");
      }
      if (node.limit) {
        this.token(types.Ident, "to");
        this.token(types.LeftParenthesis, "(");
        this.node(node.limit);
        this.token(types.RightParenthesis, ")");
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Selector.cjs
var require_Selector = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Selector.cjs"(exports) {
    "use strict";
    var name = "Selector";
    var structure = {
      children: [[
        "TypeSelector",
        "IdSelector",
        "ClassSelector",
        "AttributeSelector",
        "PseudoClassSelector",
        "PseudoElementSelector",
        "Combinator"
      ]]
    };
    function parse() {
      const children = this.readSequence(this.scope.Selector);
      if (this.getFirstListNode(children) === null) {
        this.error("Selector is expected");
      }
      return {
        type: "Selector",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/SelectorList.cjs
var require_SelectorList = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/SelectorList.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "SelectorList";
    var walkContext = "selector";
    var structure = {
      children: [[
        "Selector",
        "Raw"
      ]]
    };
    function parse() {
      const children = this.createList();
      while (!this.eof) {
        children.push(this.Selector());
        if (this.tokenType === types.Comma) {
          this.next();
          continue;
        }
        break;
      }
      return {
        type: "SelectorList",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node, () => this.token(types.Comma, ","));
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/utils/string.cjs
var require_string = __commonJS({
  "node_modules/css-tree/cjs/utils/string.cjs"(exports) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions();
    var utils = require_utils();
    var REVERSE_SOLIDUS = 92;
    var QUOTATION_MARK = 34;
    var APOSTROPHE = 39;
    function decode(str) {
      const len = str.length;
      const firstChar = str.charCodeAt(0);
      const start = firstChar === QUOTATION_MARK || firstChar === APOSTROPHE ? 1 : 0;
      const end = start === 1 && len > 1 && str.charCodeAt(len - 1) === firstChar ? len - 2 : len - 1;
      let decoded = "";
      for (let i = start; i <= end; i++) {
        let code = str.charCodeAt(i);
        if (code === REVERSE_SOLIDUS) {
          if (i === end) {
            if (i !== len - 1) {
              decoded = str.substr(i + 1);
            }
            break;
          }
          code = str.charCodeAt(++i);
          if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {
            const escapeStart = i - 1;
            const escapeEnd = utils.consumeEscaped(str, escapeStart);
            i = escapeEnd - 1;
            decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));
          } else {
            if (code === 13 && str.charCodeAt(i + 1) === 10) {
              i++;
            }
          }
        } else {
          decoded += str[i];
        }
      }
      return decoded;
    }
    function encode(str, apostrophe) {
      const quote = apostrophe ? "'" : '"';
      const quoteCode = apostrophe ? APOSTROPHE : QUOTATION_MARK;
      let encoded = "";
      let wsBeforeHexIsNeeded = false;
      for (let i = 0; i < str.length; i++) {
        const code = str.charCodeAt(i);
        if (code === 0) {
          encoded += "\uFFFD";
          continue;
        }
        if (code <= 31 || code === 127) {
          encoded += "\\" + code.toString(16);
          wsBeforeHexIsNeeded = true;
          continue;
        }
        if (code === quoteCode || code === REVERSE_SOLIDUS) {
          encoded += "\\" + str.charAt(i);
          wsBeforeHexIsNeeded = false;
        } else {
          if (wsBeforeHexIsNeeded && (charCodeDefinitions.isHexDigit(code) || charCodeDefinitions.isWhiteSpace(code))) {
            encoded += " ";
          }
          encoded += str.charAt(i);
          wsBeforeHexIsNeeded = false;
        }
      }
      return quote + encoded + quote;
    }
    exports.decode = decode;
    exports.encode = encode;
  }
});

// node_modules/css-tree/cjs/syntax/node/String.cjs
var require_String = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/String.cjs"(exports) {
    "use strict";
    var string = require_string();
    var types = require_types2();
    var name = "String";
    var structure = {
      value: String
    };
    function parse() {
      return {
        type: "String",
        loc: this.getLocation(this.tokenStart, this.tokenEnd),
        value: string.decode(this.consume(types.String))
      };
    }
    function generate(node) {
      this.token(types.String, string.encode(node.value));
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs
var require_StyleSheet = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var EXCLAMATIONMARK = 33;
    function consumeRaw() {
      return this.Raw(null, false);
    }
    var name = "StyleSheet";
    var walkContext = "stylesheet";
    var structure = {
      children: [[
        "Comment",
        "CDO",
        "CDC",
        "Atrule",
        "Rule",
        "Raw"
      ]]
    };
    function parse() {
      const start = this.tokenStart;
      const children = this.createList();
      let child;
      while (!this.eof) {
        switch (this.tokenType) {
          case types.WhiteSpace:
            this.next();
            continue;
          case types.Comment:
            if (this.charCodeAt(this.tokenStart + 2) !== EXCLAMATIONMARK) {
              this.next();
              continue;
            }
            child = this.Comment();
            break;
          case types.CDO:
            child = this.CDO();
            break;
          case types.CDC:
            child = this.CDC();
            break;
          // CSS Syntax Module Level 3
          // §2.2 Error handling
          // At the "top level" of a stylesheet, an <at-keyword-token> starts an at-rule.
          case types.AtKeyword:
            child = this.parseWithFallback(this.Atrule, consumeRaw);
            break;
          // Anything else starts a qualified rule ...
          default:
            child = this.parseWithFallback(this.Rule, consumeRaw);
        }
        children.push(child);
      }
      return {
        type: "StyleSheet",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.children(node);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/css-tree/cjs/syntax/node/SupportsDeclaration.cjs
var require_SupportsDeclaration = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/SupportsDeclaration.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var name = "SupportsDeclaration";
    var structure = {
      declaration: "Declaration"
    };
    function parse() {
      const start = this.tokenStart;
      this.eat(types.LeftParenthesis);
      this.skipSC();
      const declaration = this.Declaration();
      if (!this.eof) {
        this.eat(types.RightParenthesis);
      }
      return {
        type: "SupportsDeclaration",
        loc: this.getLocation(start, this.tokenStart),
        declaration
      };
    }
    function generate(node) {
      this.token(types.LeftParenthesis, "(");
      this.node(node.declaration);
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs
var require_TypeSelector = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var ASTERISK = 42;
    var VERTICALLINE = 124;
    function eatIdentifierOrAsterisk() {
      if (this.tokenType !== types.Ident && this.isDelim(ASTERISK) === false) {
        this.error("Identifier or asterisk is expected");
      }
      this.next();
    }
    var name = "TypeSelector";
    var structure = {
      name: String
    };
    function parse() {
      const start = this.tokenStart;
      if (this.isDelim(VERTICALLINE)) {
        this.next();
        eatIdentifierOrAsterisk.call(this);
      } else {
        eatIdentifierOrAsterisk.call(this);
        if (this.isDelim(VERTICALLINE)) {
          this.next();
          eatIdentifierOrAsterisk.call(this);
        }
      }
      return {
        type: "TypeSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: this.substrToCursor(start)
      };
    }
    function generate(node) {
      this.tokenize(node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs
var require_UnicodeRange = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var charCodeDefinitions = require_char_code_definitions();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var QUESTIONMARK = 63;
    function eatHexSequence(offset, allowDash) {
      let len = 0;
      for (let pos = this.tokenStart + offset; pos < this.tokenEnd; pos++) {
        const code = this.charCodeAt(pos);
        if (code === HYPHENMINUS && allowDash && len !== 0) {
          eatHexSequence.call(this, offset + len + 1, false);
          return -1;
        }
        if (!charCodeDefinitions.isHexDigit(code)) {
          this.error(
            allowDash && len !== 0 ? "Hyphen minus" + (len < 6 ? " or hex digit" : "") + " is expected" : len < 6 ? "Hex digit is expected" : "Unexpected input",
            pos
          );
        }
        if (++len > 6) {
          this.error("Too many hex digits", pos);
        }
      }
      this.next();
      return len;
    }
    function eatQuestionMarkSequence(max) {
      let count = 0;
      while (this.isDelim(QUESTIONMARK)) {
        if (++count > max) {
          this.error("Too many question marks");
        }
        this.next();
      }
    }
    function startsWith(code) {
      if (this.charCodeAt(this.tokenStart) !== code) {
        this.error((code === PLUSSIGN ? "Plus sign" : "Hyphen minus") + " is expected");
      }
    }
    function scanUnicodeRange() {
      let hexLength = 0;
      switch (this.tokenType) {
        case types.Number:
          hexLength = eatHexSequence.call(this, 1, true);
          if (this.isDelim(QUESTIONMARK)) {
            eatQuestionMarkSequence.call(this, 6 - hexLength);
            break;
          }
          if (this.tokenType === types.Dimension || this.tokenType === types.Number) {
            startsWith.call(this, HYPHENMINUS);
            eatHexSequence.call(this, 1, false);
            break;
          }
          break;
        case types.Dimension:
          hexLength = eatHexSequence.call(this, 1, true);
          if (hexLength > 0) {
            eatQuestionMarkSequence.call(this, 6 - hexLength);
          }
          break;
        default:
          this.eatDelim(PLUSSIGN);
          if (this.tokenType === types.Ident) {
            hexLength = eatHexSequence.call(this, 0, true);
            if (hexLength > 0) {
              eatQuestionMarkSequence.call(this, 6 - hexLength);
            }
            break;
          }
          if (this.isDelim(QUESTIONMARK)) {
            this.next();
            eatQuestionMarkSequence.call(this, 5);
            break;
          }
          this.error("Hex digit or question mark is expected");
      }
    }
    var name = "UnicodeRange";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      this.eatIdent("u");
      scanUnicodeRange.call(this);
      return {
        type: "UnicodeRange",
        loc: this.getLocation(start, this.tokenStart),
        value: this.substrToCursor(start)
      };
    }
    function generate(node) {
      this.tokenize(node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/utils/url.cjs
var require_url = __commonJS({
  "node_modules/css-tree/cjs/utils/url.cjs"(exports) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions();
    var utils = require_utils();
    var SPACE = 32;
    var REVERSE_SOLIDUS = 92;
    var QUOTATION_MARK = 34;
    var APOSTROPHE = 39;
    var LEFTPARENTHESIS = 40;
    var RIGHTPARENTHESIS = 41;
    function decode(str) {
      const len = str.length;
      let start = 4;
      let end = str.charCodeAt(len - 1) === RIGHTPARENTHESIS ? len - 2 : len - 1;
      let decoded = "";
      while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(start))) {
        start++;
      }
      while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(end))) {
        end--;
      }
      for (let i = start; i <= end; i++) {
        let code = str.charCodeAt(i);
        if (code === REVERSE_SOLIDUS) {
          if (i === end) {
            if (i !== len - 1) {
              decoded = str.substr(i + 1);
            }
            break;
          }
          code = str.charCodeAt(++i);
          if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {
            const escapeStart = i - 1;
            const escapeEnd = utils.consumeEscaped(str, escapeStart);
            i = escapeEnd - 1;
            decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));
          } else {
            if (code === 13 && str.charCodeAt(i + 1) === 10) {
              i++;
            }
          }
        } else {
          decoded += str[i];
        }
      }
      return decoded;
    }
    function encode(str) {
      let encoded = "";
      let wsBeforeHexIsNeeded = false;
      for (let i = 0; i < str.length; i++) {
        const code = str.charCodeAt(i);
        if (code === 0) {
          encoded += "\uFFFD";
          continue;
        }
        if (code <= 31 || code === 127) {
          encoded += "\\" + code.toString(16);
          wsBeforeHexIsNeeded = true;
          continue;
        }
        if (code === SPACE || code === REVERSE_SOLIDUS || code === QUOTATION_MARK || code === APOSTROPHE || code === LEFTPARENTHESIS || code === RIGHTPARENTHESIS) {
          encoded += "\\" + str.charAt(i);
          wsBeforeHexIsNeeded = false;
        } else {
          if (wsBeforeHexIsNeeded && charCodeDefinitions.isHexDigit(code)) {
            encoded += " ";
          }
          encoded += str.charAt(i);
          wsBeforeHexIsNeeded = false;
        }
      }
      return "url(" + encoded + ")";
    }
    exports.decode = decode;
    exports.encode = encode;
  }
});

// node_modules/css-tree/cjs/syntax/node/Url.cjs
var require_Url = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Url.cjs"(exports) {
    "use strict";
    var url = require_url();
    var string = require_string();
    var types = require_types2();
    var name = "Url";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      let value;
      switch (this.tokenType) {
        case types.Url:
          value = url.decode(this.consume(types.Url));
          break;
        case types.Function:
          if (!this.cmpStr(this.tokenStart, this.tokenEnd, "url(")) {
            this.error("Function name must be `url`");
          }
          this.eat(types.Function);
          this.skipSC();
          value = string.decode(this.consume(types.String));
          this.skipSC();
          if (!this.eof) {
            this.eat(types.RightParenthesis);
          }
          break;
        default:
          this.error("Url or Function is expected");
      }
      return {
        type: "Url",
        loc: this.getLocation(start, this.tokenStart),
        value
      };
    }
    function generate(node) {
      this.token(types.Url, url.encode(node.value));
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/Value.cjs
var require_Value = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/Value.cjs"(exports) {
    "use strict";
    var name = "Value";
    var structure = {
      children: [[]]
    };
    function parse() {
      const start = this.tokenStart;
      const children = this.readSequence(this.scope.Value);
      return {
        type: "Value",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.children(node);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs
var require_WhiteSpace = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs"(exports) {
    "use strict";
    var types = require_types2();
    var SPACE = Object.freeze({
      type: "WhiteSpace",
      loc: null,
      value: " "
    });
    var name = "WhiteSpace";
    var structure = {
      value: String
    };
    function parse() {
      this.eat(types.WhiteSpace);
      return SPACE;
    }
    function generate(node) {
      this.token(types.WhiteSpace, node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/css-tree/cjs/syntax/node/index.cjs
var require_node2 = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/index.cjs"(exports) {
    "use strict";
    var AnPlusB = require_AnPlusB();
    var Atrule = require_Atrule();
    var AtrulePrelude = require_AtrulePrelude();
    var AttributeSelector = require_AttributeSelector();
    var Block = require_Block();
    var Brackets = require_Brackets();
    var CDC = require_CDC();
    var CDO = require_CDO();
    var ClassSelector = require_ClassSelector();
    var Combinator = require_Combinator();
    var Comment = require_Comment();
    var Condition = require_Condition();
    var Declaration = require_Declaration();
    var DeclarationList = require_DeclarationList();
    var Dimension = require_Dimension();
    var Feature = require_Feature();
    var FeatureFunction = require_FeatureFunction();
    var FeatureRange = require_FeatureRange();
    var Function2 = require_Function();
    var GeneralEnclosed = require_GeneralEnclosed();
    var Hash = require_Hash();
    var Identifier = require_Identifier();
    var IdSelector = require_IdSelector();
    var Layer = require_Layer();
    var LayerList = require_LayerList();
    var MediaQuery = require_MediaQuery();
    var MediaQueryList = require_MediaQueryList();
    var NestingSelector = require_NestingSelector();
    var Nth = require_Nth();
    var Number$1 = require_Number();
    var Operator = require_Operator();
    var Parentheses = require_Parentheses();
    var Percentage = require_Percentage();
    var PseudoClassSelector = require_PseudoClassSelector();
    var PseudoElementSelector = require_PseudoElementSelector();
    var Ratio = require_Ratio();
    var Raw = require_Raw();
    var Rule = require_Rule();
    var Scope = require_Scope();
    var Selector = require_Selector();
    var SelectorList = require_SelectorList();
    var String$1 = require_String();
    var StyleSheet = require_StyleSheet();
    var SupportsDeclaration = require_SupportsDeclaration();
    var TypeSelector = require_TypeSelector();
    var UnicodeRange = require_UnicodeRange();
    var Url = require_Url();
    var Value = require_Value();
    var WhiteSpace = require_WhiteSpace();
    exports.AnPlusB = AnPlusB;
    exports.Atrule = Atrule;
    exports.AtrulePrelude = AtrulePrelude;
    exports.AttributeSelector = AttributeSelector;
    exports.Block = Block;
    exports.Brackets = Brackets;
    exports.CDC = CDC;
    exports.CDO = CDO;
    exports.ClassSelector = ClassSelector;
    exports.Combinator = Combinator;
    exports.Comment = Comment;
    exports.Condition = Condition;
    exports.Declaration = Declaration;
    exports.DeclarationList = DeclarationList;
    exports.Dimension = Dimension;
    exports.Feature = Feature;
    exports.FeatureFunction = FeatureFunction;
    exports.FeatureRange = FeatureRange;
    exports.Function = Function2;
    exports.GeneralEnclosed = GeneralEnclosed;
    exports.Hash = Hash;
    exports.Identifier = Identifier;
    exports.IdSelector = IdSelector;
    exports.Layer = Layer;
    exports.LayerList = LayerList;
    exports.MediaQuery = MediaQuery;
    exports.MediaQueryList = MediaQueryList;
    exports.NestingSelector = NestingSelector;
    exports.Nth = Nth;
    exports.Number = Number$1;
    exports.Operator = Operator;
    exports.Parentheses = Parentheses;
    exports.Percentage = Percentage;
    exports.PseudoClassSelector = PseudoClassSelector;
    exports.PseudoElementSelector = PseudoElementSelector;
    exports.Ratio = Ratio;
    exports.Raw = Raw;
    exports.Rule = Rule;
    exports.Scope = Scope;
    exports.Selector = Selector;
    exports.SelectorList = SelectorList;
    exports.String = String$1;
    exports.StyleSheet = StyleSheet;
    exports.SupportsDeclaration = SupportsDeclaration;
    exports.TypeSelector = TypeSelector;
    exports.UnicodeRange = UnicodeRange;
    exports.Url = Url;
    exports.Value = Value;
    exports.WhiteSpace = WhiteSpace;
  }
});

// node_modules/css-tree/cjs/syntax/config/lexer.cjs
var require_lexer = __commonJS({
  "node_modules/css-tree/cjs/syntax/config/lexer.cjs"(exports, module) {
    "use strict";
    var data = require_data();
    var index = require_node2();
    var lexerConfig = {
      generic: true,
      ...data,
      node: index
    };
    module.exports = lexerConfig;
  }
});

// node_modules/css-tree/cjs/syntax/scope/default.cjs
var require_default = __commonJS({
  "node_modules/css-tree/cjs/syntax/scope/default.cjs"(exports, module) {
    "use strict";
    var types = require_types2();
    var NUMBERSIGN = 35;
    var ASTERISK = 42;
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var SOLIDUS = 47;
    var U = 117;
    function defaultRecognizer(context) {
      switch (this.tokenType) {
        case types.Hash:
          return this.Hash();
        case types.Comma:
          return this.Operator();
        case types.LeftParenthesis:
          return this.Parentheses(this.readSequence, context.recognizer);
        case types.LeftSquareBracket:
          return this.Brackets(this.readSequence, context.recognizer);
        case types.String:
          return this.String();
        case types.Dimension:
          return this.Dimension();
        case types.Percentage:
          return this.Percentage();
        case types.Number:
          return this.Number();
        case types.Function:
          return this.cmpStr(this.tokenStart, this.tokenEnd, "url(") ? this.Url() : this.Function(this.readSequence, context.recognizer);
        case types.Url:
          return this.Url();
        case types.Ident:
          if (this.cmpChar(this.tokenStart, U) && this.cmpChar(this.tokenStart + 1, PLUSSIGN)) {
            return this.UnicodeRange();
          } else {
            return this.Identifier();
          }
        case types.Delim: {
          const code = this.charCodeAt(this.tokenStart);
          if (code === SOLIDUS || code === ASTERISK || code === PLUSSIGN || code === HYPHENMINUS) {
            return this.Operator();
          }
          if (code === NUMBERSIGN) {
            this.error("Hex or identifier is expected", this.tokenStart + 1);
          }
          break;
        }
      }
    }
    module.exports = defaultRecognizer;
  }
});

// node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs
var require_atrulePrelude = __commonJS({
  "node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs"(exports, module) {
    "use strict";
    var _default = require_default();
    var atrulePrelude = {
      getNode: _default
    };
    module.exports = atrulePrelude;
  }
});

// node_modules/css-tree/cjs/syntax/scope/selector.cjs
var require_selector = __commonJS({
  "node_modules/css-tree/cjs/syntax/scope/selector.cjs"(exports, module) {
    "use strict";
    var types = require_types2();
    var NUMBERSIGN = 35;
    var AMPERSAND = 38;
    var ASTERISK = 42;
    var PLUSSIGN = 43;
    var SOLIDUS = 47;
    var FULLSTOP = 46;
    var GREATERTHANSIGN = 62;
    var VERTICALLINE = 124;
    var TILDE = 126;
    function onWhiteSpace(next, children) {
      if (children.last !== null && children.last.type !== "Combinator" && next !== null && next.type !== "Combinator") {
        children.push({
          // FIXME: this.Combinator() should be used instead
          type: "Combinator",
          loc: null,
          name: " "
        });
      }
    }
    function getNode() {
      switch (this.tokenType) {
        case types.LeftSquareBracket:
          return this.AttributeSelector();
        case types.Hash:
          return this.IdSelector();
        case types.Colon:
          if (this.lookupType(1) === types.Colon) {
            return this.PseudoElementSelector();
          } else {
            return this.PseudoClassSelector();
          }
        case types.Ident:
          return this.TypeSelector();
        case types.Number:
        case types.Percentage:
          return this.Percentage();
        case types.Dimension:
          if (this.charCodeAt(this.tokenStart) === FULLSTOP) {
            this.error("Identifier is expected", this.tokenStart + 1);
          }
          break;
        case types.Delim: {
          const code = this.charCodeAt(this.tokenStart);
          switch (code) {
            case PLUSSIGN:
            case GREATERTHANSIGN:
            case TILDE:
            case SOLIDUS:
              return this.Combinator();
            case FULLSTOP:
              return this.ClassSelector();
            case ASTERISK:
            case VERTICALLINE:
              return this.TypeSelector();
            case NUMBERSIGN:
              return this.IdSelector();
            case AMPERSAND:
              return this.NestingSelector();
          }
          break;
        }
      }
    }
    var Selector = {
      onWhiteSpace,
      getNode
    };
    module.exports = Selector;
  }
});

// node_modules/css-tree/cjs/syntax/function/expression.cjs
var require_expression = __commonJS({
  "node_modules/css-tree/cjs/syntax/function/expression.cjs"(exports, module) {
    "use strict";
    function expressionFn() {
      return this.createSingleNodeList(
        this.Raw(null, false)
      );
    }
    module.exports = expressionFn;
  }
});

// node_modules/css-tree/cjs/syntax/function/var.cjs
var require_var = __commonJS({
  "node_modules/css-tree/cjs/syntax/function/var.cjs"(exports, module) {
    "use strict";
    var types = require_types2();
    function varFn() {
      const children = this.createList();
      this.skipSC();
      children.push(this.Identifier());
      this.skipSC();
      if (this.tokenType === types.Comma) {
        children.push(this.Operator());
        const startIndex = this.tokenIndex;
        const value = this.parseCustomProperty ? this.Value(null) : this.Raw(this.consumeUntilExclamationMarkOrSemicolon, false);
        if (value.type === "Value" && value.children.isEmpty) {
          for (let offset = startIndex - this.tokenIndex; offset <= 0; offset++) {
            if (this.lookupType(offset) === types.WhiteSpace) {
              value.children.appendData({
                type: "WhiteSpace",
                loc: null,
                value: " "
              });
              break;
            }
          }
        }
        children.push(value);
      }
      return children;
    }
    module.exports = varFn;
  }
});

// node_modules/css-tree/cjs/syntax/scope/value.cjs
var require_value = __commonJS({
  "node_modules/css-tree/cjs/syntax/scope/value.cjs"(exports, module) {
    "use strict";
    var _default = require_default();
    var expression = require_expression();
    var _var = require_var();
    function isPlusMinusOperator(node) {
      return node !== null && node.type === "Operator" && (node.value[node.value.length - 1] === "-" || node.value[node.value.length - 1] === "+");
    }
    var value = {
      getNode: _default,
      onWhiteSpace(next, children) {
        if (isPlusMinusOperator(next)) {
          next.value = " " + next.value;
        }
        if (isPlusMinusOperator(children.last)) {
          children.last.value += " ";
        }
      },
      "expression": expression,
      "var": _var
    };
    module.exports = value;
  }
});

// node_modules/css-tree/cjs/syntax/scope/index.cjs
var require_scope = __commonJS({
  "node_modules/css-tree/cjs/syntax/scope/index.cjs"(exports) {
    "use strict";
    var atrulePrelude = require_atrulePrelude();
    var selector = require_selector();
    var value = require_value();
    exports.AtrulePrelude = atrulePrelude;
    exports.Selector = selector;
    exports.Value = value;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/container.cjs
var require_container = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/container.cjs"(exports, module) {
    "use strict";
    var types = require_types2();
    var nonContainerNameKeywords = /* @__PURE__ */ new Set(["none", "and", "not", "or"]);
    var container = {
      parse: {
        prelude() {
          const children = this.createList();
          if (this.tokenType === types.Ident) {
            const name = this.substring(this.tokenStart, this.tokenEnd);
            if (!nonContainerNameKeywords.has(name.toLowerCase())) {
              children.push(this.Identifier());
            }
          }
          children.push(this.Condition("container"));
          return children;
        },
        block(nested = false) {
          return this.Block(nested);
        }
      }
    };
    module.exports = container;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/font-face.cjs
var require_font_face = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/font-face.cjs"(exports, module) {
    "use strict";
    var fontFace = {
      parse: {
        prelude: null,
        block() {
          return this.Block(true);
        }
      }
    };
    module.exports = fontFace;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/import.cjs
var require_import = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/import.cjs"(exports, module) {
    "use strict";
    var types = require_types2();
    function parseWithFallback(parse, fallback) {
      return this.parseWithFallback(
        () => {
          try {
            return parse.call(this);
          } finally {
            this.skipSC();
            if (this.lookupNonWSType(0) !== types.RightParenthesis) {
              this.error();
            }
          }
        },
        fallback || (() => this.Raw(null, true))
      );
    }
    var parseFunctions = {
      layer() {
        this.skipSC();
        const children = this.createList();
        const node = parseWithFallback.call(this, this.Layer);
        if (node.type !== "Raw" || node.value !== "") {
          children.push(node);
        }
        return children;
      },
      supports() {
        this.skipSC();
        const children = this.createList();
        const node = parseWithFallback.call(
          this,
          this.Declaration,
          () => parseWithFallback.call(this, () => this.Condition("supports"))
        );
        if (node.type !== "Raw" || node.value !== "") {
          children.push(node);
        }
        return children;
      }
    };
    var importAtrule = {
      parse: {
        prelude() {
          const children = this.createList();
          switch (this.tokenType) {
            case types.String:
              children.push(this.String());
              break;
            case types.Url:
            case types.Function:
              children.push(this.Url());
              break;
            default:
              this.error("String or url() is expected");
          }
          this.skipSC();
          if (this.tokenType === types.Ident && this.cmpStr(this.tokenStart, this.tokenEnd, "layer")) {
            children.push(this.Identifier());
          } else if (this.tokenType === types.Function && this.cmpStr(this.tokenStart, this.tokenEnd, "layer(")) {
            children.push(this.Function(null, parseFunctions));
          }
          this.skipSC();
          if (this.tokenType === types.Function && this.cmpStr(this.tokenStart, this.tokenEnd, "supports(")) {
            children.push(this.Function(null, parseFunctions));
          }
          if (this.lookupNonWSType(0) === types.Ident || this.lookupNonWSType(0) === types.LeftParenthesis) {
            children.push(this.MediaQueryList());
          }
          return children;
        },
        block: null
      }
    };
    module.exports = importAtrule;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/layer.cjs
var require_layer = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/layer.cjs"(exports, module) {
    "use strict";
    var layer = {
      parse: {
        prelude() {
          return this.createSingleNodeList(
            this.LayerList()
          );
        },
        block() {
          return this.Block(false);
        }
      }
    };
    module.exports = layer;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/media.cjs
var require_media = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/media.cjs"(exports, module) {
    "use strict";
    var media = {
      parse: {
        prelude() {
          return this.createSingleNodeList(
            this.MediaQueryList()
          );
        },
        block(nested = false) {
          return this.Block(nested);
        }
      }
    };
    module.exports = media;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/nest.cjs
var require_nest = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/nest.cjs"(exports, module) {
    "use strict";
    var nest = {
      parse: {
        prelude() {
          return this.createSingleNodeList(
            this.SelectorList()
          );
        },
        block() {
          return this.Block(true);
        }
      }
    };
    module.exports = nest;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/page.cjs
var require_page = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/page.cjs"(exports, module) {
    "use strict";
    var page = {
      parse: {
        prelude() {
          return this.createSingleNodeList(
            this.SelectorList()
          );
        },
        block() {
          return this.Block(true);
        }
      }
    };
    module.exports = page;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/scope.cjs
var require_scope2 = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/scope.cjs"(exports, module) {
    "use strict";
    var scope = {
      parse: {
        prelude() {
          return this.createSingleNodeList(
            this.Scope()
          );
        },
        block(nested = false) {
          return this.Block(nested);
        }
      }
    };
    module.exports = scope;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/starting-style.cjs
var require_starting_style = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/starting-style.cjs"(exports, module) {
    "use strict";
    var startingStyle = {
      parse: {
        prelude: null,
        block(nested = false) {
          return this.Block(nested);
        }
      }
    };
    module.exports = startingStyle;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/supports.cjs
var require_supports = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/supports.cjs"(exports, module) {
    "use strict";
    var supports = {
      parse: {
        prelude() {
          return this.createSingleNodeList(
            this.Condition("supports")
          );
        },
        block(nested = false) {
          return this.Block(nested);
        }
      }
    };
    module.exports = supports;
  }
});

// node_modules/css-tree/cjs/syntax/atrule/index.cjs
var require_atrule = __commonJS({
  "node_modules/css-tree/cjs/syntax/atrule/index.cjs"(exports, module) {
    "use strict";
    var container = require_container();
    var fontFace = require_font_face();
    var _import = require_import();
    var layer = require_layer();
    var media = require_media();
    var nest = require_nest();
    var page = require_page();
    var scope = require_scope2();
    var startingStyle = require_starting_style();
    var supports = require_supports();
    var atrule = {
      container,
      "font-face": fontFace,
      import: _import,
      layer,
      media,
      nest,
      page,
      scope,
      "starting-style": startingStyle,
      supports
    };
    module.exports = atrule;
  }
});

// node_modules/css-tree/cjs/syntax/pseudo/lang.cjs
var require_lang = __commonJS({
  "node_modules/css-tree/cjs/syntax/pseudo/lang.cjs"(exports) {
    "use strict";
    var types = require_types2();
    function parseLanguageRangeList() {
      const children = this.createList();
      this.skipSC();
      loop: while (!this.eof) {
        switch (this.tokenType) {
          case types.Ident:
            children.push(this.Identifier());
            break;
          case types.String:
            children.push(this.String());
            break;
          case types.Comma:
            children.push(this.Operator());
            break;
          case types.RightParenthesis:
            break loop;
          default:
            this.error("Identifier, string or comma is expected");
        }
        this.skipSC();
      }
      return children;
    }
    exports.parseLanguageRangeList = parseLanguageRangeList;
  }
});

// node_modules/css-tree/cjs/syntax/pseudo/index.cjs
var require_pseudo = __commonJS({
  "node_modules/css-tree/cjs/syntax/pseudo/index.cjs"(exports, module) {
    "use strict";
    var lang = require_lang();
    var selectorList = {
      parse() {
        return this.createSingleNodeList(
          this.SelectorList()
        );
      }
    };
    var selector = {
      parse() {
        return this.createSingleNodeList(
          this.Selector()
        );
      }
    };
    var identList = {
      parse() {
        return this.createSingleNodeList(
          this.Identifier()
        );
      }
    };
    var langList = {
      parse: lang.parseLanguageRangeList
    };
    var nth = {
      parse() {
        return this.createSingleNodeList(
          this.Nth()
        );
      }
    };
    var pseudo = {
      "dir": identList,
      "has": selectorList,
      "lang": langList,
      "matches": selectorList,
      "is": selectorList,
      "-moz-any": selectorList,
      "-webkit-any": selectorList,
      "where": selectorList,
      "not": selectorList,
      "nth-child": nth,
      "nth-last-child": nth,
      "nth-last-of-type": nth,
      "nth-of-type": nth,
      "slotted": selector,
      "host": selector,
      "host-context": selector
    };
    module.exports = pseudo;
  }
});

// node_modules/css-tree/cjs/syntax/node/index-parse.cjs
var require_index_parse = __commonJS({
  "node_modules/css-tree/cjs/syntax/node/index-parse.cjs"(exports) {
    "use strict";
    var AnPlusB = require_AnPlusB();
    var Atrule = require_Atrule();
    var AtrulePrelude = require_AtrulePrelude();
    var AttributeSelector = require_AttributeSelector();
    var Block = require_Block();
    var Brackets = require_Brackets();
    var CDC = require_CDC();
    var CDO = require_CDO();
    var ClassSelector = require_ClassSelector();
    var Combinator = require_Combinator();
    var Comment = require_Comment();
    var Condition = require_Condition();
    var Declaration = require_Declaration();
    var DeclarationList = require_DeclarationList();
    var Dimension = require_Dimension();
    var Feature = require_Feature();
    var FeatureFunction = require_FeatureFunction();
    var FeatureRange = require_FeatureRange();
    var Function2 = require_Function();
    var GeneralEnclosed = require_GeneralEnclosed();
    var Hash = require_Hash();
    var Identifier = require_Identifier();
    var IdSelector = require_IdSelector();
    var Layer = require_Layer();
    var LayerList = require_LayerList();
    var MediaQuery = require_MediaQuery();
    var MediaQueryList = require_MediaQueryList();
    var NestingSelector = require_NestingSelector();
    var Nth = require_Nth();
    var Number2 = require_Number();
    var Operator = require_Operator();
    var Parentheses = require_Parentheses();
    var Percentage = require_Percentage();
    var PseudoClassSelector = require_PseudoClassSelector();
    var PseudoElementSelector = require_PseudoElementSelector();
    var Ratio = require_Ratio();
    var Raw = require_Raw();
    var Rule = require_Rule();
    var Scope = require_Scope();
    var Selector = require_Selector();
    var SelectorList = require_SelectorList();
    var String2 = require_String();
    var StyleSheet = require_StyleSheet();
    var SupportsDeclaration = require_SupportsDeclaration();
    var TypeSelector = require_TypeSelector();
    var UnicodeRange = require_UnicodeRange();
    var Url = require_Url();
    var Value = require_Value();
    var WhiteSpace = require_WhiteSpace();
    exports.AnPlusB = AnPlusB.parse;
    exports.Atrule = Atrule.parse;
    exports.AtrulePrelude = AtrulePrelude.parse;
    exports.AttributeSelector = AttributeSelector.parse;
    exports.Block = Block.parse;
    exports.Brackets = Brackets.parse;
    exports.CDC = CDC.parse;
    exports.CDO = CDO.parse;
    exports.ClassSelector = ClassSelector.parse;
    exports.Combinator = Combinator.parse;
    exports.Comment = Comment.parse;
    exports.Condition = Condition.parse;
    exports.Declaration = Declaration.parse;
    exports.DeclarationList = DeclarationList.parse;
    exports.Dimension = Dimension.parse;
    exports.Feature = Feature.parse;
    exports.FeatureFunction = FeatureFunction.parse;
    exports.FeatureRange = FeatureRange.parse;
    exports.Function = Function2.parse;
    exports.GeneralEnclosed = GeneralEnclosed.parse;
    exports.Hash = Hash.parse;
    exports.Identifier = Identifier.parse;
    exports.IdSelector = IdSelector.parse;
    exports.Layer = Layer.parse;
    exports.LayerList = LayerList.parse;
    exports.MediaQuery = MediaQuery.parse;
    exports.MediaQueryList = MediaQueryList.parse;
    exports.NestingSelector = NestingSelector.parse;
    exports.Nth = Nth.parse;
    exports.Number = Number2.parse;
    exports.Operator = Operator.parse;
    exports.Parentheses = Parentheses.parse;
    exports.Percentage = Percentage.parse;
    exports.PseudoClassSelector = PseudoClassSelector.parse;
    exports.PseudoElementSelector = PseudoElementSelector.parse;
    exports.Ratio = Ratio.parse;
    exports.Raw = Raw.parse;
    exports.Rule = Rule.parse;
    exports.Scope = Scope.parse;
    exports.Selector = Selector.parse;
    exports.SelectorList = SelectorList.parse;
    exports.String = String2.parse;
    exports.StyleSheet = StyleSheet.parse;
    exports.SupportsDeclaration = SupportsDeclaration.parse;
    exports.TypeSelector = TypeSelector.parse;
    exports.UnicodeRange = UnicodeRange.parse;
    exports.Url = Url.parse;
    exports.Value = Value.parse;
    exports.WhiteSpace = WhiteSpace.parse;
  }
});

// node_modules/css-tree/cjs/syntax/config/parser.cjs
var require_parser2 = __commonJS({
  "node_modules/css-tree/cjs/syntax/config/parser.cjs"(exports, module) {
    "use strict";
    var index = require_scope();
    var index$1 = require_atrule();
    var index$2 = require_pseudo();
    var indexParse = require_index_parse();
    var config = {
      parseContext: {
        default: "StyleSheet",
        stylesheet: "StyleSheet",
        atrule: "Atrule",
        atrulePrelude(options) {
          return this.AtrulePrelude(options.atrule ? String(options.atrule) : null);
        },
        mediaQueryList: "MediaQueryList",
        mediaQuery: "MediaQuery",
        condition(options) {
          return this.Condition(options.kind);
        },
        rule: "Rule",
        selectorList: "SelectorList",
        selector: "Selector",
        block() {
          return this.Block(true);
        },
        declarationList: "DeclarationList",
        declaration: "Declaration",
        value: "Value"
      },
      features: {
        supports: {
          selector() {
            return this.Selector();
          }
        },
        container: {
          style() {
            return this.Declaration();
          }
        }
      },
      scope: index,
      atrule: index$1,
      pseudo: index$2,
      node: indexParse
    };
    module.exports = config;
  }
});

// node_modules/css-tree/cjs/syntax/config/walker.cjs
var require_walker = __commonJS({
  "node_modules/css-tree/cjs/syntax/config/walker.cjs"(exports, module) {
    "use strict";
    var index = require_node2();
    var config = {
      node: index
    };
    module.exports = config;
  }
});

// node_modules/css-tree/cjs/syntax/index.cjs
var require_syntax = __commonJS({
  "node_modules/css-tree/cjs/syntax/index.cjs"(exports, module) {
    "use strict";
    var create = require_create5();
    var lexer = require_lexer();
    var parser = require_parser2();
    var walker = require_walker();
    var syntax = create({
      ...lexer,
      ...parser,
      ...walker
    });
    module.exports = syntax;
  }
});

// node_modules/css-tree/dist/version.cjs
var require_version = __commonJS({
  "node_modules/css-tree/dist/version.cjs"(exports, module) {
    module.exports = "3.0.0";
  }
});

// node_modules/css-tree/cjs/definition-syntax/index.cjs
var require_definition_syntax = __commonJS({
  "node_modules/css-tree/cjs/definition-syntax/index.cjs"(exports) {
    "use strict";
    var SyntaxError2 = require_SyntaxError2();
    var generate = require_generate();
    var parse = require_parse3();
    var walk = require_walk();
    exports.SyntaxError = SyntaxError2.SyntaxError;
    exports.generate = generate.generate;
    exports.parse = parse.parse;
    exports.walk = walk.walk;
  }
});

// node_modules/css-tree/cjs/utils/clone.cjs
var require_clone = __commonJS({
  "node_modules/css-tree/cjs/utils/clone.cjs"(exports) {
    "use strict";
    var List = require_List();
    function clone(node) {
      const result = {};
      for (const key of Object.keys(node)) {
        let value = node[key];
        if (value) {
          if (Array.isArray(value) || value instanceof List.List) {
            value = value.map(clone);
          } else if (value.constructor === Object) {
            value = clone(value);
          }
        }
        result[key] = value;
      }
      return result;
    }
    exports.clone = clone;
  }
});

// node_modules/css-tree/cjs/utils/ident.cjs
var require_ident = __commonJS({
  "node_modules/css-tree/cjs/utils/ident.cjs"(exports) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions();
    var utils = require_utils();
    var REVERSE_SOLIDUS = 92;
    function decode(str) {
      const end = str.length - 1;
      let decoded = "";
      for (let i = 0; i < str.length; i++) {
        let code = str.charCodeAt(i);
        if (code === REVERSE_SOLIDUS) {
          if (i === end) {
            break;
          }
          code = str.charCodeAt(++i);
          if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {
            const escapeStart = i - 1;
            const escapeEnd = utils.consumeEscaped(str, escapeStart);
            i = escapeEnd - 1;
            decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));
          } else {
            if (code === 13 && str.charCodeAt(i + 1) === 10) {
              i++;
            }
          }
        } else {
          decoded += str[i];
        }
      }
      return decoded;
    }
    function encode(str) {
      let encoded = "";
      if (str.length === 1 && str.charCodeAt(0) === 45) {
        return "\\-";
      }
      for (let i = 0; i < str.length; i++) {
        const code = str.charCodeAt(i);
        if (code === 0) {
          encoded += "\uFFFD";
          continue;
        }
        if (
          // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F ...
          // Note: Do not compare with 0x0001 since 0x0000 is precessed before
          code <= 31 || code === 127 || // [or] ... is in the range [0-9] (U+0030 to U+0039),
          code >= 48 && code <= 57 && // If the character is the first character ...
          (i === 0 || // If the character is the second character ... and the first character is a "-" (U+002D)
          i === 1 && str.charCodeAt(0) === 45)
        ) {
          encoded += "\\" + code.toString(16) + " ";
          continue;
        }
        if (charCodeDefinitions.isName(code)) {
          encoded += str.charAt(i);
        } else {
          encoded += "\\" + str.charAt(i);
        }
      }
      return encoded;
    }
    exports.decode = decode;
    exports.encode = encode;
  }
});

// node_modules/css-tree/cjs/index.cjs
var require_cjs = __commonJS({
  "node_modules/css-tree/cjs/index.cjs"(exports) {
    "use strict";
    var index$1 = require_syntax();
    var version = require_version();
    var create = require_create5();
    var List = require_List();
    var Lexer = require_Lexer();
    var index = require_definition_syntax();
    var clone = require_clone();
    var names$1 = require_names2();
    var ident = require_ident();
    var string = require_string();
    var url = require_url();
    var types = require_types2();
    var names = require_names();
    var TokenStream = require_TokenStream();
    var {
      tokenize,
      parse,
      generate,
      lexer,
      createLexer,
      walk,
      find,
      findLast,
      findAll,
      toPlainObject,
      fromPlainObject,
      fork
    } = index$1;
    exports.version = version.version;
    exports.createSyntax = create;
    exports.List = List.List;
    exports.Lexer = Lexer.Lexer;
    exports.definitionSyntax = index;
    exports.clone = clone.clone;
    exports.isCustomProperty = names$1.isCustomProperty;
    exports.keyword = names$1.keyword;
    exports.property = names$1.property;
    exports.vendorPrefix = names$1.vendorPrefix;
    exports.ident = ident;
    exports.string = string;
    exports.url = url;
    exports.tokenTypes = types;
    exports.tokenNames = names;
    exports.TokenStream = TokenStream.TokenStream;
    exports.createLexer = createLexer;
    exports.find = find;
    exports.findAll = findAll;
    exports.findLast = findLast;
    exports.fork = fork;
    exports.fromPlainObject = fromPlainObject;
    exports.generate = generate;
    exports.lexer = lexer;
    exports.parse = parse;
    exports.toPlainObject = toPlainObject;
    exports.tokenize = tokenize;
    exports.walk = walk;
  }
});

// node_modules/csso/dist/version.cjs
var require_version2 = __commonJS({
  "node_modules/csso/dist/version.cjs"(exports, module) {
    module.exports = "5.0.5";
  }
});

// node_modules/csso/node_modules/css-tree/cjs/tokenizer/types.cjs
var require_types3 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/types.cjs"(exports) {
    "use strict";
    var EOF = 0;
    var Ident = 1;
    var Function2 = 2;
    var AtKeyword = 3;
    var Hash = 4;
    var String2 = 5;
    var BadString = 6;
    var Url = 7;
    var BadUrl = 8;
    var Delim = 9;
    var Number2 = 10;
    var Percentage = 11;
    var Dimension = 12;
    var WhiteSpace = 13;
    var CDO = 14;
    var CDC = 15;
    var Colon = 16;
    var Semicolon = 17;
    var Comma = 18;
    var LeftSquareBracket = 19;
    var RightSquareBracket = 20;
    var LeftParenthesis = 21;
    var RightParenthesis = 22;
    var LeftCurlyBracket = 23;
    var RightCurlyBracket = 24;
    var Comment = 25;
    exports.AtKeyword = AtKeyword;
    exports.BadString = BadString;
    exports.BadUrl = BadUrl;
    exports.CDC = CDC;
    exports.CDO = CDO;
    exports.Colon = Colon;
    exports.Comma = Comma;
    exports.Comment = Comment;
    exports.Delim = Delim;
    exports.Dimension = Dimension;
    exports.EOF = EOF;
    exports.Function = Function2;
    exports.Hash = Hash;
    exports.Ident = Ident;
    exports.LeftCurlyBracket = LeftCurlyBracket;
    exports.LeftParenthesis = LeftParenthesis;
    exports.LeftSquareBracket = LeftSquareBracket;
    exports.Number = Number2;
    exports.Percentage = Percentage;
    exports.RightCurlyBracket = RightCurlyBracket;
    exports.RightParenthesis = RightParenthesis;
    exports.RightSquareBracket = RightSquareBracket;
    exports.Semicolon = Semicolon;
    exports.String = String2;
    exports.Url = Url;
    exports.WhiteSpace = WhiteSpace;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs
var require_char_code_definitions2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs"(exports) {
    "use strict";
    var EOF = 0;
    function isDigit(code) {
      return code >= 48 && code <= 57;
    }
    function isHexDigit(code) {
      return isDigit(code) || // 0 .. 9
      code >= 65 && code <= 70 || // A .. F
      code >= 97 && code <= 102;
    }
    function isUppercaseLetter(code) {
      return code >= 65 && code <= 90;
    }
    function isLowercaseLetter(code) {
      return code >= 97 && code <= 122;
    }
    function isLetter(code) {
      return isUppercaseLetter(code) || isLowercaseLetter(code);
    }
    function isNonAscii(code) {
      return code >= 128;
    }
    function isNameStart(code) {
      return isLetter(code) || isNonAscii(code) || code === 95;
    }
    function isName(code) {
      return isNameStart(code) || isDigit(code) || code === 45;
    }
    function isNonPrintable(code) {
      return code >= 0 && code <= 8 || code === 11 || code >= 14 && code <= 31 || code === 127;
    }
    function isNewline(code) {
      return code === 10 || code === 13 || code === 12;
    }
    function isWhiteSpace(code) {
      return isNewline(code) || code === 32 || code === 9;
    }
    function isValidEscape(first, second) {
      if (first !== 92) {
        return false;
      }
      if (isNewline(second) || second === EOF) {
        return false;
      }
      return true;
    }
    function isIdentifierStart(first, second, third) {
      if (first === 45) {
        return isNameStart(second) || second === 45 || isValidEscape(second, third);
      }
      if (isNameStart(first)) {
        return true;
      }
      if (first === 92) {
        return isValidEscape(first, second);
      }
      return false;
    }
    function isNumberStart(first, second, third) {
      if (first === 43 || first === 45) {
        if (isDigit(second)) {
          return 2;
        }
        return second === 46 && isDigit(third) ? 3 : 0;
      }
      if (first === 46) {
        return isDigit(second) ? 2 : 0;
      }
      if (isDigit(first)) {
        return 1;
      }
      return 0;
    }
    function isBOM(code) {
      if (code === 65279) {
        return 1;
      }
      if (code === 65534) {
        return 1;
      }
      return 0;
    }
    var CATEGORY = new Array(128);
    var EofCategory = 128;
    var WhiteSpaceCategory = 130;
    var DigitCategory = 131;
    var NameStartCategory = 132;
    var NonPrintableCategory = 133;
    for (let i = 0; i < CATEGORY.length; i++) {
      CATEGORY[i] = isWhiteSpace(i) && WhiteSpaceCategory || isDigit(i) && DigitCategory || isNameStart(i) && NameStartCategory || isNonPrintable(i) && NonPrintableCategory || i || EofCategory;
    }
    function charCodeCategory(code) {
      return code < 128 ? CATEGORY[code] : NameStartCategory;
    }
    exports.DigitCategory = DigitCategory;
    exports.EofCategory = EofCategory;
    exports.NameStartCategory = NameStartCategory;
    exports.NonPrintableCategory = NonPrintableCategory;
    exports.WhiteSpaceCategory = WhiteSpaceCategory;
    exports.charCodeCategory = charCodeCategory;
    exports.isBOM = isBOM;
    exports.isDigit = isDigit;
    exports.isHexDigit = isHexDigit;
    exports.isIdentifierStart = isIdentifierStart;
    exports.isLetter = isLetter;
    exports.isLowercaseLetter = isLowercaseLetter;
    exports.isName = isName;
    exports.isNameStart = isNameStart;
    exports.isNewline = isNewline;
    exports.isNonAscii = isNonAscii;
    exports.isNonPrintable = isNonPrintable;
    exports.isNumberStart = isNumberStart;
    exports.isUppercaseLetter = isUppercaseLetter;
    exports.isValidEscape = isValidEscape;
    exports.isWhiteSpace = isWhiteSpace;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/tokenizer/utils.cjs
var require_utils2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/utils.cjs"(exports) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions2();
    function getCharCode(source, offset) {
      return offset < source.length ? source.charCodeAt(offset) : 0;
    }
    function getNewlineLength(source, offset, code) {
      if (code === 13 && getCharCode(source, offset + 1) === 10) {
        return 2;
      }
      return 1;
    }
    function cmpChar(testStr, offset, referenceCode) {
      let code = testStr.charCodeAt(offset);
      if (charCodeDefinitions.isUppercaseLetter(code)) {
        code = code | 32;
      }
      return code === referenceCode;
    }
    function cmpStr(testStr, start, end, referenceStr) {
      if (end - start !== referenceStr.length) {
        return false;
      }
      if (start < 0 || end > testStr.length) {
        return false;
      }
      for (let i = start; i < end; i++) {
        const referenceCode = referenceStr.charCodeAt(i - start);
        let testCode = testStr.charCodeAt(i);
        if (charCodeDefinitions.isUppercaseLetter(testCode)) {
          testCode = testCode | 32;
        }
        if (testCode !== referenceCode) {
          return false;
        }
      }
      return true;
    }
    function findWhiteSpaceStart(source, offset) {
      for (; offset >= 0; offset--) {
        if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) {
          break;
        }
      }
      return offset + 1;
    }
    function findWhiteSpaceEnd(source, offset) {
      for (; offset < source.length; offset++) {
        if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) {
          break;
        }
      }
      return offset;
    }
    function findDecimalNumberEnd(source, offset) {
      for (; offset < source.length; offset++) {
        if (!charCodeDefinitions.isDigit(source.charCodeAt(offset))) {
          break;
        }
      }
      return offset;
    }
    function consumeEscaped(source, offset) {
      offset += 2;
      if (charCodeDefinitions.isHexDigit(getCharCode(source, offset - 1))) {
        for (const maxOffset = Math.min(source.length, offset + 5); offset < maxOffset; offset++) {
          if (!charCodeDefinitions.isHexDigit(getCharCode(source, offset))) {
            break;
          }
        }
        const code = getCharCode(source, offset);
        if (charCodeDefinitions.isWhiteSpace(code)) {
          offset += getNewlineLength(source, offset, code);
        }
      }
      return offset;
    }
    function consumeName(source, offset) {
      for (; offset < source.length; offset++) {
        const code = source.charCodeAt(offset);
        if (charCodeDefinitions.isName(code)) {
          continue;
        }
        if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) {
          offset = consumeEscaped(source, offset) - 1;
          continue;
        }
        break;
      }
      return offset;
    }
    function consumeNumber(source, offset) {
      let code = source.charCodeAt(offset);
      if (code === 43 || code === 45) {
        code = source.charCodeAt(offset += 1);
      }
      if (charCodeDefinitions.isDigit(code)) {
        offset = findDecimalNumberEnd(source, offset + 1);
        code = source.charCodeAt(offset);
      }
      if (code === 46 && charCodeDefinitions.isDigit(source.charCodeAt(offset + 1))) {
        offset += 2;
        offset = findDecimalNumberEnd(source, offset);
      }
      if (cmpChar(
        source,
        offset,
        101
        /* e */
      )) {
        let sign = 0;
        code = source.charCodeAt(offset + 1);
        if (code === 45 || code === 43) {
          sign = 1;
          code = source.charCodeAt(offset + 2);
        }
        if (charCodeDefinitions.isDigit(code)) {
          offset = findDecimalNumberEnd(source, offset + 1 + sign + 1);
        }
      }
      return offset;
    }
    function consumeBadUrlRemnants(source, offset) {
      for (; offset < source.length; offset++) {
        const code = source.charCodeAt(offset);
        if (code === 41) {
          offset++;
          break;
        }
        if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) {
          offset = consumeEscaped(source, offset);
        }
      }
      return offset;
    }
    function decodeEscaped(escaped) {
      if (escaped.length === 1 && !charCodeDefinitions.isHexDigit(escaped.charCodeAt(0))) {
        return escaped[0];
      }
      let code = parseInt(escaped, 16);
      if (code === 0 || // If this number is zero,
      code >= 55296 && code <= 57343 || // or is for a surrogate,
      code > 1114111) {
        code = 65533;
      }
      return String.fromCodePoint(code);
    }
    exports.cmpChar = cmpChar;
    exports.cmpStr = cmpStr;
    exports.consumeBadUrlRemnants = consumeBadUrlRemnants;
    exports.consumeEscaped = consumeEscaped;
    exports.consumeName = consumeName;
    exports.consumeNumber = consumeNumber;
    exports.decodeEscaped = decodeEscaped;
    exports.findDecimalNumberEnd = findDecimalNumberEnd;
    exports.findWhiteSpaceEnd = findWhiteSpaceEnd;
    exports.findWhiteSpaceStart = findWhiteSpaceStart;
    exports.getNewlineLength = getNewlineLength;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/tokenizer/names.cjs
var require_names3 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/names.cjs"(exports, module) {
    "use strict";
    var tokenNames = [
      "EOF-token",
      "ident-token",
      "function-token",
      "at-keyword-token",
      "hash-token",
      "string-token",
      "bad-string-token",
      "url-token",
      "bad-url-token",
      "delim-token",
      "number-token",
      "percentage-token",
      "dimension-token",
      "whitespace-token",
      "CDO-token",
      "CDC-token",
      "colon-token",
      "semicolon-token",
      "comma-token",
      "[-token",
      "]-token",
      "(-token",
      ")-token",
      "{-token",
      "}-token"
    ];
    module.exports = tokenNames;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs
var require_adopt_buffer2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs"(exports) {
    "use strict";
    var MIN_SIZE = 16 * 1024;
    function adoptBuffer(buffer = null, size) {
      if (buffer === null || buffer.length < size) {
        return new Uint32Array(Math.max(size + 1024, MIN_SIZE));
      }
      return buffer;
    }
    exports.adoptBuffer = adoptBuffer;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs
var require_OffsetToLocation2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs"(exports) {
    "use strict";
    var adoptBuffer = require_adopt_buffer2();
    var charCodeDefinitions = require_char_code_definitions2();
    var N = 10;
    var F = 12;
    var R = 13;
    function computeLinesAndColumns(host) {
      const source = host.source;
      const sourceLength = source.length;
      const startOffset = source.length > 0 ? charCodeDefinitions.isBOM(source.charCodeAt(0)) : 0;
      const lines = adoptBuffer.adoptBuffer(host.lines, sourceLength);
      const columns = adoptBuffer.adoptBuffer(host.columns, sourceLength);
      let line = host.startLine;
      let column = host.startColumn;
      for (let i = startOffset; i < sourceLength; i++) {
        const code = source.charCodeAt(i);
        lines[i] = line;
        columns[i] = column++;
        if (code === N || code === R || code === F) {
          if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) {
            i++;
            lines[i] = line;
            columns[i] = column;
          }
          line++;
          column = 1;
        }
      }
      lines[sourceLength] = line;
      columns[sourceLength] = column;
      host.lines = lines;
      host.columns = columns;
      host.computed = true;
    }
    var OffsetToLocation = class {
      constructor() {
        this.lines = null;
        this.columns = null;
        this.computed = false;
      }
      setSource(source, startOffset = 0, startLine = 1, startColumn = 1) {
        this.source = source;
        this.startOffset = startOffset;
        this.startLine = startLine;
        this.startColumn = startColumn;
        this.computed = false;
      }
      getLocation(offset, filename) {
        if (!this.computed) {
          computeLinesAndColumns(this);
        }
        return {
          source: filename,
          offset: this.startOffset + offset,
          line: this.lines[offset],
          column: this.columns[offset]
        };
      }
      getLocationRange(start, end, filename) {
        if (!this.computed) {
          computeLinesAndColumns(this);
        }
        return {
          source: filename,
          start: {
            offset: this.startOffset + start,
            line: this.lines[start],
            column: this.columns[start]
          },
          end: {
            offset: this.startOffset + end,
            line: this.lines[end],
            column: this.columns[end]
          }
        };
      }
    };
    exports.OffsetToLocation = OffsetToLocation;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs
var require_TokenStream2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs"(exports) {
    "use strict";
    var adoptBuffer = require_adopt_buffer2();
    var utils = require_utils2();
    var names = require_names3();
    var types = require_types3();
    var OFFSET_MASK = 16777215;
    var TYPE_SHIFT = 24;
    var balancePair = /* @__PURE__ */ new Map([
      [types.Function, types.RightParenthesis],
      [types.LeftParenthesis, types.RightParenthesis],
      [types.LeftSquareBracket, types.RightSquareBracket],
      [types.LeftCurlyBracket, types.RightCurlyBracket]
    ]);
    var TokenStream = class {
      constructor(source, tokenize) {
        this.setSource(source, tokenize);
      }
      reset() {
        this.eof = false;
        this.tokenIndex = -1;
        this.tokenType = 0;
        this.tokenStart = this.firstCharOffset;
        this.tokenEnd = this.firstCharOffset;
      }
      setSource(source = "", tokenize = () => {
      }) {
        source = String(source || "");
        const sourceLength = source.length;
        const offsetAndType = adoptBuffer.adoptBuffer(this.offsetAndType, source.length + 1);
        const balance = adoptBuffer.adoptBuffer(this.balance, source.length + 1);
        let tokenCount = 0;
        let balanceCloseType = 0;
        let balanceStart = 0;
        let firstCharOffset = -1;
        this.offsetAndType = null;
        this.balance = null;
        tokenize(source, (type, start, end) => {
          switch (type) {
            default:
              balance[tokenCount] = sourceLength;
              break;
            case balanceCloseType: {
              let balancePrev = balanceStart & OFFSET_MASK;
              balanceStart = balance[balancePrev];
              balanceCloseType = balanceStart >> TYPE_SHIFT;
              balance[tokenCount] = balancePrev;
              balance[balancePrev++] = tokenCount;
              for (; balancePrev < tokenCount; balancePrev++) {
                if (balance[balancePrev] === sourceLength) {
                  balance[balancePrev] = tokenCount;
                }
              }
              break;
            }
            case types.LeftParenthesis:
            case types.Function:
            case types.LeftSquareBracket:
            case types.LeftCurlyBracket:
              balance[tokenCount] = balanceStart;
              balanceCloseType = balancePair.get(type);
              balanceStart = balanceCloseType << TYPE_SHIFT | tokenCount;
              break;
          }
          offsetAndType[tokenCount++] = type << TYPE_SHIFT | end;
          if (firstCharOffset === -1) {
            firstCharOffset = start;
          }
        });
        offsetAndType[tokenCount] = types.EOF << TYPE_SHIFT | sourceLength;
        balance[tokenCount] = sourceLength;
        balance[sourceLength] = sourceLength;
        while (balanceStart !== 0) {
          const balancePrev = balanceStart & OFFSET_MASK;
          balanceStart = balance[balancePrev];
          balance[balancePrev] = sourceLength;
        }
        this.source = source;
        this.firstCharOffset = firstCharOffset === -1 ? 0 : firstCharOffset;
        this.tokenCount = tokenCount;
        this.offsetAndType = offsetAndType;
        this.balance = balance;
        this.reset();
        this.next();
      }
      lookupType(offset) {
        offset += this.tokenIndex;
        if (offset < this.tokenCount) {
          return this.offsetAndType[offset] >> TYPE_SHIFT;
        }
        return types.EOF;
      }
      lookupOffset(offset) {
        offset += this.tokenIndex;
        if (offset < this.tokenCount) {
          return this.offsetAndType[offset - 1] & OFFSET_MASK;
        }
        return this.source.length;
      }
      lookupValue(offset, referenceStr) {
        offset += this.tokenIndex;
        if (offset < this.tokenCount) {
          return utils.cmpStr(
            this.source,
            this.offsetAndType[offset - 1] & OFFSET_MASK,
            this.offsetAndType[offset] & OFFSET_MASK,
            referenceStr
          );
        }
        return false;
      }
      getTokenStart(tokenIndex) {
        if (tokenIndex === this.tokenIndex) {
          return this.tokenStart;
        }
        if (tokenIndex > 0) {
          return tokenIndex < this.tokenCount ? this.offsetAndType[tokenIndex - 1] & OFFSET_MASK : this.offsetAndType[this.tokenCount] & OFFSET_MASK;
        }
        return this.firstCharOffset;
      }
      substrToCursor(start) {
        return this.source.substring(start, this.tokenStart);
      }
      isBalanceEdge(pos) {
        return this.balance[this.tokenIndex] < pos;
      }
      isDelim(code, offset) {
        if (offset) {
          return this.lookupType(offset) === types.Delim && this.source.charCodeAt(this.lookupOffset(offset)) === code;
        }
        return this.tokenType === types.Delim && this.source.charCodeAt(this.tokenStart) === code;
      }
      skip(tokenCount) {
        let next = this.tokenIndex + tokenCount;
        if (next < this.tokenCount) {
          this.tokenIndex = next;
          this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK;
          next = this.offsetAndType[next];
          this.tokenType = next >> TYPE_SHIFT;
          this.tokenEnd = next & OFFSET_MASK;
        } else {
          this.tokenIndex = this.tokenCount;
          this.next();
        }
      }
      next() {
        let next = this.tokenIndex + 1;
        if (next < this.tokenCount) {
          this.tokenIndex = next;
          this.tokenStart = this.tokenEnd;
          next = this.offsetAndType[next];
          this.tokenType = next >> TYPE_SHIFT;
          this.tokenEnd = next & OFFSET_MASK;
        } else {
          this.eof = true;
          this.tokenIndex = this.tokenCount;
          this.tokenType = types.EOF;
          this.tokenStart = this.tokenEnd = this.source.length;
        }
      }
      skipSC() {
        while (this.tokenType === types.WhiteSpace || this.tokenType === types.Comment) {
          this.next();
        }
      }
      skipUntilBalanced(startToken, stopConsume) {
        let cursor = startToken;
        let balanceEnd;
        let offset;
        loop:
          for (; cursor < this.tokenCount; cursor++) {
            balanceEnd = this.balance[cursor];
            if (balanceEnd < startToken) {
              break loop;
            }
            offset = cursor > 0 ? this.offsetAndType[cursor - 1] & OFFSET_MASK : this.firstCharOffset;
            switch (stopConsume(this.source.charCodeAt(offset))) {
              case 1:
                break loop;
              case 2:
                cursor++;
                break loop;
              default:
                if (this.balance[balanceEnd] === cursor) {
                  cursor = balanceEnd;
                }
            }
          }
        this.skip(cursor - this.tokenIndex);
      }
      forEachToken(fn) {
        for (let i = 0, offset = this.firstCharOffset; i < this.tokenCount; i++) {
          const start = offset;
          const item = this.offsetAndType[i];
          const end = item & OFFSET_MASK;
          const type = item >> TYPE_SHIFT;
          offset = end;
          fn(type, start, end, i);
        }
      }
      dump() {
        const tokens = new Array(this.tokenCount);
        this.forEachToken((type, start, end, index) => {
          tokens[index] = {
            idx: index,
            type: names[type],
            chunk: this.source.substring(start, end),
            balance: this.balance[index]
          };
        });
        return tokens;
      }
    };
    exports.TokenStream = TokenStream;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/tokenizer/index.cjs
var require_tokenizer3 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/index.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var charCodeDefinitions = require_char_code_definitions2();
    var utils = require_utils2();
    var names = require_names3();
    var OffsetToLocation = require_OffsetToLocation2();
    var TokenStream = require_TokenStream2();
    function tokenize(source, onToken) {
      function getCharCode(offset2) {
        return offset2 < sourceLength ? source.charCodeAt(offset2) : 0;
      }
      function consumeNumericToken() {
        offset = utils.consumeNumber(source, offset);
        if (charCodeDefinitions.isIdentifierStart(getCharCode(offset), getCharCode(offset + 1), getCharCode(offset + 2))) {
          type = types.Dimension;
          offset = utils.consumeName(source, offset);
          return;
        }
        if (getCharCode(offset) === 37) {
          type = types.Percentage;
          offset++;
          return;
        }
        type = types.Number;
      }
      function consumeIdentLikeToken() {
        const nameStartOffset = offset;
        offset = utils.consumeName(source, offset);
        if (utils.cmpStr(source, nameStartOffset, offset, "url") && getCharCode(offset) === 40) {
          offset = utils.findWhiteSpaceEnd(source, offset + 1);
          if (getCharCode(offset) === 34 || getCharCode(offset) === 39) {
            type = types.Function;
            offset = nameStartOffset + 4;
            return;
          }
          consumeUrlToken();
          return;
        }
        if (getCharCode(offset) === 40) {
          type = types.Function;
          offset++;
          return;
        }
        type = types.Ident;
      }
      function consumeStringToken(endingCodePoint) {
        if (!endingCodePoint) {
          endingCodePoint = getCharCode(offset++);
        }
        type = types.String;
        for (; offset < source.length; offset++) {
          const code = source.charCodeAt(offset);
          switch (charCodeDefinitions.charCodeCategory(code)) {
            // ending code point
            case endingCodePoint:
              offset++;
              return;
            // EOF
            // case EofCategory:
            // This is a parse error. Return the <string-token>.
            // return;
            // newline
            case charCodeDefinitions.WhiteSpaceCategory:
              if (charCodeDefinitions.isNewline(code)) {
                offset += utils.getNewlineLength(source, offset, code);
                type = types.BadString;
                return;
              }
              break;
            // U+005C REVERSE SOLIDUS (\)
            case 92:
              if (offset === source.length - 1) {
                break;
              }
              const nextCode = getCharCode(offset + 1);
              if (charCodeDefinitions.isNewline(nextCode)) {
                offset += utils.getNewlineLength(source, offset + 1, nextCode);
              } else if (charCodeDefinitions.isValidEscape(code, nextCode)) {
                offset = utils.consumeEscaped(source, offset) - 1;
              }
              break;
          }
        }
      }
      function consumeUrlToken() {
        type = types.Url;
        offset = utils.findWhiteSpaceEnd(source, offset);
        for (; offset < source.length; offset++) {
          const code = source.charCodeAt(offset);
          switch (charCodeDefinitions.charCodeCategory(code)) {
            // U+0029 RIGHT PARENTHESIS ())
            case 41:
              offset++;
              return;
            // EOF
            // case EofCategory:
            // This is a parse error. Return the <url-token>.
            // return;
            // whitespace
            case charCodeDefinitions.WhiteSpaceCategory:
              offset = utils.findWhiteSpaceEnd(source, offset);
              if (getCharCode(offset) === 41 || offset >= source.length) {
                if (offset < source.length) {
                  offset++;
                }
                return;
              }
              offset = utils.consumeBadUrlRemnants(source, offset);
              type = types.BadUrl;
              return;
            // U+0022 QUOTATION MARK (")
            // U+0027 APOSTROPHE (')
            // U+0028 LEFT PARENTHESIS (()
            // non-printable code point
            case 34:
            case 39:
            case 40:
            case charCodeDefinitions.NonPrintableCategory:
              offset = utils.consumeBadUrlRemnants(source, offset);
              type = types.BadUrl;
              return;
            // U+005C REVERSE SOLIDUS (\)
            case 92:
              if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) {
                offset = utils.consumeEscaped(source, offset) - 1;
                break;
              }
              offset = utils.consumeBadUrlRemnants(source, offset);
              type = types.BadUrl;
              return;
          }
        }
      }
      source = String(source || "");
      const sourceLength = source.length;
      let start = charCodeDefinitions.isBOM(getCharCode(0));
      let offset = start;
      let type;
      while (offset < sourceLength) {
        const code = source.charCodeAt(offset);
        switch (charCodeDefinitions.charCodeCategory(code)) {
          // whitespace
          case charCodeDefinitions.WhiteSpaceCategory:
            type = types.WhiteSpace;
            offset = utils.findWhiteSpaceEnd(source, offset + 1);
            break;
          // U+0022 QUOTATION MARK (")
          case 34:
            consumeStringToken();
            break;
          // U+0023 NUMBER SIGN (#)
          case 35:
            if (charCodeDefinitions.isName(getCharCode(offset + 1)) || charCodeDefinitions.isValidEscape(getCharCode(offset + 1), getCharCode(offset + 2))) {
              type = types.Hash;
              offset = utils.consumeName(source, offset + 1);
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+0027 APOSTROPHE (')
          case 39:
            consumeStringToken();
            break;
          // U+0028 LEFT PARENTHESIS (()
          case 40:
            type = types.LeftParenthesis;
            offset++;
            break;
          // U+0029 RIGHT PARENTHESIS ())
          case 41:
            type = types.RightParenthesis;
            offset++;
            break;
          // U+002B PLUS SIGN (+)
          case 43:
            if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
              consumeNumericToken();
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+002C COMMA (,)
          case 44:
            type = types.Comma;
            offset++;
            break;
          // U+002D HYPHEN-MINUS (-)
          case 45:
            if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
              consumeNumericToken();
            } else {
              if (getCharCode(offset + 1) === 45 && getCharCode(offset + 2) === 62) {
                type = types.CDC;
                offset = offset + 3;
              } else {
                if (charCodeDefinitions.isIdentifierStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
                  consumeIdentLikeToken();
                } else {
                  type = types.Delim;
                  offset++;
                }
              }
            }
            break;
          // U+002E FULL STOP (.)
          case 46:
            if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {
              consumeNumericToken();
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+002F SOLIDUS (/)
          case 47:
            if (getCharCode(offset + 1) === 42) {
              type = types.Comment;
              offset = source.indexOf("*/", offset + 2);
              offset = offset === -1 ? source.length : offset + 2;
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+003A COLON (:)
          case 58:
            type = types.Colon;
            offset++;
            break;
          // U+003B SEMICOLON (;)
          case 59:
            type = types.Semicolon;
            offset++;
            break;
          // U+003C LESS-THAN SIGN (<)
          case 60:
            if (getCharCode(offset + 1) === 33 && getCharCode(offset + 2) === 45 && getCharCode(offset + 3) === 45) {
              type = types.CDO;
              offset = offset + 4;
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+0040 COMMERCIAL AT (@)
          case 64:
            if (charCodeDefinitions.isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) {
              type = types.AtKeyword;
              offset = utils.consumeName(source, offset + 1);
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+005B LEFT SQUARE BRACKET ([)
          case 91:
            type = types.LeftSquareBracket;
            offset++;
            break;
          // U+005C REVERSE SOLIDUS (\)
          case 92:
            if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) {
              consumeIdentLikeToken();
            } else {
              type = types.Delim;
              offset++;
            }
            break;
          // U+005D RIGHT SQUARE BRACKET (])
          case 93:
            type = types.RightSquareBracket;
            offset++;
            break;
          // U+007B LEFT CURLY BRACKET ({)
          case 123:
            type = types.LeftCurlyBracket;
            offset++;
            break;
          // U+007D RIGHT CURLY BRACKET (})
          case 125:
            type = types.RightCurlyBracket;
            offset++;
            break;
          // digit
          case charCodeDefinitions.DigitCategory:
            consumeNumericToken();
            break;
          // name-start code point
          case charCodeDefinitions.NameStartCategory:
            consumeIdentLikeToken();
            break;
          // EOF
          // case EofCategory:
          // Return an <EOF-token>.
          // break;
          // anything else
          default:
            type = types.Delim;
            offset++;
        }
        onToken(type, start, start = offset);
      }
    }
    exports.AtKeyword = types.AtKeyword;
    exports.BadString = types.BadString;
    exports.BadUrl = types.BadUrl;
    exports.CDC = types.CDC;
    exports.CDO = types.CDO;
    exports.Colon = types.Colon;
    exports.Comma = types.Comma;
    exports.Comment = types.Comment;
    exports.Delim = types.Delim;
    exports.Dimension = types.Dimension;
    exports.EOF = types.EOF;
    exports.Function = types.Function;
    exports.Hash = types.Hash;
    exports.Ident = types.Ident;
    exports.LeftCurlyBracket = types.LeftCurlyBracket;
    exports.LeftParenthesis = types.LeftParenthesis;
    exports.LeftSquareBracket = types.LeftSquareBracket;
    exports.Number = types.Number;
    exports.Percentage = types.Percentage;
    exports.RightCurlyBracket = types.RightCurlyBracket;
    exports.RightParenthesis = types.RightParenthesis;
    exports.RightSquareBracket = types.RightSquareBracket;
    exports.Semicolon = types.Semicolon;
    exports.String = types.String;
    exports.Url = types.Url;
    exports.WhiteSpace = types.WhiteSpace;
    exports.tokenTypes = types;
    exports.DigitCategory = charCodeDefinitions.DigitCategory;
    exports.EofCategory = charCodeDefinitions.EofCategory;
    exports.NameStartCategory = charCodeDefinitions.NameStartCategory;
    exports.NonPrintableCategory = charCodeDefinitions.NonPrintableCategory;
    exports.WhiteSpaceCategory = charCodeDefinitions.WhiteSpaceCategory;
    exports.charCodeCategory = charCodeDefinitions.charCodeCategory;
    exports.isBOM = charCodeDefinitions.isBOM;
    exports.isDigit = charCodeDefinitions.isDigit;
    exports.isHexDigit = charCodeDefinitions.isHexDigit;
    exports.isIdentifierStart = charCodeDefinitions.isIdentifierStart;
    exports.isLetter = charCodeDefinitions.isLetter;
    exports.isLowercaseLetter = charCodeDefinitions.isLowercaseLetter;
    exports.isName = charCodeDefinitions.isName;
    exports.isNameStart = charCodeDefinitions.isNameStart;
    exports.isNewline = charCodeDefinitions.isNewline;
    exports.isNonAscii = charCodeDefinitions.isNonAscii;
    exports.isNonPrintable = charCodeDefinitions.isNonPrintable;
    exports.isNumberStart = charCodeDefinitions.isNumberStart;
    exports.isUppercaseLetter = charCodeDefinitions.isUppercaseLetter;
    exports.isValidEscape = charCodeDefinitions.isValidEscape;
    exports.isWhiteSpace = charCodeDefinitions.isWhiteSpace;
    exports.cmpChar = utils.cmpChar;
    exports.cmpStr = utils.cmpStr;
    exports.consumeBadUrlRemnants = utils.consumeBadUrlRemnants;
    exports.consumeEscaped = utils.consumeEscaped;
    exports.consumeName = utils.consumeName;
    exports.consumeNumber = utils.consumeNumber;
    exports.decodeEscaped = utils.decodeEscaped;
    exports.findDecimalNumberEnd = utils.findDecimalNumberEnd;
    exports.findWhiteSpaceEnd = utils.findWhiteSpaceEnd;
    exports.findWhiteSpaceStart = utils.findWhiteSpaceStart;
    exports.getNewlineLength = utils.getNewlineLength;
    exports.tokenNames = names;
    exports.OffsetToLocation = OffsetToLocation.OffsetToLocation;
    exports.TokenStream = TokenStream.TokenStream;
    exports.tokenize = tokenize;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/utils/List.cjs
var require_List2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/utils/List.cjs"(exports) {
    "use strict";
    var releasedCursors = null;
    var List = class _List {
      static createItem(data) {
        return {
          prev: null,
          next: null,
          data
        };
      }
      constructor() {
        this.head = null;
        this.tail = null;
        this.cursor = null;
      }
      createItem(data) {
        return _List.createItem(data);
      }
      // cursor helpers
      allocateCursor(prev, next) {
        let cursor;
        if (releasedCursors !== null) {
          cursor = releasedCursors;
          releasedCursors = releasedCursors.cursor;
          cursor.prev = prev;
          cursor.next = next;
          cursor.cursor = this.cursor;
        } else {
          cursor = {
            prev,
            next,
            cursor: this.cursor
          };
        }
        this.cursor = cursor;
        return cursor;
      }
      releaseCursor() {
        const { cursor } = this;
        this.cursor = cursor.cursor;
        cursor.prev = null;
        cursor.next = null;
        cursor.cursor = releasedCursors;
        releasedCursors = cursor;
      }
      updateCursors(prevOld, prevNew, nextOld, nextNew) {
        let { cursor } = this;
        while (cursor !== null) {
          if (cursor.prev === prevOld) {
            cursor.prev = prevNew;
          }
          if (cursor.next === nextOld) {
            cursor.next = nextNew;
          }
          cursor = cursor.cursor;
        }
      }
      *[Symbol.iterator]() {
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          yield cursor.data;
        }
      }
      // getters
      get size() {
        let size = 0;
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          size++;
        }
        return size;
      }
      get isEmpty() {
        return this.head === null;
      }
      get first() {
        return this.head && this.head.data;
      }
      get last() {
        return this.tail && this.tail.data;
      }
      // convertors
      fromArray(array) {
        let cursor = null;
        this.head = null;
        for (let data of array) {
          const item = _List.createItem(data);
          if (cursor !== null) {
            cursor.next = item;
          } else {
            this.head = item;
          }
          item.prev = cursor;
          cursor = item;
        }
        this.tail = cursor;
        return this;
      }
      toArray() {
        return [...this];
      }
      toJSON() {
        return [...this];
      }
      // array-like methods
      forEach(fn, thisArg = this) {
        const cursor = this.allocateCursor(null, this.head);
        while (cursor.next !== null) {
          const item = cursor.next;
          cursor.next = item.next;
          fn.call(thisArg, item.data, item, this);
        }
        this.releaseCursor();
      }
      forEachRight(fn, thisArg = this) {
        const cursor = this.allocateCursor(this.tail, null);
        while (cursor.prev !== null) {
          const item = cursor.prev;
          cursor.prev = item.prev;
          fn.call(thisArg, item.data, item, this);
        }
        this.releaseCursor();
      }
      reduce(fn, initialValue, thisArg = this) {
        let cursor = this.allocateCursor(null, this.head);
        let acc = initialValue;
        let item;
        while (cursor.next !== null) {
          item = cursor.next;
          cursor.next = item.next;
          acc = fn.call(thisArg, acc, item.data, item, this);
        }
        this.releaseCursor();
        return acc;
      }
      reduceRight(fn, initialValue, thisArg = this) {
        let cursor = this.allocateCursor(this.tail, null);
        let acc = initialValue;
        let item;
        while (cursor.prev !== null) {
          item = cursor.prev;
          cursor.prev = item.prev;
          acc = fn.call(thisArg, acc, item.data, item, this);
        }
        this.releaseCursor();
        return acc;
      }
      some(fn, thisArg = this) {
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          if (fn.call(thisArg, cursor.data, cursor, this)) {
            return true;
          }
        }
        return false;
      }
      map(fn, thisArg = this) {
        const result = new _List();
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          result.appendData(fn.call(thisArg, cursor.data, cursor, this));
        }
        return result;
      }
      filter(fn, thisArg = this) {
        const result = new _List();
        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {
          if (fn.call(thisArg, cursor.data, cursor, this)) {
            result.appendData(cursor.data);
          }
        }
        return result;
      }
      nextUntil(start, fn, thisArg = this) {
        if (start === null) {
          return;
        }
        const cursor = this.allocateCursor(null, start);
        while (cursor.next !== null) {
          const item = cursor.next;
          cursor.next = item.next;
          if (fn.call(thisArg, item.data, item, this)) {
            break;
          }
        }
        this.releaseCursor();
      }
      prevUntil(start, fn, thisArg = this) {
        if (start === null) {
          return;
        }
        const cursor = this.allocateCursor(start, null);
        while (cursor.prev !== null) {
          const item = cursor.prev;
          cursor.prev = item.prev;
          if (fn.call(thisArg, item.data, item, this)) {
            break;
          }
        }
        this.releaseCursor();
      }
      // mutation
      clear() {
        this.head = null;
        this.tail = null;
      }
      copy() {
        const result = new _List();
        for (let data of this) {
          result.appendData(data);
        }
        return result;
      }
      prepend(item) {
        this.updateCursors(null, item, this.head, item);
        if (this.head !== null) {
          this.head.prev = item;
          item.next = this.head;
        } else {
          this.tail = item;
        }
        this.head = item;
        return this;
      }
      prependData(data) {
        return this.prepend(_List.createItem(data));
      }
      append(item) {
        return this.insert(item);
      }
      appendData(data) {
        return this.insert(_List.createItem(data));
      }
      insert(item, before = null) {
        if (before !== null) {
          this.updateCursors(before.prev, item, before, item);
          if (before.prev === null) {
            if (this.head !== before) {
              throw new Error("before doesn't belong to list");
            }
            this.head = item;
            before.prev = item;
            item.next = before;
            this.updateCursors(null, item);
          } else {
            before.prev.next = item;
            item.prev = before.prev;
            before.prev = item;
            item.next = before;
          }
        } else {
          this.updateCursors(this.tail, item, null, item);
          if (this.tail !== null) {
            this.tail.next = item;
            item.prev = this.tail;
          } else {
            this.head = item;
          }
          this.tail = item;
        }
        return this;
      }
      insertData(data, before) {
        return this.insert(_List.createItem(data), before);
      }
      remove(item) {
        this.updateCursors(item, item.prev, item, item.next);
        if (item.prev !== null) {
          item.prev.next = item.next;
        } else {
          if (this.head !== item) {
            throw new Error("item doesn't belong to list");
          }
          this.head = item.next;
        }
        if (item.next !== null) {
          item.next.prev = item.prev;
        } else {
          if (this.tail !== item) {
            throw new Error("item doesn't belong to list");
          }
          this.tail = item.prev;
        }
        item.prev = null;
        item.next = null;
        return item;
      }
      push(data) {
        this.insert(_List.createItem(data));
      }
      pop() {
        return this.tail !== null ? this.remove(this.tail) : null;
      }
      unshift(data) {
        this.prepend(_List.createItem(data));
      }
      shift() {
        return this.head !== null ? this.remove(this.head) : null;
      }
      prependList(list) {
        return this.insertList(list, this.head);
      }
      appendList(list) {
        return this.insertList(list);
      }
      insertList(list, before) {
        if (list.head === null) {
          return this;
        }
        if (before !== void 0 && before !== null) {
          this.updateCursors(before.prev, list.tail, before, list.head);
          if (before.prev !== null) {
            before.prev.next = list.head;
            list.head.prev = before.prev;
          } else {
            this.head = list.head;
          }
          before.prev = list.tail;
          list.tail.next = before;
        } else {
          this.updateCursors(this.tail, list.tail, null, list.head);
          if (this.tail !== null) {
            this.tail.next = list.head;
            list.head.prev = this.tail;
          } else {
            this.head = list.head;
          }
          this.tail = list.tail;
        }
        list.head = null;
        list.tail = null;
        return this;
      }
      replace(oldItem, newItemOrList) {
        if ("head" in newItemOrList) {
          this.insertList(newItemOrList, oldItem);
        } else {
          this.insert(newItemOrList, oldItem);
        }
        this.remove(oldItem);
      }
    };
    exports.List = List;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/utils/create-custom-error.cjs
var require_create_custom_error2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/utils/create-custom-error.cjs"(exports) {
    "use strict";
    function createCustomError(name, message) {
      const error = Object.create(SyntaxError.prototype);
      const errorStack = new Error();
      return Object.assign(error, {
        name,
        message,
        get stack() {
          return (errorStack.stack || "").replace(/^(.+\n){1,3}/, `${name}: ${message}
`);
        }
      });
    }
    exports.createCustomError = createCustomError;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/parser/SyntaxError.cjs
var require_SyntaxError3 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/parser/SyntaxError.cjs"(exports) {
    "use strict";
    var createCustomError = require_create_custom_error2();
    var MAX_LINE_LENGTH = 100;
    var OFFSET_CORRECTION = 60;
    var TAB_REPLACEMENT = "    ";
    function sourceFragment({ source, line, column }, extraLines) {
      function processLines(start, end) {
        return lines.slice(start, end).map(
          (line2, idx) => String(start + idx + 1).padStart(maxNumLength) + " |" + line2
        ).join("\n");
      }
      const lines = source.split(/\r\n?|\n|\f/);
      const startLine = Math.max(1, line - extraLines) - 1;
      const endLine = Math.min(line + extraLines, lines.length + 1);
      const maxNumLength = Math.max(4, String(endLine).length) + 1;
      let cutLeft = 0;
      column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\t/g) || []).length;
      if (column > MAX_LINE_LENGTH) {
        cutLeft = column - OFFSET_CORRECTION + 3;
        column = OFFSET_CORRECTION - 2;
      }
      for (let i = startLine; i <= endLine; i++) {
        if (i >= 0 && i < lines.length) {
          lines[i] = lines[i].replace(/\t/g, TAB_REPLACEMENT);
          lines[i] = (cutLeft > 0 && lines[i].length > cutLeft ? "\u2026" : "") + lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) + (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? "\u2026" : "");
        }
      }
      return [
        processLines(startLine, line),
        new Array(column + maxNumLength + 2).join("-") + "^",
        processLines(line, endLine)
      ].filter(Boolean).join("\n");
    }
    function SyntaxError2(message, source, offset, line, column) {
      const error = Object.assign(createCustomError.createCustomError("SyntaxError", message), {
        source,
        offset,
        line,
        column,
        sourceFragment(extraLines) {
          return sourceFragment({ source, line, column }, isNaN(extraLines) ? 0 : extraLines);
        },
        get formattedMessage() {
          return `Parse error: ${message}
` + sourceFragment({ source, line, column }, 2);
        }
      });
      return error;
    }
    exports.SyntaxError = SyntaxError2;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/parser/sequence.cjs
var require_sequence2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/parser/sequence.cjs"(exports) {
    "use strict";
    var types = require_types3();
    function readSequence(recognizer) {
      const children = this.createList();
      let space = false;
      const context = {
        recognizer
      };
      while (!this.eof) {
        switch (this.tokenType) {
          case types.Comment:
            this.next();
            continue;
          case types.WhiteSpace:
            space = true;
            this.next();
            continue;
        }
        let child = recognizer.getNode.call(this, context);
        if (child === void 0) {
          break;
        }
        if (space) {
          if (recognizer.onWhiteSpace) {
            recognizer.onWhiteSpace.call(this, child, children, context);
          }
          space = false;
        }
        children.push(child);
      }
      if (space && recognizer.onWhiteSpace) {
        recognizer.onWhiteSpace.call(this, null, children, context);
      }
      return children;
    }
    exports.readSequence = readSequence;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/parser/create.cjs
var require_create6 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/parser/create.cjs"(exports) {
    "use strict";
    var List = require_List2();
    var SyntaxError2 = require_SyntaxError3();
    var index = require_tokenizer3();
    var sequence = require_sequence2();
    var OffsetToLocation = require_OffsetToLocation2();
    var TokenStream = require_TokenStream2();
    var utils = require_utils2();
    var types = require_types3();
    var names = require_names3();
    var NOOP = () => {
    };
    var EXCLAMATIONMARK = 33;
    var NUMBERSIGN = 35;
    var SEMICOLON = 59;
    var LEFTCURLYBRACKET = 123;
    var NULL = 0;
    function createParseContext(name) {
      return function() {
        return this[name]();
      };
    }
    function fetchParseValues(dict) {
      const result = /* @__PURE__ */ Object.create(null);
      for (const name in dict) {
        const item = dict[name];
        const fn = item.parse || item;
        if (fn) {
          result[name] = fn;
        }
      }
      return result;
    }
    function processConfig(config) {
      const parseConfig = {
        context: /* @__PURE__ */ Object.create(null),
        scope: Object.assign(/* @__PURE__ */ Object.create(null), config.scope),
        atrule: fetchParseValues(config.atrule),
        pseudo: fetchParseValues(config.pseudo),
        node: fetchParseValues(config.node)
      };
      for (const name in config.parseContext) {
        switch (typeof config.parseContext[name]) {
          case "function":
            parseConfig.context[name] = config.parseContext[name];
            break;
          case "string":
            parseConfig.context[name] = createParseContext(config.parseContext[name]);
            break;
        }
      }
      return {
        config: parseConfig,
        ...parseConfig,
        ...parseConfig.node
      };
    }
    function createParser(config) {
      let source = "";
      let filename = "<unknown>";
      let needPositions = false;
      let onParseError = NOOP;
      let onParseErrorThrow = false;
      const locationMap = new OffsetToLocation.OffsetToLocation();
      const parser = Object.assign(new TokenStream.TokenStream(), processConfig(config || {}), {
        parseAtrulePrelude: true,
        parseRulePrelude: true,
        parseValue: true,
        parseCustomProperty: false,
        readSequence: sequence.readSequence,
        consumeUntilBalanceEnd: () => 0,
        consumeUntilLeftCurlyBracket(code) {
          return code === LEFTCURLYBRACKET ? 1 : 0;
        },
        consumeUntilLeftCurlyBracketOrSemicolon(code) {
          return code === LEFTCURLYBRACKET || code === SEMICOLON ? 1 : 0;
        },
        consumeUntilExclamationMarkOrSemicolon(code) {
          return code === EXCLAMATIONMARK || code === SEMICOLON ? 1 : 0;
        },
        consumeUntilSemicolonIncluded(code) {
          return code === SEMICOLON ? 2 : 0;
        },
        createList() {
          return new List.List();
        },
        createSingleNodeList(node) {
          return new List.List().appendData(node);
        },
        getFirstListNode(list) {
          return list && list.first;
        },
        getLastListNode(list) {
          return list && list.last;
        },
        parseWithFallback(consumer, fallback) {
          const startToken = this.tokenIndex;
          try {
            return consumer.call(this);
          } catch (e) {
            if (onParseErrorThrow) {
              throw e;
            }
            const fallbackNode = fallback.call(this, startToken);
            onParseErrorThrow = true;
            onParseError(e, fallbackNode);
            onParseErrorThrow = false;
            return fallbackNode;
          }
        },
        lookupNonWSType(offset) {
          let type;
          do {
            type = this.lookupType(offset++);
            if (type !== types.WhiteSpace) {
              return type;
            }
          } while (type !== NULL);
          return NULL;
        },
        charCodeAt(offset) {
          return offset >= 0 && offset < source.length ? source.charCodeAt(offset) : 0;
        },
        substring(offsetStart, offsetEnd) {
          return source.substring(offsetStart, offsetEnd);
        },
        substrToCursor(start) {
          return this.source.substring(start, this.tokenStart);
        },
        cmpChar(offset, charCode) {
          return utils.cmpChar(source, offset, charCode);
        },
        cmpStr(offsetStart, offsetEnd, str) {
          return utils.cmpStr(source, offsetStart, offsetEnd, str);
        },
        consume(tokenType) {
          const start = this.tokenStart;
          this.eat(tokenType);
          return this.substrToCursor(start);
        },
        consumeFunctionName() {
          const name = source.substring(this.tokenStart, this.tokenEnd - 1);
          this.eat(types.Function);
          return name;
        },
        consumeNumber(type) {
          const number = source.substring(this.tokenStart, utils.consumeNumber(source, this.tokenStart));
          this.eat(type);
          return number;
        },
        eat(tokenType) {
          if (this.tokenType !== tokenType) {
            const tokenName = names[tokenType].slice(0, -6).replace(/-/g, " ").replace(/^./, (m) => m.toUpperCase());
            let message = `${/[[\](){}]/.test(tokenName) ? `"${tokenName}"` : tokenName} is expected`;
            let offset = this.tokenStart;
            switch (tokenType) {
              case types.Ident:
                if (this.tokenType === types.Function || this.tokenType === types.Url) {
                  offset = this.tokenEnd - 1;
                  message = "Identifier is expected but function found";
                } else {
                  message = "Identifier is expected";
                }
                break;
              case types.Hash:
                if (this.isDelim(NUMBERSIGN)) {
                  this.next();
                  offset++;
                  message = "Name is expected";
                }
                break;
              case types.Percentage:
                if (this.tokenType === types.Number) {
                  offset = this.tokenEnd;
                  message = "Percent sign is expected";
                }
                break;
            }
            this.error(message, offset);
          }
          this.next();
        },
        eatIdent(name) {
          if (this.tokenType !== types.Ident || this.lookupValue(0, name) === false) {
            this.error(`Identifier "${name}" is expected`);
          }
          this.next();
        },
        eatDelim(code) {
          if (!this.isDelim(code)) {
            this.error(`Delim "${String.fromCharCode(code)}" is expected`);
          }
          this.next();
        },
        getLocation(start, end) {
          if (needPositions) {
            return locationMap.getLocationRange(
              start,
              end,
              filename
            );
          }
          return null;
        },
        getLocationFromList(list) {
          if (needPositions) {
            const head = this.getFirstListNode(list);
            const tail = this.getLastListNode(list);
            return locationMap.getLocationRange(
              head !== null ? head.loc.start.offset - locationMap.startOffset : this.tokenStart,
              tail !== null ? tail.loc.end.offset - locationMap.startOffset : this.tokenStart,
              filename
            );
          }
          return null;
        },
        error(message, offset) {
          const location = typeof offset !== "undefined" && offset < source.length ? locationMap.getLocation(offset) : this.eof ? locationMap.getLocation(utils.findWhiteSpaceStart(source, source.length - 1)) : locationMap.getLocation(this.tokenStart);
          throw new SyntaxError2.SyntaxError(
            message || "Unexpected input",
            source,
            location.offset,
            location.line,
            location.column
          );
        }
      });
      const parse = function(source_, options) {
        source = source_;
        options = options || {};
        parser.setSource(source, index.tokenize);
        locationMap.setSource(
          source,
          options.offset,
          options.line,
          options.column
        );
        filename = options.filename || "<unknown>";
        needPositions = Boolean(options.positions);
        onParseError = typeof options.onParseError === "function" ? options.onParseError : NOOP;
        onParseErrorThrow = false;
        parser.parseAtrulePrelude = "parseAtrulePrelude" in options ? Boolean(options.parseAtrulePrelude) : true;
        parser.parseRulePrelude = "parseRulePrelude" in options ? Boolean(options.parseRulePrelude) : true;
        parser.parseValue = "parseValue" in options ? Boolean(options.parseValue) : true;
        parser.parseCustomProperty = "parseCustomProperty" in options ? Boolean(options.parseCustomProperty) : false;
        const { context = "default", onComment } = options;
        if (context in parser.context === false) {
          throw new Error("Unknown context `" + context + "`");
        }
        if (typeof onComment === "function") {
          parser.forEachToken((type, start, end) => {
            if (type === types.Comment) {
              const loc = parser.getLocation(start, end);
              const value = utils.cmpStr(source, end - 2, end, "*/") ? source.slice(start + 2, end - 2) : source.slice(start + 2, end);
              onComment(value, loc);
            }
          });
        }
        const ast = parser.context[context].call(parser, options);
        if (!parser.eof) {
          parser.error();
        }
        return ast;
      };
      return Object.assign(parse, {
        SyntaxError: SyntaxError2.SyntaxError,
        config: parser.config
      });
    }
    exports.createParser = createParser;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/generator/sourceMap.cjs
var require_sourceMap2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/generator/sourceMap.cjs"(exports) {
    "use strict";
    var sourceMapGenerator_js = require_source_map_generator();
    var trackNodes = /* @__PURE__ */ new Set(["Atrule", "Selector", "Declaration"]);
    function generateSourceMap(handlers) {
      const map = new sourceMapGenerator_js.SourceMapGenerator();
      const generated = {
        line: 1,
        column: 0
      };
      const original = {
        line: 0,
        // should be zero to add first mapping
        column: 0
      };
      const activatedGenerated = {
        line: 1,
        column: 0
      };
      const activatedMapping = {
        generated: activatedGenerated
      };
      let line = 1;
      let column = 0;
      let sourceMappingActive = false;
      const origHandlersNode = handlers.node;
      handlers.node = function(node) {
        if (node.loc && node.loc.start && trackNodes.has(node.type)) {
          const nodeLine = node.loc.start.line;
          const nodeColumn = node.loc.start.column - 1;
          if (original.line !== nodeLine || original.column !== nodeColumn) {
            original.line = nodeLine;
            original.column = nodeColumn;
            generated.line = line;
            generated.column = column;
            if (sourceMappingActive) {
              sourceMappingActive = false;
              if (generated.line !== activatedGenerated.line || generated.column !== activatedGenerated.column) {
                map.addMapping(activatedMapping);
              }
            }
            sourceMappingActive = true;
            map.addMapping({
              source: node.loc.source,
              original,
              generated
            });
          }
        }
        origHandlersNode.call(this, node);
        if (sourceMappingActive && trackNodes.has(node.type)) {
          activatedGenerated.line = line;
          activatedGenerated.column = column;
        }
      };
      const origHandlersEmit = handlers.emit;
      handlers.emit = function(value, type, auto) {
        for (let i = 0; i < value.length; i++) {
          if (value.charCodeAt(i) === 10) {
            line++;
            column = 0;
          } else {
            column++;
          }
        }
        origHandlersEmit(value, type, auto);
      };
      const origHandlersResult = handlers.result;
      handlers.result = function() {
        if (sourceMappingActive) {
          map.addMapping(activatedMapping);
        }
        return {
          css: origHandlersResult(),
          map
        };
      };
      return handlers;
    }
    exports.generateSourceMap = generateSourceMap;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/generator/token-before.cjs
var require_token_before2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/generator/token-before.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var code = (type, value) => {
      if (type === types.Delim) {
        type = value;
      }
      if (typeof type === "string") {
        const charCode = type.charCodeAt(0);
        return charCode > 127 ? 32768 : charCode << 8;
      }
      return type;
    };
    var specPairs = [
      [types.Ident, types.Ident],
      [types.Ident, types.Function],
      [types.Ident, types.Url],
      [types.Ident, types.BadUrl],
      [types.Ident, "-"],
      [types.Ident, types.Number],
      [types.Ident, types.Percentage],
      [types.Ident, types.Dimension],
      [types.Ident, types.CDC],
      [types.Ident, types.LeftParenthesis],
      [types.AtKeyword, types.Ident],
      [types.AtKeyword, types.Function],
      [types.AtKeyword, types.Url],
      [types.AtKeyword, types.BadUrl],
      [types.AtKeyword, "-"],
      [types.AtKeyword, types.Number],
      [types.AtKeyword, types.Percentage],
      [types.AtKeyword, types.Dimension],
      [types.AtKeyword, types.CDC],
      [types.Hash, types.Ident],
      [types.Hash, types.Function],
      [types.Hash, types.Url],
      [types.Hash, types.BadUrl],
      [types.Hash, "-"],
      [types.Hash, types.Number],
      [types.Hash, types.Percentage],
      [types.Hash, types.Dimension],
      [types.Hash, types.CDC],
      [types.Dimension, types.Ident],
      [types.Dimension, types.Function],
      [types.Dimension, types.Url],
      [types.Dimension, types.BadUrl],
      [types.Dimension, "-"],
      [types.Dimension, types.Number],
      [types.Dimension, types.Percentage],
      [types.Dimension, types.Dimension],
      [types.Dimension, types.CDC],
      ["#", types.Ident],
      ["#", types.Function],
      ["#", types.Url],
      ["#", types.BadUrl],
      ["#", "-"],
      ["#", types.Number],
      ["#", types.Percentage],
      ["#", types.Dimension],
      ["#", types.CDC],
      // https://github.com/w3c/csswg-drafts/pull/6874
      ["-", types.Ident],
      ["-", types.Function],
      ["-", types.Url],
      ["-", types.BadUrl],
      ["-", "-"],
      ["-", types.Number],
      ["-", types.Percentage],
      ["-", types.Dimension],
      ["-", types.CDC],
      // https://github.com/w3c/csswg-drafts/pull/6874
      [types.Number, types.Ident],
      [types.Number, types.Function],
      [types.Number, types.Url],
      [types.Number, types.BadUrl],
      [types.Number, types.Number],
      [types.Number, types.Percentage],
      [types.Number, types.Dimension],
      [types.Number, "%"],
      [types.Number, types.CDC],
      // https://github.com/w3c/csswg-drafts/pull/6874
      ["@", types.Ident],
      ["@", types.Function],
      ["@", types.Url],
      ["@", types.BadUrl],
      ["@", "-"],
      ["@", types.CDC],
      // https://github.com/w3c/csswg-drafts/pull/6874
      [".", types.Number],
      [".", types.Percentage],
      [".", types.Dimension],
      ["+", types.Number],
      ["+", types.Percentage],
      ["+", types.Dimension],
      ["/", "*"]
    ];
    var safePairs = specPairs.concat([
      [types.Ident, types.Hash],
      [types.Dimension, types.Hash],
      [types.Hash, types.Hash],
      [types.AtKeyword, types.LeftParenthesis],
      [types.AtKeyword, types.String],
      [types.AtKeyword, types.Colon],
      [types.Percentage, types.Percentage],
      [types.Percentage, types.Dimension],
      [types.Percentage, types.Function],
      [types.Percentage, "-"],
      [types.RightParenthesis, types.Ident],
      [types.RightParenthesis, types.Function],
      [types.RightParenthesis, types.Percentage],
      [types.RightParenthesis, types.Dimension],
      [types.RightParenthesis, types.Hash],
      [types.RightParenthesis, "-"]
    ]);
    function createMap(pairs) {
      const isWhiteSpaceRequired = new Set(
        pairs.map(([prev, next]) => code(prev) << 16 | code(next))
      );
      return function(prevCode, type, value) {
        const nextCode = code(type, value);
        const nextCharCode = value.charCodeAt(0);
        const emitWs = nextCharCode === HYPHENMINUS && type !== types.Ident && type !== types.Function && type !== types.CDC || nextCharCode === PLUSSIGN ? isWhiteSpaceRequired.has(prevCode << 16 | nextCharCode << 8) : isWhiteSpaceRequired.has(prevCode << 16 | nextCode);
        if (emitWs) {
          this.emit(" ", types.WhiteSpace, true);
        }
        return nextCode;
      };
    }
    var spec = createMap(specPairs);
    var safe = createMap(safePairs);
    exports.safe = safe;
    exports.spec = spec;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/generator/create.cjs
var require_create7 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/generator/create.cjs"(exports) {
    "use strict";
    var index = require_tokenizer3();
    var sourceMap = require_sourceMap2();
    var tokenBefore = require_token_before2();
    var types = require_types3();
    var REVERSESOLIDUS = 92;
    function processChildren(node, delimeter) {
      if (typeof delimeter === "function") {
        let prev = null;
        node.children.forEach((node2) => {
          if (prev !== null) {
            delimeter.call(this, prev);
          }
          this.node(node2);
          prev = node2;
        });
        return;
      }
      node.children.forEach(this.node, this);
    }
    function processChunk(chunk) {
      index.tokenize(chunk, (type, start, end) => {
        this.token(type, chunk.slice(start, end));
      });
    }
    function createGenerator(config) {
      const types$1 = /* @__PURE__ */ new Map();
      for (let name in config.node) {
        const item = config.node[name];
        const fn = item.generate || item;
        if (typeof fn === "function") {
          types$1.set(name, item.generate || item);
        }
      }
      return function(node, options) {
        let buffer = "";
        let prevCode = 0;
        let handlers = {
          node(node2) {
            if (types$1.has(node2.type)) {
              types$1.get(node2.type).call(publicApi, node2);
            } else {
              throw new Error("Unknown node type: " + node2.type);
            }
          },
          tokenBefore: tokenBefore.safe,
          token(type, value) {
            prevCode = this.tokenBefore(prevCode, type, value);
            this.emit(value, type, false);
            if (type === types.Delim && value.charCodeAt(0) === REVERSESOLIDUS) {
              this.emit("\n", types.WhiteSpace, true);
            }
          },
          emit(value) {
            buffer += value;
          },
          result() {
            return buffer;
          }
        };
        if (options) {
          if (typeof options.decorator === "function") {
            handlers = options.decorator(handlers);
          }
          if (options.sourceMap) {
            handlers = sourceMap.generateSourceMap(handlers);
          }
          if (options.mode in tokenBefore) {
            handlers.tokenBefore = tokenBefore[options.mode];
          }
        }
        const publicApi = {
          node: (node2) => handlers.node(node2),
          children: processChildren,
          token: (type, value) => handlers.token(type, value),
          tokenize: processChunk
        };
        handlers.node(node);
        return handlers.result();
      };
    }
    exports.createGenerator = createGenerator;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/convertor/create.cjs
var require_create8 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/convertor/create.cjs"(exports) {
    "use strict";
    var List = require_List2();
    function createConvertor(walk) {
      return {
        fromPlainObject(ast) {
          walk(ast, {
            enter(node) {
              if (node.children && node.children instanceof List.List === false) {
                node.children = new List.List().fromArray(node.children);
              }
            }
          });
          return ast;
        },
        toPlainObject(ast) {
          walk(ast, {
            leave(node) {
              if (node.children && node.children instanceof List.List) {
                node.children = node.children.toArray();
              }
            }
          });
          return ast;
        }
      };
    }
    exports.createConvertor = createConvertor;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/walker/create.cjs
var require_create9 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/walker/create.cjs"(exports) {
    "use strict";
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    var noop = function() {
    };
    function ensureFunction(value) {
      return typeof value === "function" ? value : noop;
    }
    function invokeForType(fn, type) {
      return function(node, item, list) {
        if (node.type === type) {
          fn.call(this, node, item, list);
        }
      };
    }
    function getWalkersFromStructure(name, nodeType) {
      const structure = nodeType.structure;
      const walkers = [];
      for (const key in structure) {
        if (hasOwnProperty2.call(structure, key) === false) {
          continue;
        }
        let fieldTypes = structure[key];
        const walker = {
          name: key,
          type: false,
          nullable: false
        };
        if (!Array.isArray(fieldTypes)) {
          fieldTypes = [fieldTypes];
        }
        for (const fieldType of fieldTypes) {
          if (fieldType === null) {
            walker.nullable = true;
          } else if (typeof fieldType === "string") {
            walker.type = "node";
          } else if (Array.isArray(fieldType)) {
            walker.type = "list";
          }
        }
        if (walker.type) {
          walkers.push(walker);
        }
      }
      if (walkers.length) {
        return {
          context: nodeType.walkContext,
          fields: walkers
        };
      }
      return null;
    }
    function getTypesFromConfig(config) {
      const types = {};
      for (const name in config.node) {
        if (hasOwnProperty2.call(config.node, name)) {
          const nodeType = config.node[name];
          if (!nodeType.structure) {
            throw new Error("Missed `structure` field in `" + name + "` node type definition");
          }
          types[name] = getWalkersFromStructure(name, nodeType);
        }
      }
      return types;
    }
    function createTypeIterator(config, reverse) {
      const fields = config.fields.slice();
      const contextName = config.context;
      const useContext = typeof contextName === "string";
      if (reverse) {
        fields.reverse();
      }
      return function(node, context, walk, walkReducer) {
        let prevContextValue;
        if (useContext) {
          prevContextValue = context[contextName];
          context[contextName] = node;
        }
        for (const field of fields) {
          const ref = node[field.name];
          if (!field.nullable || ref) {
            if (field.type === "list") {
              const breakWalk = reverse ? ref.reduceRight(walkReducer, false) : ref.reduce(walkReducer, false);
              if (breakWalk) {
                return true;
              }
            } else if (walk(ref)) {
              return true;
            }
          }
        }
        if (useContext) {
          context[contextName] = prevContextValue;
        }
      };
    }
    function createFastTraveralMap({
      StyleSheet,
      Atrule,
      Rule,
      Block,
      DeclarationList
    }) {
      return {
        Atrule: {
          StyleSheet,
          Atrule,
          Rule,
          Block
        },
        Rule: {
          StyleSheet,
          Atrule,
          Rule,
          Block
        },
        Declaration: {
          StyleSheet,
          Atrule,
          Rule,
          Block,
          DeclarationList
        }
      };
    }
    function createWalker(config) {
      const types = getTypesFromConfig(config);
      const iteratorsNatural = {};
      const iteratorsReverse = {};
      const breakWalk = Symbol("break-walk");
      const skipNode = Symbol("skip-node");
      for (const name in types) {
        if (hasOwnProperty2.call(types, name) && types[name] !== null) {
          iteratorsNatural[name] = createTypeIterator(types[name], false);
          iteratorsReverse[name] = createTypeIterator(types[name], true);
        }
      }
      const fastTraversalIteratorsNatural = createFastTraveralMap(iteratorsNatural);
      const fastTraversalIteratorsReverse = createFastTraveralMap(iteratorsReverse);
      const walk = function(root, options) {
        function walkNode(node, item, list) {
          const enterRet = enter.call(context, node, item, list);
          if (enterRet === breakWalk) {
            return true;
          }
          if (enterRet === skipNode) {
            return false;
          }
          if (iterators.hasOwnProperty(node.type)) {
            if (iterators[node.type](node, context, walkNode, walkReducer)) {
              return true;
            }
          }
          if (leave.call(context, node, item, list) === breakWalk) {
            return true;
          }
          return false;
        }
        let enter = noop;
        let leave = noop;
        let iterators = iteratorsNatural;
        let walkReducer = (ret, data, item, list) => ret || walkNode(data, item, list);
        const context = {
          break: breakWalk,
          skip: skipNode,
          root,
          stylesheet: null,
          atrule: null,
          atrulePrelude: null,
          rule: null,
          selector: null,
          block: null,
          declaration: null,
          function: null
        };
        if (typeof options === "function") {
          enter = options;
        } else if (options) {
          enter = ensureFunction(options.enter);
          leave = ensureFunction(options.leave);
          if (options.reverse) {
            iterators = iteratorsReverse;
          }
          if (options.visit) {
            if (fastTraversalIteratorsNatural.hasOwnProperty(options.visit)) {
              iterators = options.reverse ? fastTraversalIteratorsReverse[options.visit] : fastTraversalIteratorsNatural[options.visit];
            } else if (!types.hasOwnProperty(options.visit)) {
              throw new Error("Bad value `" + options.visit + "` for `visit` option (should be: " + Object.keys(types).sort().join(", ") + ")");
            }
            enter = invokeForType(enter, options.visit);
            leave = invokeForType(leave, options.visit);
          }
        }
        if (enter === noop && leave === noop) {
          throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");
        }
        walkNode(root);
      };
      walk.break = breakWalk;
      walk.skip = skipNode;
      walk.find = function(ast, fn) {
        let found = null;
        walk(ast, function(node, item, list) {
          if (fn.call(this, node, item, list)) {
            found = node;
            return breakWalk;
          }
        });
        return found;
      };
      walk.findLast = function(ast, fn) {
        let found = null;
        walk(ast, {
          reverse: true,
          enter(node, item, list) {
            if (fn.call(this, node, item, list)) {
              found = node;
              return breakWalk;
            }
          }
        });
        return found;
      };
      walk.findAll = function(ast, fn) {
        const found = [];
        walk(ast, function(node, item, list) {
          if (fn.call(this, node, item, list)) {
            found.push(node);
          }
        });
        return found;
      };
      return walk;
    }
    exports.createWalker = createWalker;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/definition-syntax/generate.cjs
var require_generate2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/definition-syntax/generate.cjs"(exports) {
    "use strict";
    function noop(value) {
      return value;
    }
    function generateMultiplier(multiplier) {
      const { min, max, comma } = multiplier;
      if (min === 0 && max === 0) {
        return comma ? "#?" : "*";
      }
      if (min === 0 && max === 1) {
        return "?";
      }
      if (min === 1 && max === 0) {
        return comma ? "#" : "+";
      }
      if (min === 1 && max === 1) {
        return "";
      }
      return (comma ? "#" : "") + (min === max ? "{" + min + "}" : "{" + min + "," + (max !== 0 ? max : "") + "}");
    }
    function generateTypeOpts(node) {
      switch (node.type) {
        case "Range":
          return " [" + (node.min === null ? "-\u221E" : node.min) + "," + (node.max === null ? "\u221E" : node.max) + "]";
        default:
          throw new Error("Unknown node type `" + node.type + "`");
      }
    }
    function generateSequence(node, decorate, forceBraces, compact) {
      const combinator = node.combinator === " " || compact ? node.combinator : " " + node.combinator + " ";
      const result = node.terms.map((term) => internalGenerate(term, decorate, forceBraces, compact)).join(combinator);
      if (node.explicit || forceBraces) {
        return (compact || result[0] === "," ? "[" : "[ ") + result + (compact ? "]" : " ]");
      }
      return result;
    }
    function internalGenerate(node, decorate, forceBraces, compact) {
      let result;
      switch (node.type) {
        case "Group":
          result = generateSequence(node, decorate, forceBraces, compact) + (node.disallowEmpty ? "!" : "");
          break;
        case "Multiplier":
          return internalGenerate(node.term, decorate, forceBraces, compact) + decorate(generateMultiplier(node), node);
        case "Type":
          result = "<" + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : "") + ">";
          break;
        case "Property":
          result = "<'" + node.name + "'>";
          break;
        case "Keyword":
          result = node.name;
          break;
        case "AtKeyword":
          result = "@" + node.name;
          break;
        case "Function":
          result = node.name + "(";
          break;
        case "String":
        case "Token":
          result = node.value;
          break;
        case "Comma":
          result = ",";
          break;
        default:
          throw new Error("Unknown node type `" + node.type + "`");
      }
      return decorate(result, node);
    }
    function generate(node, options) {
      let decorate = noop;
      let forceBraces = false;
      let compact = false;
      if (typeof options === "function") {
        decorate = options;
      } else if (options) {
        forceBraces = Boolean(options.forceBraces);
        compact = Boolean(options.compact);
        if (typeof options.decorate === "function") {
          decorate = options.decorate;
        }
      }
      return internalGenerate(node, decorate, forceBraces, compact);
    }
    exports.generate = generate;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/error.cjs
var require_error2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/error.cjs"(exports) {
    "use strict";
    var createCustomError = require_create_custom_error2();
    var generate = require_generate2();
    var defaultLoc = { offset: 0, line: 1, column: 1 };
    function locateMismatch(matchResult, node) {
      const tokens = matchResult.tokens;
      const longestMatch = matchResult.longestMatch;
      const mismatchNode = longestMatch < tokens.length ? tokens[longestMatch].node || null : null;
      const badNode = mismatchNode !== node ? mismatchNode : null;
      let mismatchOffset = 0;
      let mismatchLength = 0;
      let entries = 0;
      let css = "";
      let start;
      let end;
      for (let i = 0; i < tokens.length; i++) {
        const token = tokens[i].value;
        if (i === longestMatch) {
          mismatchLength = token.length;
          mismatchOffset = css.length;
        }
        if (badNode !== null && tokens[i].node === badNode) {
          if (i <= longestMatch) {
            entries++;
          } else {
            entries = 0;
          }
        }
        css += token;
      }
      if (longestMatch === tokens.length || entries > 1) {
        start = fromLoc(badNode || node, "end") || buildLoc(defaultLoc, css);
        end = buildLoc(start);
      } else {
        start = fromLoc(badNode, "start") || buildLoc(fromLoc(node, "start") || defaultLoc, css.slice(0, mismatchOffset));
        end = fromLoc(badNode, "end") || buildLoc(start, css.substr(mismatchOffset, mismatchLength));
      }
      return {
        css,
        mismatchOffset,
        mismatchLength,
        start,
        end
      };
    }
    function fromLoc(node, point) {
      const value = node && node.loc && node.loc[point];
      if (value) {
        return "line" in value ? buildLoc(value) : value;
      }
      return null;
    }
    function buildLoc({ offset, line, column }, extra) {
      const loc = {
        offset,
        line,
        column
      };
      if (extra) {
        const lines = extra.split(/\n|\r\n?|\f/);
        loc.offset += extra.length;
        loc.line += lines.length - 1;
        loc.column = lines.length === 1 ? loc.column + extra.length : lines.pop().length + 1;
      }
      return loc;
    }
    var SyntaxReferenceError = function(type, referenceName) {
      const error = createCustomError.createCustomError(
        "SyntaxReferenceError",
        type + (referenceName ? " `" + referenceName + "`" : "")
      );
      error.reference = referenceName;
      return error;
    };
    var SyntaxMatchError = function(message, syntax, node, matchResult) {
      const error = createCustomError.createCustomError("SyntaxMatchError", message);
      const {
        css,
        mismatchOffset,
        mismatchLength,
        start,
        end
      } = locateMismatch(matchResult, node);
      error.rawMessage = message;
      error.syntax = syntax ? generate.generate(syntax) : "<generic>";
      error.css = css;
      error.mismatchOffset = mismatchOffset;
      error.mismatchLength = mismatchLength;
      error.message = message + "\n  syntax: " + error.syntax + "\n   value: " + (css || "<empty string>") + "\n  --------" + new Array(error.mismatchOffset + 1).join("-") + "^";
      Object.assign(error, start);
      error.loc = {
        source: node && node.loc && node.loc.source || "<unknown>",
        start,
        end
      };
      return error;
    };
    exports.SyntaxMatchError = SyntaxMatchError;
    exports.SyntaxReferenceError = SyntaxReferenceError;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/utils/names.cjs
var require_names4 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/utils/names.cjs"(exports) {
    "use strict";
    var keywords = /* @__PURE__ */ new Map();
    var properties = /* @__PURE__ */ new Map();
    var HYPHENMINUS = 45;
    var keyword = getKeywordDescriptor;
    var property = getPropertyDescriptor;
    var vendorPrefix = getVendorPrefix;
    function isCustomProperty(str, offset) {
      offset = offset || 0;
      return str.length - offset >= 2 && str.charCodeAt(offset) === HYPHENMINUS && str.charCodeAt(offset + 1) === HYPHENMINUS;
    }
    function getVendorPrefix(str, offset) {
      offset = offset || 0;
      if (str.length - offset >= 3) {
        if (str.charCodeAt(offset) === HYPHENMINUS && str.charCodeAt(offset + 1) !== HYPHENMINUS) {
          const secondDashIndex = str.indexOf("-", offset + 2);
          if (secondDashIndex !== -1) {
            return str.substring(offset, secondDashIndex + 1);
          }
        }
      }
      return "";
    }
    function getKeywordDescriptor(keyword2) {
      if (keywords.has(keyword2)) {
        return keywords.get(keyword2);
      }
      const name = keyword2.toLowerCase();
      let descriptor = keywords.get(name);
      if (descriptor === void 0) {
        const custom = isCustomProperty(name, 0);
        const vendor = !custom ? getVendorPrefix(name, 0) : "";
        descriptor = Object.freeze({
          basename: name.substr(vendor.length),
          name,
          prefix: vendor,
          vendor,
          custom
        });
      }
      keywords.set(keyword2, descriptor);
      return descriptor;
    }
    function getPropertyDescriptor(property2) {
      if (properties.has(property2)) {
        return properties.get(property2);
      }
      let name = property2;
      let hack = property2[0];
      if (hack === "/") {
        hack = property2[1] === "/" ? "//" : "/";
      } else if (hack !== "_" && hack !== "*" && hack !== "$" && hack !== "#" && hack !== "+" && hack !== "&") {
        hack = "";
      }
      const custom = isCustomProperty(name, hack.length);
      if (!custom) {
        name = name.toLowerCase();
        if (properties.has(name)) {
          const descriptor2 = properties.get(name);
          properties.set(property2, descriptor2);
          return descriptor2;
        }
      }
      const vendor = !custom ? getVendorPrefix(name, hack.length) : "";
      const prefix = name.substr(0, hack.length + vendor.length);
      const descriptor = Object.freeze({
        basename: name.substr(prefix.length),
        name: name.substr(hack.length),
        hack,
        vendor,
        prefix,
        custom
      });
      properties.set(property2, descriptor);
      return descriptor;
    }
    exports.isCustomProperty = isCustomProperty;
    exports.keyword = keyword;
    exports.property = property;
    exports.vendorPrefix = vendorPrefix;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/generic-const.cjs
var require_generic_const2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/generic-const.cjs"(exports) {
    "use strict";
    var cssWideKeywords = [
      "initial",
      "inherit",
      "unset",
      "revert",
      "revert-layer"
    ];
    exports.cssWideKeywords = cssWideKeywords;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs
var require_generic_an_plus_b2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs"(exports, module) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions2();
    var types = require_types3();
    var utils = require_utils2();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var N = 110;
    var DISALLOW_SIGN = true;
    var ALLOW_SIGN = false;
    function isDelim(token, code) {
      return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;
    }
    function skipSC(token, offset, getNextToken) {
      while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment)) {
        token = getNextToken(++offset);
      }
      return offset;
    }
    function checkInteger(token, valueOffset, disallowSign, offset) {
      if (!token) {
        return 0;
      }
      const code = token.value.charCodeAt(valueOffset);
      if (code === PLUSSIGN || code === HYPHENMINUS) {
        if (disallowSign) {
          return 0;
        }
        valueOffset++;
      }
      for (; valueOffset < token.value.length; valueOffset++) {
        if (!charCodeDefinitions.isDigit(token.value.charCodeAt(valueOffset))) {
          return 0;
        }
      }
      return offset + 1;
    }
    function consumeB(token, offset_, getNextToken) {
      let sign = false;
      let offset = skipSC(token, offset_, getNextToken);
      token = getNextToken(offset);
      if (token === null) {
        return offset_;
      }
      if (token.type !== types.Number) {
        if (isDelim(token, PLUSSIGN) || isDelim(token, HYPHENMINUS)) {
          sign = true;
          offset = skipSC(getNextToken(++offset), offset, getNextToken);
          token = getNextToken(offset);
          if (token === null || token.type !== types.Number) {
            return 0;
          }
        } else {
          return offset_;
        }
      }
      if (!sign) {
        const code = token.value.charCodeAt(0);
        if (code !== PLUSSIGN && code !== HYPHENMINUS) {
          return 0;
        }
      }
      return checkInteger(token, sign ? 0 : 1, sign, offset);
    }
    function anPlusB(token, getNextToken) {
      let offset = 0;
      if (!token) {
        return 0;
      }
      if (token.type === types.Number) {
        return checkInteger(token, 0, ALLOW_SIGN, offset);
      } else if (token.type === types.Ident && token.value.charCodeAt(0) === HYPHENMINUS) {
        if (!utils.cmpChar(token.value, 1, N)) {
          return 0;
        }
        switch (token.value.length) {
          // -n
          // -n <signed-integer>
          // -n ['+' | '-'] <signless-integer>
          case 2:
            return consumeB(getNextToken(++offset), offset, getNextToken);
          // -n- <signless-integer>
          case 3:
            if (token.value.charCodeAt(2) !== HYPHENMINUS) {
              return 0;
            }
            offset = skipSC(getNextToken(++offset), offset, getNextToken);
            token = getNextToken(offset);
            return checkInteger(token, 0, DISALLOW_SIGN, offset);
          // <dashndashdigit-ident>
          default:
            if (token.value.charCodeAt(2) !== HYPHENMINUS) {
              return 0;
            }
            return checkInteger(token, 3, DISALLOW_SIGN, offset);
        }
      } else if (token.type === types.Ident || isDelim(token, PLUSSIGN) && getNextToken(offset + 1).type === types.Ident) {
        if (token.type !== types.Ident) {
          token = getNextToken(++offset);
        }
        if (token === null || !utils.cmpChar(token.value, 0, N)) {
          return 0;
        }
        switch (token.value.length) {
          // '+'? n
          // '+'? n <signed-integer>
          // '+'? n ['+' | '-'] <signless-integer>
          case 1:
            return consumeB(getNextToken(++offset), offset, getNextToken);
          // '+'? n- <signless-integer>
          case 2:
            if (token.value.charCodeAt(1) !== HYPHENMINUS) {
              return 0;
            }
            offset = skipSC(getNextToken(++offset), offset, getNextToken);
            token = getNextToken(offset);
            return checkInteger(token, 0, DISALLOW_SIGN, offset);
          // '+'? <ndashdigit-ident>
          default:
            if (token.value.charCodeAt(1) !== HYPHENMINUS) {
              return 0;
            }
            return checkInteger(token, 2, DISALLOW_SIGN, offset);
        }
      } else if (token.type === types.Dimension) {
        let code = token.value.charCodeAt(0);
        let sign = code === PLUSSIGN || code === HYPHENMINUS ? 1 : 0;
        let i = sign;
        for (; i < token.value.length; i++) {
          if (!charCodeDefinitions.isDigit(token.value.charCodeAt(i))) {
            break;
          }
        }
        if (i === sign) {
          return 0;
        }
        if (!utils.cmpChar(token.value, i, N)) {
          return 0;
        }
        if (i + 1 === token.value.length) {
          return consumeB(getNextToken(++offset), offset, getNextToken);
        } else {
          if (token.value.charCodeAt(i + 1) !== HYPHENMINUS) {
            return 0;
          }
          if (i + 2 === token.value.length) {
            offset = skipSC(getNextToken(++offset), offset, getNextToken);
            token = getNextToken(offset);
            return checkInteger(token, 0, DISALLOW_SIGN, offset);
          } else {
            return checkInteger(token, i + 2, DISALLOW_SIGN, offset);
          }
        }
      }
      return 0;
    }
    module.exports = anPlusB;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/generic-urange.cjs
var require_generic_urange2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/generic-urange.cjs"(exports, module) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions2();
    var types = require_types3();
    var utils = require_utils2();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var QUESTIONMARK = 63;
    var U = 117;
    function isDelim(token, code) {
      return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;
    }
    function startsWith(token, code) {
      return token.value.charCodeAt(0) === code;
    }
    function hexSequence(token, offset, allowDash) {
      let hexlen = 0;
      for (let pos = offset; pos < token.value.length; pos++) {
        const code = token.value.charCodeAt(pos);
        if (code === HYPHENMINUS && allowDash && hexlen !== 0) {
          hexSequence(token, offset + hexlen + 1, false);
          return 6;
        }
        if (!charCodeDefinitions.isHexDigit(code)) {
          return 0;
        }
        if (++hexlen > 6) {
          return 0;
        }
      }
      return hexlen;
    }
    function withQuestionMarkSequence(consumed, length, getNextToken) {
      if (!consumed) {
        return 0;
      }
      while (isDelim(getNextToken(length), QUESTIONMARK)) {
        if (++consumed > 6) {
          return 0;
        }
        length++;
      }
      return length;
    }
    function urange(token, getNextToken) {
      let length = 0;
      if (token === null || token.type !== types.Ident || !utils.cmpChar(token.value, 0, U)) {
        return 0;
      }
      token = getNextToken(++length);
      if (token === null) {
        return 0;
      }
      if (isDelim(token, PLUSSIGN)) {
        token = getNextToken(++length);
        if (token === null) {
          return 0;
        }
        if (token.type === types.Ident) {
          return withQuestionMarkSequence(hexSequence(token, 0, true), ++length, getNextToken);
        }
        if (isDelim(token, QUESTIONMARK)) {
          return withQuestionMarkSequence(1, ++length, getNextToken);
        }
        return 0;
      }
      if (token.type === types.Number) {
        const consumedHexLength = hexSequence(token, 1, true);
        if (consumedHexLength === 0) {
          return 0;
        }
        token = getNextToken(++length);
        if (token === null) {
          return length;
        }
        if (token.type === types.Dimension || token.type === types.Number) {
          if (!startsWith(token, HYPHENMINUS) || !hexSequence(token, 1, false)) {
            return 0;
          }
          return length + 1;
        }
        return withQuestionMarkSequence(consumedHexLength, length, getNextToken);
      }
      if (token.type === types.Dimension) {
        return withQuestionMarkSequence(hexSequence(token, 1, true), ++length, getNextToken);
      }
      return 0;
    }
    module.exports = urange;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/generic.cjs
var require_generic2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/generic.cjs"(exports, module) {
    "use strict";
    var genericConst = require_generic_const2();
    var genericAnPlusB = require_generic_an_plus_b2();
    var genericUrange = require_generic_urange2();
    var types = require_types3();
    var charCodeDefinitions = require_char_code_definitions2();
    var utils = require_utils2();
    var calcFunctionNames = ["calc(", "-moz-calc(", "-webkit-calc("];
    var balancePair = /* @__PURE__ */ new Map([
      [types.Function, types.RightParenthesis],
      [types.LeftParenthesis, types.RightParenthesis],
      [types.LeftSquareBracket, types.RightSquareBracket],
      [types.LeftCurlyBracket, types.RightCurlyBracket]
    ]);
    var LENGTH = [
      // absolute length units https://www.w3.org/TR/css-values-3/#lengths
      "cm",
      "mm",
      "q",
      "in",
      "pt",
      "pc",
      "px",
      // font-relative length units https://drafts.csswg.org/css-values-4/#font-relative-lengths
      "em",
      "rem",
      "ex",
      "rex",
      "cap",
      "rcap",
      "ch",
      "rch",
      "ic",
      "ric",
      "lh",
      "rlh",
      // viewport-percentage lengths https://drafts.csswg.org/css-values-4/#viewport-relative-lengths
      "vw",
      "svw",
      "lvw",
      "dvw",
      "vh",
      "svh",
      "lvh",
      "dvh",
      "vi",
      "svi",
      "lvi",
      "dvi",
      "vb",
      "svb",
      "lvb",
      "dvb",
      "vmin",
      "svmin",
      "lvmin",
      "dvmin",
      "vmax",
      "svmax",
      "lvmax",
      "dvmax",
      // container relative lengths https://drafts.csswg.org/css-contain-3/#container-lengths
      "cqw",
      "cqh",
      "cqi",
      "cqb",
      "cqmin",
      "cqmax"
    ];
    var ANGLE = ["deg", "grad", "rad", "turn"];
    var TIME = ["s", "ms"];
    var FREQUENCY = ["hz", "khz"];
    var RESOLUTION = ["dpi", "dpcm", "dppx", "x"];
    var FLEX = ["fr"];
    var DECIBEL = ["db"];
    var SEMITONES = ["st"];
    function charCodeAt(str, index) {
      return index < str.length ? str.charCodeAt(index) : 0;
    }
    function eqStr(actual, expected) {
      return utils.cmpStr(actual, 0, actual.length, expected);
    }
    function eqStrAny(actual, expected) {
      for (let i = 0; i < expected.length; i++) {
        if (eqStr(actual, expected[i])) {
          return true;
        }
      }
      return false;
    }
    function isPostfixIeHack(str, offset) {
      if (offset !== str.length - 2) {
        return false;
      }
      return charCodeAt(str, offset) === 92 && // U+005C REVERSE SOLIDUS (\)
      charCodeDefinitions.isDigit(charCodeAt(str, offset + 1));
    }
    function outOfRange(opts, value, numEnd) {
      if (opts && opts.type === "Range") {
        const num = Number(
          numEnd !== void 0 && numEnd !== value.length ? value.substr(0, numEnd) : value
        );
        if (isNaN(num)) {
          return true;
        }
        if (opts.min !== null && num < opts.min && typeof opts.min !== "string") {
          return true;
        }
        if (opts.max !== null && num > opts.max && typeof opts.max !== "string") {
          return true;
        }
      }
      return false;
    }
    function consumeFunction(token, getNextToken) {
      let balanceCloseType = 0;
      let balanceStash = [];
      let length = 0;
      scan:
        do {
          switch (token.type) {
            case types.RightCurlyBracket:
            case types.RightParenthesis:
            case types.RightSquareBracket:
              if (token.type !== balanceCloseType) {
                break scan;
              }
              balanceCloseType = balanceStash.pop();
              if (balanceStash.length === 0) {
                length++;
                break scan;
              }
              break;
            case types.Function:
            case types.LeftParenthesis:
            case types.LeftSquareBracket:
            case types.LeftCurlyBracket:
              balanceStash.push(balanceCloseType);
              balanceCloseType = balancePair.get(token.type);
              break;
          }
          length++;
        } while (token = getNextToken(length));
      return length;
    }
    function calc(next) {
      return function(token, getNextToken, opts) {
        if (token === null) {
          return 0;
        }
        if (token.type === types.Function && eqStrAny(token.value, calcFunctionNames)) {
          return consumeFunction(token, getNextToken);
        }
        return next(token, getNextToken, opts);
      };
    }
    function tokenType(expectedTokenType) {
      return function(token) {
        if (token === null || token.type !== expectedTokenType) {
          return 0;
        }
        return 1;
      };
    }
    function customIdent(token) {
      if (token === null || token.type !== types.Ident) {
        return 0;
      }
      const name = token.value.toLowerCase();
      if (eqStrAny(name, genericConst.cssWideKeywords)) {
        return 0;
      }
      if (eqStr(name, "default")) {
        return 0;
      }
      return 1;
    }
    function customPropertyName(token) {
      if (token === null || token.type !== types.Ident) {
        return 0;
      }
      if (charCodeAt(token.value, 0) !== 45 || charCodeAt(token.value, 1) !== 45) {
        return 0;
      }
      return 1;
    }
    function hexColor(token) {
      if (token === null || token.type !== types.Hash) {
        return 0;
      }
      const length = token.value.length;
      if (length !== 4 && length !== 5 && length !== 7 && length !== 9) {
        return 0;
      }
      for (let i = 1; i < length; i++) {
        if (!charCodeDefinitions.isHexDigit(charCodeAt(token.value, i))) {
          return 0;
        }
      }
      return 1;
    }
    function idSelector(token) {
      if (token === null || token.type !== types.Hash) {
        return 0;
      }
      if (!charCodeDefinitions.isIdentifierStart(charCodeAt(token.value, 1), charCodeAt(token.value, 2), charCodeAt(token.value, 3))) {
        return 0;
      }
      return 1;
    }
    function declarationValue(token, getNextToken) {
      if (!token) {
        return 0;
      }
      let balanceCloseType = 0;
      let balanceStash = [];
      let length = 0;
      scan:
        do {
          switch (token.type) {
            // ... <bad-string-token>, <bad-url-token>,
            case types.BadString:
            case types.BadUrl:
              break scan;
            // ... unmatched <)-token>, <]-token>, or <}-token>,
            case types.RightCurlyBracket:
            case types.RightParenthesis:
            case types.RightSquareBracket:
              if (token.type !== balanceCloseType) {
                break scan;
              }
              balanceCloseType = balanceStash.pop();
              break;
            // ... or top-level <semicolon-token> tokens
            case types.Semicolon:
              if (balanceCloseType === 0) {
                break scan;
              }
              break;
            // ... or <delim-token> tokens with a value of "!"
            case types.Delim:
              if (balanceCloseType === 0 && token.value === "!") {
                break scan;
              }
              break;
            case types.Function:
            case types.LeftParenthesis:
            case types.LeftSquareBracket:
            case types.LeftCurlyBracket:
              balanceStash.push(balanceCloseType);
              balanceCloseType = balancePair.get(token.type);
              break;
          }
          length++;
        } while (token = getNextToken(length));
      return length;
    }
    function anyValue(token, getNextToken) {
      if (!token) {
        return 0;
      }
      let balanceCloseType = 0;
      let balanceStash = [];
      let length = 0;
      scan:
        do {
          switch (token.type) {
            // ... does not contain <bad-string-token>, <bad-url-token>,
            case types.BadString:
            case types.BadUrl:
              break scan;
            // ... unmatched <)-token>, <]-token>, or <}-token>,
            case types.RightCurlyBracket:
            case types.RightParenthesis:
            case types.RightSquareBracket:
              if (token.type !== balanceCloseType) {
                break scan;
              }
              balanceCloseType = balanceStash.pop();
              break;
            case types.Function:
            case types.LeftParenthesis:
            case types.LeftSquareBracket:
            case types.LeftCurlyBracket:
              balanceStash.push(balanceCloseType);
              balanceCloseType = balancePair.get(token.type);
              break;
          }
          length++;
        } while (token = getNextToken(length));
      return length;
    }
    function dimension(type) {
      if (type) {
        type = new Set(type);
      }
      return function(token, getNextToken, opts) {
        if (token === null || token.type !== types.Dimension) {
          return 0;
        }
        const numberEnd = utils.consumeNumber(token.value, 0);
        if (type !== null) {
          const reverseSolidusOffset = token.value.indexOf("\\", numberEnd);
          const unit = reverseSolidusOffset === -1 || !isPostfixIeHack(token.value, reverseSolidusOffset) ? token.value.substr(numberEnd) : token.value.substring(numberEnd, reverseSolidusOffset);
          if (type.has(unit.toLowerCase()) === false) {
            return 0;
          }
        }
        if (outOfRange(opts, token.value, numberEnd)) {
          return 0;
        }
        return 1;
      };
    }
    function percentage(token, getNextToken, opts) {
      if (token === null || token.type !== types.Percentage) {
        return 0;
      }
      if (outOfRange(opts, token.value, token.value.length - 1)) {
        return 0;
      }
      return 1;
    }
    function zero(next) {
      if (typeof next !== "function") {
        next = function() {
          return 0;
        };
      }
      return function(token, getNextToken, opts) {
        if (token !== null && token.type === types.Number) {
          if (Number(token.value) === 0) {
            return 1;
          }
        }
        return next(token, getNextToken, opts);
      };
    }
    function number(token, getNextToken, opts) {
      if (token === null) {
        return 0;
      }
      const numberEnd = utils.consumeNumber(token.value, 0);
      const isNumber = numberEnd === token.value.length;
      if (!isNumber && !isPostfixIeHack(token.value, numberEnd)) {
        return 0;
      }
      if (outOfRange(opts, token.value, numberEnd)) {
        return 0;
      }
      return 1;
    }
    function integer(token, getNextToken, opts) {
      if (token === null || token.type !== types.Number) {
        return 0;
      }
      let i = charCodeAt(token.value, 0) === 43 || // U+002B PLUS SIGN (+)
      charCodeAt(token.value, 0) === 45 ? 1 : 0;
      for (; i < token.value.length; i++) {
        if (!charCodeDefinitions.isDigit(charCodeAt(token.value, i))) {
          return 0;
        }
      }
      if (outOfRange(opts, token.value, i)) {
        return 0;
      }
      return 1;
    }
    var genericSyntaxes = {
      // token types
      "ident-token": tokenType(types.Ident),
      "function-token": tokenType(types.Function),
      "at-keyword-token": tokenType(types.AtKeyword),
      "hash-token": tokenType(types.Hash),
      "string-token": tokenType(types.String),
      "bad-string-token": tokenType(types.BadString),
      "url-token": tokenType(types.Url),
      "bad-url-token": tokenType(types.BadUrl),
      "delim-token": tokenType(types.Delim),
      "number-token": tokenType(types.Number),
      "percentage-token": tokenType(types.Percentage),
      "dimension-token": tokenType(types.Dimension),
      "whitespace-token": tokenType(types.WhiteSpace),
      "CDO-token": tokenType(types.CDO),
      "CDC-token": tokenType(types.CDC),
      "colon-token": tokenType(types.Colon),
      "semicolon-token": tokenType(types.Semicolon),
      "comma-token": tokenType(types.Comma),
      "[-token": tokenType(types.LeftSquareBracket),
      "]-token": tokenType(types.RightSquareBracket),
      "(-token": tokenType(types.LeftParenthesis),
      ")-token": tokenType(types.RightParenthesis),
      "{-token": tokenType(types.LeftCurlyBracket),
      "}-token": tokenType(types.RightCurlyBracket),
      // token type aliases
      "string": tokenType(types.String),
      "ident": tokenType(types.Ident),
      // complex types
      "custom-ident": customIdent,
      "custom-property-name": customPropertyName,
      "hex-color": hexColor,
      "id-selector": idSelector,
      // element( <id-selector> )
      "an-plus-b": genericAnPlusB,
      "urange": genericUrange,
      "declaration-value": declarationValue,
      "any-value": anyValue,
      // dimensions
      "dimension": calc(dimension(null)),
      "angle": calc(dimension(ANGLE)),
      "decibel": calc(dimension(DECIBEL)),
      "frequency": calc(dimension(FREQUENCY)),
      "flex": calc(dimension(FLEX)),
      "length": calc(zero(dimension(LENGTH))),
      "resolution": calc(dimension(RESOLUTION)),
      "semitones": calc(dimension(SEMITONES)),
      "time": calc(dimension(TIME)),
      // percentage
      "percentage": calc(percentage),
      // numeric
      "zero": zero(),
      "number": calc(number),
      "integer": calc(integer)
    };
    module.exports = genericSyntaxes;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs
var require_prepare_tokens2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs"(exports, module) {
    "use strict";
    var index = require_tokenizer3();
    var astToTokens = {
      decorator(handlers) {
        const tokens = [];
        let curNode = null;
        return {
          ...handlers,
          node(node) {
            const tmp = curNode;
            curNode = node;
            handlers.node.call(this, node);
            curNode = tmp;
          },
          emit(value, type, auto) {
            tokens.push({
              type,
              value,
              node: auto ? null : curNode
            });
          },
          result() {
            return tokens;
          }
        };
      }
    };
    function stringToTokens(str) {
      const tokens = [];
      index.tokenize(
        str,
        (type, start, end) => tokens.push({
          type,
          value: str.slice(start, end),
          node: null
        })
      );
      return tokens;
    }
    function prepareTokens(value, syntax) {
      if (typeof value === "string") {
        return stringToTokens(value);
      }
      return syntax.generate(value, astToTokens);
    }
    module.exports = prepareTokens;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs
var require_SyntaxError4 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs"(exports) {
    "use strict";
    var createCustomError = require_create_custom_error2();
    function SyntaxError2(message, input, offset) {
      return Object.assign(createCustomError.createCustomError("SyntaxError", message), {
        input,
        offset,
        rawMessage: message,
        message: message + "\n  " + input + "\n--" + new Array((offset || input.length) + 1).join("-") + "^"
      });
    }
    exports.SyntaxError = SyntaxError2;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs
var require_tokenizer4 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs"(exports) {
    "use strict";
    var SyntaxError2 = require_SyntaxError4();
    var TAB = 9;
    var N = 10;
    var F = 12;
    var R = 13;
    var SPACE = 32;
    var Tokenizer = class {
      constructor(str) {
        this.str = str;
        this.pos = 0;
      }
      charCodeAt(pos) {
        return pos < this.str.length ? this.str.charCodeAt(pos) : 0;
      }
      charCode() {
        return this.charCodeAt(this.pos);
      }
      nextCharCode() {
        return this.charCodeAt(this.pos + 1);
      }
      nextNonWsCode(pos) {
        return this.charCodeAt(this.findWsEnd(pos));
      }
      findWsEnd(pos) {
        for (; pos < this.str.length; pos++) {
          const code = this.str.charCodeAt(pos);
          if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) {
            break;
          }
        }
        return pos;
      }
      substringToPos(end) {
        return this.str.substring(this.pos, this.pos = end);
      }
      eat(code) {
        if (this.charCode() !== code) {
          this.error("Expect `" + String.fromCharCode(code) + "`");
        }
        this.pos++;
      }
      peek() {
        return this.pos < this.str.length ? this.str.charAt(this.pos++) : "";
      }
      error(message) {
        throw new SyntaxError2.SyntaxError(message, this.str, this.pos);
      }
    };
    exports.Tokenizer = Tokenizer;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/definition-syntax/parse.cjs
var require_parse4 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/definition-syntax/parse.cjs"(exports) {
    "use strict";
    var tokenizer = require_tokenizer4();
    var TAB = 9;
    var N = 10;
    var F = 12;
    var R = 13;
    var SPACE = 32;
    var EXCLAMATIONMARK = 33;
    var NUMBERSIGN = 35;
    var AMPERSAND = 38;
    var APOSTROPHE = 39;
    var LEFTPARENTHESIS = 40;
    var RIGHTPARENTHESIS = 41;
    var ASTERISK = 42;
    var PLUSSIGN = 43;
    var COMMA = 44;
    var HYPERMINUS = 45;
    var LESSTHANSIGN = 60;
    var GREATERTHANSIGN = 62;
    var QUESTIONMARK = 63;
    var COMMERCIALAT = 64;
    var LEFTSQUAREBRACKET = 91;
    var RIGHTSQUAREBRACKET = 93;
    var LEFTCURLYBRACKET = 123;
    var VERTICALLINE = 124;
    var RIGHTCURLYBRACKET = 125;
    var INFINITY = 8734;
    var NAME_CHAR = new Uint8Array(128).map(
      (_, idx) => /[a-zA-Z0-9\-]/.test(String.fromCharCode(idx)) ? 1 : 0
    );
    var COMBINATOR_PRECEDENCE = {
      " ": 1,
      "&&": 2,
      "||": 3,
      "|": 4
    };
    function scanSpaces(tokenizer2) {
      return tokenizer2.substringToPos(
        tokenizer2.findWsEnd(tokenizer2.pos)
      );
    }
    function scanWord(tokenizer2) {
      let end = tokenizer2.pos;
      for (; end < tokenizer2.str.length; end++) {
        const code = tokenizer2.str.charCodeAt(end);
        if (code >= 128 || NAME_CHAR[code] === 0) {
          break;
        }
      }
      if (tokenizer2.pos === end) {
        tokenizer2.error("Expect a keyword");
      }
      return tokenizer2.substringToPos(end);
    }
    function scanNumber(tokenizer2) {
      let end = tokenizer2.pos;
      for (; end < tokenizer2.str.length; end++) {
        const code = tokenizer2.str.charCodeAt(end);
        if (code < 48 || code > 57) {
          break;
        }
      }
      if (tokenizer2.pos === end) {
        tokenizer2.error("Expect a number");
      }
      return tokenizer2.substringToPos(end);
    }
    function scanString(tokenizer2) {
      const end = tokenizer2.str.indexOf("'", tokenizer2.pos + 1);
      if (end === -1) {
        tokenizer2.pos = tokenizer2.str.length;
        tokenizer2.error("Expect an apostrophe");
      }
      return tokenizer2.substringToPos(end + 1);
    }
    function readMultiplierRange(tokenizer2) {
      let min = null;
      let max = null;
      tokenizer2.eat(LEFTCURLYBRACKET);
      min = scanNumber(tokenizer2);
      if (tokenizer2.charCode() === COMMA) {
        tokenizer2.pos++;
        if (tokenizer2.charCode() !== RIGHTCURLYBRACKET) {
          max = scanNumber(tokenizer2);
        }
      } else {
        max = min;
      }
      tokenizer2.eat(RIGHTCURLYBRACKET);
      return {
        min: Number(min),
        max: max ? Number(max) : 0
      };
    }
    function readMultiplier(tokenizer2) {
      let range = null;
      let comma = false;
      switch (tokenizer2.charCode()) {
        case ASTERISK:
          tokenizer2.pos++;
          range = {
            min: 0,
            max: 0
          };
          break;
        case PLUSSIGN:
          tokenizer2.pos++;
          range = {
            min: 1,
            max: 0
          };
          break;
        case QUESTIONMARK:
          tokenizer2.pos++;
          range = {
            min: 0,
            max: 1
          };
          break;
        case NUMBERSIGN:
          tokenizer2.pos++;
          comma = true;
          if (tokenizer2.charCode() === LEFTCURLYBRACKET) {
            range = readMultiplierRange(tokenizer2);
          } else if (tokenizer2.charCode() === QUESTIONMARK) {
            tokenizer2.pos++;
            range = {
              min: 0,
              max: 0
            };
          } else {
            range = {
              min: 1,
              max: 0
            };
          }
          break;
        case LEFTCURLYBRACKET:
          range = readMultiplierRange(tokenizer2);
          break;
        default:
          return null;
      }
      return {
        type: "Multiplier",
        comma,
        min: range.min,
        max: range.max,
        term: null
      };
    }
    function maybeMultiplied(tokenizer2, node) {
      const multiplier = readMultiplier(tokenizer2);
      if (multiplier !== null) {
        multiplier.term = node;
        if (tokenizer2.charCode() === NUMBERSIGN && tokenizer2.charCodeAt(tokenizer2.pos - 1) === PLUSSIGN) {
          return maybeMultiplied(tokenizer2, multiplier);
        }
        return multiplier;
      }
      return node;
    }
    function maybeToken(tokenizer2) {
      const ch = tokenizer2.peek();
      if (ch === "") {
        return null;
      }
      return {
        type: "Token",
        value: ch
      };
    }
    function readProperty(tokenizer2) {
      let name;
      tokenizer2.eat(LESSTHANSIGN);
      tokenizer2.eat(APOSTROPHE);
      name = scanWord(tokenizer2);
      tokenizer2.eat(APOSTROPHE);
      tokenizer2.eat(GREATERTHANSIGN);
      return maybeMultiplied(tokenizer2, {
        type: "Property",
        name
      });
    }
    function readTypeRange(tokenizer2) {
      let min = null;
      let max = null;
      let sign = 1;
      tokenizer2.eat(LEFTSQUAREBRACKET);
      if (tokenizer2.charCode() === HYPERMINUS) {
        tokenizer2.peek();
        sign = -1;
      }
      if (sign == -1 && tokenizer2.charCode() === INFINITY) {
        tokenizer2.peek();
      } else {
        min = sign * Number(scanNumber(tokenizer2));
        if (NAME_CHAR[tokenizer2.charCode()] !== 0) {
          min += scanWord(tokenizer2);
        }
      }
      scanSpaces(tokenizer2);
      tokenizer2.eat(COMMA);
      scanSpaces(tokenizer2);
      if (tokenizer2.charCode() === INFINITY) {
        tokenizer2.peek();
      } else {
        sign = 1;
        if (tokenizer2.charCode() === HYPERMINUS) {
          tokenizer2.peek();
          sign = -1;
        }
        max = sign * Number(scanNumber(tokenizer2));
        if (NAME_CHAR[tokenizer2.charCode()] !== 0) {
          max += scanWord(tokenizer2);
        }
      }
      tokenizer2.eat(RIGHTSQUAREBRACKET);
      return {
        type: "Range",
        min,
        max
      };
    }
    function readType(tokenizer2) {
      let name;
      let opts = null;
      tokenizer2.eat(LESSTHANSIGN);
      name = scanWord(tokenizer2);
      if (tokenizer2.charCode() === LEFTPARENTHESIS && tokenizer2.nextCharCode() === RIGHTPARENTHESIS) {
        tokenizer2.pos += 2;
        name += "()";
      }
      if (tokenizer2.charCodeAt(tokenizer2.findWsEnd(tokenizer2.pos)) === LEFTSQUAREBRACKET) {
        scanSpaces(tokenizer2);
        opts = readTypeRange(tokenizer2);
      }
      tokenizer2.eat(GREATERTHANSIGN);
      return maybeMultiplied(tokenizer2, {
        type: "Type",
        name,
        opts
      });
    }
    function readKeywordOrFunction(tokenizer2) {
      const name = scanWord(tokenizer2);
      if (tokenizer2.charCode() === LEFTPARENTHESIS) {
        tokenizer2.pos++;
        return {
          type: "Function",
          name
        };
      }
      return maybeMultiplied(tokenizer2, {
        type: "Keyword",
        name
      });
    }
    function regroupTerms(terms, combinators) {
      function createGroup(terms2, combinator2) {
        return {
          type: "Group",
          terms: terms2,
          combinator: combinator2,
          disallowEmpty: false,
          explicit: false
        };
      }
      let combinator;
      combinators = Object.keys(combinators).sort((a, b) => COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]);
      while (combinators.length > 0) {
        combinator = combinators.shift();
        let i = 0;
        let subgroupStart = 0;
        for (; i < terms.length; i++) {
          const term = terms[i];
          if (term.type === "Combinator") {
            if (term.value === combinator) {
              if (subgroupStart === -1) {
                subgroupStart = i - 1;
              }
              terms.splice(i, 1);
              i--;
            } else {
              if (subgroupStart !== -1 && i - subgroupStart > 1) {
                terms.splice(
                  subgroupStart,
                  i - subgroupStart,
                  createGroup(terms.slice(subgroupStart, i), combinator)
                );
                i = subgroupStart + 1;
              }
              subgroupStart = -1;
            }
          }
        }
        if (subgroupStart !== -1 && combinators.length) {
          terms.splice(
            subgroupStart,
            i - subgroupStart,
            createGroup(terms.slice(subgroupStart, i), combinator)
          );
        }
      }
      return combinator;
    }
    function readImplicitGroup(tokenizer2) {
      const terms = [];
      const combinators = {};
      let token;
      let prevToken = null;
      let prevTokenPos = tokenizer2.pos;
      while (token = peek(tokenizer2)) {
        if (token.type !== "Spaces") {
          if (token.type === "Combinator") {
            if (prevToken === null || prevToken.type === "Combinator") {
              tokenizer2.pos = prevTokenPos;
              tokenizer2.error("Unexpected combinator");
            }
            combinators[token.value] = true;
          } else if (prevToken !== null && prevToken.type !== "Combinator") {
            combinators[" "] = true;
            terms.push({
              type: "Combinator",
              value: " "
            });
          }
          terms.push(token);
          prevToken = token;
          prevTokenPos = tokenizer2.pos;
        }
      }
      if (prevToken !== null && prevToken.type === "Combinator") {
        tokenizer2.pos -= prevTokenPos;
        tokenizer2.error("Unexpected combinator");
      }
      return {
        type: "Group",
        terms,
        combinator: regroupTerms(terms, combinators) || " ",
        disallowEmpty: false,
        explicit: false
      };
    }
    function readGroup(tokenizer2) {
      let result;
      tokenizer2.eat(LEFTSQUAREBRACKET);
      result = readImplicitGroup(tokenizer2);
      tokenizer2.eat(RIGHTSQUAREBRACKET);
      result.explicit = true;
      if (tokenizer2.charCode() === EXCLAMATIONMARK) {
        tokenizer2.pos++;
        result.disallowEmpty = true;
      }
      return result;
    }
    function peek(tokenizer2) {
      let code = tokenizer2.charCode();
      if (code < 128 && NAME_CHAR[code] === 1) {
        return readKeywordOrFunction(tokenizer2);
      }
      switch (code) {
        case RIGHTSQUAREBRACKET:
          break;
        case LEFTSQUAREBRACKET:
          return maybeMultiplied(tokenizer2, readGroup(tokenizer2));
        case LESSTHANSIGN:
          return tokenizer2.nextCharCode() === APOSTROPHE ? readProperty(tokenizer2) : readType(tokenizer2);
        case VERTICALLINE:
          return {
            type: "Combinator",
            value: tokenizer2.substringToPos(
              tokenizer2.pos + (tokenizer2.nextCharCode() === VERTICALLINE ? 2 : 1)
            )
          };
        case AMPERSAND:
          tokenizer2.pos++;
          tokenizer2.eat(AMPERSAND);
          return {
            type: "Combinator",
            value: "&&"
          };
        case COMMA:
          tokenizer2.pos++;
          return {
            type: "Comma"
          };
        case APOSTROPHE:
          return maybeMultiplied(tokenizer2, {
            type: "String",
            value: scanString(tokenizer2)
          });
        case SPACE:
        case TAB:
        case N:
        case R:
        case F:
          return {
            type: "Spaces",
            value: scanSpaces(tokenizer2)
          };
        case COMMERCIALAT:
          code = tokenizer2.nextCharCode();
          if (code < 128 && NAME_CHAR[code] === 1) {
            tokenizer2.pos++;
            return {
              type: "AtKeyword",
              name: scanWord(tokenizer2)
            };
          }
          return maybeToken(tokenizer2);
        case ASTERISK:
        case PLUSSIGN:
        case QUESTIONMARK:
        case NUMBERSIGN:
        case EXCLAMATIONMARK:
          break;
        case LEFTCURLYBRACKET:
          code = tokenizer2.nextCharCode();
          if (code < 48 || code > 57) {
            return maybeToken(tokenizer2);
          }
          break;
        default:
          return maybeToken(tokenizer2);
      }
    }
    function parse(source) {
      const tokenizer$1 = new tokenizer.Tokenizer(source);
      const result = readImplicitGroup(tokenizer$1);
      if (tokenizer$1.pos !== source.length) {
        tokenizer$1.error("Unexpected input");
      }
      if (result.terms.length === 1 && result.terms[0].type === "Group") {
        return result.terms[0];
      }
      return result;
    }
    exports.parse = parse;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/match-graph.cjs
var require_match_graph2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/match-graph.cjs"(exports) {
    "use strict";
    var parse = require_parse4();
    var MATCH = { type: "Match" };
    var MISMATCH = { type: "Mismatch" };
    var DISALLOW_EMPTY = { type: "DisallowEmpty" };
    var LEFTPARENTHESIS = 40;
    var RIGHTPARENTHESIS = 41;
    function createCondition(match, thenBranch, elseBranch) {
      if (thenBranch === MATCH && elseBranch === MISMATCH) {
        return match;
      }
      if (match === MATCH && thenBranch === MATCH && elseBranch === MATCH) {
        return match;
      }
      if (match.type === "If" && match.else === MISMATCH && thenBranch === MATCH) {
        thenBranch = match.then;
        match = match.match;
      }
      return {
        type: "If",
        match,
        then: thenBranch,
        else: elseBranch
      };
    }
    function isFunctionType(name) {
      return name.length > 2 && name.charCodeAt(name.length - 2) === LEFTPARENTHESIS && name.charCodeAt(name.length - 1) === RIGHTPARENTHESIS;
    }
    function isEnumCapatible(term) {
      return term.type === "Keyword" || term.type === "AtKeyword" || term.type === "Function" || term.type === "Type" && isFunctionType(term.name);
    }
    function buildGroupMatchGraph(combinator, terms, atLeastOneTermMatched) {
      switch (combinator) {
        case " ": {
          let result = MATCH;
          for (let i = terms.length - 1; i >= 0; i--) {
            const term = terms[i];
            result = createCondition(
              term,
              result,
              MISMATCH
            );
          }
          return result;
        }
        case "|": {
          let result = MISMATCH;
          let map = null;
          for (let i = terms.length - 1; i >= 0; i--) {
            let term = terms[i];
            if (isEnumCapatible(term)) {
              if (map === null && i > 0 && isEnumCapatible(terms[i - 1])) {
                map = /* @__PURE__ */ Object.create(null);
                result = createCondition(
                  {
                    type: "Enum",
                    map
                  },
                  MATCH,
                  result
                );
              }
              if (map !== null) {
                const key = (isFunctionType(term.name) ? term.name.slice(0, -1) : term.name).toLowerCase();
                if (key in map === false) {
                  map[key] = term;
                  continue;
                }
              }
            }
            map = null;
            result = createCondition(
              term,
              MATCH,
              result
            );
          }
          return result;
        }
        case "&&": {
          if (terms.length > 5) {
            return {
              type: "MatchOnce",
              terms,
              all: true
            };
          }
          let result = MISMATCH;
          for (let i = terms.length - 1; i >= 0; i--) {
            const term = terms[i];
            let thenClause;
            if (terms.length > 1) {
              thenClause = buildGroupMatchGraph(
                combinator,
                terms.filter(function(newGroupTerm) {
                  return newGroupTerm !== term;
                }),
                false
              );
            } else {
              thenClause = MATCH;
            }
            result = createCondition(
              term,
              thenClause,
              result
            );
          }
          return result;
        }
        case "||": {
          if (terms.length > 5) {
            return {
              type: "MatchOnce",
              terms,
              all: false
            };
          }
          let result = atLeastOneTermMatched ? MATCH : MISMATCH;
          for (let i = terms.length - 1; i >= 0; i--) {
            const term = terms[i];
            let thenClause;
            if (terms.length > 1) {
              thenClause = buildGroupMatchGraph(
                combinator,
                terms.filter(function(newGroupTerm) {
                  return newGroupTerm !== term;
                }),
                true
              );
            } else {
              thenClause = MATCH;
            }
            result = createCondition(
              term,
              thenClause,
              result
            );
          }
          return result;
        }
      }
    }
    function buildMultiplierMatchGraph(node) {
      let result = MATCH;
      let matchTerm = buildMatchGraphInternal(node.term);
      if (node.max === 0) {
        matchTerm = createCondition(
          matchTerm,
          DISALLOW_EMPTY,
          MISMATCH
        );
        result = createCondition(
          matchTerm,
          null,
          // will be a loop
          MISMATCH
        );
        result.then = createCondition(
          MATCH,
          MATCH,
          result
          // make a loop
        );
        if (node.comma) {
          result.then.else = createCondition(
            { type: "Comma", syntax: node },
            result,
            MISMATCH
          );
        }
      } else {
        for (let i = node.min || 1; i <= node.max; i++) {
          if (node.comma && result !== MATCH) {
            result = createCondition(
              { type: "Comma", syntax: node },
              result,
              MISMATCH
            );
          }
          result = createCondition(
            matchTerm,
            createCondition(
              MATCH,
              MATCH,
              result
            ),
            MISMATCH
          );
        }
      }
      if (node.min === 0) {
        result = createCondition(
          MATCH,
          MATCH,
          result
        );
      } else {
        for (let i = 0; i < node.min - 1; i++) {
          if (node.comma && result !== MATCH) {
            result = createCondition(
              { type: "Comma", syntax: node },
              result,
              MISMATCH
            );
          }
          result = createCondition(
            matchTerm,
            result,
            MISMATCH
          );
        }
      }
      return result;
    }
    function buildMatchGraphInternal(node) {
      if (typeof node === "function") {
        return {
          type: "Generic",
          fn: node
        };
      }
      switch (node.type) {
        case "Group": {
          let result = buildGroupMatchGraph(
            node.combinator,
            node.terms.map(buildMatchGraphInternal),
            false
          );
          if (node.disallowEmpty) {
            result = createCondition(
              result,
              DISALLOW_EMPTY,
              MISMATCH
            );
          }
          return result;
        }
        case "Multiplier":
          return buildMultiplierMatchGraph(node);
        case "Type":
        case "Property":
          return {
            type: node.type,
            name: node.name,
            syntax: node
          };
        case "Keyword":
          return {
            type: node.type,
            name: node.name.toLowerCase(),
            syntax: node
          };
        case "AtKeyword":
          return {
            type: node.type,
            name: "@" + node.name.toLowerCase(),
            syntax: node
          };
        case "Function":
          return {
            type: node.type,
            name: node.name.toLowerCase() + "(",
            syntax: node
          };
        case "String":
          if (node.value.length === 3) {
            return {
              type: "Token",
              value: node.value.charAt(1),
              syntax: node
            };
          }
          return {
            type: node.type,
            value: node.value.substr(1, node.value.length - 2).replace(/\\'/g, "'"),
            syntax: node
          };
        case "Token":
          return {
            type: node.type,
            value: node.value,
            syntax: node
          };
        case "Comma":
          return {
            type: node.type,
            syntax: node
          };
        default:
          throw new Error("Unknown node type:", node.type);
      }
    }
    function buildMatchGraph(syntaxTree, ref) {
      if (typeof syntaxTree === "string") {
        syntaxTree = parse.parse(syntaxTree);
      }
      return {
        type: "MatchGraph",
        match: buildMatchGraphInternal(syntaxTree),
        syntax: ref || null,
        source: syntaxTree
      };
    }
    exports.DISALLOW_EMPTY = DISALLOW_EMPTY;
    exports.MATCH = MATCH;
    exports.MISMATCH = MISMATCH;
    exports.buildMatchGraph = buildMatchGraph;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/match.cjs
var require_match2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/match.cjs"(exports) {
    "use strict";
    var matchGraph = require_match_graph2();
    var types = require_types3();
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    var STUB = 0;
    var TOKEN = 1;
    var OPEN_SYNTAX = 2;
    var CLOSE_SYNTAX = 3;
    var EXIT_REASON_MATCH = "Match";
    var EXIT_REASON_MISMATCH = "Mismatch";
    var EXIT_REASON_ITERATION_LIMIT = "Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)";
    var ITERATION_LIMIT = 15e3;
    function reverseList(list) {
      let prev = null;
      let next = null;
      let item = list;
      while (item !== null) {
        next = item.prev;
        item.prev = prev;
        prev = item;
        item = next;
      }
      return prev;
    }
    function areStringsEqualCaseInsensitive(testStr, referenceStr) {
      if (testStr.length !== referenceStr.length) {
        return false;
      }
      for (let i = 0; i < testStr.length; i++) {
        const referenceCode = referenceStr.charCodeAt(i);
        let testCode = testStr.charCodeAt(i);
        if (testCode >= 65 && testCode <= 90) {
          testCode = testCode | 32;
        }
        if (testCode !== referenceCode) {
          return false;
        }
      }
      return true;
    }
    function isContextEdgeDelim(token) {
      if (token.type !== types.Delim) {
        return false;
      }
      return token.value !== "?";
    }
    function isCommaContextStart(token) {
      if (token === null) {
        return true;
      }
      return token.type === types.Comma || token.type === types.Function || token.type === types.LeftParenthesis || token.type === types.LeftSquareBracket || token.type === types.LeftCurlyBracket || isContextEdgeDelim(token);
    }
    function isCommaContextEnd(token) {
      if (token === null) {
        return true;
      }
      return token.type === types.RightParenthesis || token.type === types.RightSquareBracket || token.type === types.RightCurlyBracket || token.type === types.Delim && token.value === "/";
    }
    function internalMatch(tokens, state, syntaxes) {
      function moveToNextToken() {
        do {
          tokenIndex++;
          token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;
        } while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment));
      }
      function getNextToken(offset) {
        const nextIndex = tokenIndex + offset;
        return nextIndex < tokens.length ? tokens[nextIndex] : null;
      }
      function stateSnapshotFromSyntax(nextState, prev) {
        return {
          nextState,
          matchStack,
          syntaxStack,
          thenStack,
          tokenIndex,
          prev
        };
      }
      function pushThenStack(nextState) {
        thenStack = {
          nextState,
          matchStack,
          syntaxStack,
          prev: thenStack
        };
      }
      function pushElseStack(nextState) {
        elseStack = stateSnapshotFromSyntax(nextState, elseStack);
      }
      function addTokenToMatch() {
        matchStack = {
          type: TOKEN,
          syntax: state.syntax,
          token,
          prev: matchStack
        };
        moveToNextToken();
        syntaxStash = null;
        if (tokenIndex > longestMatch) {
          longestMatch = tokenIndex;
        }
      }
      function openSyntax() {
        syntaxStack = {
          syntax: state.syntax,
          opts: state.syntax.opts || syntaxStack !== null && syntaxStack.opts || null,
          prev: syntaxStack
        };
        matchStack = {
          type: OPEN_SYNTAX,
          syntax: state.syntax,
          token: matchStack.token,
          prev: matchStack
        };
      }
      function closeSyntax() {
        if (matchStack.type === OPEN_SYNTAX) {
          matchStack = matchStack.prev;
        } else {
          matchStack = {
            type: CLOSE_SYNTAX,
            syntax: syntaxStack.syntax,
            token: matchStack.token,
            prev: matchStack
          };
        }
        syntaxStack = syntaxStack.prev;
      }
      let syntaxStack = null;
      let thenStack = null;
      let elseStack = null;
      let syntaxStash = null;
      let iterationCount = 0;
      let exitReason = null;
      let token = null;
      let tokenIndex = -1;
      let longestMatch = 0;
      let matchStack = {
        type: STUB,
        syntax: null,
        token: null,
        prev: null
      };
      moveToNextToken();
      while (exitReason === null && ++iterationCount < ITERATION_LIMIT) {
        switch (state.type) {
          case "Match":
            if (thenStack === null) {
              if (token !== null) {
                if (tokenIndex !== tokens.length - 1 || token.value !== "\\0" && token.value !== "\\9") {
                  state = matchGraph.MISMATCH;
                  break;
                }
              }
              exitReason = EXIT_REASON_MATCH;
              break;
            }
            state = thenStack.nextState;
            if (state === matchGraph.DISALLOW_EMPTY) {
              if (thenStack.matchStack === matchStack) {
                state = matchGraph.MISMATCH;
                break;
              } else {
                state = matchGraph.MATCH;
              }
            }
            while (thenStack.syntaxStack !== syntaxStack) {
              closeSyntax();
            }
            thenStack = thenStack.prev;
            break;
          case "Mismatch":
            if (syntaxStash !== null && syntaxStash !== false) {
              if (elseStack === null || tokenIndex > elseStack.tokenIndex) {
                elseStack = syntaxStash;
                syntaxStash = false;
              }
            } else if (elseStack === null) {
              exitReason = EXIT_REASON_MISMATCH;
              break;
            }
            state = elseStack.nextState;
            thenStack = elseStack.thenStack;
            syntaxStack = elseStack.syntaxStack;
            matchStack = elseStack.matchStack;
            tokenIndex = elseStack.tokenIndex;
            token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;
            elseStack = elseStack.prev;
            break;
          case "MatchGraph":
            state = state.match;
            break;
          case "If":
            if (state.else !== matchGraph.MISMATCH) {
              pushElseStack(state.else);
            }
            if (state.then !== matchGraph.MATCH) {
              pushThenStack(state.then);
            }
            state = state.match;
            break;
          case "MatchOnce":
            state = {
              type: "MatchOnceBuffer",
              syntax: state,
              index: 0,
              mask: 0
            };
            break;
          case "MatchOnceBuffer": {
            const terms = state.syntax.terms;
            if (state.index === terms.length) {
              if (state.mask === 0 || state.syntax.all) {
                state = matchGraph.MISMATCH;
                break;
              }
              state = matchGraph.MATCH;
              break;
            }
            if (state.mask === (1 << terms.length) - 1) {
              state = matchGraph.MATCH;
              break;
            }
            for (; state.index < terms.length; state.index++) {
              const matchFlag = 1 << state.index;
              if ((state.mask & matchFlag) === 0) {
                pushElseStack(state);
                pushThenStack({
                  type: "AddMatchOnce",
                  syntax: state.syntax,
                  mask: state.mask | matchFlag
                });
                state = terms[state.index++];
                break;
              }
            }
            break;
          }
          case "AddMatchOnce":
            state = {
              type: "MatchOnceBuffer",
              syntax: state.syntax,
              index: 0,
              mask: state.mask
            };
            break;
          case "Enum":
            if (token !== null) {
              let name = token.value.toLowerCase();
              if (name.indexOf("\\") !== -1) {
                name = name.replace(/\\[09].*$/, "");
              }
              if (hasOwnProperty2.call(state.map, name)) {
                state = state.map[name];
                break;
              }
            }
            state = matchGraph.MISMATCH;
            break;
          case "Generic": {
            const opts = syntaxStack !== null ? syntaxStack.opts : null;
            const lastTokenIndex2 = tokenIndex + Math.floor(state.fn(token, getNextToken, opts));
            if (!isNaN(lastTokenIndex2) && lastTokenIndex2 > tokenIndex) {
              while (tokenIndex < lastTokenIndex2) {
                addTokenToMatch();
              }
              state = matchGraph.MATCH;
            } else {
              state = matchGraph.MISMATCH;
            }
            break;
          }
          case "Type":
          case "Property": {
            const syntaxDict = state.type === "Type" ? "types" : "properties";
            const dictSyntax = hasOwnProperty2.call(syntaxes, syntaxDict) ? syntaxes[syntaxDict][state.name] : null;
            if (!dictSyntax || !dictSyntax.match) {
              throw new Error(
                "Bad syntax reference: " + (state.type === "Type" ? "<" + state.name + ">" : "<'" + state.name + "'>")
              );
            }
            if (syntaxStash !== false && token !== null && state.type === "Type") {
              const lowPriorityMatching = (
                // https://drafts.csswg.org/css-values-4/#custom-idents
                // When parsing positionally-ambiguous keywords in a property value, a <custom-ident> production
                // can only claim the keyword if no other unfulfilled production can claim it.
                state.name === "custom-ident" && token.type === types.Ident || // https://drafts.csswg.org/css-values-4/#lengths
                // ... if a `0` could be parsed as either a <number> or a <length> in a property (such as line-height),
                // it must parse as a <number>
                state.name === "length" && token.value === "0"
              );
              if (lowPriorityMatching) {
                if (syntaxStash === null) {
                  syntaxStash = stateSnapshotFromSyntax(state, elseStack);
                }
                state = matchGraph.MISMATCH;
                break;
              }
            }
            openSyntax();
            state = dictSyntax.match;
            break;
          }
          case "Keyword": {
            const name = state.name;
            if (token !== null) {
              let keywordName = token.value;
              if (keywordName.indexOf("\\") !== -1) {
                keywordName = keywordName.replace(/\\[09].*$/, "");
              }
              if (areStringsEqualCaseInsensitive(keywordName, name)) {
                addTokenToMatch();
                state = matchGraph.MATCH;
                break;
              }
            }
            state = matchGraph.MISMATCH;
            break;
          }
          case "AtKeyword":
          case "Function":
            if (token !== null && areStringsEqualCaseInsensitive(token.value, state.name)) {
              addTokenToMatch();
              state = matchGraph.MATCH;
              break;
            }
            state = matchGraph.MISMATCH;
            break;
          case "Token":
            if (token !== null && token.value === state.value) {
              addTokenToMatch();
              state = matchGraph.MATCH;
              break;
            }
            state = matchGraph.MISMATCH;
            break;
          case "Comma":
            if (token !== null && token.type === types.Comma) {
              if (isCommaContextStart(matchStack.token)) {
                state = matchGraph.MISMATCH;
              } else {
                addTokenToMatch();
                state = isCommaContextEnd(token) ? matchGraph.MISMATCH : matchGraph.MATCH;
              }
            } else {
              state = isCommaContextStart(matchStack.token) || isCommaContextEnd(token) ? matchGraph.MATCH : matchGraph.MISMATCH;
            }
            break;
          case "String":
            let string = "";
            let lastTokenIndex = tokenIndex;
            for (; lastTokenIndex < tokens.length && string.length < state.value.length; lastTokenIndex++) {
              string += tokens[lastTokenIndex].value;
            }
            if (areStringsEqualCaseInsensitive(string, state.value)) {
              while (tokenIndex < lastTokenIndex) {
                addTokenToMatch();
              }
              state = matchGraph.MATCH;
            } else {
              state = matchGraph.MISMATCH;
            }
            break;
          default:
            throw new Error("Unknown node type: " + state.type);
        }
      }
      switch (exitReason) {
        case null:
          console.warn("[csstree-match] BREAK after " + ITERATION_LIMIT + " iterations");
          exitReason = EXIT_REASON_ITERATION_LIMIT;
          matchStack = null;
          break;
        case EXIT_REASON_MATCH:
          while (syntaxStack !== null) {
            closeSyntax();
          }
          break;
        default:
          matchStack = null;
      }
      return {
        tokens,
        reason: exitReason,
        iterations: iterationCount,
        match: matchStack,
        longestMatch
      };
    }
    function matchAsList(tokens, matchGraph2, syntaxes) {
      const matchResult = internalMatch(tokens, matchGraph2, syntaxes || {});
      if (matchResult.match !== null) {
        let item = reverseList(matchResult.match).prev;
        matchResult.match = [];
        while (item !== null) {
          switch (item.type) {
            case OPEN_SYNTAX:
            case CLOSE_SYNTAX:
              matchResult.match.push({
                type: item.type,
                syntax: item.syntax
              });
              break;
            default:
              matchResult.match.push({
                token: item.token.value,
                node: item.token.node
              });
              break;
          }
          item = item.prev;
        }
      }
      return matchResult;
    }
    function matchAsTree(tokens, matchGraph2, syntaxes) {
      const matchResult = internalMatch(tokens, matchGraph2, syntaxes || {});
      if (matchResult.match === null) {
        return matchResult;
      }
      let item = matchResult.match;
      let host = matchResult.match = {
        syntax: matchGraph2.syntax || null,
        match: []
      };
      const hostStack = [host];
      item = reverseList(item).prev;
      while (item !== null) {
        switch (item.type) {
          case OPEN_SYNTAX:
            host.match.push(host = {
              syntax: item.syntax,
              match: []
            });
            hostStack.push(host);
            break;
          case CLOSE_SYNTAX:
            hostStack.pop();
            host = hostStack[hostStack.length - 1];
            break;
          default:
            host.match.push({
              syntax: item.syntax || null,
              token: item.token.value,
              node: item.token.node
            });
        }
        item = item.prev;
      }
      return matchResult;
    }
    exports.matchAsList = matchAsList;
    exports.matchAsTree = matchAsTree;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/trace.cjs
var require_trace2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/trace.cjs"(exports) {
    "use strict";
    function getTrace(node) {
      function shouldPutToTrace(syntax) {
        if (syntax === null) {
          return false;
        }
        return syntax.type === "Type" || syntax.type === "Property" || syntax.type === "Keyword";
      }
      function hasMatch(matchNode) {
        if (Array.isArray(matchNode.match)) {
          for (let i = 0; i < matchNode.match.length; i++) {
            if (hasMatch(matchNode.match[i])) {
              if (shouldPutToTrace(matchNode.syntax)) {
                result.unshift(matchNode.syntax);
              }
              return true;
            }
          }
        } else if (matchNode.node === node) {
          result = shouldPutToTrace(matchNode.syntax) ? [matchNode.syntax] : [];
          return true;
        }
        return false;
      }
      let result = null;
      if (this.matched !== null) {
        hasMatch(this.matched);
      }
      return result;
    }
    function isType(node, type) {
      return testNode(this, node, (match) => match.type === "Type" && match.name === type);
    }
    function isProperty(node, property) {
      return testNode(this, node, (match) => match.type === "Property" && match.name === property);
    }
    function isKeyword(node) {
      return testNode(this, node, (match) => match.type === "Keyword");
    }
    function testNode(match, node, fn) {
      const trace = getTrace.call(match, node);
      if (trace === null) {
        return false;
      }
      return trace.some(fn);
    }
    exports.getTrace = getTrace;
    exports.isKeyword = isKeyword;
    exports.isProperty = isProperty;
    exports.isType = isType;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/search.cjs
var require_search2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/search.cjs"(exports) {
    "use strict";
    var List = require_List2();
    function getFirstMatchNode(matchNode) {
      if ("node" in matchNode) {
        return matchNode.node;
      }
      return getFirstMatchNode(matchNode.match[0]);
    }
    function getLastMatchNode(matchNode) {
      if ("node" in matchNode) {
        return matchNode.node;
      }
      return getLastMatchNode(matchNode.match[matchNode.match.length - 1]);
    }
    function matchFragments(lexer, ast, match, type, name) {
      function findFragments(matchNode) {
        if (matchNode.syntax !== null && matchNode.syntax.type === type && matchNode.syntax.name === name) {
          const start = getFirstMatchNode(matchNode);
          const end = getLastMatchNode(matchNode);
          lexer.syntax.walk(ast, function(node, item, list) {
            if (node === start) {
              const nodes = new List.List();
              do {
                nodes.appendData(item.data);
                if (item.data === end) {
                  break;
                }
                item = item.next;
              } while (item !== null);
              fragments.push({
                parent: list,
                nodes
              });
            }
          });
        }
        if (Array.isArray(matchNode.match)) {
          matchNode.match.forEach(findFragments);
        }
      }
      const fragments = [];
      if (match.matched !== null) {
        findFragments(match.matched);
      }
      return fragments;
    }
    exports.matchFragments = matchFragments;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/structure.cjs
var require_structure2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/structure.cjs"(exports) {
    "use strict";
    var List = require_List2();
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    function isValidNumber(value) {
      return typeof value === "number" && isFinite(value) && Math.floor(value) === value && value >= 0;
    }
    function isValidLocation(loc) {
      return Boolean(loc) && isValidNumber(loc.offset) && isValidNumber(loc.line) && isValidNumber(loc.column);
    }
    function createNodeStructureChecker(type, fields) {
      return function checkNode(node, warn) {
        if (!node || node.constructor !== Object) {
          return warn(node, "Type of node should be an Object");
        }
        for (let key in node) {
          let valid = true;
          if (hasOwnProperty2.call(node, key) === false) {
            continue;
          }
          if (key === "type") {
            if (node.type !== type) {
              warn(node, "Wrong node type `" + node.type + "`, expected `" + type + "`");
            }
          } else if (key === "loc") {
            if (node.loc === null) {
              continue;
            } else if (node.loc && node.loc.constructor === Object) {
              if (typeof node.loc.source !== "string") {
                key += ".source";
              } else if (!isValidLocation(node.loc.start)) {
                key += ".start";
              } else if (!isValidLocation(node.loc.end)) {
                key += ".end";
              } else {
                continue;
              }
            }
            valid = false;
          } else if (fields.hasOwnProperty(key)) {
            valid = false;
            for (let i = 0; !valid && i < fields[key].length; i++) {
              const fieldType = fields[key][i];
              switch (fieldType) {
                case String:
                  valid = typeof node[key] === "string";
                  break;
                case Boolean:
                  valid = typeof node[key] === "boolean";
                  break;
                case null:
                  valid = node[key] === null;
                  break;
                default:
                  if (typeof fieldType === "string") {
                    valid = node[key] && node[key].type === fieldType;
                  } else if (Array.isArray(fieldType)) {
                    valid = node[key] instanceof List.List;
                  }
              }
            }
          } else {
            warn(node, "Unknown field `" + key + "` for " + type + " node type");
          }
          if (!valid) {
            warn(node, "Bad value for `" + type + "." + key + "`");
          }
        }
        for (const key in fields) {
          if (hasOwnProperty2.call(fields, key) && hasOwnProperty2.call(node, key) === false) {
            warn(node, "Field `" + type + "." + key + "` is missed");
          }
        }
      };
    }
    function processStructure(name, nodeType) {
      const structure = nodeType.structure;
      const fields = {
        type: String,
        loc: true
      };
      const docs = {
        type: '"' + name + '"'
      };
      for (const key in structure) {
        if (hasOwnProperty2.call(structure, key) === false) {
          continue;
        }
        const docsTypes = [];
        const fieldTypes = fields[key] = Array.isArray(structure[key]) ? structure[key].slice() : [structure[key]];
        for (let i = 0; i < fieldTypes.length; i++) {
          const fieldType = fieldTypes[i];
          if (fieldType === String || fieldType === Boolean) {
            docsTypes.push(fieldType.name);
          } else if (fieldType === null) {
            docsTypes.push("null");
          } else if (typeof fieldType === "string") {
            docsTypes.push("<" + fieldType + ">");
          } else if (Array.isArray(fieldType)) {
            docsTypes.push("List");
          } else {
            throw new Error("Wrong value `" + fieldType + "` in `" + name + "." + key + "` structure definition");
          }
        }
        docs[key] = docsTypes.join(" | ");
      }
      return {
        docs,
        check: createNodeStructureChecker(name, fields)
      };
    }
    function getStructureFromConfig(config) {
      const structure = {};
      if (config.node) {
        for (const name in config.node) {
          if (hasOwnProperty2.call(config.node, name)) {
            const nodeType = config.node[name];
            if (nodeType.structure) {
              structure[name] = processStructure(name, nodeType);
            } else {
              throw new Error("Missed `structure` field in `" + name + "` node type definition");
            }
          }
        }
      }
      return structure;
    }
    exports.getStructureFromConfig = getStructureFromConfig;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/definition-syntax/walk.cjs
var require_walk2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/definition-syntax/walk.cjs"(exports) {
    "use strict";
    var noop = function() {
    };
    function ensureFunction(value) {
      return typeof value === "function" ? value : noop;
    }
    function walk(node, options, context) {
      function walk2(node2) {
        enter.call(context, node2);
        switch (node2.type) {
          case "Group":
            node2.terms.forEach(walk2);
            break;
          case "Multiplier":
            walk2(node2.term);
            break;
          case "Type":
          case "Property":
          case "Keyword":
          case "AtKeyword":
          case "Function":
          case "String":
          case "Token":
          case "Comma":
            break;
          default:
            throw new Error("Unknown type: " + node2.type);
        }
        leave.call(context, node2);
      }
      let enter = noop;
      let leave = noop;
      if (typeof options === "function") {
        enter = options;
      } else if (options) {
        enter = ensureFunction(options.enter);
        leave = ensureFunction(options.leave);
      }
      if (enter === noop && leave === noop) {
        throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");
      }
      walk2(node);
    }
    exports.walk = walk;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/lexer/Lexer.cjs
var require_Lexer2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/lexer/Lexer.cjs"(exports) {
    "use strict";
    var error = require_error2();
    var names = require_names4();
    var genericConst = require_generic_const2();
    var generic = require_generic2();
    var prepareTokens = require_prepare_tokens2();
    var matchGraph = require_match_graph2();
    var match = require_match2();
    var trace = require_trace2();
    var search = require_search2();
    var structure = require_structure2();
    var parse = require_parse4();
    var generate = require_generate2();
    var walk = require_walk2();
    var cssWideKeywordsSyntax = matchGraph.buildMatchGraph(genericConst.cssWideKeywords.join(" | "));
    function dumpMapSyntax(map, compact, syntaxAsAst) {
      const result = {};
      for (const name in map) {
        if (map[name].syntax) {
          result[name] = syntaxAsAst ? map[name].syntax : generate.generate(map[name].syntax, { compact });
        }
      }
      return result;
    }
    function dumpAtruleMapSyntax(map, compact, syntaxAsAst) {
      const result = {};
      for (const [name, atrule] of Object.entries(map)) {
        result[name] = {
          prelude: atrule.prelude && (syntaxAsAst ? atrule.prelude.syntax : generate.generate(atrule.prelude.syntax, { compact })),
          descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst)
        };
      }
      return result;
    }
    function valueHasVar(tokens) {
      for (let i = 0; i < tokens.length; i++) {
        if (tokens[i].value.toLowerCase() === "var(") {
          return true;
        }
      }
      return false;
    }
    function buildMatchResult(matched, error2, iterations) {
      return {
        matched,
        iterations,
        error: error2,
        ...trace
      };
    }
    function matchSyntax(lexer, syntax, value, useCssWideKeywords) {
      const tokens = prepareTokens(value, lexer.syntax);
      let result;
      if (valueHasVar(tokens)) {
        return buildMatchResult(null, new Error("Matching for a tree with var() is not supported"));
      }
      if (useCssWideKeywords) {
        result = match.matchAsTree(tokens, lexer.cssWideKeywordsSyntax, lexer);
      }
      if (!useCssWideKeywords || !result.match) {
        result = match.matchAsTree(tokens, syntax.match, lexer);
        if (!result.match) {
          return buildMatchResult(
            null,
            new error.SyntaxMatchError(result.reason, syntax.syntax, value, result),
            result.iterations
          );
        }
      }
      return buildMatchResult(result.match, null, result.iterations);
    }
    var Lexer = class {
      constructor(config, syntax, structure$1) {
        this.cssWideKeywordsSyntax = cssWideKeywordsSyntax;
        this.syntax = syntax;
        this.generic = false;
        this.atrules = /* @__PURE__ */ Object.create(null);
        this.properties = /* @__PURE__ */ Object.create(null);
        this.types = /* @__PURE__ */ Object.create(null);
        this.structure = structure$1 || structure.getStructureFromConfig(config);
        if (config) {
          if (config.types) {
            for (const name in config.types) {
              this.addType_(name, config.types[name]);
            }
          }
          if (config.generic) {
            this.generic = true;
            for (const name in generic) {
              this.addType_(name, generic[name]);
            }
          }
          if (config.atrules) {
            for (const name in config.atrules) {
              this.addAtrule_(name, config.atrules[name]);
            }
          }
          if (config.properties) {
            for (const name in config.properties) {
              this.addProperty_(name, config.properties[name]);
            }
          }
        }
      }
      checkStructure(ast) {
        function collectWarning(node, message) {
          warns.push({ node, message });
        }
        const structure2 = this.structure;
        const warns = [];
        this.syntax.walk(ast, function(node) {
          if (structure2.hasOwnProperty(node.type)) {
            structure2[node.type].check(node, collectWarning);
          } else {
            collectWarning(node, "Unknown node type `" + node.type + "`");
          }
        });
        return warns.length ? warns : false;
      }
      createDescriptor(syntax, type, name, parent = null) {
        const ref = {
          type,
          name
        };
        const descriptor = {
          type,
          name,
          parent,
          serializable: typeof syntax === "string" || syntax && typeof syntax.type === "string",
          syntax: null,
          match: null
        };
        if (typeof syntax === "function") {
          descriptor.match = matchGraph.buildMatchGraph(syntax, ref);
        } else {
          if (typeof syntax === "string") {
            Object.defineProperty(descriptor, "syntax", {
              get() {
                Object.defineProperty(descriptor, "syntax", {
                  value: parse.parse(syntax)
                });
                return descriptor.syntax;
              }
            });
          } else {
            descriptor.syntax = syntax;
          }
          Object.defineProperty(descriptor, "match", {
            get() {
              Object.defineProperty(descriptor, "match", {
                value: matchGraph.buildMatchGraph(descriptor.syntax, ref)
              });
              return descriptor.match;
            }
          });
        }
        return descriptor;
      }
      addAtrule_(name, syntax) {
        if (!syntax) {
          return;
        }
        this.atrules[name] = {
          type: "Atrule",
          name,
          prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, "AtrulePrelude", name) : null,
          descriptors: syntax.descriptors ? Object.keys(syntax.descriptors).reduce(
            (map, descName) => {
              map[descName] = this.createDescriptor(syntax.descriptors[descName], "AtruleDescriptor", descName, name);
              return map;
            },
            /* @__PURE__ */ Object.create(null)
          ) : null
        };
      }
      addProperty_(name, syntax) {
        if (!syntax) {
          return;
        }
        this.properties[name] = this.createDescriptor(syntax, "Property", name);
      }
      addType_(name, syntax) {
        if (!syntax) {
          return;
        }
        this.types[name] = this.createDescriptor(syntax, "Type", name);
      }
      checkAtruleName(atruleName) {
        if (!this.getAtrule(atruleName)) {
          return new error.SyntaxReferenceError("Unknown at-rule", "@" + atruleName);
        }
      }
      checkAtrulePrelude(atruleName, prelude) {
        const error2 = this.checkAtruleName(atruleName);
        if (error2) {
          return error2;
        }
        const atrule = this.getAtrule(atruleName);
        if (!atrule.prelude && prelude) {
          return new SyntaxError("At-rule `@" + atruleName + "` should not contain a prelude");
        }
        if (atrule.prelude && !prelude) {
          if (!matchSyntax(this, atrule.prelude, "", false).matched) {
            return new SyntaxError("At-rule `@" + atruleName + "` should contain a prelude");
          }
        }
      }
      checkAtruleDescriptorName(atruleName, descriptorName) {
        const error$1 = this.checkAtruleName(atruleName);
        if (error$1) {
          return error$1;
        }
        const atrule = this.getAtrule(atruleName);
        const descriptor = names.keyword(descriptorName);
        if (!atrule.descriptors) {
          return new SyntaxError("At-rule `@" + atruleName + "` has no known descriptors");
        }
        if (!atrule.descriptors[descriptor.name] && !atrule.descriptors[descriptor.basename]) {
          return new error.SyntaxReferenceError("Unknown at-rule descriptor", descriptorName);
        }
      }
      checkPropertyName(propertyName) {
        if (!this.getProperty(propertyName)) {
          return new error.SyntaxReferenceError("Unknown property", propertyName);
        }
      }
      matchAtrulePrelude(atruleName, prelude) {
        const error2 = this.checkAtrulePrelude(atruleName, prelude);
        if (error2) {
          return buildMatchResult(null, error2);
        }
        const atrule = this.getAtrule(atruleName);
        if (!atrule.prelude) {
          return buildMatchResult(null, null);
        }
        return matchSyntax(this, atrule.prelude, prelude || "", false);
      }
      matchAtruleDescriptor(atruleName, descriptorName, value) {
        const error2 = this.checkAtruleDescriptorName(atruleName, descriptorName);
        if (error2) {
          return buildMatchResult(null, error2);
        }
        const atrule = this.getAtrule(atruleName);
        const descriptor = names.keyword(descriptorName);
        return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false);
      }
      matchDeclaration(node) {
        if (node.type !== "Declaration") {
          return buildMatchResult(null, new Error("Not a Declaration node"));
        }
        return this.matchProperty(node.property, node.value);
      }
      matchProperty(propertyName, value) {
        if (names.property(propertyName).custom) {
          return buildMatchResult(null, new Error("Lexer matching doesn't applicable for custom properties"));
        }
        const error2 = this.checkPropertyName(propertyName);
        if (error2) {
          return buildMatchResult(null, error2);
        }
        return matchSyntax(this, this.getProperty(propertyName), value, true);
      }
      matchType(typeName, value) {
        const typeSyntax = this.getType(typeName);
        if (!typeSyntax) {
          return buildMatchResult(null, new error.SyntaxReferenceError("Unknown type", typeName));
        }
        return matchSyntax(this, typeSyntax, value, false);
      }
      match(syntax, value) {
        if (typeof syntax !== "string" && (!syntax || !syntax.type)) {
          return buildMatchResult(null, new error.SyntaxReferenceError("Bad syntax"));
        }
        if (typeof syntax === "string" || !syntax.match) {
          syntax = this.createDescriptor(syntax, "Type", "anonymous");
        }
        return matchSyntax(this, syntax, value, false);
      }
      findValueFragments(propertyName, value, type, name) {
        return search.matchFragments(this, value, this.matchProperty(propertyName, value), type, name);
      }
      findDeclarationValueFragments(declaration, type, name) {
        return search.matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name);
      }
      findAllFragments(ast, type, name) {
        const result = [];
        this.syntax.walk(ast, {
          visit: "Declaration",
          enter: (declaration) => {
            result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name));
          }
        });
        return result;
      }
      getAtrule(atruleName, fallbackBasename = true) {
        const atrule = names.keyword(atruleName);
        const atruleEntry = atrule.vendor && fallbackBasename ? this.atrules[atrule.name] || this.atrules[atrule.basename] : this.atrules[atrule.name];
        return atruleEntry || null;
      }
      getAtrulePrelude(atruleName, fallbackBasename = true) {
        const atrule = this.getAtrule(atruleName, fallbackBasename);
        return atrule && atrule.prelude || null;
      }
      getAtruleDescriptor(atruleName, name) {
        return this.atrules.hasOwnProperty(atruleName) && this.atrules.declarators ? this.atrules[atruleName].declarators[name] || null : null;
      }
      getProperty(propertyName, fallbackBasename = true) {
        const property = names.property(propertyName);
        const propertyEntry = property.vendor && fallbackBasename ? this.properties[property.name] || this.properties[property.basename] : this.properties[property.name];
        return propertyEntry || null;
      }
      getType(name) {
        return hasOwnProperty.call(this.types, name) ? this.types[name] : null;
      }
      validate() {
        function validate(syntax, name, broken, descriptor) {
          if (broken.has(name)) {
            return broken.get(name);
          }
          broken.set(name, false);
          if (descriptor.syntax !== null) {
            walk.walk(descriptor.syntax, function(node) {
              if (node.type !== "Type" && node.type !== "Property") {
                return;
              }
              const map = node.type === "Type" ? syntax.types : syntax.properties;
              const brokenMap = node.type === "Type" ? brokenTypes : brokenProperties;
              if (!hasOwnProperty.call(map, node.name) || validate(syntax, node.name, brokenMap, map[node.name])) {
                broken.set(name, true);
              }
            }, this);
          }
        }
        let brokenTypes = /* @__PURE__ */ new Map();
        let brokenProperties = /* @__PURE__ */ new Map();
        for (const key in this.types) {
          validate(this, key, brokenTypes, this.types[key]);
        }
        for (const key in this.properties) {
          validate(this, key, brokenProperties, this.properties[key]);
        }
        brokenTypes = [...brokenTypes.keys()].filter((name) => brokenTypes.get(name));
        brokenProperties = [...brokenProperties.keys()].filter((name) => brokenProperties.get(name));
        if (brokenTypes.length || brokenProperties.length) {
          return {
            types: brokenTypes,
            properties: brokenProperties
          };
        }
        return null;
      }
      dump(syntaxAsAst, pretty) {
        return {
          generic: this.generic,
          types: dumpMapSyntax(this.types, !pretty, syntaxAsAst),
          properties: dumpMapSyntax(this.properties, !pretty, syntaxAsAst),
          atrules: dumpAtruleMapSyntax(this.atrules, !pretty, syntaxAsAst)
        };
      }
      toString() {
        return JSON.stringify(this.dump());
      }
    };
    exports.Lexer = Lexer;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/config/mix.cjs
var require_mix2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/config/mix.cjs"(exports, module) {
    "use strict";
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    var shape = {
      generic: true,
      types: appendOrAssign,
      atrules: {
        prelude: appendOrAssignOrNull,
        descriptors: appendOrAssignOrNull
      },
      properties: appendOrAssign,
      parseContext: assign,
      scope: deepAssign,
      atrule: ["parse"],
      pseudo: ["parse"],
      node: ["name", "structure", "parse", "generate", "walkContext"]
    };
    function isObject(value) {
      return value && value.constructor === Object;
    }
    function copy(value) {
      return isObject(value) ? { ...value } : value;
    }
    function assign(dest, src) {
      return Object.assign(dest, src);
    }
    function deepAssign(dest, src) {
      for (const key in src) {
        if (hasOwnProperty2.call(src, key)) {
          if (isObject(dest[key])) {
            deepAssign(dest[key], src[key]);
          } else {
            dest[key] = copy(src[key]);
          }
        }
      }
      return dest;
    }
    function append(a, b) {
      if (typeof b === "string" && /^\s*\|/.test(b)) {
        return typeof a === "string" ? a + b : b.replace(/^\s*\|\s*/, "");
      }
      return b || null;
    }
    function appendOrAssign(a, b) {
      if (typeof b === "string") {
        return append(a, b);
      }
      const result = { ...a };
      for (let key in b) {
        if (hasOwnProperty2.call(b, key)) {
          result[key] = append(hasOwnProperty2.call(a, key) ? a[key] : void 0, b[key]);
        }
      }
      return result;
    }
    function appendOrAssignOrNull(a, b) {
      const result = appendOrAssign(a, b);
      return !isObject(result) || Object.keys(result).length ? result : null;
    }
    function mix(dest, src, shape2) {
      for (const key in shape2) {
        if (hasOwnProperty2.call(shape2, key) === false) {
          continue;
        }
        if (shape2[key] === true) {
          if (hasOwnProperty2.call(src, key)) {
            dest[key] = copy(src[key]);
          }
        } else if (shape2[key]) {
          if (typeof shape2[key] === "function") {
            const fn = shape2[key];
            dest[key] = fn({}, dest[key]);
            dest[key] = fn(dest[key] || {}, src[key]);
          } else if (isObject(shape2[key])) {
            const result = {};
            for (let name in dest[key]) {
              result[name] = mix({}, dest[key][name], shape2[key]);
            }
            for (let name in src[key]) {
              result[name] = mix(result[name] || {}, src[key][name], shape2[key]);
            }
            dest[key] = result;
          } else if (Array.isArray(shape2[key])) {
            const res = {};
            const innerShape = shape2[key].reduce(function(s, k) {
              s[k] = true;
              return s;
            }, {});
            for (const [name, value] of Object.entries(dest[key] || {})) {
              res[name] = {};
              if (value) {
                mix(res[name], value, innerShape);
              }
            }
            for (const name in src[key]) {
              if (hasOwnProperty2.call(src[key], name)) {
                if (!res[name]) {
                  res[name] = {};
                }
                if (src[key] && src[key][name]) {
                  mix(res[name], src[key][name], innerShape);
                }
              }
            }
            dest[key] = res;
          }
        }
      }
      return dest;
    }
    var mix$1 = (dest, src) => mix(dest, src, shape);
    module.exports = mix$1;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/create.cjs
var require_create10 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/create.cjs"(exports, module) {
    "use strict";
    var index = require_tokenizer3();
    var create = require_create6();
    var create$2 = require_create7();
    var create$3 = require_create8();
    var create$1 = require_create9();
    var Lexer = require_Lexer2();
    var mix = require_mix2();
    function createSyntax(config) {
      const parse = create.createParser(config);
      const walk = create$1.createWalker(config);
      const generate = create$2.createGenerator(config);
      const { fromPlainObject, toPlainObject } = create$3.createConvertor(walk);
      const syntax = {
        lexer: null,
        createLexer: (config2) => new Lexer.Lexer(config2, syntax, syntax.lexer.structure),
        tokenize: index.tokenize,
        parse,
        generate,
        walk,
        find: walk.find,
        findLast: walk.findLast,
        findAll: walk.findAll,
        fromPlainObject,
        toPlainObject,
        fork(extension) {
          const base = mix({}, config);
          return createSyntax(
            typeof extension === "function" ? extension(base, Object.assign) : mix(base, extension)
          );
        }
      };
      syntax.lexer = new Lexer.Lexer({
        generic: true,
        types: config.types,
        atrules: config.atrules,
        properties: config.properties,
        node: config.node
      }, syntax);
      return syntax;
    }
    var createSyntax$1 = (config) => createSyntax(mix({}, config));
    module.exports = createSyntax$1;
  }
});

// node_modules/csso/node_modules/css-tree/dist/data.cjs
var require_data2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/dist/data.cjs"(exports, module) {
    module.exports = {
      "generic": true,
      "types": {
        "absolute-size": "xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large",
        "alpha-value": "<number>|<percentage>",
        "angle-percentage": "<angle>|<percentage>",
        "angular-color-hint": "<angle-percentage>",
        "angular-color-stop": "<color>&&<color-stop-angle>?",
        "angular-color-stop-list": "[<angular-color-stop> [, <angular-color-hint>]?]# , <angular-color-stop>",
        "animateable-feature": "scroll-position|contents|<custom-ident>",
        "attachment": "scroll|fixed|local",
        "attr()": "attr( <attr-name> <type-or-unit>? [, <attr-fallback>]? )",
        "attr-matcher": "['~'|'|'|'^'|'$'|'*']? '='",
        "attr-modifier": "i|s",
        "attribute-selector": "'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'",
        "auto-repeat": "repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )",
        "auto-track-list": "[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?",
        "baseline-position": "[first|last]? baseline",
        "basic-shape": "<inset()>|<circle()>|<ellipse()>|<polygon()>|<path()>",
        "bg-image": "none|<image>",
        "bg-layer": "<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>",
        "bg-position": "[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]",
        "bg-size": "[<length-percentage>|auto]{1,2}|cover|contain",
        "blur()": "blur( <length> )",
        "blend-mode": "normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",
        "box": "border-box|padding-box|content-box",
        "brightness()": "brightness( <number-percentage> )",
        "calc()": "calc( <calc-sum> )",
        "calc-sum": "<calc-product> [['+'|'-'] <calc-product>]*",
        "calc-product": "<calc-value> ['*' <calc-value>|'/' <number>]*",
        "calc-value": "<number>|<dimension>|<percentage>|( <calc-sum> )",
        "cf-final-image": "<image>|<color>",
        "cf-mixing-image": "<percentage>?&&<image>",
        "circle()": "circle( [<shape-radius>]? [at <position>]? )",
        "clamp()": "clamp( <calc-sum>#{3} )",
        "class-selector": "'.' <ident-token>",
        "clip-source": "<url>",
        "color": "<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<hex-color>|<named-color>|currentcolor|<deprecated-system-color>",
        "color-stop": "<color-stop-length>|<color-stop-angle>",
        "color-stop-angle": "<angle-percentage>{1,2}",
        "color-stop-length": "<length-percentage>{1,2}",
        "color-stop-list": "[<linear-color-stop> [, <linear-color-hint>]?]# , <linear-color-stop>",
        "combinator": "'>'|'+'|'~'|['||']",
        "common-lig-values": "[common-ligatures|no-common-ligatures]",
        "compat-auto": "searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button",
        "composite-style": "clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor",
        "compositing-operator": "add|subtract|intersect|exclude",
        "compound-selector": "[<type-selector>? <subclass-selector>* [<pseudo-element-selector> <pseudo-class-selector>*]*]!",
        "compound-selector-list": "<compound-selector>#",
        "complex-selector": "<compound-selector> [<combinator>? <compound-selector>]*",
        "complex-selector-list": "<complex-selector>#",
        "conic-gradient()": "conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )",
        "contextual-alt-values": "[contextual|no-contextual]",
        "content-distribution": "space-between|space-around|space-evenly|stretch",
        "content-list": "[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+",
        "content-position": "center|start|end|flex-start|flex-end",
        "content-replacement": "<image>",
        "contrast()": "contrast( [<number-percentage>] )",
        "counter": "<counter()>|<counters()>",
        "counter()": "counter( <counter-name> , <counter-style>? )",
        "counter-name": "<custom-ident>",
        "counter-style": "<counter-style-name>|symbols( )",
        "counter-style-name": "<custom-ident>",
        "counters()": "counters( <counter-name> , <string> , <counter-style>? )",
        "cross-fade()": "cross-fade( <cf-mixing-image> , <cf-final-image>? )",
        "cubic-bezier-timing-function": "ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )",
        "deprecated-system-color": "ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText",
        "discretionary-lig-values": "[discretionary-ligatures|no-discretionary-ligatures]",
        "display-box": "contents|none",
        "display-inside": "flow|flow-root|table|flex|grid|ruby",
        "display-internal": "table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container",
        "display-legacy": "inline-block|inline-list-item|inline-table|inline-flex|inline-grid",
        "display-listitem": "<display-outside>?&&[flow|flow-root]?&&list-item",
        "display-outside": "block|inline|run-in",
        "drop-shadow()": "drop-shadow( <length>{2,3} <color>? )",
        "east-asian-variant-values": "[jis78|jis83|jis90|jis04|simplified|traditional]",
        "east-asian-width-values": "[full-width|proportional-width]",
        "element()": "element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )",
        "ellipse()": "ellipse( [<shape-radius>{2}]? [at <position>]? )",
        "ending-shape": "circle|ellipse",
        "env()": "env( <custom-ident> , <declaration-value>? )",
        "explicit-track-list": "[<line-names>? <track-size>]+ <line-names>?",
        "family-name": "<string>|<custom-ident>+",
        "feature-tag-value": "<string> [<integer>|on|off]?",
        "feature-type": "@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation",
        "feature-value-block": "<feature-type> '{' <feature-value-declaration-list> '}'",
        "feature-value-block-list": "<feature-value-block>+",
        "feature-value-declaration": "<custom-ident> : <integer>+ ;",
        "feature-value-declaration-list": "<feature-value-declaration>",
        "feature-value-name": "<custom-ident>",
        "fill-rule": "nonzero|evenodd",
        "filter-function": "<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>",
        "filter-function-list": "[<filter-function>|<url>]+",
        "final-bg-layer": "<'background-color'>||<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<box>||<box>",
        "fit-content()": "fit-content( [<length>|<percentage>] )",
        "fixed-breadth": "<length-percentage>",
        "fixed-repeat": "repeat( [<integer [1,\u221E]>] , [<line-names>? <fixed-size>]+ <line-names>? )",
        "fixed-size": "<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )",
        "font-stretch-absolute": "normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>",
        "font-variant-css21": "[normal|small-caps]",
        "font-weight-absolute": "normal|bold|<number [1,1000]>",
        "frequency-percentage": "<frequency>|<percentage>",
        "general-enclosed": "[<function-token> <any-value> )]|( <ident> <any-value> )",
        "generic-family": "serif|sans-serif|cursive|fantasy|monospace|-apple-system",
        "generic-name": "serif|sans-serif|cursive|fantasy|monospace",
        "geometry-box": "<shape-box>|fill-box|stroke-box|view-box",
        "gradient": "<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>",
        "grayscale()": "grayscale( <number-percentage> )",
        "grid-line": "auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]",
        "historical-lig-values": "[historical-ligatures|no-historical-ligatures]",
        "hsl()": "hsl( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )",
        "hsla()": "hsla( <hue> <percentage> <percentage> [/ <alpha-value>]? )|hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )",
        "hue": "<number>|<angle>",
        "hue-rotate()": "hue-rotate( <angle> )",
        "hwb()": "hwb( [<hue>|none] [<percentage>|none] [<percentage>|none] [/ [<alpha-value>|none]]? )",
        "image": "<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>",
        "image()": "image( <image-tags>? [<image-src>? , <color>?]! )",
        "image-set()": "image-set( <image-set-option># )",
        "image-set-option": "[<image>|<string>] [<resolution>||type( <string> )]",
        "image-src": "<url>|<string>",
        "image-tags": "ltr|rtl",
        "inflexible-breadth": "<length>|<percentage>|min-content|max-content|auto",
        "inset()": "inset( <length-percentage>{1,4} [round <'border-radius'>]? )",
        "invert()": "invert( <number-percentage> )",
        "keyframes-name": "<custom-ident>|<string>",
        "keyframe-block": "<keyframe-selector># { <declaration-list> }",
        "keyframe-block-list": "<keyframe-block>+",
        "keyframe-selector": "from|to|<percentage>",
        "layer()": "layer( <layer-name> )",
        "layer-name": "<ident> ['.' <ident>]*",
        "leader()": "leader( <leader-type> )",
        "leader-type": "dotted|solid|space|<string>",
        "length-percentage": "<length>|<percentage>",
        "line-names": "'[' <custom-ident>* ']'",
        "line-name-list": "[<line-names>|<name-repeat>]+",
        "line-style": "none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset",
        "line-width": "<length>|thin|medium|thick",
        "linear-color-hint": "<length-percentage>",
        "linear-color-stop": "<color> <color-stop-length>?",
        "linear-gradient()": "linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )",
        "mask-layer": "<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>",
        "mask-position": "[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?",
        "mask-reference": "none|<image>|<mask-source>",
        "mask-source": "<url>",
        "masking-mode": "alpha|luminance|match-source",
        "matrix()": "matrix( <number>#{6} )",
        "matrix3d()": "matrix3d( <number>#{16} )",
        "max()": "max( <calc-sum># )",
        "media-and": "<media-in-parens> [and <media-in-parens>]+",
        "media-condition": "<media-not>|<media-and>|<media-or>|<media-in-parens>",
        "media-condition-without-or": "<media-not>|<media-and>|<media-in-parens>",
        "media-feature": "( [<mf-plain>|<mf-boolean>|<mf-range>] )",
        "media-in-parens": "( <media-condition> )|<media-feature>|<general-enclosed>",
        "media-not": "not <media-in-parens>",
        "media-or": "<media-in-parens> [or <media-in-parens>]+",
        "media-query": "<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?",
        "media-query-list": "<media-query>#",
        "media-type": "<ident>",
        "mf-boolean": "<mf-name>",
        "mf-name": "<ident>",
        "mf-plain": "<mf-name> : <mf-value>",
        "mf-range": "<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>",
        "mf-value": "<number>|<dimension>|<ident>|<ratio>",
        "min()": "min( <calc-sum># )",
        "minmax()": "minmax( [<length>|<percentage>|min-content|max-content|auto] , [<length>|<percentage>|<flex>|min-content|max-content|auto] )",
        "name-repeat": "repeat( [<integer [1,\u221E]>|auto-fill] , <line-names>+ )",
        "named-color": "transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>",
        "namespace-prefix": "<ident>",
        "ns-prefix": "[<ident-token>|'*']? '|'",
        "number-percentage": "<number>|<percentage>",
        "numeric-figure-values": "[lining-nums|oldstyle-nums]",
        "numeric-fraction-values": "[diagonal-fractions|stacked-fractions]",
        "numeric-spacing-values": "[proportional-nums|tabular-nums]",
        "nth": "<an-plus-b>|even|odd",
        "opacity()": "opacity( [<number-percentage>] )",
        "overflow-position": "unsafe|safe",
        "outline-radius": "<length>|<percentage>",
        "page-body": "<declaration>? [; <page-body>]?|<page-margin-box> <page-body>",
        "page-margin-box": "<page-margin-box-type> '{' <declaration-list> '}'",
        "page-margin-box-type": "@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom",
        "page-selector-list": "[<page-selector>#]?",
        "page-selector": "<pseudo-page>+|<ident> <pseudo-page>*",
        "page-size": "A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger",
        "path()": "path( [<fill-rule> ,]? <string> )",
        "paint()": "paint( <ident> , <declaration-value>? )",
        "perspective()": "perspective( <length> )",
        "polygon()": "polygon( <fill-rule>? , [<length-percentage> <length-percentage>]# )",
        "position": "[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]",
        "pseudo-class-selector": "':' <ident-token>|':' <function-token> <any-value> ')'",
        "pseudo-element-selector": "':' <pseudo-class-selector>",
        "pseudo-page": ": [left|right|first|blank]",
        "quote": "open-quote|close-quote|no-open-quote|no-close-quote",
        "radial-gradient()": "radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )",
        "relative-selector": "<combinator>? <complex-selector>",
        "relative-selector-list": "<relative-selector>#",
        "relative-size": "larger|smaller",
        "repeat-style": "repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}",
        "repeating-conic-gradient()": "repeating-conic-gradient( [from <angle>]? [at <position>]? , <angular-color-stop-list> )",
        "repeating-linear-gradient()": "repeating-linear-gradient( [<angle>|to <side-or-corner>]? , <color-stop-list> )",
        "repeating-radial-gradient()": "repeating-radial-gradient( [<ending-shape>||<size>]? [at <position>]? , <color-stop-list> )",
        "rgb()": "rgb( <percentage>{3} [/ <alpha-value>]? )|rgb( <number>{3} [/ <alpha-value>]? )|rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )",
        "rgba()": "rgba( <percentage>{3} [/ <alpha-value>]? )|rgba( <number>{3} [/ <alpha-value>]? )|rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )",
        "rotate()": "rotate( [<angle>|<zero>] )",
        "rotate3d()": "rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )",
        "rotateX()": "rotateX( [<angle>|<zero>] )",
        "rotateY()": "rotateY( [<angle>|<zero>] )",
        "rotateZ()": "rotateZ( [<angle>|<zero>] )",
        "saturate()": "saturate( <number-percentage> )",
        "scale()": "scale( <number> , <number>? )",
        "scale3d()": "scale3d( <number> , <number> , <number> )",
        "scaleX()": "scaleX( <number> )",
        "scaleY()": "scaleY( <number> )",
        "scaleZ()": "scaleZ( <number> )",
        "self-position": "center|start|end|self-start|self-end|flex-start|flex-end",
        "shape-radius": "<length-percentage>|closest-side|farthest-side",
        "skew()": "skew( [<angle>|<zero>] , [<angle>|<zero>]? )",
        "skewX()": "skewX( [<angle>|<zero>] )",
        "skewY()": "skewY( [<angle>|<zero>] )",
        "sepia()": "sepia( <number-percentage> )",
        "shadow": "inset?&&<length>{2,4}&&<color>?",
        "shadow-t": "[<length>{2,3}&&<color>?]",
        "shape": "rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )",
        "shape-box": "<box>|margin-box",
        "side-or-corner": "[left|right]||[top|bottom]",
        "single-animation": "<time>||<easing-function>||<time>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]",
        "single-animation-direction": "normal|reverse|alternate|alternate-reverse",
        "single-animation-fill-mode": "none|forwards|backwards|both",
        "single-animation-iteration-count": "infinite|<number>",
        "single-animation-play-state": "running|paused",
        "single-animation-timeline": "auto|none|<timeline-name>",
        "single-transition": "[none|<single-transition-property>]||<time>||<easing-function>||<time>",
        "single-transition-property": "all|<custom-ident>",
        "size": "closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}",
        "step-position": "jump-start|jump-end|jump-none|jump-both|start|end",
        "step-timing-function": "step-start|step-end|steps( <integer> [, <step-position>]? )",
        "subclass-selector": "<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>",
        "supports-condition": "not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*",
        "supports-in-parens": "( <supports-condition> )|<supports-feature>|<general-enclosed>",
        "supports-feature": "<supports-decl>|<supports-selector-fn>",
        "supports-decl": "( <declaration> )",
        "supports-selector-fn": "selector( <complex-selector> )",
        "symbol": "<string>|<image>|<custom-ident>",
        "target": "<target-counter()>|<target-counters()>|<target-text()>",
        "target-counter()": "target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )",
        "target-counters()": "target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )",
        "target-text()": "target-text( [<string>|<url>] , [content|before|after|first-letter]? )",
        "time-percentage": "<time>|<percentage>",
        "timeline-name": "<custom-ident>|<string>",
        "easing-function": "linear|<cubic-bezier-timing-function>|<step-timing-function>",
        "track-breadth": "<length-percentage>|<flex>|min-content|max-content|auto",
        "track-list": "[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?",
        "track-repeat": "repeat( [<integer [1,\u221E]>] , [<line-names>? <track-size>]+ <line-names>? )",
        "track-size": "<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( [<length>|<percentage>] )",
        "transform-function": "<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>",
        "transform-list": "<transform-function>+",
        "translate()": "translate( <length-percentage> , <length-percentage>? )",
        "translate3d()": "translate3d( <length-percentage> , <length-percentage> , <length> )",
        "translateX()": "translateX( <length-percentage> )",
        "translateY()": "translateY( <length-percentage> )",
        "translateZ()": "translateZ( <length> )",
        "type-or-unit": "string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%",
        "type-selector": "<wq-name>|<ns-prefix>? '*'",
        "var()": "var( <custom-property-name> , <declaration-value>? )",
        "viewport-length": "auto|<length-percentage>",
        "visual-box": "content-box|padding-box|border-box",
        "wq-name": "<ns-prefix>? <ident-token>",
        "-legacy-gradient": "<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>",
        "-legacy-linear-gradient": "-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )",
        "-legacy-repeating-linear-gradient": "-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )",
        "-legacy-linear-gradient-arguments": "[<angle>|<side-or-corner>]? , <color-stop-list>",
        "-legacy-radial-gradient": "-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )",
        "-legacy-repeating-radial-gradient": "-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )",
        "-legacy-radial-gradient-arguments": "[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>",
        "-legacy-radial-gradient-size": "closest-side|closest-corner|farthest-side|farthest-corner|contain|cover",
        "-legacy-radial-gradient-shape": "circle|ellipse",
        "-non-standard-font": "-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body",
        "-non-standard-color": "-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text",
        "-non-standard-image-rendering": "optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast",
        "-non-standard-overflow": "-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable",
        "-non-standard-width": "fill-available|min-intrinsic|intrinsic|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content|-webkit-min-content|-webkit-max-content",
        "-webkit-gradient()": "-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )",
        "-webkit-gradient-color-stop": "from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )",
        "-webkit-gradient-point": "[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]",
        "-webkit-gradient-radius": "<length>|<percentage>",
        "-webkit-gradient-type": "linear|radial",
        "-webkit-mask-box-repeat": "repeat|stretch|round",
        "-webkit-mask-clip-style": "border|border-box|padding|padding-box|content|content-box|text",
        "-ms-filter-function-list": "<-ms-filter-function>+",
        "-ms-filter-function": "<-ms-filter-function-progid>|<-ms-filter-function-legacy>",
        "-ms-filter-function-progid": "'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]",
        "-ms-filter-function-legacy": "<ident-token>|<function-token> <any-value>? )",
        "-ms-filter": "<string>",
        "age": "child|young|old",
        "attr-name": "<wq-name>",
        "attr-fallback": "<any-value>",
        "bg-clip": "<box>|border|text",
        "border-radius": "<length-percentage>{1,2}",
        "bottom": "<length>|auto",
        "generic-voice": "[<age>? <gender> <integer>?]",
        "gender": "male|female|neutral",
        "lab()": "lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )",
        "lch()": "lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )",
        "left": "<length>|auto",
        "mask-image": "<mask-reference>#",
        "paint": "none|<color>|<url> [none|<color>]?|context-fill|context-stroke",
        "ratio": "<number [0,\u221E]> [/ <number [0,\u221E]>]?",
        "reversed-counter-name": "reversed( <counter-name> )",
        "right": "<length>|auto",
        "svg-length": "<percentage>|<length>|<number>",
        "svg-writing-mode": "lr-tb|rl-tb|tb-rl|lr|rl|tb",
        "top": "<length>|auto",
        "track-group": "'(' [<string>* <track-minmax> <string>*]+ ')' ['[' <positive-integer> ']']?|<track-minmax>",
        "track-list-v0": "[<string>* <track-group> <string>*]+|none",
        "track-minmax": "minmax( <track-breadth> , <track-breadth> )|auto|<track-breadth>|fit-content",
        "x": "<number>",
        "y": "<number>",
        "declaration": "<ident-token> : <declaration-value>? ['!' important]?",
        "declaration-list": "[<declaration>? ';']* <declaration>?",
        "url": "url( <string> <url-modifier>* )|<url-token>",
        "url-modifier": "<ident>|<function-token> <any-value> )",
        "number-zero-one": "<number [0,1]>",
        "number-one-or-greater": "<number [1,\u221E]>",
        "positive-integer": "<integer [0,\u221E]>",
        "-non-standard-display": "-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box"
      },
      "properties": {
        "--*": "<declaration-value>",
        "-ms-accelerator": "false|true",
        "-ms-block-progression": "tb|rl|bt|lr",
        "-ms-content-zoom-chaining": "none|chained",
        "-ms-content-zooming": "none|zoom",
        "-ms-content-zoom-limit": "<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>",
        "-ms-content-zoom-limit-max": "<percentage>",
        "-ms-content-zoom-limit-min": "<percentage>",
        "-ms-content-zoom-snap": "<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>",
        "-ms-content-zoom-snap-points": "snapInterval( <percentage> , <percentage> )|snapList( <percentage># )",
        "-ms-content-zoom-snap-type": "none|proximity|mandatory",
        "-ms-filter": "<string>",
        "-ms-flow-from": "[none|<custom-ident>]#",
        "-ms-flow-into": "[none|<custom-ident>]#",
        "-ms-grid-columns": "none|<track-list>|<auto-track-list>",
        "-ms-grid-rows": "none|<track-list>|<auto-track-list>",
        "-ms-high-contrast-adjust": "auto|none",
        "-ms-hyphenate-limit-chars": "auto|<integer>{1,3}",
        "-ms-hyphenate-limit-lines": "no-limit|<integer>",
        "-ms-hyphenate-limit-zone": "<percentage>|<length>",
        "-ms-ime-align": "auto|after",
        "-ms-overflow-style": "auto|none|scrollbar|-ms-autohiding-scrollbar",
        "-ms-scrollbar-3dlight-color": "<color>",
        "-ms-scrollbar-arrow-color": "<color>",
        "-ms-scrollbar-base-color": "<color>",
        "-ms-scrollbar-darkshadow-color": "<color>",
        "-ms-scrollbar-face-color": "<color>",
        "-ms-scrollbar-highlight-color": "<color>",
        "-ms-scrollbar-shadow-color": "<color>",
        "-ms-scrollbar-track-color": "<color>",
        "-ms-scroll-chaining": "chained|none",
        "-ms-scroll-limit": "<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>",
        "-ms-scroll-limit-x-max": "auto|<length>",
        "-ms-scroll-limit-x-min": "<length>",
        "-ms-scroll-limit-y-max": "auto|<length>",
        "-ms-scroll-limit-y-min": "<length>",
        "-ms-scroll-rails": "none|railed",
        "-ms-scroll-snap-points-x": "snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )",
        "-ms-scroll-snap-points-y": "snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )",
        "-ms-scroll-snap-type": "none|proximity|mandatory",
        "-ms-scroll-snap-x": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>",
        "-ms-scroll-snap-y": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>",
        "-ms-scroll-translation": "none|vertical-to-horizontal",
        "-ms-text-autospace": "none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space",
        "-ms-touch-select": "grippers|none",
        "-ms-user-select": "none|element|text",
        "-ms-wrap-flow": "auto|both|start|end|maximum|clear",
        "-ms-wrap-margin": "<length>",
        "-ms-wrap-through": "wrap|none",
        "-moz-appearance": "none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized",
        "-moz-binding": "<url>|none",
        "-moz-border-bottom-colors": "<color>+|none",
        "-moz-border-left-colors": "<color>+|none",
        "-moz-border-right-colors": "<color>+|none",
        "-moz-border-top-colors": "<color>+|none",
        "-moz-context-properties": "none|[fill|fill-opacity|stroke|stroke-opacity]#",
        "-moz-float-edge": "border-box|content-box|margin-box|padding-box",
        "-moz-force-broken-image-icon": "0|1",
        "-moz-image-region": "<shape>|auto",
        "-moz-orient": "inline|block|horizontal|vertical",
        "-moz-outline-radius": "<outline-radius>{1,4} [/ <outline-radius>{1,4}]?",
        "-moz-outline-radius-bottomleft": "<outline-radius>",
        "-moz-outline-radius-bottomright": "<outline-radius>",
        "-moz-outline-radius-topleft": "<outline-radius>",
        "-moz-outline-radius-topright": "<outline-radius>",
        "-moz-stack-sizing": "ignore|stretch-to-fit",
        "-moz-text-blink": "none|blink",
        "-moz-user-focus": "ignore|normal|select-after|select-before|select-menu|select-same|select-all|none",
        "-moz-user-input": "auto|none|enabled|disabled",
        "-moz-user-modify": "read-only|read-write|write-only",
        "-moz-window-dragging": "drag|no-drag",
        "-moz-window-shadow": "default|menu|tooltip|sheet|none",
        "-webkit-appearance": "none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button",
        "-webkit-border-before": "<'border-width'>||<'border-style'>||<color>",
        "-webkit-border-before-color": "<color>",
        "-webkit-border-before-style": "<'border-style'>",
        "-webkit-border-before-width": "<'border-width'>",
        "-webkit-box-reflect": "[above|below|right|left]? <length>? <image>?",
        "-webkit-line-clamp": "none|<integer>",
        "-webkit-mask": "[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<box>|border|padding|content|text]||[<box>|border|padding|content]]#",
        "-webkit-mask-attachment": "<attachment>#",
        "-webkit-mask-clip": "[<box>|border|padding|content|text]#",
        "-webkit-mask-composite": "<composite-style>#",
        "-webkit-mask-image": "<mask-reference>#",
        "-webkit-mask-origin": "[<box>|border|padding|content]#",
        "-webkit-mask-position": "<position>#",
        "-webkit-mask-position-x": "[<length-percentage>|left|center|right]#",
        "-webkit-mask-position-y": "[<length-percentage>|top|center|bottom]#",
        "-webkit-mask-repeat": "<repeat-style>#",
        "-webkit-mask-repeat-x": "repeat|no-repeat|space|round",
        "-webkit-mask-repeat-y": "repeat|no-repeat|space|round",
        "-webkit-mask-size": "<bg-size>#",
        "-webkit-overflow-scrolling": "auto|touch",
        "-webkit-tap-highlight-color": "<color>",
        "-webkit-text-fill-color": "<color>",
        "-webkit-text-stroke": "<length>||<color>",
        "-webkit-text-stroke-color": "<color>",
        "-webkit-text-stroke-width": "<length>",
        "-webkit-touch-callout": "default|none",
        "-webkit-user-modify": "read-only|read-write|read-write-plaintext-only",
        "accent-color": "auto|<color>",
        "align-content": "normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>",
        "align-items": "normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]",
        "align-self": "auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>",
        "align-tracks": "[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#",
        "all": "initial|inherit|unset|revert|revert-layer",
        "animation": "<single-animation>#",
        "animation-delay": "<time>#",
        "animation-direction": "<single-animation-direction>#",
        "animation-duration": "<time>#",
        "animation-fill-mode": "<single-animation-fill-mode>#",
        "animation-iteration-count": "<single-animation-iteration-count>#",
        "animation-name": "[none|<keyframes-name>]#",
        "animation-play-state": "<single-animation-play-state>#",
        "animation-timing-function": "<easing-function>#",
        "animation-timeline": "<single-animation-timeline>#",
        "appearance": "none|auto|textfield|menulist-button|<compat-auto>",
        "aspect-ratio": "auto|<ratio>",
        "azimuth": "<angle>|[[left-side|far-left|left|center-left|center|center-right|right|far-right|right-side]||behind]|leftwards|rightwards",
        "backdrop-filter": "none|<filter-function-list>",
        "backface-visibility": "visible|hidden",
        "background": "[<bg-layer> ,]* <final-bg-layer>",
        "background-attachment": "<attachment>#",
        "background-blend-mode": "<blend-mode>#",
        "background-clip": "<bg-clip>#",
        "background-color": "<color>",
        "background-image": "<bg-image>#",
        "background-origin": "<box>#",
        "background-position": "<bg-position>#",
        "background-position-x": "[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#",
        "background-position-y": "[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#",
        "background-repeat": "<repeat-style>#",
        "background-size": "<bg-size>#",
        "block-overflow": "clip|ellipsis|<string>",
        "block-size": "<'width'>",
        "border": "<line-width>||<line-style>||<color>",
        "border-block": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-block-color": "<'border-top-color'>{1,2}",
        "border-block-style": "<'border-top-style'>",
        "border-block-width": "<'border-top-width'>",
        "border-block-end": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-block-end-color": "<'border-top-color'>",
        "border-block-end-style": "<'border-top-style'>",
        "border-block-end-width": "<'border-top-width'>",
        "border-block-start": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-block-start-color": "<'border-top-color'>",
        "border-block-start-style": "<'border-top-style'>",
        "border-block-start-width": "<'border-top-width'>",
        "border-bottom": "<line-width>||<line-style>||<color>",
        "border-bottom-color": "<'border-top-color'>",
        "border-bottom-left-radius": "<length-percentage>{1,2}",
        "border-bottom-right-radius": "<length-percentage>{1,2}",
        "border-bottom-style": "<line-style>",
        "border-bottom-width": "<line-width>",
        "border-collapse": "collapse|separate",
        "border-color": "<color>{1,4}",
        "border-end-end-radius": "<length-percentage>{1,2}",
        "border-end-start-radius": "<length-percentage>{1,2}",
        "border-image": "<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>",
        "border-image-outset": "[<length>|<number>]{1,4}",
        "border-image-repeat": "[stretch|repeat|round|space]{1,2}",
        "border-image-slice": "<number-percentage>{1,4}&&fill?",
        "border-image-source": "none|<image>",
        "border-image-width": "[<length-percentage>|<number>|auto]{1,4}",
        "border-inline": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-inline-end": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-inline-color": "<'border-top-color'>{1,2}",
        "border-inline-style": "<'border-top-style'>",
        "border-inline-width": "<'border-top-width'>",
        "border-inline-end-color": "<'border-top-color'>",
        "border-inline-end-style": "<'border-top-style'>",
        "border-inline-end-width": "<'border-top-width'>",
        "border-inline-start": "<'border-top-width'>||<'border-top-style'>||<color>",
        "border-inline-start-color": "<'border-top-color'>",
        "border-inline-start-style": "<'border-top-style'>",
        "border-inline-start-width": "<'border-top-width'>",
        "border-left": "<line-width>||<line-style>||<color>",
        "border-left-color": "<color>",
        "border-left-style": "<line-style>",
        "border-left-width": "<line-width>",
        "border-radius": "<length-percentage>{1,4} [/ <length-percentage>{1,4}]?",
        "border-right": "<line-width>||<line-style>||<color>",
        "border-right-color": "<color>",
        "border-right-style": "<line-style>",
        "border-right-width": "<line-width>",
        "border-spacing": "<length> <length>?",
        "border-start-end-radius": "<length-percentage>{1,2}",
        "border-start-start-radius": "<length-percentage>{1,2}",
        "border-style": "<line-style>{1,4}",
        "border-top": "<line-width>||<line-style>||<color>",
        "border-top-color": "<color>",
        "border-top-left-radius": "<length-percentage>{1,2}",
        "border-top-right-radius": "<length-percentage>{1,2}",
        "border-top-style": "<line-style>",
        "border-top-width": "<line-width>",
        "border-width": "<line-width>{1,4}",
        "bottom": "<length>|<percentage>|auto",
        "box-align": "start|center|end|baseline|stretch",
        "box-decoration-break": "slice|clone",
        "box-direction": "normal|reverse|inherit",
        "box-flex": "<number>",
        "box-flex-group": "<integer>",
        "box-lines": "single|multiple",
        "box-ordinal-group": "<integer>",
        "box-orient": "horizontal|vertical|inline-axis|block-axis|inherit",
        "box-pack": "start|center|end|justify",
        "box-shadow": "none|<shadow>#",
        "box-sizing": "content-box|border-box",
        "break-after": "auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region",
        "break-before": "auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region",
        "break-inside": "auto|avoid|avoid-page|avoid-column|avoid-region",
        "caption-side": "top|bottom|block-start|block-end|inline-start|inline-end",
        "caret-color": "auto|<color>",
        "clear": "none|left|right|both|inline-start|inline-end",
        "clip": "<shape>|auto",
        "clip-path": "<clip-source>|[<basic-shape>||<geometry-box>]|none",
        "color": "<color>",
        "print-color-adjust": "economy|exact",
        "color-scheme": "normal|[light|dark|<custom-ident>]+&&only?",
        "column-count": "<integer>|auto",
        "column-fill": "auto|balance|balance-all",
        "column-gap": "normal|<length-percentage>",
        "column-rule": "<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>",
        "column-rule-color": "<color>",
        "column-rule-style": "<'border-style'>",
        "column-rule-width": "<'border-width'>",
        "column-span": "none|all",
        "column-width": "<length>|auto",
        "columns": "<'column-width'>||<'column-count'>",
        "contain": "none|strict|content|[size||layout||style||paint]",
        "content": "normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>]+]?",
        "content-visibility": "visible|auto|hidden",
        "counter-increment": "[<counter-name> <integer>?]+|none",
        "counter-reset": "[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none",
        "counter-set": "[<counter-name> <integer>?]+|none",
        "cursor": "[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",
        "direction": "ltr|rtl",
        "display": "[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>",
        "empty-cells": "show|hide",
        "filter": "none|<filter-function-list>|<-ms-filter-function-list>",
        "flex": "none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]",
        "flex-basis": "content|<'width'>",
        "flex-direction": "row|row-reverse|column|column-reverse",
        "flex-flow": "<'flex-direction'>||<'flex-wrap'>",
        "flex-grow": "<number>",
        "flex-shrink": "<number>",
        "flex-wrap": "nowrap|wrap|wrap-reverse",
        "float": "left|right|none|inline-start|inline-end",
        "font": "[[<'font-style'>||<font-variant-css21>||<'font-weight'>||<'font-stretch'>]? <'font-size'> [/ <'line-height'>]? <'font-family'>]|caption|icon|menu|message-box|small-caption|status-bar",
        "font-family": "[<family-name>|<generic-family>]#",
        "font-feature-settings": "normal|<feature-tag-value>#",
        "font-kerning": "auto|normal|none",
        "font-language-override": "normal|<string>",
        "font-optical-sizing": "auto|none",
        "font-variation-settings": "normal|[<string> <number>]#",
        "font-size": "<absolute-size>|<relative-size>|<length-percentage>",
        "font-size-adjust": "none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]",
        "font-smooth": "auto|never|always|<absolute-size>|<length>",
        "font-stretch": "<font-stretch-absolute>",
        "font-style": "normal|italic|oblique <angle>?",
        "font-synthesis": "none|[weight||style||small-caps]",
        "font-variant": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]",
        "font-variant-alternates": "normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]",
        "font-variant-caps": "normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps",
        "font-variant-east-asian": "normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]",
        "font-variant-ligatures": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]",
        "font-variant-numeric": "normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]",
        "font-variant-position": "normal|sub|super",
        "font-weight": "<font-weight-absolute>|bolder|lighter",
        "forced-color-adjust": "auto|none",
        "gap": "<'row-gap'> <'column-gap'>?",
        "grid": "<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>",
        "grid-area": "<grid-line> [/ <grid-line>]{0,3}",
        "grid-auto-columns": "<track-size>+",
        "grid-auto-flow": "[row|column]||dense",
        "grid-auto-rows": "<track-size>+",
        "grid-column": "<grid-line> [/ <grid-line>]?",
        "grid-column-end": "<grid-line>",
        "grid-column-gap": "<length-percentage>",
        "grid-column-start": "<grid-line>",
        "grid-gap": "<'grid-row-gap'> <'grid-column-gap'>?",
        "grid-row": "<grid-line> [/ <grid-line>]?",
        "grid-row-end": "<grid-line>",
        "grid-row-gap": "<length-percentage>",
        "grid-row-start": "<grid-line>",
        "grid-template": "none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?",
        "grid-template-areas": "none|<string>+",
        "grid-template-columns": "none|<track-list>|<auto-track-list>|subgrid <line-name-list>?",
        "grid-template-rows": "none|<track-list>|<auto-track-list>|subgrid <line-name-list>?",
        "hanging-punctuation": "none|[first||[force-end|allow-end]||last]",
        "height": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )",
        "hyphenate-character": "auto|<string>",
        "hyphens": "none|manual|auto",
        "image-orientation": "from-image|<angle>|[<angle>? flip]",
        "image-rendering": "auto|crisp-edges|pixelated|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>",
        "image-resolution": "[from-image||<resolution>]&&snap?",
        "ime-mode": "auto|normal|active|inactive|disabled",
        "initial-letter": "normal|[<number> <integer>?]",
        "initial-letter-align": "[auto|alphabetic|hanging|ideographic]",
        "inline-size": "<'width'>",
        "input-security": "auto|none",
        "inset": "<'top'>{1,4}",
        "inset-block": "<'top'>{1,2}",
        "inset-block-end": "<'top'>",
        "inset-block-start": "<'top'>",
        "inset-inline": "<'top'>{1,2}",
        "inset-inline-end": "<'top'>",
        "inset-inline-start": "<'top'>",
        "isolation": "auto|isolate",
        "justify-content": "normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]",
        "justify-items": "normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]",
        "justify-self": "auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]",
        "justify-tracks": "[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",
        "left": "<length>|<percentage>|auto",
        "letter-spacing": "normal|<length-percentage>",
        "line-break": "auto|loose|normal|strict|anywhere",
        "line-clamp": "none|<integer>",
        "line-height": "normal|<number>|<length>|<percentage>",
        "line-height-step": "<length>",
        "list-style": "<'list-style-type'>||<'list-style-position'>||<'list-style-image'>",
        "list-style-image": "<image>|none",
        "list-style-position": "inside|outside",
        "list-style-type": "<counter-style>|<string>|none",
        "margin": "[<length>|<percentage>|auto]{1,4}",
        "margin-block": "<'margin-left'>{1,2}",
        "margin-block-end": "<'margin-left'>",
        "margin-block-start": "<'margin-left'>",
        "margin-bottom": "<length>|<percentage>|auto",
        "margin-inline": "<'margin-left'>{1,2}",
        "margin-inline-end": "<'margin-left'>",
        "margin-inline-start": "<'margin-left'>",
        "margin-left": "<length>|<percentage>|auto",
        "margin-right": "<length>|<percentage>|auto",
        "margin-top": "<length>|<percentage>|auto",
        "margin-trim": "none|in-flow|all",
        "mask": "<mask-layer>#",
        "mask-border": "<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>",
        "mask-border-mode": "luminance|alpha",
        "mask-border-outset": "[<length>|<number>]{1,4}",
        "mask-border-repeat": "[stretch|repeat|round|space]{1,2}",
        "mask-border-slice": "<number-percentage>{1,4} fill?",
        "mask-border-source": "none|<image>",
        "mask-border-width": "[<length-percentage>|<number>|auto]{1,4}",
        "mask-clip": "[<geometry-box>|no-clip]#",
        "mask-composite": "<compositing-operator>#",
        "mask-image": "<mask-reference>#",
        "mask-mode": "<masking-mode>#",
        "mask-origin": "<geometry-box>#",
        "mask-position": "<position>#",
        "mask-repeat": "<repeat-style>#",
        "mask-size": "<bg-size>#",
        "mask-type": "luminance|alpha",
        "masonry-auto-flow": "[pack|next]||[definite-first|ordered]",
        "math-style": "normal|compact",
        "max-block-size": "<'max-width'>",
        "max-height": "none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )",
        "max-inline-size": "<'max-width'>",
        "max-lines": "none|<integer>",
        "max-width": "none|<length-percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>",
        "min-block-size": "<'min-width'>",
        "min-height": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )",
        "min-inline-size": "<'min-width'>",
        "min-width": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|<-non-standard-width>",
        "mix-blend-mode": "<blend-mode>|plus-lighter",
        "object-fit": "fill|contain|cover|none|scale-down",
        "object-position": "<position>",
        "offset": "[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?",
        "offset-anchor": "auto|<position>",
        "offset-distance": "<length-percentage>",
        "offset-path": "none|ray( [<angle>&&<size>&&contain?] )|<path()>|<url>|[<basic-shape>||<geometry-box>]",
        "offset-position": "auto|<position>",
        "offset-rotate": "[auto|reverse]||<angle>",
        "opacity": "<alpha-value>",
        "order": "<integer>",
        "orphans": "<integer>",
        "outline": "[<'outline-color'>||<'outline-style'>||<'outline-width'>]",
        "outline-color": "<color>|invert",
        "outline-offset": "<length>",
        "outline-style": "auto|<'border-style'>",
        "outline-width": "<line-width>",
        "overflow": "[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>",
        "overflow-anchor": "auto|none",
        "overflow-block": "visible|hidden|clip|scroll|auto",
        "overflow-clip-box": "padding-box|content-box",
        "overflow-clip-margin": "<visual-box>||<length [0,\u221E]>",
        "overflow-inline": "visible|hidden|clip|scroll|auto",
        "overflow-wrap": "normal|break-word|anywhere",
        "overflow-x": "visible|hidden|clip|scroll|auto",
        "overflow-y": "visible|hidden|clip|scroll|auto",
        "overscroll-behavior": "[contain|none|auto]{1,2}",
        "overscroll-behavior-block": "contain|none|auto",
        "overscroll-behavior-inline": "contain|none|auto",
        "overscroll-behavior-x": "contain|none|auto",
        "overscroll-behavior-y": "contain|none|auto",
        "padding": "[<length>|<percentage>]{1,4}",
        "padding-block": "<'padding-left'>{1,2}",
        "padding-block-end": "<'padding-left'>",
        "padding-block-start": "<'padding-left'>",
        "padding-bottom": "<length>|<percentage>",
        "padding-inline": "<'padding-left'>{1,2}",
        "padding-inline-end": "<'padding-left'>",
        "padding-inline-start": "<'padding-left'>",
        "padding-left": "<length>|<percentage>",
        "padding-right": "<length>|<percentage>",
        "padding-top": "<length>|<percentage>",
        "page-break-after": "auto|always|avoid|left|right|recto|verso",
        "page-break-before": "auto|always|avoid|left|right|recto|verso",
        "page-break-inside": "auto|avoid",
        "paint-order": "normal|[fill||stroke||markers]",
        "perspective": "none|<length>",
        "perspective-origin": "<position>",
        "place-content": "<'align-content'> <'justify-content'>?",
        "place-items": "<'align-items'> <'justify-items'>?",
        "place-self": "<'align-self'> <'justify-self'>?",
        "pointer-events": "auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",
        "position": "static|relative|absolute|sticky|fixed|-webkit-sticky",
        "quotes": "none|auto|[<string> <string>]+",
        "resize": "none|both|horizontal|vertical|block|inline",
        "right": "<length>|<percentage>|auto",
        "rotate": "none|<angle>|[x|y|z|<number>{3}]&&<angle>",
        "row-gap": "normal|<length-percentage>",
        "ruby-align": "start|center|space-between|space-around",
        "ruby-merge": "separate|collapse|auto",
        "ruby-position": "[alternate||[over|under]]|inter-character",
        "scale": "none|<number>{1,3}",
        "scrollbar-color": "auto|<color>{2}",
        "scrollbar-gutter": "auto|stable&&both-edges?",
        "scrollbar-width": "auto|thin|none",
        "scroll-behavior": "auto|smooth",
        "scroll-margin": "<length>{1,4}",
        "scroll-margin-block": "<length>{1,2}",
        "scroll-margin-block-start": "<length>",
        "scroll-margin-block-end": "<length>",
        "scroll-margin-bottom": "<length>",
        "scroll-margin-inline": "<length>{1,2}",
        "scroll-margin-inline-start": "<length>",
        "scroll-margin-inline-end": "<length>",
        "scroll-margin-left": "<length>",
        "scroll-margin-right": "<length>",
        "scroll-margin-top": "<length>",
        "scroll-padding": "[auto|<length-percentage>]{1,4}",
        "scroll-padding-block": "[auto|<length-percentage>]{1,2}",
        "scroll-padding-block-start": "auto|<length-percentage>",
        "scroll-padding-block-end": "auto|<length-percentage>",
        "scroll-padding-bottom": "auto|<length-percentage>",
        "scroll-padding-inline": "[auto|<length-percentage>]{1,2}",
        "scroll-padding-inline-start": "auto|<length-percentage>",
        "scroll-padding-inline-end": "auto|<length-percentage>",
        "scroll-padding-left": "auto|<length-percentage>",
        "scroll-padding-right": "auto|<length-percentage>",
        "scroll-padding-top": "auto|<length-percentage>",
        "scroll-snap-align": "[none|start|end|center]{1,2}",
        "scroll-snap-coordinate": "none|<position>#",
        "scroll-snap-destination": "<position>",
        "scroll-snap-points-x": "none|repeat( <length-percentage> )",
        "scroll-snap-points-y": "none|repeat( <length-percentage> )",
        "scroll-snap-stop": "normal|always",
        "scroll-snap-type": "none|[x|y|block|inline|both] [mandatory|proximity]?",
        "scroll-snap-type-x": "none|mandatory|proximity",
        "scroll-snap-type-y": "none|mandatory|proximity",
        "shape-image-threshold": "<alpha-value>",
        "shape-margin": "<length-percentage>",
        "shape-outside": "none|[<shape-box>||<basic-shape>]|<image>",
        "tab-size": "<integer>|<length>",
        "table-layout": "auto|fixed",
        "text-align": "start|end|left|right|center|justify|match-parent",
        "text-align-last": "auto|start|end|left|right|center|justify",
        "text-combine-upright": "none|all|[digits <integer>?]",
        "text-decoration": "<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>",
        "text-decoration-color": "<color>",
        "text-decoration-line": "none|[underline||overline||line-through||blink]|spelling-error|grammar-error",
        "text-decoration-skip": "none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]",
        "text-decoration-skip-ink": "auto|all|none",
        "text-decoration-style": "solid|double|dotted|dashed|wavy",
        "text-decoration-thickness": "auto|from-font|<length>|<percentage>",
        "text-emphasis": "<'text-emphasis-style'>||<'text-emphasis-color'>",
        "text-emphasis-color": "<color>",
        "text-emphasis-position": "[over|under]&&[right|left]",
        "text-emphasis-style": "none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>",
        "text-indent": "<length-percentage>&&hanging?&&each-line?",
        "text-justify": "auto|inter-character|inter-word|none",
        "text-orientation": "mixed|upright|sideways",
        "text-overflow": "[clip|ellipsis|<string>]{1,2}",
        "text-rendering": "auto|optimizeSpeed|optimizeLegibility|geometricPrecision",
        "text-shadow": "none|<shadow-t>#",
        "text-size-adjust": "none|auto|<percentage>",
        "text-transform": "none|capitalize|uppercase|lowercase|full-width|full-size-kana",
        "text-underline-offset": "auto|<length>|<percentage>",
        "text-underline-position": "auto|from-font|[under||[left|right]]",
        "top": "<length>|<percentage>|auto",
        "touch-action": "auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",
        "transform": "none|<transform-list>",
        "transform-box": "content-box|border-box|fill-box|stroke-box|view-box",
        "transform-origin": "[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?",
        "transform-style": "flat|preserve-3d",
        "transition": "<single-transition>#",
        "transition-delay": "<time>#",
        "transition-duration": "<time>#",
        "transition-property": "none|<single-transition-property>#",
        "transition-timing-function": "<easing-function>#",
        "translate": "none|<length-percentage> [<length-percentage> <length>?]?",
        "unicode-bidi": "normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext",
        "user-select": "auto|text|none|contain|all",
        "vertical-align": "baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>",
        "visibility": "visible|hidden|collapse",
        "white-space": "normal|pre|nowrap|pre-wrap|pre-line|break-spaces",
        "widows": "<integer>",
        "width": "auto|<length>|<percentage>|min-content|max-content|fit-content|fit-content( <length-percentage> )|fill|stretch|intrinsic|-moz-max-content|-webkit-max-content|-moz-fit-content|-webkit-fit-content",
        "will-change": "auto|<animateable-feature>#",
        "word-break": "normal|break-all|keep-all|break-word",
        "word-spacing": "normal|<length>",
        "word-wrap": "normal|break-word",
        "writing-mode": "horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>",
        "z-index": "auto|<integer>",
        "zoom": "normal|reset|<number>|<percentage>",
        "-moz-background-clip": "padding|border",
        "-moz-border-radius-bottomleft": "<'border-bottom-left-radius'>",
        "-moz-border-radius-bottomright": "<'border-bottom-right-radius'>",
        "-moz-border-radius-topleft": "<'border-top-left-radius'>",
        "-moz-border-radius-topright": "<'border-bottom-right-radius'>",
        "-moz-control-character-visibility": "visible|hidden",
        "-moz-osx-font-smoothing": "auto|grayscale",
        "-moz-user-select": "none|text|all|-moz-none",
        "-ms-flex-align": "start|end|center|baseline|stretch",
        "-ms-flex-item-align": "auto|start|end|center|baseline|stretch",
        "-ms-flex-line-pack": "start|end|center|justify|distribute|stretch",
        "-ms-flex-negative": "<'flex-shrink'>",
        "-ms-flex-pack": "start|end|center|justify|distribute",
        "-ms-flex-order": "<integer>",
        "-ms-flex-positive": "<'flex-grow'>",
        "-ms-flex-preferred-size": "<'flex-basis'>",
        "-ms-interpolation-mode": "nearest-neighbor|bicubic",
        "-ms-grid-column-align": "start|end|center|stretch",
        "-ms-grid-row-align": "start|end|center|stretch",
        "-ms-hyphenate-limit-last": "none|always|column|page|spread",
        "-webkit-background-clip": "[<box>|border|padding|content|text]#",
        "-webkit-column-break-after": "always|auto|avoid",
        "-webkit-column-break-before": "always|auto|avoid",
        "-webkit-column-break-inside": "always|auto|avoid",
        "-webkit-font-smoothing": "auto|none|antialiased|subpixel-antialiased",
        "-webkit-mask-box-image": "[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?",
        "-webkit-print-color-adjust": "economy|exact",
        "-webkit-text-security": "none|circle|disc|square",
        "-webkit-user-drag": "none|element|auto",
        "-webkit-user-select": "auto|none|text|all",
        "alignment-baseline": "auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical",
        "baseline-shift": "baseline|sub|super|<svg-length>",
        "behavior": "<url>+",
        "clip-rule": "nonzero|evenodd",
        "cue": "<'cue-before'> <'cue-after'>?",
        "cue-after": "<url> <decibel>?|none",
        "cue-before": "<url> <decibel>?|none",
        "dominant-baseline": "auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge",
        "fill": "<paint>",
        "fill-opacity": "<number-zero-one>",
        "fill-rule": "nonzero|evenodd",
        "glyph-orientation-horizontal": "<angle>",
        "glyph-orientation-vertical": "<angle>",
        "kerning": "auto|<svg-length>",
        "marker": "none|<url>",
        "marker-end": "none|<url>",
        "marker-mid": "none|<url>",
        "marker-start": "none|<url>",
        "pause": "<'pause-before'> <'pause-after'>?",
        "pause-after": "<time>|none|x-weak|weak|medium|strong|x-strong",
        "pause-before": "<time>|none|x-weak|weak|medium|strong|x-strong",
        "rest": "<'rest-before'> <'rest-after'>?",
        "rest-after": "<time>|none|x-weak|weak|medium|strong|x-strong",
        "rest-before": "<time>|none|x-weak|weak|medium|strong|x-strong",
        "shape-rendering": "auto|optimizeSpeed|crispEdges|geometricPrecision",
        "src": "[<url> [format( <string># )]?|local( <family-name> )]#",
        "speak": "auto|none|normal",
        "speak-as": "normal|spell-out||digits||[literal-punctuation|no-punctuation]",
        "stroke": "<paint>",
        "stroke-dasharray": "none|[<svg-length>+]#",
        "stroke-dashoffset": "<svg-length>",
        "stroke-linecap": "butt|round|square",
        "stroke-linejoin": "miter|round|bevel",
        "stroke-miterlimit": "<number-one-or-greater>",
        "stroke-opacity": "<number-zero-one>",
        "stroke-width": "<svg-length>",
        "text-anchor": "start|middle|end",
        "unicode-range": "<urange>#",
        "voice-balance": "<number>|left|center|right|leftwards|rightwards",
        "voice-duration": "auto|<time>",
        "voice-family": "[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve",
        "voice-pitch": "<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]",
        "voice-range": "<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]",
        "voice-rate": "[normal|x-slow|slow|medium|fast|x-fast]||<percentage>",
        "voice-stress": "normal|strong|moderate|none|reduced",
        "voice-volume": "silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]"
      },
      "atrules": {
        "charset": {
          "prelude": "<string>",
          "descriptors": null
        },
        "counter-style": {
          "prelude": "<counter-style-name>",
          "descriptors": {
            "additive-symbols": "[<integer>&&<symbol>]#",
            "fallback": "<counter-style-name>",
            "negative": "<symbol> <symbol>?",
            "pad": "<integer>&&<symbol>",
            "prefix": "<symbol>",
            "range": "[[<integer>|infinite]{2}]#|auto",
            "speak-as": "auto|bullets|numbers|words|spell-out|<counter-style-name>",
            "suffix": "<symbol>",
            "symbols": "<symbol>+",
            "system": "cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"
          }
        },
        "document": {
          "prelude": "[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",
          "descriptors": null
        },
        "font-face": {
          "prelude": null,
          "descriptors": {
            "ascent-override": "normal|<percentage>",
            "descent-override": "normal|<percentage>",
            "font-display": "[auto|block|swap|fallback|optional]",
            "font-family": "<family-name>",
            "font-feature-settings": "normal|<feature-tag-value>#",
            "font-variation-settings": "normal|[<string> <number>]#",
            "font-stretch": "<font-stretch-absolute>{1,2}",
            "font-style": "normal|italic|oblique <angle>{0,2}",
            "font-weight": "<font-weight-absolute>{1,2}",
            "font-variant": "normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]",
            "line-gap-override": "normal|<percentage>",
            "size-adjust": "<percentage>",
            "src": "[<url> [format( <string># )]?|local( <family-name> )]#",
            "unicode-range": "<urange>#"
          }
        },
        "font-feature-values": {
          "prelude": "<family-name>#",
          "descriptors": null
        },
        "import": {
          "prelude": "[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?",
          "descriptors": null
        },
        "keyframes": {
          "prelude": "<keyframes-name>",
          "descriptors": null
        },
        "layer": {
          "prelude": "[<layer-name>#|<layer-name>?]",
          "descriptors": null
        },
        "media": {
          "prelude": "<media-query-list>",
          "descriptors": null
        },
        "namespace": {
          "prelude": "<namespace-prefix>? [<string>|<url>]",
          "descriptors": null
        },
        "page": {
          "prelude": "<page-selector-list>",
          "descriptors": {
            "bleed": "auto|<length>",
            "marks": "none|[crop||cross]",
            "size": "<length>{1,2}|auto|[<page-size>||[portrait|landscape]]"
          }
        },
        "property": {
          "prelude": "<custom-property-name>",
          "descriptors": {
            "syntax": "<string>",
            "inherits": "true|false",
            "initial-value": "<string>"
          }
        },
        "scroll-timeline": {
          "prelude": "<timeline-name>",
          "descriptors": null
        },
        "supports": {
          "prelude": "<supports-condition>",
          "descriptors": null
        },
        "viewport": {
          "prelude": null,
          "descriptors": {
            "height": "<viewport-length>{1,2}",
            "max-height": "<viewport-length>",
            "max-width": "<viewport-length>",
            "max-zoom": "auto|<number>|<percentage>",
            "min-height": "<viewport-length>",
            "min-width": "<viewport-length>",
            "min-zoom": "auto|<number>|<percentage>",
            "orientation": "auto|portrait|landscape",
            "user-zoom": "zoom|fixed",
            "viewport-fit": "auto|contain|cover",
            "width": "<viewport-length>{1,2}",
            "zoom": "auto|<number>|<percentage>"
          }
        }
      }
    };
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs
var require_AnPlusB2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var charCodeDefinitions = require_char_code_definitions2();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var N = 110;
    var DISALLOW_SIGN = true;
    var ALLOW_SIGN = false;
    function checkInteger(offset, disallowSign) {
      let pos = this.tokenStart + offset;
      const code = this.charCodeAt(pos);
      if (code === PLUSSIGN || code === HYPHENMINUS) {
        if (disallowSign) {
          this.error("Number sign is not allowed");
        }
        pos++;
      }
      for (; pos < this.tokenEnd; pos++) {
        if (!charCodeDefinitions.isDigit(this.charCodeAt(pos))) {
          this.error("Integer is expected", pos);
        }
      }
    }
    function checkTokenIsInteger(disallowSign) {
      return checkInteger.call(this, 0, disallowSign);
    }
    function expectCharCode(offset, code) {
      if (!this.cmpChar(this.tokenStart + offset, code)) {
        let msg = "";
        switch (code) {
          case N:
            msg = "N is expected";
            break;
          case HYPHENMINUS:
            msg = "HyphenMinus is expected";
            break;
        }
        this.error(msg, this.tokenStart + offset);
      }
    }
    function consumeB() {
      let offset = 0;
      let sign = 0;
      let type = this.tokenType;
      while (type === types.WhiteSpace || type === types.Comment) {
        type = this.lookupType(++offset);
      }
      if (type !== types.Number) {
        if (this.isDelim(PLUSSIGN, offset) || this.isDelim(HYPHENMINUS, offset)) {
          sign = this.isDelim(PLUSSIGN, offset) ? PLUSSIGN : HYPHENMINUS;
          do {
            type = this.lookupType(++offset);
          } while (type === types.WhiteSpace || type === types.Comment);
          if (type !== types.Number) {
            this.skip(offset);
            checkTokenIsInteger.call(this, DISALLOW_SIGN);
          }
        } else {
          return null;
        }
      }
      if (offset > 0) {
        this.skip(offset);
      }
      if (sign === 0) {
        type = this.charCodeAt(this.tokenStart);
        if (type !== PLUSSIGN && type !== HYPHENMINUS) {
          this.error("Number sign is expected");
        }
      }
      checkTokenIsInteger.call(this, sign !== 0);
      return sign === HYPHENMINUS ? "-" + this.consume(types.Number) : this.consume(types.Number);
    }
    var name = "AnPlusB";
    var structure = {
      a: [String, null],
      b: [String, null]
    };
    function parse() {
      const start = this.tokenStart;
      let a = null;
      let b = null;
      if (this.tokenType === types.Number) {
        checkTokenIsInteger.call(this, ALLOW_SIGN);
        b = this.consume(types.Number);
      } else if (this.tokenType === types.Ident && this.cmpChar(this.tokenStart, HYPHENMINUS)) {
        a = "-1";
        expectCharCode.call(this, 1, N);
        switch (this.tokenEnd - this.tokenStart) {
          // -n
          // -n <signed-integer>
          // -n ['+' | '-'] <signless-integer>
          case 2:
            this.next();
            b = consumeB.call(this);
            break;
          // -n- <signless-integer>
          case 3:
            expectCharCode.call(this, 2, HYPHENMINUS);
            this.next();
            this.skipSC();
            checkTokenIsInteger.call(this, DISALLOW_SIGN);
            b = "-" + this.consume(types.Number);
            break;
          // <dashndashdigit-ident>
          default:
            expectCharCode.call(this, 2, HYPHENMINUS);
            checkInteger.call(this, 3, DISALLOW_SIGN);
            this.next();
            b = this.substrToCursor(start + 2);
        }
      } else if (this.tokenType === types.Ident || this.isDelim(PLUSSIGN) && this.lookupType(1) === types.Ident) {
        let sign = 0;
        a = "1";
        if (this.isDelim(PLUSSIGN)) {
          sign = 1;
          this.next();
        }
        expectCharCode.call(this, 0, N);
        switch (this.tokenEnd - this.tokenStart) {
          // '+'? n
          // '+'? n <signed-integer>
          // '+'? n ['+' | '-'] <signless-integer>
          case 1:
            this.next();
            b = consumeB.call(this);
            break;
          // '+'? n- <signless-integer>
          case 2:
            expectCharCode.call(this, 1, HYPHENMINUS);
            this.next();
            this.skipSC();
            checkTokenIsInteger.call(this, DISALLOW_SIGN);
            b = "-" + this.consume(types.Number);
            break;
          // '+'? <ndashdigit-ident>
          default:
            expectCharCode.call(this, 1, HYPHENMINUS);
            checkInteger.call(this, 2, DISALLOW_SIGN);
            this.next();
            b = this.substrToCursor(start + sign + 1);
        }
      } else if (this.tokenType === types.Dimension) {
        const code = this.charCodeAt(this.tokenStart);
        const sign = code === PLUSSIGN || code === HYPHENMINUS;
        let i = this.tokenStart + sign;
        for (; i < this.tokenEnd; i++) {
          if (!charCodeDefinitions.isDigit(this.charCodeAt(i))) {
            break;
          }
        }
        if (i === this.tokenStart + sign) {
          this.error("Integer is expected", this.tokenStart + sign);
        }
        expectCharCode.call(this, i - this.tokenStart, N);
        a = this.substring(start, i);
        if (i + 1 === this.tokenEnd) {
          this.next();
          b = consumeB.call(this);
        } else {
          expectCharCode.call(this, i - this.tokenStart + 1, HYPHENMINUS);
          if (i + 2 === this.tokenEnd) {
            this.next();
            this.skipSC();
            checkTokenIsInteger.call(this, DISALLOW_SIGN);
            b = "-" + this.consume(types.Number);
          } else {
            checkInteger.call(this, i - this.tokenStart + 2, DISALLOW_SIGN);
            this.next();
            b = this.substrToCursor(i + 1);
          }
        }
      } else {
        this.error();
      }
      if (a !== null && a.charCodeAt(0) === PLUSSIGN) {
        a = a.substr(1);
      }
      if (b !== null && b.charCodeAt(0) === PLUSSIGN) {
        b = b.substr(1);
      }
      return {
        type: "AnPlusB",
        loc: this.getLocation(start, this.tokenStart),
        a,
        b
      };
    }
    function generate(node) {
      if (node.a) {
        const a = node.a === "+1" && "n" || node.a === "1" && "n" || node.a === "-1" && "-n" || node.a + "n";
        if (node.b) {
          const b = node.b[0] === "-" || node.b[0] === "+" ? node.b : "+" + node.b;
          this.tokenize(a + b);
        } else {
          this.tokenize(a);
        }
      } else {
        this.tokenize(node.b);
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Atrule.cjs
var require_Atrule2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Atrule.cjs"(exports) {
    "use strict";
    var types = require_types3();
    function consumeRaw(startToken) {
      return this.Raw(startToken, this.consumeUntilLeftCurlyBracketOrSemicolon, true);
    }
    function isDeclarationBlockAtrule() {
      for (let offset = 1, type; type = this.lookupType(offset); offset++) {
        if (type === types.RightCurlyBracket) {
          return true;
        }
        if (type === types.LeftCurlyBracket || type === types.AtKeyword) {
          return false;
        }
      }
      return false;
    }
    var name = "Atrule";
    var walkContext = "atrule";
    var structure = {
      name: String,
      prelude: ["AtrulePrelude", "Raw", null],
      block: ["Block", null]
    };
    function parse() {
      const start = this.tokenStart;
      let name2;
      let nameLowerCase;
      let prelude = null;
      let block = null;
      this.eat(types.AtKeyword);
      name2 = this.substrToCursor(start + 1);
      nameLowerCase = name2.toLowerCase();
      this.skipSC();
      if (this.eof === false && this.tokenType !== types.LeftCurlyBracket && this.tokenType !== types.Semicolon) {
        if (this.parseAtrulePrelude) {
          prelude = this.parseWithFallback(this.AtrulePrelude.bind(this, name2), consumeRaw);
        } else {
          prelude = consumeRaw.call(this, this.tokenIndex);
        }
        this.skipSC();
      }
      switch (this.tokenType) {
        case types.Semicolon:
          this.next();
          break;
        case types.LeftCurlyBracket:
          if (hasOwnProperty.call(this.atrule, nameLowerCase) && typeof this.atrule[nameLowerCase].block === "function") {
            block = this.atrule[nameLowerCase].block.call(this);
          } else {
            block = this.Block(isDeclarationBlockAtrule.call(this));
          }
          break;
      }
      return {
        type: "Atrule",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        prelude,
        block
      };
    }
    function generate(node) {
      this.token(types.AtKeyword, "@" + node.name);
      if (node.prelude !== null) {
        this.node(node.prelude);
      }
      if (node.block) {
        this.node(node.block);
      } else {
        this.token(types.Semicolon, ";");
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs
var require_AtrulePrelude2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "AtrulePrelude";
    var walkContext = "atrulePrelude";
    var structure = {
      children: [[]]
    };
    function parse(name2) {
      let children = null;
      if (name2 !== null) {
        name2 = name2.toLowerCase();
      }
      this.skipSC();
      if (hasOwnProperty.call(this.atrule, name2) && typeof this.atrule[name2].prelude === "function") {
        children = this.atrule[name2].prelude.call(this);
      } else {
        children = this.readSequence(this.scope.AtrulePrelude);
      }
      this.skipSC();
      if (this.eof !== true && this.tokenType !== types.LeftCurlyBracket && this.tokenType !== types.Semicolon) {
        this.error("Semicolon or block is expected");
      }
      return {
        type: "AtrulePrelude",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs
var require_AttributeSelector2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var DOLLARSIGN = 36;
    var ASTERISK = 42;
    var EQUALSSIGN = 61;
    var CIRCUMFLEXACCENT = 94;
    var VERTICALLINE = 124;
    var TILDE = 126;
    function getAttributeName() {
      if (this.eof) {
        this.error("Unexpected end of input");
      }
      const start = this.tokenStart;
      let expectIdent = false;
      if (this.isDelim(ASTERISK)) {
        expectIdent = true;
        this.next();
      } else if (!this.isDelim(VERTICALLINE)) {
        this.eat(types.Ident);
      }
      if (this.isDelim(VERTICALLINE)) {
        if (this.charCodeAt(this.tokenStart + 1) !== EQUALSSIGN) {
          this.next();
          this.eat(types.Ident);
        } else if (expectIdent) {
          this.error("Identifier is expected", this.tokenEnd);
        }
      } else if (expectIdent) {
        this.error("Vertical line is expected");
      }
      return {
        type: "Identifier",
        loc: this.getLocation(start, this.tokenStart),
        name: this.substrToCursor(start)
      };
    }
    function getOperator() {
      const start = this.tokenStart;
      const code = this.charCodeAt(start);
      if (code !== EQUALSSIGN && // =
      code !== TILDE && // ~=
      code !== CIRCUMFLEXACCENT && // ^=
      code !== DOLLARSIGN && // $=
      code !== ASTERISK && // *=
      code !== VERTICALLINE) {
        this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected");
      }
      this.next();
      if (code !== EQUALSSIGN) {
        if (!this.isDelim(EQUALSSIGN)) {
          this.error("Equal sign is expected");
        }
        this.next();
      }
      return this.substrToCursor(start);
    }
    var name = "AttributeSelector";
    var structure = {
      name: "Identifier",
      matcher: [String, null],
      value: ["String", "Identifier", null],
      flags: [String, null]
    };
    function parse() {
      const start = this.tokenStart;
      let name2;
      let matcher = null;
      let value = null;
      let flags = null;
      this.eat(types.LeftSquareBracket);
      this.skipSC();
      name2 = getAttributeName.call(this);
      this.skipSC();
      if (this.tokenType !== types.RightSquareBracket) {
        if (this.tokenType !== types.Ident) {
          matcher = getOperator.call(this);
          this.skipSC();
          value = this.tokenType === types.String ? this.String() : this.Identifier();
          this.skipSC();
        }
        if (this.tokenType === types.Ident) {
          flags = this.consume(types.Ident);
          this.skipSC();
        }
      }
      this.eat(types.RightSquareBracket);
      return {
        type: "AttributeSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        matcher,
        value,
        flags
      };
    }
    function generate(node) {
      this.token(types.Delim, "[");
      this.node(node.name);
      if (node.matcher !== null) {
        this.tokenize(node.matcher);
        this.node(node.value);
      }
      if (node.flags !== null) {
        this.token(types.Ident, node.flags);
      }
      this.token(types.Delim, "]");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Block.cjs
var require_Block2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Block.cjs"(exports) {
    "use strict";
    var types = require_types3();
    function consumeRaw(startToken) {
      return this.Raw(startToken, null, true);
    }
    function consumeRule() {
      return this.parseWithFallback(this.Rule, consumeRaw);
    }
    function consumeRawDeclaration(startToken) {
      return this.Raw(startToken, this.consumeUntilSemicolonIncluded, true);
    }
    function consumeDeclaration() {
      if (this.tokenType === types.Semicolon) {
        return consumeRawDeclaration.call(this, this.tokenIndex);
      }
      const node = this.parseWithFallback(this.Declaration, consumeRawDeclaration);
      if (this.tokenType === types.Semicolon) {
        this.next();
      }
      return node;
    }
    var name = "Block";
    var walkContext = "block";
    var structure = {
      children: [[
        "Atrule",
        "Rule",
        "Declaration"
      ]]
    };
    function parse(isDeclaration) {
      const consumer = isDeclaration ? consumeDeclaration : consumeRule;
      const start = this.tokenStart;
      let children = this.createList();
      this.eat(types.LeftCurlyBracket);
      scan:
        while (!this.eof) {
          switch (this.tokenType) {
            case types.RightCurlyBracket:
              break scan;
            case types.WhiteSpace:
            case types.Comment:
              this.next();
              break;
            case types.AtKeyword:
              children.push(this.parseWithFallback(this.Atrule, consumeRaw));
              break;
            default:
              children.push(consumer.call(this));
          }
        }
      if (!this.eof) {
        this.eat(types.RightCurlyBracket);
      }
      return {
        type: "Block",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.token(types.LeftCurlyBracket, "{");
      this.children(node, (prev) => {
        if (prev.type === "Declaration") {
          this.token(types.Semicolon, ";");
        }
      });
      this.token(types.RightCurlyBracket, "}");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Brackets.cjs
var require_Brackets2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Brackets.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "Brackets";
    var structure = {
      children: [[]]
    };
    function parse(readSequence, recognizer) {
      const start = this.tokenStart;
      let children = null;
      this.eat(types.LeftSquareBracket);
      children = readSequence.call(this, recognizer);
      if (!this.eof) {
        this.eat(types.RightSquareBracket);
      }
      return {
        type: "Brackets",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.token(types.Delim, "[");
      this.children(node);
      this.token(types.Delim, "]");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDC.cjs
var require_CDC2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDC.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "CDC";
    var structure = [];
    function parse() {
      const start = this.tokenStart;
      this.eat(types.CDC);
      return {
        type: "CDC",
        loc: this.getLocation(start, this.tokenStart)
      };
    }
    function generate() {
      this.token(types.CDC, "-->");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDO.cjs
var require_CDO2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/CDO.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "CDO";
    var structure = [];
    function parse() {
      const start = this.tokenStart;
      this.eat(types.CDO);
      return {
        type: "CDO",
        loc: this.getLocation(start, this.tokenStart)
      };
    }
    function generate() {
      this.token(types.CDO, "<!--");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs
var require_ClassSelector2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var FULLSTOP = 46;
    var name = "ClassSelector";
    var structure = {
      name: String
    };
    function parse() {
      this.eatDelim(FULLSTOP);
      return {
        type: "ClassSelector",
        loc: this.getLocation(this.tokenStart - 1, this.tokenEnd),
        name: this.consume(types.Ident)
      };
    }
    function generate(node) {
      this.token(types.Delim, ".");
      this.token(types.Ident, node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Combinator.cjs
var require_Combinator2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Combinator.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var PLUSSIGN = 43;
    var SOLIDUS = 47;
    var GREATERTHANSIGN = 62;
    var TILDE = 126;
    var name = "Combinator";
    var structure = {
      name: String
    };
    function parse() {
      const start = this.tokenStart;
      let name2;
      switch (this.tokenType) {
        case types.WhiteSpace:
          name2 = " ";
          break;
        case types.Delim:
          switch (this.charCodeAt(this.tokenStart)) {
            case GREATERTHANSIGN:
            case PLUSSIGN:
            case TILDE:
              this.next();
              break;
            case SOLIDUS:
              this.next();
              this.eatIdent("deep");
              this.eatDelim(SOLIDUS);
              break;
            default:
              this.error("Combinator is expected");
          }
          name2 = this.substrToCursor(start);
          break;
      }
      return {
        type: "Combinator",
        loc: this.getLocation(start, this.tokenStart),
        name: name2
      };
    }
    function generate(node) {
      this.tokenize(node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Comment.cjs
var require_Comment2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Comment.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var ASTERISK = 42;
    var SOLIDUS = 47;
    var name = "Comment";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      let end = this.tokenEnd;
      this.eat(types.Comment);
      if (end - start + 2 >= 2 && this.charCodeAt(end - 2) === ASTERISK && this.charCodeAt(end - 1) === SOLIDUS) {
        end -= 2;
      }
      return {
        type: "Comment",
        loc: this.getLocation(start, this.tokenStart),
        value: this.substring(start + 2, end)
      };
    }
    function generate(node) {
      this.token(types.Comment, "/*" + node.value + "*/");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Declaration.cjs
var require_Declaration2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Declaration.cjs"(exports) {
    "use strict";
    var names = require_names4();
    var types = require_types3();
    var EXCLAMATIONMARK = 33;
    var NUMBERSIGN = 35;
    var DOLLARSIGN = 36;
    var AMPERSAND = 38;
    var ASTERISK = 42;
    var PLUSSIGN = 43;
    var SOLIDUS = 47;
    function consumeValueRaw(startToken) {
      return this.Raw(startToken, this.consumeUntilExclamationMarkOrSemicolon, true);
    }
    function consumeCustomPropertyRaw(startToken) {
      return this.Raw(startToken, this.consumeUntilExclamationMarkOrSemicolon, false);
    }
    function consumeValue() {
      const startValueToken = this.tokenIndex;
      const value = this.Value();
      if (value.type !== "Raw" && this.eof === false && this.tokenType !== types.Semicolon && this.isDelim(EXCLAMATIONMARK) === false && this.isBalanceEdge(startValueToken) === false) {
        this.error();
      }
      return value;
    }
    var name = "Declaration";
    var walkContext = "declaration";
    var structure = {
      important: [Boolean, String],
      property: String,
      value: ["Value", "Raw"]
    };
    function parse() {
      const start = this.tokenStart;
      const startToken = this.tokenIndex;
      const property = readProperty.call(this);
      const customProperty = names.isCustomProperty(property);
      const parseValue = customProperty ? this.parseCustomProperty : this.parseValue;
      const consumeRaw = customProperty ? consumeCustomPropertyRaw : consumeValueRaw;
      let important = false;
      let value;
      this.skipSC();
      this.eat(types.Colon);
      const valueStart = this.tokenIndex;
      if (!customProperty) {
        this.skipSC();
      }
      if (parseValue) {
        value = this.parseWithFallback(consumeValue, consumeRaw);
      } else {
        value = consumeRaw.call(this, this.tokenIndex);
      }
      if (customProperty && value.type === "Value" && value.children.isEmpty) {
        for (let offset = valueStart - this.tokenIndex; offset <= 0; offset++) {
          if (this.lookupType(offset) === types.WhiteSpace) {
            value.children.appendData({
              type: "WhiteSpace",
              loc: null,
              value: " "
            });
            break;
          }
        }
      }
      if (this.isDelim(EXCLAMATIONMARK)) {
        important = getImportant.call(this);
        this.skipSC();
      }
      if (this.eof === false && this.tokenType !== types.Semicolon && this.isBalanceEdge(startToken) === false) {
        this.error();
      }
      return {
        type: "Declaration",
        loc: this.getLocation(start, this.tokenStart),
        important,
        property,
        value
      };
    }
    function generate(node) {
      this.token(types.Ident, node.property);
      this.token(types.Colon, ":");
      this.node(node.value);
      if (node.important) {
        this.token(types.Delim, "!");
        this.token(types.Ident, node.important === true ? "important" : node.important);
      }
    }
    function readProperty() {
      const start = this.tokenStart;
      if (this.tokenType === types.Delim) {
        switch (this.charCodeAt(this.tokenStart)) {
          case ASTERISK:
          case DOLLARSIGN:
          case PLUSSIGN:
          case NUMBERSIGN:
          case AMPERSAND:
            this.next();
            break;
          // TODO: not sure we should support this hack
          case SOLIDUS:
            this.next();
            if (this.isDelim(SOLIDUS)) {
              this.next();
            }
            break;
        }
      }
      if (this.tokenType === types.Hash) {
        this.eat(types.Hash);
      } else {
        this.eat(types.Ident);
      }
      return this.substrToCursor(start);
    }
    function getImportant() {
      this.eat(types.Delim);
      this.skipSC();
      const important = this.consume(types.Ident);
      return important === "important" ? true : important;
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs
var require_DeclarationList2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs"(exports) {
    "use strict";
    var types = require_types3();
    function consumeRaw(startToken) {
      return this.Raw(startToken, this.consumeUntilSemicolonIncluded, true);
    }
    var name = "DeclarationList";
    var structure = {
      children: [[
        "Declaration"
      ]]
    };
    function parse() {
      const children = this.createList();
      while (!this.eof) {
        switch (this.tokenType) {
          case types.WhiteSpace:
          case types.Comment:
          case types.Semicolon:
            this.next();
            break;
          default:
            children.push(this.parseWithFallback(this.Declaration, consumeRaw));
        }
      }
      return {
        type: "DeclarationList",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node, (prev) => {
        if (prev.type === "Declaration") {
          this.token(types.Semicolon, ";");
        }
      });
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Dimension.cjs
var require_Dimension2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Dimension.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "Dimension";
    var structure = {
      value: String,
      unit: String
    };
    function parse() {
      const start = this.tokenStart;
      const value = this.consumeNumber(types.Dimension);
      return {
        type: "Dimension",
        loc: this.getLocation(start, this.tokenStart),
        value,
        unit: this.substring(start + value.length, this.tokenStart)
      };
    }
    function generate(node) {
      this.token(types.Dimension, node.value + node.unit);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Function.cjs
var require_Function2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Function.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "Function";
    var walkContext = "function";
    var structure = {
      name: String,
      children: [[]]
    };
    function parse(readSequence, recognizer) {
      const start = this.tokenStart;
      const name2 = this.consumeFunctionName();
      const nameLowerCase = name2.toLowerCase();
      let children;
      children = recognizer.hasOwnProperty(nameLowerCase) ? recognizer[nameLowerCase].call(this, recognizer) : readSequence.call(this, recognizer);
      if (!this.eof) {
        this.eat(types.RightParenthesis);
      }
      return {
        type: "Function",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        children
      };
    }
    function generate(node) {
      this.token(types.Function, node.name + "(");
      this.children(node);
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Hash.cjs
var require_Hash2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Hash.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var xxx = "XXX";
    var name = "Hash";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      this.eat(types.Hash);
      return {
        type: "Hash",
        loc: this.getLocation(start, this.tokenStart),
        value: this.substrToCursor(start + 1)
      };
    }
    function generate(node) {
      this.token(types.Hash, "#" + node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.xxx = xxx;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Identifier.cjs
var require_Identifier2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Identifier.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "Identifier";
    var structure = {
      name: String
    };
    function parse() {
      return {
        type: "Identifier",
        loc: this.getLocation(this.tokenStart, this.tokenEnd),
        name: this.consume(types.Ident)
      };
    }
    function generate(node) {
      this.token(types.Ident, node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs
var require_IdSelector2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "IdSelector";
    var structure = {
      name: String
    };
    function parse() {
      const start = this.tokenStart;
      this.eat(types.Hash);
      return {
        type: "IdSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: this.substrToCursor(start + 1)
      };
    }
    function generate(node) {
      this.token(types.Delim, "#" + node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs
var require_MediaFeature = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "MediaFeature";
    var structure = {
      name: String,
      value: ["Identifier", "Number", "Dimension", "Ratio", null]
    };
    function parse() {
      const start = this.tokenStart;
      let name2;
      let value = null;
      this.eat(types.LeftParenthesis);
      this.skipSC();
      name2 = this.consume(types.Ident);
      this.skipSC();
      if (this.tokenType !== types.RightParenthesis) {
        this.eat(types.Colon);
        this.skipSC();
        switch (this.tokenType) {
          case types.Number:
            if (this.lookupNonWSType(1) === types.Delim) {
              value = this.Ratio();
            } else {
              value = this.Number();
            }
            break;
          case types.Dimension:
            value = this.Dimension();
            break;
          case types.Ident:
            value = this.Identifier();
            break;
          default:
            this.error("Number, dimension, ratio or identifier is expected");
        }
        this.skipSC();
      }
      this.eat(types.RightParenthesis);
      return {
        type: "MediaFeature",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        value
      };
    }
    function generate(node) {
      this.token(types.LeftParenthesis, "(");
      this.token(types.Ident, node.name);
      if (node.value !== null) {
        this.token(types.Colon, ":");
        this.node(node.value);
      }
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs
var require_MediaQuery2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "MediaQuery";
    var structure = {
      children: [[
        "Identifier",
        "MediaFeature",
        "WhiteSpace"
      ]]
    };
    function parse() {
      const children = this.createList();
      let child = null;
      this.skipSC();
      scan:
        while (!this.eof) {
          switch (this.tokenType) {
            case types.Comment:
            case types.WhiteSpace:
              this.next();
              continue;
            case types.Ident:
              child = this.Identifier();
              break;
            case types.LeftParenthesis:
              child = this.MediaFeature();
              break;
            default:
              break scan;
          }
          children.push(child);
        }
      if (child === null) {
        this.error("Identifier or parenthesis is expected");
      }
      return {
        type: "MediaQuery",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs
var require_MediaQueryList2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "MediaQueryList";
    var structure = {
      children: [[
        "MediaQuery"
      ]]
    };
    function parse() {
      const children = this.createList();
      this.skipSC();
      while (!this.eof) {
        children.push(this.MediaQuery());
        if (this.tokenType !== types.Comma) {
          break;
        }
        this.next();
      }
      return {
        type: "MediaQueryList",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node, () => this.token(types.Comma, ","));
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Nth.cjs
var require_Nth2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Nth.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "Nth";
    var structure = {
      nth: ["AnPlusB", "Identifier"],
      selector: ["SelectorList", null]
    };
    function parse() {
      this.skipSC();
      const start = this.tokenStart;
      let end = start;
      let selector = null;
      let nth;
      if (this.lookupValue(0, "odd") || this.lookupValue(0, "even")) {
        nth = this.Identifier();
      } else {
        nth = this.AnPlusB();
      }
      end = this.tokenStart;
      this.skipSC();
      if (this.lookupValue(0, "of")) {
        this.next();
        selector = this.SelectorList();
        end = this.tokenStart;
      }
      return {
        type: "Nth",
        loc: this.getLocation(start, end),
        nth,
        selector
      };
    }
    function generate(node) {
      this.node(node.nth);
      if (node.selector !== null) {
        this.token(types.Ident, "of");
        this.node(node.selector);
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Number.cjs
var require_Number2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Number.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "Number";
    var structure = {
      value: String
    };
    function parse() {
      return {
        type: "Number",
        loc: this.getLocation(this.tokenStart, this.tokenEnd),
        value: this.consume(types.Number)
      };
    }
    function generate(node) {
      this.token(types.Number, node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Operator.cjs
var require_Operator2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Operator.cjs"(exports) {
    "use strict";
    var name = "Operator";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      this.next();
      return {
        type: "Operator",
        loc: this.getLocation(start, this.tokenStart),
        value: this.substrToCursor(start)
      };
    }
    function generate(node) {
      this.tokenize(node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs
var require_Parentheses2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "Parentheses";
    var structure = {
      children: [[]]
    };
    function parse(readSequence, recognizer) {
      const start = this.tokenStart;
      let children = null;
      this.eat(types.LeftParenthesis);
      children = readSequence.call(this, recognizer);
      if (!this.eof) {
        this.eat(types.RightParenthesis);
      }
      return {
        type: "Parentheses",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.token(types.LeftParenthesis, "(");
      this.children(node);
      this.token(types.RightParenthesis, ")");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Percentage.cjs
var require_Percentage2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Percentage.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "Percentage";
    var structure = {
      value: String
    };
    function parse() {
      return {
        type: "Percentage",
        loc: this.getLocation(this.tokenStart, this.tokenEnd),
        value: this.consumeNumber(types.Percentage)
      };
    }
    function generate(node) {
      this.token(types.Percentage, node.value + "%");
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs
var require_PseudoClassSelector2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "PseudoClassSelector";
    var walkContext = "function";
    var structure = {
      name: String,
      children: [["Raw"], null]
    };
    function parse() {
      const start = this.tokenStart;
      let children = null;
      let name2;
      let nameLowerCase;
      this.eat(types.Colon);
      if (this.tokenType === types.Function) {
        name2 = this.consumeFunctionName();
        nameLowerCase = name2.toLowerCase();
        if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {
          this.skipSC();
          children = this.pseudo[nameLowerCase].call(this);
          this.skipSC();
        } else {
          children = this.createList();
          children.push(
            this.Raw(this.tokenIndex, null, false)
          );
        }
        this.eat(types.RightParenthesis);
      } else {
        name2 = this.consume(types.Ident);
      }
      return {
        type: "PseudoClassSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        children
      };
    }
    function generate(node) {
      this.token(types.Colon, ":");
      if (node.children === null) {
        this.token(types.Ident, node.name);
      } else {
        this.token(types.Function, node.name + "(");
        this.children(node);
        this.token(types.RightParenthesis, ")");
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs
var require_PseudoElementSelector2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "PseudoElementSelector";
    var walkContext = "function";
    var structure = {
      name: String,
      children: [["Raw"], null]
    };
    function parse() {
      const start = this.tokenStart;
      let children = null;
      let name2;
      let nameLowerCase;
      this.eat(types.Colon);
      this.eat(types.Colon);
      if (this.tokenType === types.Function) {
        name2 = this.consumeFunctionName();
        nameLowerCase = name2.toLowerCase();
        if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {
          this.skipSC();
          children = this.pseudo[nameLowerCase].call(this);
          this.skipSC();
        } else {
          children = this.createList();
          children.push(
            this.Raw(this.tokenIndex, null, false)
          );
        }
        this.eat(types.RightParenthesis);
      } else {
        name2 = this.consume(types.Ident);
      }
      return {
        type: "PseudoElementSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: name2,
        children
      };
    }
    function generate(node) {
      this.token(types.Colon, ":");
      this.token(types.Colon, ":");
      if (node.children === null) {
        this.token(types.Ident, node.name);
      } else {
        this.token(types.Function, node.name + "(");
        this.children(node);
        this.token(types.RightParenthesis, ")");
      }
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Ratio.cjs
var require_Ratio2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Ratio.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var charCodeDefinitions = require_char_code_definitions2();
    var SOLIDUS = 47;
    var FULLSTOP = 46;
    function consumeNumber() {
      this.skipSC();
      const value = this.consume(types.Number);
      for (let i = 0; i < value.length; i++) {
        const code = value.charCodeAt(i);
        if (!charCodeDefinitions.isDigit(code) && code !== FULLSTOP) {
          this.error("Unsigned number is expected", this.tokenStart - value.length + i);
        }
      }
      if (Number(value) === 0) {
        this.error("Zero number is not allowed", this.tokenStart - value.length);
      }
      return value;
    }
    var name = "Ratio";
    var structure = {
      left: String,
      right: String
    };
    function parse() {
      const start = this.tokenStart;
      const left = consumeNumber.call(this);
      let right;
      this.skipSC();
      this.eatDelim(SOLIDUS);
      right = consumeNumber.call(this);
      return {
        type: "Ratio",
        loc: this.getLocation(start, this.tokenStart),
        left,
        right
      };
    }
    function generate(node) {
      this.token(types.Number, node.left);
      this.token(types.Delim, "/");
      this.token(types.Number, node.right);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Raw.cjs
var require_Raw2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Raw.cjs"(exports) {
    "use strict";
    var types = require_types3();
    function getOffsetExcludeWS() {
      if (this.tokenIndex > 0) {
        if (this.lookupType(-1) === types.WhiteSpace) {
          return this.tokenIndex > 1 ? this.getTokenStart(this.tokenIndex - 1) : this.firstCharOffset;
        }
      }
      return this.tokenStart;
    }
    var name = "Raw";
    var structure = {
      value: String
    };
    function parse(startToken, consumeUntil, excludeWhiteSpace) {
      const startOffset = this.getTokenStart(startToken);
      let endOffset;
      this.skipUntilBalanced(startToken, consumeUntil || this.consumeUntilBalanceEnd);
      if (excludeWhiteSpace && this.tokenStart > startOffset) {
        endOffset = getOffsetExcludeWS.call(this);
      } else {
        endOffset = this.tokenStart;
      }
      return {
        type: "Raw",
        loc: this.getLocation(startOffset, endOffset),
        value: this.substring(startOffset, endOffset)
      };
    }
    function generate(node) {
      this.tokenize(node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Rule.cjs
var require_Rule2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Rule.cjs"(exports) {
    "use strict";
    var types = require_types3();
    function consumeRaw(startToken) {
      return this.Raw(startToken, this.consumeUntilLeftCurlyBracket, true);
    }
    function consumePrelude() {
      const prelude = this.SelectorList();
      if (prelude.type !== "Raw" && this.eof === false && this.tokenType !== types.LeftCurlyBracket) {
        this.error();
      }
      return prelude;
    }
    var name = "Rule";
    var walkContext = "rule";
    var structure = {
      prelude: ["SelectorList", "Raw"],
      block: ["Block"]
    };
    function parse() {
      const startToken = this.tokenIndex;
      const startOffset = this.tokenStart;
      let prelude;
      let block;
      if (this.parseRulePrelude) {
        prelude = this.parseWithFallback(consumePrelude, consumeRaw);
      } else {
        prelude = consumeRaw.call(this, startToken);
      }
      block = this.Block(true);
      return {
        type: "Rule",
        loc: this.getLocation(startOffset, this.tokenStart),
        prelude,
        block
      };
    }
    function generate(node) {
      this.node(node.prelude);
      this.node(node.block);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Selector.cjs
var require_Selector2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Selector.cjs"(exports) {
    "use strict";
    var name = "Selector";
    var structure = {
      children: [[
        "TypeSelector",
        "IdSelector",
        "ClassSelector",
        "AttributeSelector",
        "PseudoClassSelector",
        "PseudoElementSelector",
        "Combinator",
        "WhiteSpace"
      ]]
    };
    function parse() {
      const children = this.readSequence(this.scope.Selector);
      if (this.getFirstListNode(children) === null) {
        this.error("Selector is expected");
      }
      return {
        type: "Selector",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs
var require_SelectorList2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var name = "SelectorList";
    var walkContext = "selector";
    var structure = {
      children: [[
        "Selector",
        "Raw"
      ]]
    };
    function parse() {
      const children = this.createList();
      while (!this.eof) {
        children.push(this.Selector());
        if (this.tokenType === types.Comma) {
          this.next();
          continue;
        }
        break;
      }
      return {
        type: "SelectorList",
        loc: this.getLocationFromList(children),
        children
      };
    }
    function generate(node) {
      this.children(node, () => this.token(types.Comma, ","));
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/utils/string.cjs
var require_string2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/utils/string.cjs"(exports) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions2();
    var utils = require_utils2();
    var REVERSE_SOLIDUS = 92;
    var QUOTATION_MARK = 34;
    var APOSTROPHE = 39;
    function decode(str) {
      const len = str.length;
      const firstChar = str.charCodeAt(0);
      const start = firstChar === QUOTATION_MARK || firstChar === APOSTROPHE ? 1 : 0;
      const end = start === 1 && len > 1 && str.charCodeAt(len - 1) === firstChar ? len - 2 : len - 1;
      let decoded = "";
      for (let i = start; i <= end; i++) {
        let code = str.charCodeAt(i);
        if (code === REVERSE_SOLIDUS) {
          if (i === end) {
            if (i !== len - 1) {
              decoded = str.substr(i + 1);
            }
            break;
          }
          code = str.charCodeAt(++i);
          if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {
            const escapeStart = i - 1;
            const escapeEnd = utils.consumeEscaped(str, escapeStart);
            i = escapeEnd - 1;
            decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));
          } else {
            if (code === 13 && str.charCodeAt(i + 1) === 10) {
              i++;
            }
          }
        } else {
          decoded += str[i];
        }
      }
      return decoded;
    }
    function encode(str, apostrophe) {
      const quote = apostrophe ? "'" : '"';
      const quoteCode = apostrophe ? APOSTROPHE : QUOTATION_MARK;
      let encoded = "";
      let wsBeforeHexIsNeeded = false;
      for (let i = 0; i < str.length; i++) {
        const code = str.charCodeAt(i);
        if (code === 0) {
          encoded += "\uFFFD";
          continue;
        }
        if (code <= 31 || code === 127) {
          encoded += "\\" + code.toString(16);
          wsBeforeHexIsNeeded = true;
          continue;
        }
        if (code === quoteCode || code === REVERSE_SOLIDUS) {
          encoded += "\\" + str.charAt(i);
          wsBeforeHexIsNeeded = false;
        } else {
          if (wsBeforeHexIsNeeded && (charCodeDefinitions.isHexDigit(code) || charCodeDefinitions.isWhiteSpace(code))) {
            encoded += " ";
          }
          encoded += str.charAt(i);
          wsBeforeHexIsNeeded = false;
        }
      }
      return quote + encoded + quote;
    }
    exports.decode = decode;
    exports.encode = encode;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/String.cjs
var require_String2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/String.cjs"(exports) {
    "use strict";
    var string = require_string2();
    var types = require_types3();
    var name = "String";
    var structure = {
      value: String
    };
    function parse() {
      return {
        type: "String",
        loc: this.getLocation(this.tokenStart, this.tokenEnd),
        value: string.decode(this.consume(types.String))
      };
    }
    function generate(node) {
      this.token(types.String, string.encode(node.value));
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs
var require_StyleSheet2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var EXCLAMATIONMARK = 33;
    function consumeRaw(startToken) {
      return this.Raw(startToken, null, false);
    }
    var name = "StyleSheet";
    var walkContext = "stylesheet";
    var structure = {
      children: [[
        "Comment",
        "CDO",
        "CDC",
        "Atrule",
        "Rule",
        "Raw"
      ]]
    };
    function parse() {
      const start = this.tokenStart;
      const children = this.createList();
      let child;
      while (!this.eof) {
        switch (this.tokenType) {
          case types.WhiteSpace:
            this.next();
            continue;
          case types.Comment:
            if (this.charCodeAt(this.tokenStart + 2) !== EXCLAMATIONMARK) {
              this.next();
              continue;
            }
            child = this.Comment();
            break;
          case types.CDO:
            child = this.CDO();
            break;
          case types.CDC:
            child = this.CDC();
            break;
          // CSS Syntax Module Level 3
          // §2.2 Error handling
          // At the "top level" of a stylesheet, an <at-keyword-token> starts an at-rule.
          case types.AtKeyword:
            child = this.parseWithFallback(this.Atrule, consumeRaw);
            break;
          // Anything else starts a qualified rule ...
          default:
            child = this.parseWithFallback(this.Rule, consumeRaw);
        }
        children.push(child);
      }
      return {
        type: "StyleSheet",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.children(node);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
    exports.walkContext = walkContext;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs
var require_TypeSelector2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var ASTERISK = 42;
    var VERTICALLINE = 124;
    function eatIdentifierOrAsterisk() {
      if (this.tokenType !== types.Ident && this.isDelim(ASTERISK) === false) {
        this.error("Identifier or asterisk is expected");
      }
      this.next();
    }
    var name = "TypeSelector";
    var structure = {
      name: String
    };
    function parse() {
      const start = this.tokenStart;
      if (this.isDelim(VERTICALLINE)) {
        this.next();
        eatIdentifierOrAsterisk.call(this);
      } else {
        eatIdentifierOrAsterisk.call(this);
        if (this.isDelim(VERTICALLINE)) {
          this.next();
          eatIdentifierOrAsterisk.call(this);
        }
      }
      return {
        type: "TypeSelector",
        loc: this.getLocation(start, this.tokenStart),
        name: this.substrToCursor(start)
      };
    }
    function generate(node) {
      this.tokenize(node.name);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs
var require_UnicodeRange2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var charCodeDefinitions = require_char_code_definitions2();
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var QUESTIONMARK = 63;
    function eatHexSequence(offset, allowDash) {
      let len = 0;
      for (let pos = this.tokenStart + offset; pos < this.tokenEnd; pos++) {
        const code = this.charCodeAt(pos);
        if (code === HYPHENMINUS && allowDash && len !== 0) {
          eatHexSequence.call(this, offset + len + 1, false);
          return -1;
        }
        if (!charCodeDefinitions.isHexDigit(code)) {
          this.error(
            allowDash && len !== 0 ? "Hyphen minus" + (len < 6 ? " or hex digit" : "") + " is expected" : len < 6 ? "Hex digit is expected" : "Unexpected input",
            pos
          );
        }
        if (++len > 6) {
          this.error("Too many hex digits", pos);
        }
      }
      this.next();
      return len;
    }
    function eatQuestionMarkSequence(max) {
      let count = 0;
      while (this.isDelim(QUESTIONMARK)) {
        if (++count > max) {
          this.error("Too many question marks");
        }
        this.next();
      }
    }
    function startsWith(code) {
      if (this.charCodeAt(this.tokenStart) !== code) {
        this.error((code === PLUSSIGN ? "Plus sign" : "Hyphen minus") + " is expected");
      }
    }
    function scanUnicodeRange() {
      let hexLength = 0;
      switch (this.tokenType) {
        case types.Number:
          hexLength = eatHexSequence.call(this, 1, true);
          if (this.isDelim(QUESTIONMARK)) {
            eatQuestionMarkSequence.call(this, 6 - hexLength);
            break;
          }
          if (this.tokenType === types.Dimension || this.tokenType === types.Number) {
            startsWith.call(this, HYPHENMINUS);
            eatHexSequence.call(this, 1, false);
            break;
          }
          break;
        case types.Dimension:
          hexLength = eatHexSequence.call(this, 1, true);
          if (hexLength > 0) {
            eatQuestionMarkSequence.call(this, 6 - hexLength);
          }
          break;
        default:
          this.eatDelim(PLUSSIGN);
          if (this.tokenType === types.Ident) {
            hexLength = eatHexSequence.call(this, 0, true);
            if (hexLength > 0) {
              eatQuestionMarkSequence.call(this, 6 - hexLength);
            }
            break;
          }
          if (this.isDelim(QUESTIONMARK)) {
            this.next();
            eatQuestionMarkSequence.call(this, 5);
            break;
          }
          this.error("Hex digit or question mark is expected");
      }
    }
    var name = "UnicodeRange";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      this.eatIdent("u");
      scanUnicodeRange.call(this);
      return {
        type: "UnicodeRange",
        loc: this.getLocation(start, this.tokenStart),
        value: this.substrToCursor(start)
      };
    }
    function generate(node) {
      this.tokenize(node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/utils/url.cjs
var require_url2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/utils/url.cjs"(exports) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions2();
    var utils = require_utils2();
    var SPACE = 32;
    var REVERSE_SOLIDUS = 92;
    var QUOTATION_MARK = 34;
    var APOSTROPHE = 39;
    var LEFTPARENTHESIS = 40;
    var RIGHTPARENTHESIS = 41;
    function decode(str) {
      const len = str.length;
      let start = 4;
      let end = str.charCodeAt(len - 1) === RIGHTPARENTHESIS ? len - 2 : len - 1;
      let decoded = "";
      while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(start))) {
        start++;
      }
      while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(end))) {
        end--;
      }
      for (let i = start; i <= end; i++) {
        let code = str.charCodeAt(i);
        if (code === REVERSE_SOLIDUS) {
          if (i === end) {
            if (i !== len - 1) {
              decoded = str.substr(i + 1);
            }
            break;
          }
          code = str.charCodeAt(++i);
          if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {
            const escapeStart = i - 1;
            const escapeEnd = utils.consumeEscaped(str, escapeStart);
            i = escapeEnd - 1;
            decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));
          } else {
            if (code === 13 && str.charCodeAt(i + 1) === 10) {
              i++;
            }
          }
        } else {
          decoded += str[i];
        }
      }
      return decoded;
    }
    function encode(str) {
      let encoded = "";
      let wsBeforeHexIsNeeded = false;
      for (let i = 0; i < str.length; i++) {
        const code = str.charCodeAt(i);
        if (code === 0) {
          encoded += "\uFFFD";
          continue;
        }
        if (code <= 31 || code === 127) {
          encoded += "\\" + code.toString(16);
          wsBeforeHexIsNeeded = true;
          continue;
        }
        if (code === SPACE || code === REVERSE_SOLIDUS || code === QUOTATION_MARK || code === APOSTROPHE || code === LEFTPARENTHESIS || code === RIGHTPARENTHESIS) {
          encoded += "\\" + str.charAt(i);
          wsBeforeHexIsNeeded = false;
        } else {
          if (wsBeforeHexIsNeeded && charCodeDefinitions.isHexDigit(code)) {
            encoded += " ";
          }
          encoded += str.charAt(i);
          wsBeforeHexIsNeeded = false;
        }
      }
      return "url(" + encoded + ")";
    }
    exports.decode = decode;
    exports.encode = encode;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Url.cjs
var require_Url2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Url.cjs"(exports) {
    "use strict";
    var url = require_url2();
    var string = require_string2();
    var types = require_types3();
    var name = "Url";
    var structure = {
      value: String
    };
    function parse() {
      const start = this.tokenStart;
      let value;
      switch (this.tokenType) {
        case types.Url:
          value = url.decode(this.consume(types.Url));
          break;
        case types.Function:
          if (!this.cmpStr(this.tokenStart, this.tokenEnd, "url(")) {
            this.error("Function name must be `url`");
          }
          this.eat(types.Function);
          this.skipSC();
          value = string.decode(this.consume(types.String));
          this.skipSC();
          if (!this.eof) {
            this.eat(types.RightParenthesis);
          }
          break;
        default:
          this.error("Url or Function is expected");
      }
      return {
        type: "Url",
        loc: this.getLocation(start, this.tokenStart),
        value
      };
    }
    function generate(node) {
      this.token(types.Url, url.encode(node.value));
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/Value.cjs
var require_Value2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/Value.cjs"(exports) {
    "use strict";
    var name = "Value";
    var structure = {
      children: [[]]
    };
    function parse() {
      const start = this.tokenStart;
      const children = this.readSequence(this.scope.Value);
      return {
        type: "Value",
        loc: this.getLocation(start, this.tokenStart),
        children
      };
    }
    function generate(node) {
      this.children(node);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs
var require_WhiteSpace2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs"(exports) {
    "use strict";
    var types = require_types3();
    var SPACE = Object.freeze({
      type: "WhiteSpace",
      loc: null,
      value: " "
    });
    var name = "WhiteSpace";
    var structure = {
      value: String
    };
    function parse() {
      this.eat(types.WhiteSpace);
      return SPACE;
    }
    function generate(node) {
      this.token(types.WhiteSpace, node.value);
    }
    exports.generate = generate;
    exports.name = name;
    exports.parse = parse;
    exports.structure = structure;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/index.cjs
var require_node3 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/index.cjs"(exports) {
    "use strict";
    var AnPlusB = require_AnPlusB2();
    var Atrule = require_Atrule2();
    var AtrulePrelude = require_AtrulePrelude2();
    var AttributeSelector = require_AttributeSelector2();
    var Block = require_Block2();
    var Brackets = require_Brackets2();
    var CDC = require_CDC2();
    var CDO = require_CDO2();
    var ClassSelector = require_ClassSelector2();
    var Combinator = require_Combinator2();
    var Comment = require_Comment2();
    var Declaration = require_Declaration2();
    var DeclarationList = require_DeclarationList2();
    var Dimension = require_Dimension2();
    var Function2 = require_Function2();
    var Hash = require_Hash2();
    var Identifier = require_Identifier2();
    var IdSelector = require_IdSelector2();
    var MediaFeature = require_MediaFeature();
    var MediaQuery = require_MediaQuery2();
    var MediaQueryList = require_MediaQueryList2();
    var Nth = require_Nth2();
    var Number$1 = require_Number2();
    var Operator = require_Operator2();
    var Parentheses = require_Parentheses2();
    var Percentage = require_Percentage2();
    var PseudoClassSelector = require_PseudoClassSelector2();
    var PseudoElementSelector = require_PseudoElementSelector2();
    var Ratio = require_Ratio2();
    var Raw = require_Raw2();
    var Rule = require_Rule2();
    var Selector = require_Selector2();
    var SelectorList = require_SelectorList2();
    var String$1 = require_String2();
    var StyleSheet = require_StyleSheet2();
    var TypeSelector = require_TypeSelector2();
    var UnicodeRange = require_UnicodeRange2();
    var Url = require_Url2();
    var Value = require_Value2();
    var WhiteSpace = require_WhiteSpace2();
    exports.AnPlusB = AnPlusB;
    exports.Atrule = Atrule;
    exports.AtrulePrelude = AtrulePrelude;
    exports.AttributeSelector = AttributeSelector;
    exports.Block = Block;
    exports.Brackets = Brackets;
    exports.CDC = CDC;
    exports.CDO = CDO;
    exports.ClassSelector = ClassSelector;
    exports.Combinator = Combinator;
    exports.Comment = Comment;
    exports.Declaration = Declaration;
    exports.DeclarationList = DeclarationList;
    exports.Dimension = Dimension;
    exports.Function = Function2;
    exports.Hash = Hash;
    exports.Identifier = Identifier;
    exports.IdSelector = IdSelector;
    exports.MediaFeature = MediaFeature;
    exports.MediaQuery = MediaQuery;
    exports.MediaQueryList = MediaQueryList;
    exports.Nth = Nth;
    exports.Number = Number$1;
    exports.Operator = Operator;
    exports.Parentheses = Parentheses;
    exports.Percentage = Percentage;
    exports.PseudoClassSelector = PseudoClassSelector;
    exports.PseudoElementSelector = PseudoElementSelector;
    exports.Ratio = Ratio;
    exports.Raw = Raw;
    exports.Rule = Rule;
    exports.Selector = Selector;
    exports.SelectorList = SelectorList;
    exports.String = String$1;
    exports.StyleSheet = StyleSheet;
    exports.TypeSelector = TypeSelector;
    exports.UnicodeRange = UnicodeRange;
    exports.Url = Url;
    exports.Value = Value;
    exports.WhiteSpace = WhiteSpace;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/config/lexer.cjs
var require_lexer2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/config/lexer.cjs"(exports, module) {
    "use strict";
    var data = require_data2();
    var index = require_node3();
    var lexerConfig = {
      generic: true,
      ...data,
      node: index
    };
    module.exports = lexerConfig;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/scope/default.cjs
var require_default2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/scope/default.cjs"(exports, module) {
    "use strict";
    var types = require_types3();
    var NUMBERSIGN = 35;
    var ASTERISK = 42;
    var PLUSSIGN = 43;
    var HYPHENMINUS = 45;
    var SOLIDUS = 47;
    var U = 117;
    function defaultRecognizer(context) {
      switch (this.tokenType) {
        case types.Hash:
          return this.Hash();
        case types.Comma:
          return this.Operator();
        case types.LeftParenthesis:
          return this.Parentheses(this.readSequence, context.recognizer);
        case types.LeftSquareBracket:
          return this.Brackets(this.readSequence, context.recognizer);
        case types.String:
          return this.String();
        case types.Dimension:
          return this.Dimension();
        case types.Percentage:
          return this.Percentage();
        case types.Number:
          return this.Number();
        case types.Function:
          return this.cmpStr(this.tokenStart, this.tokenEnd, "url(") ? this.Url() : this.Function(this.readSequence, context.recognizer);
        case types.Url:
          return this.Url();
        case types.Ident:
          if (this.cmpChar(this.tokenStart, U) && this.cmpChar(this.tokenStart + 1, PLUSSIGN)) {
            return this.UnicodeRange();
          } else {
            return this.Identifier();
          }
        case types.Delim: {
          const code = this.charCodeAt(this.tokenStart);
          if (code === SOLIDUS || code === ASTERISK || code === PLUSSIGN || code === HYPHENMINUS) {
            return this.Operator();
          }
          if (code === NUMBERSIGN) {
            this.error("Hex or identifier is expected", this.tokenStart + 1);
          }
          break;
        }
      }
    }
    module.exports = defaultRecognizer;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs
var require_atrulePrelude2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs"(exports, module) {
    "use strict";
    var _default = require_default2();
    var atrulePrelude = {
      getNode: _default
    };
    module.exports = atrulePrelude;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/scope/selector.cjs
var require_selector2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/scope/selector.cjs"(exports, module) {
    "use strict";
    var types = require_types3();
    var NUMBERSIGN = 35;
    var ASTERISK = 42;
    var PLUSSIGN = 43;
    var SOLIDUS = 47;
    var FULLSTOP = 46;
    var GREATERTHANSIGN = 62;
    var VERTICALLINE = 124;
    var TILDE = 126;
    function onWhiteSpace(next, children) {
      if (children.last !== null && children.last.type !== "Combinator" && next !== null && next.type !== "Combinator") {
        children.push({
          // FIXME: this.Combinator() should be used instead
          type: "Combinator",
          loc: null,
          name: " "
        });
      }
    }
    function getNode() {
      switch (this.tokenType) {
        case types.LeftSquareBracket:
          return this.AttributeSelector();
        case types.Hash:
          return this.IdSelector();
        case types.Colon:
          if (this.lookupType(1) === types.Colon) {
            return this.PseudoElementSelector();
          } else {
            return this.PseudoClassSelector();
          }
        case types.Ident:
          return this.TypeSelector();
        case types.Number:
        case types.Percentage:
          return this.Percentage();
        case types.Dimension:
          if (this.charCodeAt(this.tokenStart) === FULLSTOP) {
            this.error("Identifier is expected", this.tokenStart + 1);
          }
          break;
        case types.Delim: {
          const code = this.charCodeAt(this.tokenStart);
          switch (code) {
            case PLUSSIGN:
            case GREATERTHANSIGN:
            case TILDE:
            case SOLIDUS:
              return this.Combinator();
            case FULLSTOP:
              return this.ClassSelector();
            case ASTERISK:
            case VERTICALLINE:
              return this.TypeSelector();
            case NUMBERSIGN:
              return this.IdSelector();
          }
          break;
        }
      }
    }
    var Selector = {
      onWhiteSpace,
      getNode
    };
    module.exports = Selector;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/function/expression.cjs
var require_expression2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/function/expression.cjs"(exports, module) {
    "use strict";
    function expressionFn() {
      return this.createSingleNodeList(
        this.Raw(this.tokenIndex, null, false)
      );
    }
    module.exports = expressionFn;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/function/var.cjs
var require_var2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/function/var.cjs"(exports, module) {
    "use strict";
    var types = require_types3();
    function varFn() {
      const children = this.createList();
      this.skipSC();
      children.push(this.Identifier());
      this.skipSC();
      if (this.tokenType === types.Comma) {
        children.push(this.Operator());
        const startIndex = this.tokenIndex;
        const value = this.parseCustomProperty ? this.Value(null) : this.Raw(this.tokenIndex, this.consumeUntilExclamationMarkOrSemicolon, false);
        if (value.type === "Value" && value.children.isEmpty) {
          for (let offset = startIndex - this.tokenIndex; offset <= 0; offset++) {
            if (this.lookupType(offset) === types.WhiteSpace) {
              value.children.appendData({
                type: "WhiteSpace",
                loc: null,
                value: " "
              });
              break;
            }
          }
        }
        children.push(value);
      }
      return children;
    }
    module.exports = varFn;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/scope/value.cjs
var require_value2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/scope/value.cjs"(exports, module) {
    "use strict";
    var _default = require_default2();
    var expression = require_expression2();
    var _var = require_var2();
    function isPlusMinusOperator(node) {
      return node !== null && node.type === "Operator" && (node.value[node.value.length - 1] === "-" || node.value[node.value.length - 1] === "+");
    }
    var value = {
      getNode: _default,
      onWhiteSpace(next, children) {
        if (isPlusMinusOperator(next)) {
          next.value = " " + next.value;
        }
        if (isPlusMinusOperator(children.last)) {
          children.last.value += " ";
        }
      },
      "expression": expression,
      "var": _var
    };
    module.exports = value;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/scope/index.cjs
var require_scope3 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/scope/index.cjs"(exports) {
    "use strict";
    var atrulePrelude = require_atrulePrelude2();
    var selector = require_selector2();
    var value = require_value2();
    exports.AtrulePrelude = atrulePrelude;
    exports.Selector = selector;
    exports.Value = value;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs
var require_font_face2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs"(exports, module) {
    "use strict";
    var fontFace = {
      parse: {
        prelude: null,
        block() {
          return this.Block(true);
        }
      }
    };
    module.exports = fontFace;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/import.cjs
var require_import2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/import.cjs"(exports, module) {
    "use strict";
    var types = require_types3();
    var importAtrule = {
      parse: {
        prelude() {
          const children = this.createList();
          this.skipSC();
          switch (this.tokenType) {
            case types.String:
              children.push(this.String());
              break;
            case types.Url:
            case types.Function:
              children.push(this.Url());
              break;
            default:
              this.error("String or url() is expected");
          }
          if (this.lookupNonWSType(0) === types.Ident || this.lookupNonWSType(0) === types.LeftParenthesis) {
            children.push(this.MediaQueryList());
          }
          return children;
        },
        block: null
      }
    };
    module.exports = importAtrule;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/media.cjs
var require_media2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/media.cjs"(exports, module) {
    "use strict";
    var media = {
      parse: {
        prelude() {
          return this.createSingleNodeList(
            this.MediaQueryList()
          );
        },
        block() {
          return this.Block(false);
        }
      }
    };
    module.exports = media;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/page.cjs
var require_page2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/page.cjs"(exports, module) {
    "use strict";
    var page = {
      parse: {
        prelude() {
          return this.createSingleNodeList(
            this.SelectorList()
          );
        },
        block() {
          return this.Block(true);
        }
      }
    };
    module.exports = page;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/supports.cjs
var require_supports2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/supports.cjs"(exports, module) {
    "use strict";
    var types = require_types3();
    function consumeRaw() {
      return this.createSingleNodeList(
        this.Raw(this.tokenIndex, null, false)
      );
    }
    function parentheses() {
      this.skipSC();
      if (this.tokenType === types.Ident && this.lookupNonWSType(1) === types.Colon) {
        return this.createSingleNodeList(
          this.Declaration()
        );
      }
      return readSequence.call(this);
    }
    function readSequence() {
      const children = this.createList();
      let child;
      this.skipSC();
      scan:
        while (!this.eof) {
          switch (this.tokenType) {
            case types.Comment:
            case types.WhiteSpace:
              this.next();
              continue;
            case types.Function:
              child = this.Function(consumeRaw, this.scope.AtrulePrelude);
              break;
            case types.Ident:
              child = this.Identifier();
              break;
            case types.LeftParenthesis:
              child = this.Parentheses(parentheses, this.scope.AtrulePrelude);
              break;
            default:
              break scan;
          }
          children.push(child);
        }
      return children;
    }
    var supports = {
      parse: {
        prelude() {
          const children = readSequence.call(this);
          if (this.getFirstListNode(children) === null) {
            this.error("Condition is expected");
          }
          return children;
        },
        block() {
          return this.Block(false);
        }
      }
    };
    module.exports = supports;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/index.cjs
var require_atrule2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/index.cjs"(exports, module) {
    "use strict";
    var fontFace = require_font_face2();
    var _import = require_import2();
    var media = require_media2();
    var page = require_page2();
    var supports = require_supports2();
    var atrule = {
      "font-face": fontFace,
      "import": _import,
      media,
      page,
      supports
    };
    module.exports = atrule;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/pseudo/index.cjs
var require_pseudo2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/pseudo/index.cjs"(exports, module) {
    "use strict";
    var selectorList = {
      parse() {
        return this.createSingleNodeList(
          this.SelectorList()
        );
      }
    };
    var selector = {
      parse() {
        return this.createSingleNodeList(
          this.Selector()
        );
      }
    };
    var identList = {
      parse() {
        return this.createSingleNodeList(
          this.Identifier()
        );
      }
    };
    var nth = {
      parse() {
        return this.createSingleNodeList(
          this.Nth()
        );
      }
    };
    var pseudo = {
      "dir": identList,
      "has": selectorList,
      "lang": identList,
      "matches": selectorList,
      "is": selectorList,
      "-moz-any": selectorList,
      "-webkit-any": selectorList,
      "where": selectorList,
      "not": selectorList,
      "nth-child": nth,
      "nth-last-child": nth,
      "nth-last-of-type": nth,
      "nth-of-type": nth,
      "slotted": selector
    };
    module.exports = pseudo;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-parse.cjs
var require_index_parse2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/index-parse.cjs"(exports) {
    "use strict";
    var AnPlusB = require_AnPlusB2();
    var Atrule = require_Atrule2();
    var AtrulePrelude = require_AtrulePrelude2();
    var AttributeSelector = require_AttributeSelector2();
    var Block = require_Block2();
    var Brackets = require_Brackets2();
    var CDC = require_CDC2();
    var CDO = require_CDO2();
    var ClassSelector = require_ClassSelector2();
    var Combinator = require_Combinator2();
    var Comment = require_Comment2();
    var Declaration = require_Declaration2();
    var DeclarationList = require_DeclarationList2();
    var Dimension = require_Dimension2();
    var Function2 = require_Function2();
    var Hash = require_Hash2();
    var Identifier = require_Identifier2();
    var IdSelector = require_IdSelector2();
    var MediaFeature = require_MediaFeature();
    var MediaQuery = require_MediaQuery2();
    var MediaQueryList = require_MediaQueryList2();
    var Nth = require_Nth2();
    var Number2 = require_Number2();
    var Operator = require_Operator2();
    var Parentheses = require_Parentheses2();
    var Percentage = require_Percentage2();
    var PseudoClassSelector = require_PseudoClassSelector2();
    var PseudoElementSelector = require_PseudoElementSelector2();
    var Ratio = require_Ratio2();
    var Raw = require_Raw2();
    var Rule = require_Rule2();
    var Selector = require_Selector2();
    var SelectorList = require_SelectorList2();
    var String2 = require_String2();
    var StyleSheet = require_StyleSheet2();
    var TypeSelector = require_TypeSelector2();
    var UnicodeRange = require_UnicodeRange2();
    var Url = require_Url2();
    var Value = require_Value2();
    var WhiteSpace = require_WhiteSpace2();
    exports.AnPlusB = AnPlusB.parse;
    exports.Atrule = Atrule.parse;
    exports.AtrulePrelude = AtrulePrelude.parse;
    exports.AttributeSelector = AttributeSelector.parse;
    exports.Block = Block.parse;
    exports.Brackets = Brackets.parse;
    exports.CDC = CDC.parse;
    exports.CDO = CDO.parse;
    exports.ClassSelector = ClassSelector.parse;
    exports.Combinator = Combinator.parse;
    exports.Comment = Comment.parse;
    exports.Declaration = Declaration.parse;
    exports.DeclarationList = DeclarationList.parse;
    exports.Dimension = Dimension.parse;
    exports.Function = Function2.parse;
    exports.Hash = Hash.parse;
    exports.Identifier = Identifier.parse;
    exports.IdSelector = IdSelector.parse;
    exports.MediaFeature = MediaFeature.parse;
    exports.MediaQuery = MediaQuery.parse;
    exports.MediaQueryList = MediaQueryList.parse;
    exports.Nth = Nth.parse;
    exports.Number = Number2.parse;
    exports.Operator = Operator.parse;
    exports.Parentheses = Parentheses.parse;
    exports.Percentage = Percentage.parse;
    exports.PseudoClassSelector = PseudoClassSelector.parse;
    exports.PseudoElementSelector = PseudoElementSelector.parse;
    exports.Ratio = Ratio.parse;
    exports.Raw = Raw.parse;
    exports.Rule = Rule.parse;
    exports.Selector = Selector.parse;
    exports.SelectorList = SelectorList.parse;
    exports.String = String2.parse;
    exports.StyleSheet = StyleSheet.parse;
    exports.TypeSelector = TypeSelector.parse;
    exports.UnicodeRange = UnicodeRange.parse;
    exports.Url = Url.parse;
    exports.Value = Value.parse;
    exports.WhiteSpace = WhiteSpace.parse;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser.cjs
var require_parser3 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser.cjs"(exports, module) {
    "use strict";
    var index = require_scope3();
    var index$1 = require_atrule2();
    var index$2 = require_pseudo2();
    var indexParse = require_index_parse2();
    var config = {
      parseContext: {
        default: "StyleSheet",
        stylesheet: "StyleSheet",
        atrule: "Atrule",
        atrulePrelude(options) {
          return this.AtrulePrelude(options.atrule ? String(options.atrule) : null);
        },
        mediaQueryList: "MediaQueryList",
        mediaQuery: "MediaQuery",
        rule: "Rule",
        selectorList: "SelectorList",
        selector: "Selector",
        block() {
          return this.Block(true);
        },
        declarationList: "DeclarationList",
        declaration: "Declaration",
        value: "Value"
      },
      scope: index,
      atrule: index$1,
      pseudo: index$2,
      node: indexParse
    };
    module.exports = config;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/config/walker.cjs
var require_walker2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/config/walker.cjs"(exports, module) {
    "use strict";
    var index = require_node3();
    var config = {
      node: index
    };
    module.exports = config;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/syntax/index.cjs
var require_syntax2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/syntax/index.cjs"(exports, module) {
    "use strict";
    var create = require_create10();
    var lexer = require_lexer2();
    var parser = require_parser3();
    var walker = require_walker2();
    var syntax = create({
      ...lexer,
      ...parser,
      ...walker
    });
    module.exports = syntax;
  }
});

// node_modules/csso/node_modules/css-tree/dist/version.cjs
var require_version3 = __commonJS({
  "node_modules/csso/node_modules/css-tree/dist/version.cjs"(exports, module) {
    module.exports = "2.2.1";
  }
});

// node_modules/csso/node_modules/css-tree/cjs/definition-syntax/index.cjs
var require_definition_syntax2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/definition-syntax/index.cjs"(exports) {
    "use strict";
    var SyntaxError2 = require_SyntaxError4();
    var generate = require_generate2();
    var parse = require_parse4();
    var walk = require_walk2();
    exports.SyntaxError = SyntaxError2.SyntaxError;
    exports.generate = generate.generate;
    exports.parse = parse.parse;
    exports.walk = walk.walk;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/utils/clone.cjs
var require_clone2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/utils/clone.cjs"(exports) {
    "use strict";
    var List = require_List2();
    function clone(node) {
      const result = {};
      for (const key in node) {
        let value = node[key];
        if (value) {
          if (Array.isArray(value) || value instanceof List.List) {
            value = value.map(clone);
          } else if (value.constructor === Object) {
            value = clone(value);
          }
        }
        result[key] = value;
      }
      return result;
    }
    exports.clone = clone;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/utils/ident.cjs
var require_ident2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/utils/ident.cjs"(exports) {
    "use strict";
    var charCodeDefinitions = require_char_code_definitions2();
    var utils = require_utils2();
    var REVERSE_SOLIDUS = 92;
    function decode(str) {
      const end = str.length - 1;
      let decoded = "";
      for (let i = 0; i < str.length; i++) {
        let code = str.charCodeAt(i);
        if (code === REVERSE_SOLIDUS) {
          if (i === end) {
            break;
          }
          code = str.charCodeAt(++i);
          if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {
            const escapeStart = i - 1;
            const escapeEnd = utils.consumeEscaped(str, escapeStart);
            i = escapeEnd - 1;
            decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));
          } else {
            if (code === 13 && str.charCodeAt(i + 1) === 10) {
              i++;
            }
          }
        } else {
          decoded += str[i];
        }
      }
      return decoded;
    }
    function encode(str) {
      let encoded = "";
      if (str.length === 1 && str.charCodeAt(0) === 45) {
        return "\\-";
      }
      for (let i = 0; i < str.length; i++) {
        const code = str.charCodeAt(i);
        if (code === 0) {
          encoded += "\uFFFD";
          continue;
        }
        if (
          // If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F ...
          // Note: Do not compare with 0x0001 since 0x0000 is precessed before
          code <= 31 || code === 127 || // [or] ... is in the range [0-9] (U+0030 to U+0039),
          code >= 48 && code <= 57 && // If the character is the first character ...
          (i === 0 || // If the character is the second character ... and the first character is a "-" (U+002D)
          i === 1 && str.charCodeAt(0) === 45)
        ) {
          encoded += "\\" + code.toString(16) + " ";
          continue;
        }
        if (charCodeDefinitions.isName(code)) {
          encoded += str.charAt(i);
        } else {
          encoded += "\\" + str.charAt(i);
        }
      }
      return encoded;
    }
    exports.decode = decode;
    exports.encode = encode;
  }
});

// node_modules/csso/node_modules/css-tree/cjs/index.cjs
var require_cjs2 = __commonJS({
  "node_modules/csso/node_modules/css-tree/cjs/index.cjs"(exports) {
    "use strict";
    var index$1 = require_syntax2();
    var version = require_version3();
    var create = require_create10();
    var List = require_List2();
    var Lexer = require_Lexer2();
    var index = require_definition_syntax2();
    var clone = require_clone2();
    var names$1 = require_names4();
    var ident = require_ident2();
    var string = require_string2();
    var url = require_url2();
    var types = require_types3();
    var names = require_names3();
    var TokenStream = require_TokenStream2();
    var {
      tokenize,
      parse,
      generate,
      lexer,
      createLexer,
      walk,
      find,
      findLast,
      findAll,
      toPlainObject,
      fromPlainObject,
      fork
    } = index$1;
    exports.version = version.version;
    exports.createSyntax = create;
    exports.List = List.List;
    exports.Lexer = Lexer.Lexer;
    exports.definitionSyntax = index;
    exports.clone = clone.clone;
    exports.isCustomProperty = names$1.isCustomProperty;
    exports.keyword = names$1.keyword;
    exports.property = names$1.property;
    exports.vendorPrefix = names$1.vendorPrefix;
    exports.ident = ident;
    exports.string = string;
    exports.url = url;
    exports.tokenTypes = types;
    exports.tokenNames = names;
    exports.TokenStream = TokenStream.TokenStream;
    exports.createLexer = createLexer;
    exports.find = find;
    exports.findAll = findAll;
    exports.findLast = findLast;
    exports.fork = fork;
    exports.fromPlainObject = fromPlainObject;
    exports.generate = generate;
    exports.lexer = lexer;
    exports.parse = parse;
    exports.toPlainObject = toPlainObject;
    exports.tokenize = tokenize;
    exports.walk = walk;
  }
});

// node_modules/csso/cjs/usage.cjs
var require_usage = __commonJS({
  "node_modules/csso/cjs/usage.cjs"(exports) {
    "use strict";
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    function buildMap(list, caseInsensitive) {
      const map = /* @__PURE__ */ Object.create(null);
      if (!Array.isArray(list)) {
        return null;
      }
      for (let name of list) {
        if (caseInsensitive) {
          name = name.toLowerCase();
        }
        map[name] = true;
      }
      return map;
    }
    function buildList(data) {
      if (!data) {
        return null;
      }
      const tags = buildMap(data.tags, true);
      const ids = buildMap(data.ids);
      const classes = buildMap(data.classes);
      if (tags === null && ids === null && classes === null) {
        return null;
      }
      return {
        tags,
        ids,
        classes
      };
    }
    function buildIndex(data) {
      let scopes = false;
      if (data.scopes && Array.isArray(data.scopes)) {
        scopes = /* @__PURE__ */ Object.create(null);
        for (let i = 0; i < data.scopes.length; i++) {
          const list = data.scopes[i];
          if (!list || !Array.isArray(list)) {
            throw new Error("Wrong usage format");
          }
          for (const name of list) {
            if (hasOwnProperty2.call(scopes, name)) {
              throw new Error(`Class can't be used for several scopes: ${name}`);
            }
            scopes[name] = i + 1;
          }
        }
      }
      return {
        whitelist: buildList(data),
        blacklist: buildList(data.blacklist),
        scopes
      };
    }
    exports.buildIndex = buildIndex;
  }
});

// node_modules/csso/cjs/clean/utils.cjs
var require_utils3 = __commonJS({
  "node_modules/csso/cjs/clean/utils.cjs"(exports) {
    "use strict";
    function hasNoChildren(node) {
      return !node || !node.children || node.children.isEmpty;
    }
    function isNodeChildrenList(node, list) {
      return node !== null && node.children === list;
    }
    exports.hasNoChildren = hasNoChildren;
    exports.isNodeChildrenList = isNodeChildrenList;
  }
});

// node_modules/csso/cjs/clean/Atrule.cjs
var require_Atrule3 = __commonJS({
  "node_modules/csso/cjs/clean/Atrule.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var utils = require_utils3();
    function cleanAtrule(node, item, list) {
      if (node.block) {
        if (this.stylesheet !== null) {
          this.stylesheet.firstAtrulesAllowed = false;
        }
        if (utils.hasNoChildren(node.block)) {
          list.remove(item);
          return;
        }
      }
      switch (node.name) {
        case "charset":
          if (utils.hasNoChildren(node.prelude)) {
            list.remove(item);
            return;
          }
          if (item.prev) {
            list.remove(item);
            return;
          }
          break;
        case "import":
          if (this.stylesheet === null || !this.stylesheet.firstAtrulesAllowed) {
            list.remove(item);
            return;
          }
          list.prevUntil(item.prev, function(rule) {
            if (rule.type === "Atrule") {
              if (rule.name === "import" || rule.name === "charset") {
                return;
              }
            }
            this.root.firstAtrulesAllowed = false;
            list.remove(item);
            return true;
          }, this);
          break;
        default: {
          const name = cssTree.keyword(node.name).basename;
          if (name === "keyframes" || name === "media" || name === "supports") {
            if (utils.hasNoChildren(node.prelude) || utils.hasNoChildren(node.block)) {
              list.remove(item);
            }
          }
        }
      }
    }
    module.exports = cleanAtrule;
  }
});

// node_modules/csso/cjs/clean/Comment.cjs
var require_Comment3 = __commonJS({
  "node_modules/csso/cjs/clean/Comment.cjs"(exports, module) {
    "use strict";
    function cleanComment(data, item, list) {
      list.remove(item);
    }
    module.exports = cleanComment;
  }
});

// node_modules/csso/cjs/clean/Declaration.cjs
var require_Declaration3 = __commonJS({
  "node_modules/csso/cjs/clean/Declaration.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    function cleanDeclartion(node, item, list) {
      if (node.value.children && node.value.children.isEmpty) {
        list.remove(item);
        return;
      }
      if (cssTree.property(node.property).custom) {
        if (/\S/.test(node.value.value)) {
          node.value.value = node.value.value.trim();
        }
      }
    }
    module.exports = cleanDeclartion;
  }
});

// node_modules/csso/cjs/clean/Raw.cjs
var require_Raw3 = __commonJS({
  "node_modules/csso/cjs/clean/Raw.cjs"(exports, module) {
    "use strict";
    var utils = require_utils3();
    function cleanRaw(node, item, list) {
      if (utils.isNodeChildrenList(this.stylesheet, list) || utils.isNodeChildrenList(this.block, list)) {
        list.remove(item);
      }
    }
    module.exports = cleanRaw;
  }
});

// node_modules/csso/cjs/clean/Rule.cjs
var require_Rule3 = __commonJS({
  "node_modules/csso/cjs/clean/Rule.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var utils = require_utils3();
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    var skipUsageFilteringAtrule = /* @__PURE__ */ new Set(["keyframes"]);
    function cleanUnused(selectorList, usageData) {
      selectorList.children.forEach((selector, item, list) => {
        let shouldRemove = false;
        cssTree.walk(selector, function(node) {
          if (this.selector === null || this.selector === selectorList) {
            switch (node.type) {
              case "SelectorList":
                if (this.function === null || this.function.name.toLowerCase() !== "not") {
                  if (cleanUnused(node, usageData)) {
                    shouldRemove = true;
                  }
                }
                break;
              case "ClassSelector":
                if (usageData.whitelist !== null && usageData.whitelist.classes !== null && !hasOwnProperty2.call(usageData.whitelist.classes, node.name)) {
                  shouldRemove = true;
                }
                if (usageData.blacklist !== null && usageData.blacklist.classes !== null && hasOwnProperty2.call(usageData.blacklist.classes, node.name)) {
                  shouldRemove = true;
                }
                break;
              case "IdSelector":
                if (usageData.whitelist !== null && usageData.whitelist.ids !== null && !hasOwnProperty2.call(usageData.whitelist.ids, node.name)) {
                  shouldRemove = true;
                }
                if (usageData.blacklist !== null && usageData.blacklist.ids !== null && hasOwnProperty2.call(usageData.blacklist.ids, node.name)) {
                  shouldRemove = true;
                }
                break;
              case "TypeSelector":
                if (node.name.charAt(node.name.length - 1) !== "*") {
                  if (usageData.whitelist !== null && usageData.whitelist.tags !== null && !hasOwnProperty2.call(usageData.whitelist.tags, node.name.toLowerCase())) {
                    shouldRemove = true;
                  }
                  if (usageData.blacklist !== null && usageData.blacklist.tags !== null && hasOwnProperty2.call(usageData.blacklist.tags, node.name.toLowerCase())) {
                    shouldRemove = true;
                  }
                }
                break;
            }
          }
        });
        if (shouldRemove) {
          list.remove(item);
        }
      });
      return selectorList.children.isEmpty;
    }
    function cleanRule(node, item, list, options) {
      if (utils.hasNoChildren(node.prelude) || utils.hasNoChildren(node.block)) {
        list.remove(item);
        return;
      }
      if (this.atrule && skipUsageFilteringAtrule.has(cssTree.keyword(this.atrule.name).basename)) {
        return;
      }
      const { usage } = options;
      if (usage && (usage.whitelist !== null || usage.blacklist !== null)) {
        cleanUnused(node.prelude, usage);
        if (utils.hasNoChildren(node.prelude)) {
          list.remove(item);
          return;
        }
      }
    }
    module.exports = cleanRule;
  }
});

// node_modules/csso/cjs/clean/TypeSelector.cjs
var require_TypeSelector3 = __commonJS({
  "node_modules/csso/cjs/clean/TypeSelector.cjs"(exports, module) {
    "use strict";
    function cleanTypeSelector(node, item, list) {
      const name = item.data.name;
      if (name !== "*") {
        return;
      }
      const nextType = item.next && item.next.data.type;
      if (nextType === "IdSelector" || nextType === "ClassSelector" || nextType === "AttributeSelector" || nextType === "PseudoClassSelector" || nextType === "PseudoElementSelector") {
        list.remove(item);
      }
    }
    module.exports = cleanTypeSelector;
  }
});

// node_modules/csso/cjs/clean/WhiteSpace.cjs
var require_WhiteSpace3 = __commonJS({
  "node_modules/csso/cjs/clean/WhiteSpace.cjs"(exports, module) {
    "use strict";
    function cleanWhitespace(node, item, list) {
      list.remove(item);
    }
    module.exports = cleanWhitespace;
  }
});

// node_modules/csso/cjs/clean/index.cjs
var require_clean = __commonJS({
  "node_modules/csso/cjs/clean/index.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var Atrule = require_Atrule3();
    var Comment = require_Comment3();
    var Declaration = require_Declaration3();
    var Raw = require_Raw3();
    var Rule = require_Rule3();
    var TypeSelector = require_TypeSelector3();
    var WhiteSpace = require_WhiteSpace3();
    var handlers = {
      Atrule,
      Comment,
      Declaration,
      Raw,
      Rule,
      TypeSelector,
      WhiteSpace
    };
    function clean(ast, options) {
      cssTree.walk(ast, {
        leave(node, item, list) {
          if (handlers.hasOwnProperty(node.type)) {
            handlers[node.type].call(this, node, item, list, options);
          }
        }
      });
    }
    module.exports = clean;
  }
});

// node_modules/csso/cjs/replace/atrule/keyframes.cjs
var require_keyframes = __commonJS({
  "node_modules/csso/cjs/replace/atrule/keyframes.cjs"(exports, module) {
    "use strict";
    function compressKeyframes(node) {
      node.block.children.forEach((rule) => {
        rule.prelude.children.forEach((simpleselector) => {
          simpleselector.children.forEach((data, item) => {
            if (data.type === "Percentage" && data.value === "100") {
              item.data = {
                type: "TypeSelector",
                loc: data.loc,
                name: "to"
              };
            } else if (data.type === "TypeSelector" && data.name === "from") {
              item.data = {
                type: "Percentage",
                loc: data.loc,
                value: "0"
              };
            }
          });
        });
      });
    }
    module.exports = compressKeyframes;
  }
});

// node_modules/csso/cjs/replace/Atrule.cjs
var require_Atrule4 = __commonJS({
  "node_modules/csso/cjs/replace/Atrule.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var keyframes = require_keyframes();
    function Atrule(node) {
      if (cssTree.keyword(node.name).basename === "keyframes") {
        keyframes(node);
      }
    }
    module.exports = Atrule;
  }
});

// node_modules/csso/cjs/replace/AttributeSelector.cjs
var require_AttributeSelector3 = __commonJS({
  "node_modules/csso/cjs/replace/AttributeSelector.cjs"(exports, module) {
    "use strict";
    var blockUnquoteRx = /^(-?\d|--)|[\u0000-\u002c\u002e\u002f\u003A-\u0040\u005B-\u005E\u0060\u007B-\u009f]/;
    function canUnquote(value) {
      if (value === "" || value === "-") {
        return false;
      }
      return !blockUnquoteRx.test(value);
    }
    function AttributeSelector(node) {
      const attrValue = node.value;
      if (!attrValue || attrValue.type !== "String") {
        return;
      }
      if (canUnquote(attrValue.value)) {
        node.value = {
          type: "Identifier",
          loc: attrValue.loc,
          name: attrValue.value
        };
      }
    }
    module.exports = AttributeSelector;
  }
});

// node_modules/csso/cjs/replace/property/font.cjs
var require_font = __commonJS({
  "node_modules/csso/cjs/replace/property/font.cjs"(exports, module) {
    "use strict";
    function compressFont(node) {
      const list = node.children;
      list.forEachRight(function(node2, item) {
        if (node2.type === "Identifier") {
          if (node2.name === "bold") {
            item.data = {
              type: "Number",
              loc: node2.loc,
              value: "700"
            };
          } else if (node2.name === "normal") {
            const prev = item.prev;
            if (prev && prev.data.type === "Operator" && prev.data.value === "/") {
              this.remove(prev);
            }
            this.remove(item);
          }
        }
      });
      if (list.isEmpty) {
        list.insert(list.createItem({
          type: "Identifier",
          name: "normal"
        }));
      }
    }
    module.exports = compressFont;
  }
});

// node_modules/csso/cjs/replace/property/font-weight.cjs
var require_font_weight = __commonJS({
  "node_modules/csso/cjs/replace/property/font-weight.cjs"(exports, module) {
    "use strict";
    function compressFontWeight(node) {
      const value = node.children.head.data;
      if (value.type === "Identifier") {
        switch (value.name) {
          case "normal":
            node.children.head.data = {
              type: "Number",
              loc: value.loc,
              value: "400"
            };
            break;
          case "bold":
            node.children.head.data = {
              type: "Number",
              loc: value.loc,
              value: "700"
            };
            break;
        }
      }
    }
    module.exports = compressFontWeight;
  }
});

// node_modules/csso/cjs/replace/property/background.cjs
var require_background = __commonJS({
  "node_modules/csso/cjs/replace/property/background.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    function compressBackground(node) {
      function flush() {
        if (!buffer.length) {
          buffer.unshift(
            {
              type: "Number",
              loc: null,
              value: "0"
            },
            {
              type: "Number",
              loc: null,
              value: "0"
            }
          );
        }
        newValue.push.apply(newValue, buffer);
        buffer = [];
      }
      let newValue = [];
      let buffer = [];
      node.children.forEach((node2) => {
        if (node2.type === "Operator" && node2.value === ",") {
          flush();
          newValue.push(node2);
          return;
        }
        if (node2.type === "Identifier") {
          if (node2.name === "transparent" || node2.name === "none" || node2.name === "repeat" || node2.name === "scroll") {
            return;
          }
        }
        buffer.push(node2);
      });
      flush();
      node.children = new cssTree.List().fromArray(newValue);
    }
    module.exports = compressBackground;
  }
});

// node_modules/csso/cjs/replace/property/border.cjs
var require_border = __commonJS({
  "node_modules/csso/cjs/replace/property/border.cjs"(exports, module) {
    "use strict";
    function compressBorder(node) {
      node.children.forEach((node2, item, list) => {
        if (node2.type === "Identifier" && node2.name.toLowerCase() === "none") {
          if (list.head === list.tail) {
            item.data = {
              type: "Number",
              loc: node2.loc,
              value: "0"
            };
          } else {
            list.remove(item);
          }
        }
      });
    }
    module.exports = compressBorder;
  }
});

// node_modules/csso/cjs/replace/Value.cjs
var require_Value3 = __commonJS({
  "node_modules/csso/cjs/replace/Value.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var font = require_font();
    var fontWeight = require_font_weight();
    var background = require_background();
    var border = require_border();
    var handlers = {
      "font": font,
      "font-weight": fontWeight,
      "background": background,
      "border": border,
      "outline": border
    };
    function compressValue(node) {
      if (!this.declaration) {
        return;
      }
      const property = cssTree.property(this.declaration.property);
      if (handlers.hasOwnProperty(property.basename)) {
        handlers[property.basename](node);
      }
    }
    module.exports = compressValue;
  }
});

// node_modules/csso/cjs/replace/Number.cjs
var require_Number3 = __commonJS({
  "node_modules/csso/cjs/replace/Number.cjs"(exports) {
    "use strict";
    var OMIT_PLUSSIGN = /^(?:\+|(-))?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/;
    var KEEP_PLUSSIGN = /^([\+\-])?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/;
    var unsafeToRemovePlusSignAfter = /* @__PURE__ */ new Set([
      "Dimension",
      "Hash",
      "Identifier",
      "Number",
      "Raw",
      "UnicodeRange"
    ]);
    function packNumber(value, item) {
      const regexp = item && item.prev !== null && unsafeToRemovePlusSignAfter.has(item.prev.data.type) ? KEEP_PLUSSIGN : OMIT_PLUSSIGN;
      value = String(value).replace(regexp, "$1$2$3");
      if (value === "" || value === "-") {
        value = "0";
      }
      return value;
    }
    function Number2(node) {
      node.value = packNumber(node.value);
    }
    exports.Number = Number2;
    exports.packNumber = packNumber;
  }
});

// node_modules/csso/cjs/replace/Dimension.cjs
var require_Dimension3 = __commonJS({
  "node_modules/csso/cjs/replace/Dimension.cjs"(exports, module) {
    "use strict";
    var _Number = require_Number3();
    var MATH_FUNCTIONS = /* @__PURE__ */ new Set([
      "calc",
      "min",
      "max",
      "clamp"
    ]);
    var LENGTH_UNIT = /* @__PURE__ */ new Set([
      // absolute length units
      "px",
      "mm",
      "cm",
      "in",
      "pt",
      "pc",
      // relative length units
      "em",
      "ex",
      "ch",
      "rem",
      // viewport-percentage lengths
      "vh",
      "vw",
      "vmin",
      "vmax",
      "vm"
    ]);
    function compressDimension(node, item) {
      const value = _Number.packNumber(node.value);
      node.value = value;
      if (value === "0" && this.declaration !== null && this.atrulePrelude === null) {
        const unit = node.unit.toLowerCase();
        if (!LENGTH_UNIT.has(unit)) {
          return;
        }
        if (this.declaration.property === "-ms-flex" || this.declaration.property === "flex") {
          return;
        }
        if (this.function && MATH_FUNCTIONS.has(this.function.name)) {
          return;
        }
        item.data = {
          type: "Number",
          loc: node.loc,
          value
        };
      }
    }
    module.exports = compressDimension;
  }
});

// node_modules/csso/cjs/replace/Percentage.cjs
var require_Percentage3 = __commonJS({
  "node_modules/csso/cjs/replace/Percentage.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var _Number = require_Number3();
    var blacklist = /* @__PURE__ */ new Set([
      // see https://github.com/jakubpawlowicz/clean-css/issues/957
      "width",
      "min-width",
      "max-width",
      "height",
      "min-height",
      "max-height",
      // issue #410: Don’t remove units in flex-basis value for (-ms-)flex shorthand
      // issue #362: shouldn't remove unit in -ms-flex since it breaks flex in IE10/11
      // issue #200: shouldn't remove unit in flex since it breaks flex in IE10/11
      "flex",
      "-ms-flex"
    ]);
    function compressPercentage(node, item) {
      node.value = _Number.packNumber(node.value);
      if (node.value === "0" && this.declaration && !blacklist.has(this.declaration.property)) {
        item.data = {
          type: "Number",
          loc: node.loc,
          value: node.value
        };
        if (!cssTree.lexer.matchDeclaration(this.declaration).isType(item.data, "length")) {
          item.data = node;
        }
      }
    }
    module.exports = compressPercentage;
  }
});

// node_modules/csso/cjs/replace/Url.cjs
var require_Url3 = __commonJS({
  "node_modules/csso/cjs/replace/Url.cjs"(exports, module) {
    "use strict";
    function Url(node) {
      node.value = node.value.replace(/\\/g, "/");
    }
    module.exports = Url;
  }
});

// node_modules/csso/cjs/replace/color.cjs
var require_color = __commonJS({
  "node_modules/csso/cjs/replace/color.cjs"(exports) {
    "use strict";
    var cssTree = require_cjs2();
    var _Number = require_Number3();
    var NAME_TO_HEX = {
      "aliceblue": "f0f8ff",
      "antiquewhite": "faebd7",
      "aqua": "0ff",
      "aquamarine": "7fffd4",
      "azure": "f0ffff",
      "beige": "f5f5dc",
      "bisque": "ffe4c4",
      "black": "000",
      "blanchedalmond": "ffebcd",
      "blue": "00f",
      "blueviolet": "8a2be2",
      "brown": "a52a2a",
      "burlywood": "deb887",
      "cadetblue": "5f9ea0",
      "chartreuse": "7fff00",
      "chocolate": "d2691e",
      "coral": "ff7f50",
      "cornflowerblue": "6495ed",
      "cornsilk": "fff8dc",
      "crimson": "dc143c",
      "cyan": "0ff",
      "darkblue": "00008b",
      "darkcyan": "008b8b",
      "darkgoldenrod": "b8860b",
      "darkgray": "a9a9a9",
      "darkgrey": "a9a9a9",
      "darkgreen": "006400",
      "darkkhaki": "bdb76b",
      "darkmagenta": "8b008b",
      "darkolivegreen": "556b2f",
      "darkorange": "ff8c00",
      "darkorchid": "9932cc",
      "darkred": "8b0000",
      "darksalmon": "e9967a",
      "darkseagreen": "8fbc8f",
      "darkslateblue": "483d8b",
      "darkslategray": "2f4f4f",
      "darkslategrey": "2f4f4f",
      "darkturquoise": "00ced1",
      "darkviolet": "9400d3",
      "deeppink": "ff1493",
      "deepskyblue": "00bfff",
      "dimgray": "696969",
      "dimgrey": "696969",
      "dodgerblue": "1e90ff",
      "firebrick": "b22222",
      "floralwhite": "fffaf0",
      "forestgreen": "228b22",
      "fuchsia": "f0f",
      "gainsboro": "dcdcdc",
      "ghostwhite": "f8f8ff",
      "gold": "ffd700",
      "goldenrod": "daa520",
      "gray": "808080",
      "grey": "808080",
      "green": "008000",
      "greenyellow": "adff2f",
      "honeydew": "f0fff0",
      "hotpink": "ff69b4",
      "indianred": "cd5c5c",
      "indigo": "4b0082",
      "ivory": "fffff0",
      "khaki": "f0e68c",
      "lavender": "e6e6fa",
      "lavenderblush": "fff0f5",
      "lawngreen": "7cfc00",
      "lemonchiffon": "fffacd",
      "lightblue": "add8e6",
      "lightcoral": "f08080",
      "lightcyan": "e0ffff",
      "lightgoldenrodyellow": "fafad2",
      "lightgray": "d3d3d3",
      "lightgrey": "d3d3d3",
      "lightgreen": "90ee90",
      "lightpink": "ffb6c1",
      "lightsalmon": "ffa07a",
      "lightseagreen": "20b2aa",
      "lightskyblue": "87cefa",
      "lightslategray": "789",
      "lightslategrey": "789",
      "lightsteelblue": "b0c4de",
      "lightyellow": "ffffe0",
      "lime": "0f0",
      "limegreen": "32cd32",
      "linen": "faf0e6",
      "magenta": "f0f",
      "maroon": "800000",
      "mediumaquamarine": "66cdaa",
      "mediumblue": "0000cd",
      "mediumorchid": "ba55d3",
      "mediumpurple": "9370db",
      "mediumseagreen": "3cb371",
      "mediumslateblue": "7b68ee",
      "mediumspringgreen": "00fa9a",
      "mediumturquoise": "48d1cc",
      "mediumvioletred": "c71585",
      "midnightblue": "191970",
      "mintcream": "f5fffa",
      "mistyrose": "ffe4e1",
      "moccasin": "ffe4b5",
      "navajowhite": "ffdead",
      "navy": "000080",
      "oldlace": "fdf5e6",
      "olive": "808000",
      "olivedrab": "6b8e23",
      "orange": "ffa500",
      "orangered": "ff4500",
      "orchid": "da70d6",
      "palegoldenrod": "eee8aa",
      "palegreen": "98fb98",
      "paleturquoise": "afeeee",
      "palevioletred": "db7093",
      "papayawhip": "ffefd5",
      "peachpuff": "ffdab9",
      "peru": "cd853f",
      "pink": "ffc0cb",
      "plum": "dda0dd",
      "powderblue": "b0e0e6",
      "purple": "800080",
      "rebeccapurple": "639",
      "red": "f00",
      "rosybrown": "bc8f8f",
      "royalblue": "4169e1",
      "saddlebrown": "8b4513",
      "salmon": "fa8072",
      "sandybrown": "f4a460",
      "seagreen": "2e8b57",
      "seashell": "fff5ee",
      "sienna": "a0522d",
      "silver": "c0c0c0",
      "skyblue": "87ceeb",
      "slateblue": "6a5acd",
      "slategray": "708090",
      "slategrey": "708090",
      "snow": "fffafa",
      "springgreen": "00ff7f",
      "steelblue": "4682b4",
      "tan": "d2b48c",
      "teal": "008080",
      "thistle": "d8bfd8",
      "tomato": "ff6347",
      "turquoise": "40e0d0",
      "violet": "ee82ee",
      "wheat": "f5deb3",
      "white": "fff",
      "whitesmoke": "f5f5f5",
      "yellow": "ff0",
      "yellowgreen": "9acd32"
    };
    var HEX_TO_NAME = {
      "800000": "maroon",
      "800080": "purple",
      "808000": "olive",
      "808080": "gray",
      "00ffff": "cyan",
      "f0ffff": "azure",
      "f5f5dc": "beige",
      "ffe4c4": "bisque",
      "000000": "black",
      "0000ff": "blue",
      "a52a2a": "brown",
      "ff7f50": "coral",
      "ffd700": "gold",
      "008000": "green",
      "4b0082": "indigo",
      "fffff0": "ivory",
      "f0e68c": "khaki",
      "00ff00": "lime",
      "faf0e6": "linen",
      "000080": "navy",
      "ffa500": "orange",
      "da70d6": "orchid",
      "cd853f": "peru",
      "ffc0cb": "pink",
      "dda0dd": "plum",
      "f00": "red",
      "ff0000": "red",
      "fa8072": "salmon",
      "a0522d": "sienna",
      "c0c0c0": "silver",
      "fffafa": "snow",
      "d2b48c": "tan",
      "008080": "teal",
      "ff6347": "tomato",
      "ee82ee": "violet",
      "f5deb3": "wheat",
      "ffffff": "white",
      "ffff00": "yellow"
    };
    function hueToRgb(p, q, t) {
      if (t < 0) {
        t += 1;
      }
      if (t > 1) {
        t -= 1;
      }
      if (t < 1 / 6) {
        return p + (q - p) * 6 * t;
      }
      if (t < 1 / 2) {
        return q;
      }
      if (t < 2 / 3) {
        return p + (q - p) * (2 / 3 - t) * 6;
      }
      return p;
    }
    function hslToRgb(h, s, l, a) {
      let r;
      let g;
      let b;
      if (s === 0) {
        r = g = b = l;
      } else {
        const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
        const p = 2 * l - q;
        r = hueToRgb(p, q, h + 1 / 3);
        g = hueToRgb(p, q, h);
        b = hueToRgb(p, q, h - 1 / 3);
      }
      return [
        Math.round(r * 255),
        Math.round(g * 255),
        Math.round(b * 255),
        a
      ];
    }
    function toHex(value) {
      value = value.toString(16);
      return value.length === 1 ? "0" + value : value;
    }
    function parseFunctionArgs(functionArgs, count, rgb) {
      let cursor = functionArgs.head;
      let args = [];
      let wasValue = false;
      while (cursor !== null) {
        const { type, value } = cursor.data;
        switch (type) {
          case "Number":
          case "Percentage":
            if (wasValue) {
              return;
            }
            wasValue = true;
            args.push({
              type,
              value: Number(value)
            });
            break;
          case "Operator":
            if (value === ",") {
              if (!wasValue) {
                return;
              }
              wasValue = false;
            } else if (wasValue || value !== "+") {
              return;
            }
            break;
          default:
            return;
        }
        cursor = cursor.next;
      }
      if (args.length !== count) {
        return;
      }
      if (args.length === 4) {
        if (args[3].type !== "Number") {
          return;
        }
        args[3].type = "Alpha";
      }
      if (rgb) {
        if (args[0].type !== args[1].type || args[0].type !== args[2].type) {
          return;
        }
      } else {
        if (args[0].type !== "Number" || args[1].type !== "Percentage" || args[2].type !== "Percentage") {
          return;
        }
        args[0].type = "Angle";
      }
      return args.map(function(arg) {
        let value = Math.max(0, arg.value);
        switch (arg.type) {
          case "Number":
            value = Math.min(value, 255);
            break;
          case "Percentage":
            value = Math.min(value, 100) / 100;
            if (!rgb) {
              return value;
            }
            value = 255 * value;
            break;
          case "Angle":
            return (value % 360 + 360) % 360 / 360;
          case "Alpha":
            return Math.min(value, 1);
        }
        return Math.round(value);
      });
    }
    function compressFunction(node, item) {
      let functionName = node.name;
      let args;
      if (functionName === "rgba" || functionName === "hsla") {
        args = parseFunctionArgs(node.children, 4, functionName === "rgba");
        if (!args) {
          return;
        }
        if (functionName === "hsla") {
          args = hslToRgb(...args);
          node.name = "rgba";
        }
        if (args[3] === 0) {
          const scopeFunctionName = this.function && this.function.name;
          if (args[0] === 0 && args[1] === 0 && args[2] === 0 || !/^(?:to|from|color-stop)$|gradient$/i.test(scopeFunctionName)) {
            item.data = {
              type: "Identifier",
              loc: node.loc,
              name: "transparent"
            };
            return;
          }
        }
        if (args[3] !== 1) {
          node.children.forEach((node2, item2, list) => {
            if (node2.type === "Operator") {
              if (node2.value !== ",") {
                list.remove(item2);
              }
              return;
            }
            item2.data = {
              type: "Number",
              loc: node2.loc,
              value: _Number.packNumber(args.shift())
            };
          });
          return;
        }
        functionName = "rgb";
      }
      if (functionName === "hsl") {
        args = args || parseFunctionArgs(node.children, 3, false);
        if (!args) {
          return;
        }
        args = hslToRgb(...args);
        functionName = "rgb";
      }
      if (functionName === "rgb") {
        args = args || parseFunctionArgs(node.children, 3, true);
        if (!args) {
          return;
        }
        item.data = {
          type: "Hash",
          loc: node.loc,
          value: toHex(args[0]) + toHex(args[1]) + toHex(args[2])
        };
        compressHex(item.data, item);
      }
    }
    function compressIdent(node, item) {
      if (this.declaration === null) {
        return;
      }
      let color = node.name.toLowerCase();
      if (NAME_TO_HEX.hasOwnProperty(color) && cssTree.lexer.matchDeclaration(this.declaration).isType(node, "color")) {
        const hex = NAME_TO_HEX[color];
        if (hex.length + 1 <= color.length) {
          item.data = {
            type: "Hash",
            loc: node.loc,
            value: hex
          };
        } else {
          if (color === "grey") {
            color = "gray";
          }
          node.name = color;
        }
      }
    }
    function compressHex(node, item) {
      let color = node.value.toLowerCase();
      if (color.length === 6 && color[0] === color[1] && color[2] === color[3] && color[4] === color[5]) {
        color = color[0] + color[2] + color[4];
      }
      if (HEX_TO_NAME[color]) {
        item.data = {
          type: "Identifier",
          loc: node.loc,
          name: HEX_TO_NAME[color]
        };
      } else {
        node.value = color;
      }
    }
    exports.compressFunction = compressFunction;
    exports.compressHex = compressHex;
    exports.compressIdent = compressIdent;
  }
});

// node_modules/csso/cjs/replace/index.cjs
var require_replace = __commonJS({
  "node_modules/csso/cjs/replace/index.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var Atrule = require_Atrule4();
    var AttributeSelector = require_AttributeSelector3();
    var Value = require_Value3();
    var Dimension = require_Dimension3();
    var Percentage = require_Percentage3();
    var _Number = require_Number3();
    var Url = require_Url3();
    var color = require_color();
    var handlers = {
      Atrule,
      AttributeSelector,
      Value,
      Dimension,
      Percentage,
      Number: _Number.Number,
      Url,
      Hash: color.compressHex,
      Identifier: color.compressIdent,
      Function: color.compressFunction
    };
    function replace(ast) {
      cssTree.walk(ast, {
        leave(node, item, list) {
          if (handlers.hasOwnProperty(node.type)) {
            handlers[node.type].call(this, node, item, list);
          }
        }
      });
    }
    module.exports = replace;
  }
});

// node_modules/csso/cjs/restructure/prepare/createDeclarationIndexer.cjs
var require_createDeclarationIndexer = __commonJS({
  "node_modules/csso/cjs/restructure/prepare/createDeclarationIndexer.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var Index = class {
      constructor() {
        this.map = /* @__PURE__ */ new Map();
      }
      resolve(str) {
        let index = this.map.get(str);
        if (index === void 0) {
          index = this.map.size + 1;
          this.map.set(str, index);
        }
        return index;
      }
    };
    function createDeclarationIndexer() {
      const ids = new Index();
      return function markDeclaration(node) {
        const id = cssTree.generate(node);
        node.id = ids.resolve(id);
        node.length = id.length;
        node.fingerprint = null;
        return node;
      };
    }
    module.exports = createDeclarationIndexer;
  }
});

// node_modules/csso/cjs/restructure/prepare/specificity.cjs
var require_specificity = __commonJS({
  "node_modules/csso/cjs/restructure/prepare/specificity.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    function ensureSelectorList(node) {
      if (node.type === "Raw") {
        return cssTree.parse(node.value, { context: "selectorList" });
      }
      return node;
    }
    function maxSpecificity(a, b) {
      for (let i = 0; i < 3; i++) {
        if (a[i] !== b[i]) {
          return a[i] > b[i] ? a : b;
        }
      }
      return a;
    }
    function maxSelectorListSpecificity(selectorList) {
      return ensureSelectorList(selectorList).children.reduce(
        (result, node) => maxSpecificity(specificity(node), result),
        [0, 0, 0]
      );
    }
    function specificity(simpleSelector) {
      let A = 0;
      let B = 0;
      let C = 0;
      simpleSelector.children.forEach((node) => {
        switch (node.type) {
          // count the number of ID selectors in the selector (= A)
          case "IdSelector":
            A++;
            break;
          // count the number of class selectors, attributes selectors, ...
          case "ClassSelector":
          case "AttributeSelector":
            B++;
            break;
          // ... and pseudo-classes in the selector (= B)
          case "PseudoClassSelector":
            switch (node.name.toLowerCase()) {
              // The specificity of an :is(), :not(), or :has() pseudo-class is replaced
              // by the specificity of the most specific complex selector in its selector list argument.
              case "not":
              case "has":
              case "is":
              // :matches() is used before it was renamed to :is()
              // https://github.com/w3c/csswg-drafts/issues/3258
              case "matches":
              // Older browsers support :is() functionality as prefixed pseudo-class :any()
              // https://developer.mozilla.org/en-US/docs/Web/CSS/:is
              case "-webkit-any":
              case "-moz-any": {
                const [a, b, c] = maxSelectorListSpecificity(node.children.first);
                A += a;
                B += b;
                C += c;
                break;
              }
              // Analogously, the specificity of an :nth-child() or :nth-last-child() selector
              // is the specificity of the pseudo class itself (counting as one pseudo-class selector)
              // plus the specificity of the most specific complex selector in its selector list argument (if any).
              case "nth-child":
              case "nth-last-child": {
                const arg = node.children.first;
                if (arg.type === "Nth" && arg.selector) {
                  const [a, b, c] = maxSelectorListSpecificity(arg.selector);
                  A += a;
                  B += b + 1;
                  C += c;
                } else {
                  B++;
                }
                break;
              }
              // The specificity of a :where() pseudo-class is replaced by zero.
              case "where":
                break;
              // The four Level 2 pseudo-elements (::before, ::after, ::first-line, and ::first-letter) may,
              // for legacy reasons, be represented using the <pseudo-class-selector> grammar,
              // with only a single ":" character at their start.
              // https://www.w3.org/TR/selectors-4/#single-colon-pseudos
              case "before":
              case "after":
              case "first-line":
              case "first-letter":
                C++;
                break;
              default:
                B++;
            }
            break;
          // count the number of type selectors ...
          case "TypeSelector":
            if (!node.name.endsWith("*")) {
              C++;
            }
            break;
          // ... and pseudo-elements in the selector (= C)
          case "PseudoElementSelector":
            C++;
            break;
        }
      });
      return [A, B, C];
    }
    module.exports = specificity;
  }
});

// node_modules/csso/cjs/restructure/prepare/processSelector.cjs
var require_processSelector = __commonJS({
  "node_modules/csso/cjs/restructure/prepare/processSelector.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var specificity = require_specificity();
    var nonFreezePseudoElements = /* @__PURE__ */ new Set([
      "first-letter",
      "first-line",
      "after",
      "before"
    ]);
    var nonFreezePseudoClasses = /* @__PURE__ */ new Set([
      "link",
      "visited",
      "hover",
      "active",
      "first-letter",
      "first-line",
      "after",
      "before"
    ]);
    function processSelector(node, usageData) {
      const pseudos = /* @__PURE__ */ new Set();
      node.prelude.children.forEach(function(simpleSelector) {
        let tagName = "*";
        let scope = 0;
        simpleSelector.children.forEach(function(node2) {
          switch (node2.type) {
            case "ClassSelector":
              if (usageData && usageData.scopes) {
                const classScope = usageData.scopes[node2.name] || 0;
                if (scope !== 0 && classScope !== scope) {
                  throw new Error("Selector can't has classes from different scopes: " + cssTree.generate(simpleSelector));
                }
                scope = classScope;
              }
              break;
            case "PseudoClassSelector": {
              const name = node2.name.toLowerCase();
              if (!nonFreezePseudoClasses.has(name)) {
                pseudos.add(`:${name}`);
              }
              break;
            }
            case "PseudoElementSelector": {
              const name = node2.name.toLowerCase();
              if (!nonFreezePseudoElements.has(name)) {
                pseudos.add(`::${name}`);
              }
              break;
            }
            case "TypeSelector":
              tagName = node2.name.toLowerCase();
              break;
            case "AttributeSelector":
              if (node2.flags) {
                pseudos.add(`[${node2.flags.toLowerCase()}]`);
              }
              break;
            case "Combinator":
              tagName = "*";
              break;
          }
        });
        simpleSelector.compareMarker = specificity(simpleSelector).toString();
        simpleSelector.id = null;
        simpleSelector.id = cssTree.generate(simpleSelector);
        if (scope) {
          simpleSelector.compareMarker += ":" + scope;
        }
        if (tagName !== "*") {
          simpleSelector.compareMarker += "," + tagName;
        }
      });
      node.pseudoSignature = pseudos.size > 0 ? [...pseudos].sort().join(",") : false;
    }
    module.exports = processSelector;
  }
});

// node_modules/csso/cjs/restructure/prepare/index.cjs
var require_prepare = __commonJS({
  "node_modules/csso/cjs/restructure/prepare/index.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var createDeclarationIndexer = require_createDeclarationIndexer();
    var processSelector = require_processSelector();
    function prepare(ast, options) {
      const markDeclaration = createDeclarationIndexer();
      cssTree.walk(ast, {
        visit: "Rule",
        enter(node) {
          node.block.children.forEach(markDeclaration);
          processSelector(node, options.usage);
        }
      });
      cssTree.walk(ast, {
        visit: "Atrule",
        enter(node) {
          if (node.prelude) {
            node.prelude.id = null;
            node.prelude.id = cssTree.generate(node.prelude);
          }
          if (cssTree.keyword(node.name).basename === "keyframes") {
            node.block.avoidRulesMerge = true;
            node.block.children.forEach(function(rule) {
              rule.prelude.children.forEach(function(simpleselector) {
                simpleselector.compareMarker = simpleselector.id;
              });
            });
          }
        }
      });
      return {
        declaration: markDeclaration
      };
    }
    module.exports = prepare;
  }
});

// node_modules/csso/cjs/restructure/1-mergeAtrule.cjs
var require_mergeAtrule = __commonJS({
  "node_modules/csso/cjs/restructure/1-mergeAtrule.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    function addRuleToMap(map, item, list, single) {
      const node = item.data;
      const name = cssTree.keyword(node.name).basename;
      const id = node.name.toLowerCase() + "/" + (node.prelude ? node.prelude.id : null);
      if (!hasOwnProperty2.call(map, name)) {
        map[name] = /* @__PURE__ */ Object.create(null);
      }
      if (single) {
        delete map[name][id];
      }
      if (!hasOwnProperty2.call(map[name], id)) {
        map[name][id] = new cssTree.List();
      }
      map[name][id].append(list.remove(item));
    }
    function relocateAtrules(ast, options) {
      const collected = /* @__PURE__ */ Object.create(null);
      let topInjectPoint = null;
      ast.children.forEach(function(node, item, list) {
        if (node.type === "Atrule") {
          const name = cssTree.keyword(node.name).basename;
          switch (name) {
            case "keyframes":
              addRuleToMap(collected, item, list, true);
              return;
            case "media":
              if (options.forceMediaMerge) {
                addRuleToMap(collected, item, list, false);
                return;
              }
              break;
          }
          if (topInjectPoint === null && name !== "charset" && name !== "import") {
            topInjectPoint = item;
          }
        } else {
          if (topInjectPoint === null) {
            topInjectPoint = item;
          }
        }
      });
      for (const atrule in collected) {
        for (const id in collected[atrule]) {
          ast.children.insertList(
            collected[atrule][id],
            atrule === "media" ? null : topInjectPoint
          );
        }
      }
    }
    function isMediaRule(node) {
      return node.type === "Atrule" && node.name === "media";
    }
    function processAtrule(node, item, list) {
      if (!isMediaRule(node)) {
        return;
      }
      const prev = item.prev && item.prev.data;
      if (!prev || !isMediaRule(prev)) {
        return;
      }
      if (node.prelude && prev.prelude && node.prelude.id === prev.prelude.id) {
        prev.block.children.appendList(node.block.children);
        list.remove(item);
      }
    }
    function rejoinAtrule(ast, options) {
      relocateAtrules(ast, options);
      cssTree.walk(ast, {
        visit: "Atrule",
        reverse: true,
        enter: processAtrule
      });
    }
    module.exports = rejoinAtrule;
  }
});

// node_modules/csso/cjs/restructure/utils.cjs
var require_utils4 = __commonJS({
  "node_modules/csso/cjs/restructure/utils.cjs"(exports) {
    "use strict";
    var { hasOwnProperty: hasOwnProperty2 } = Object.prototype;
    function isEqualSelectors(a, b) {
      let cursor1 = a.head;
      let cursor2 = b.head;
      while (cursor1 !== null && cursor2 !== null && cursor1.data.id === cursor2.data.id) {
        cursor1 = cursor1.next;
        cursor2 = cursor2.next;
      }
      return cursor1 === null && cursor2 === null;
    }
    function isEqualDeclarations(a, b) {
      let cursor1 = a.head;
      let cursor2 = b.head;
      while (cursor1 !== null && cursor2 !== null && cursor1.data.id === cursor2.data.id) {
        cursor1 = cursor1.next;
        cursor2 = cursor2.next;
      }
      return cursor1 === null && cursor2 === null;
    }
    function compareDeclarations(declarations1, declarations2) {
      const result = {
        eq: [],
        ne1: [],
        ne2: [],
        ne2overrided: []
      };
      const fingerprints = /* @__PURE__ */ Object.create(null);
      const declarations2hash = /* @__PURE__ */ Object.create(null);
      for (let cursor = declarations2.head; cursor; cursor = cursor.next) {
        declarations2hash[cursor.data.id] = true;
      }
      for (let cursor = declarations1.head; cursor; cursor = cursor.next) {
        const data = cursor.data;
        if (data.fingerprint) {
          fingerprints[data.fingerprint] = data.important;
        }
        if (declarations2hash[data.id]) {
          declarations2hash[data.id] = false;
          result.eq.push(data);
        } else {
          result.ne1.push(data);
        }
      }
      for (let cursor = declarations2.head; cursor; cursor = cursor.next) {
        const data = cursor.data;
        if (declarations2hash[data.id]) {
          if (!hasOwnProperty2.call(fingerprints, data.fingerprint) || !fingerprints[data.fingerprint] && data.important) {
            result.ne2.push(data);
          }
          result.ne2overrided.push(data);
        }
      }
      return result;
    }
    function addSelectors(dest, source) {
      source.forEach((sourceData) => {
        const newStr = sourceData.id;
        let cursor = dest.head;
        while (cursor) {
          const nextStr = cursor.data.id;
          if (nextStr === newStr) {
            return;
          }
          if (nextStr > newStr) {
            break;
          }
          cursor = cursor.next;
        }
        dest.insert(dest.createItem(sourceData), cursor);
      });
      return dest;
    }
    function hasSimilarSelectors(selectors1, selectors2) {
      let cursor1 = selectors1.head;
      while (cursor1 !== null) {
        let cursor2 = selectors2.head;
        while (cursor2 !== null) {
          if (cursor1.data.compareMarker === cursor2.data.compareMarker) {
            return true;
          }
          cursor2 = cursor2.next;
        }
        cursor1 = cursor1.next;
      }
      return false;
    }
    function unsafeToSkipNode(node) {
      switch (node.type) {
        case "Rule":
          return hasSimilarSelectors(node.prelude.children, this);
        case "Atrule":
          if (node.block) {
            return node.block.children.some(unsafeToSkipNode, this);
          }
          break;
        case "Declaration":
          return false;
      }
      return true;
    }
    exports.addSelectors = addSelectors;
    exports.compareDeclarations = compareDeclarations;
    exports.hasSimilarSelectors = hasSimilarSelectors;
    exports.isEqualDeclarations = isEqualDeclarations;
    exports.isEqualSelectors = isEqualSelectors;
    exports.unsafeToSkipNode = unsafeToSkipNode;
  }
});

// node_modules/csso/cjs/restructure/2-initialMergeRuleset.cjs
var require_initialMergeRuleset = __commonJS({
  "node_modules/csso/cjs/restructure/2-initialMergeRuleset.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var utils = require_utils4();
    function processRule(node, item, list) {
      const selectors = node.prelude.children;
      const declarations = node.block.children;
      list.prevUntil(item.prev, function(prev) {
        if (prev.type !== "Rule") {
          return utils.unsafeToSkipNode.call(selectors, prev);
        }
        const prevSelectors = prev.prelude.children;
        const prevDeclarations = prev.block.children;
        if (node.pseudoSignature === prev.pseudoSignature) {
          if (utils.isEqualSelectors(prevSelectors, selectors)) {
            prevDeclarations.appendList(declarations);
            list.remove(item);
            return true;
          }
          if (utils.isEqualDeclarations(declarations, prevDeclarations)) {
            utils.addSelectors(prevSelectors, selectors);
            list.remove(item);
            return true;
          }
        }
        return utils.hasSimilarSelectors(selectors, prevSelectors);
      });
    }
    function initialMergeRule(ast) {
      cssTree.walk(ast, {
        visit: "Rule",
        enter: processRule
      });
    }
    module.exports = initialMergeRule;
  }
});

// node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs
var require_disjoinRuleset = __commonJS({
  "node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    function processRule(node, item, list) {
      const selectors = node.prelude.children;
      while (selectors.head !== selectors.tail) {
        const newSelectors = new cssTree.List();
        newSelectors.insert(selectors.remove(selectors.head));
        list.insert(list.createItem({
          type: "Rule",
          loc: node.loc,
          prelude: {
            type: "SelectorList",
            loc: node.prelude.loc,
            children: newSelectors
          },
          block: {
            type: "Block",
            loc: node.block.loc,
            children: node.block.children.copy()
          },
          pseudoSignature: node.pseudoSignature
        }), item);
      }
    }
    function disjoinRule(ast) {
      cssTree.walk(ast, {
        visit: "Rule",
        reverse: true,
        enter: processRule
      });
    }
    module.exports = disjoinRule;
  }
});

// node_modules/csso/cjs/restructure/4-restructShorthand.cjs
var require_restructShorthand = __commonJS({
  "node_modules/csso/cjs/restructure/4-restructShorthand.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var REPLACE = 1;
    var REMOVE = 2;
    var TOP = 0;
    var RIGHT = 1;
    var BOTTOM = 2;
    var LEFT = 3;
    var SIDES = ["top", "right", "bottom", "left"];
    var SIDE = {
      "margin-top": "top",
      "margin-right": "right",
      "margin-bottom": "bottom",
      "margin-left": "left",
      "padding-top": "top",
      "padding-right": "right",
      "padding-bottom": "bottom",
      "padding-left": "left",
      "border-top-color": "top",
      "border-right-color": "right",
      "border-bottom-color": "bottom",
      "border-left-color": "left",
      "border-top-width": "top",
      "border-right-width": "right",
      "border-bottom-width": "bottom",
      "border-left-width": "left",
      "border-top-style": "top",
      "border-right-style": "right",
      "border-bottom-style": "bottom",
      "border-left-style": "left"
    };
    var MAIN_PROPERTY = {
      "margin": "margin",
      "margin-top": "margin",
      "margin-right": "margin",
      "margin-bottom": "margin",
      "margin-left": "margin",
      "padding": "padding",
      "padding-top": "padding",
      "padding-right": "padding",
      "padding-bottom": "padding",
      "padding-left": "padding",
      "border-color": "border-color",
      "border-top-color": "border-color",
      "border-right-color": "border-color",
      "border-bottom-color": "border-color",
      "border-left-color": "border-color",
      "border-width": "border-width",
      "border-top-width": "border-width",
      "border-right-width": "border-width",
      "border-bottom-width": "border-width",
      "border-left-width": "border-width",
      "border-style": "border-style",
      "border-top-style": "border-style",
      "border-right-style": "border-style",
      "border-bottom-style": "border-style",
      "border-left-style": "border-style"
    };
    var TRBL = class {
      constructor(name) {
        this.name = name;
        this.loc = null;
        this.iehack = void 0;
        this.sides = {
          "top": null,
          "right": null,
          "bottom": null,
          "left": null
        };
      }
      getValueSequence(declaration, count) {
        const values = [];
        let iehack = "";
        const hasBadValues = declaration.value.type !== "Value" || declaration.value.children.some(function(child) {
          let special = false;
          switch (child.type) {
            case "Identifier":
              switch (child.name) {
                case "\\0":
                case "\\9":
                  iehack = child.name;
                  return;
                case "inherit":
                case "initial":
                case "unset":
                case "revert":
                  special = child.name;
                  break;
              }
              break;
            case "Dimension":
              switch (child.unit) {
                // is not supported until IE11
                case "rem":
                // v* units is too buggy across browsers and better
                // don't merge values with those units
                case "vw":
                case "vh":
                case "vmin":
                case "vmax":
                case "vm":
                  special = child.unit;
                  break;
              }
              break;
            case "Hash":
            // color
            case "Number":
            case "Percentage":
              break;
            case "Function":
              if (child.name === "var") {
                return true;
              }
              special = child.name;
              break;
            default:
              return true;
          }
          values.push({
            node: child,
            special,
            important: declaration.important
          });
        });
        if (hasBadValues || values.length > count) {
          return false;
        }
        if (typeof this.iehack === "string" && this.iehack !== iehack) {
          return false;
        }
        this.iehack = iehack;
        return values;
      }
      canOverride(side, value) {
        const currentValue = this.sides[side];
        return !currentValue || value.important && !currentValue.important;
      }
      add(name, declaration) {
        function attemptToAdd() {
          const sides = this.sides;
          const side = SIDE[name];
          if (side) {
            if (side in sides === false) {
              return false;
            }
            const values = this.getValueSequence(declaration, 1);
            if (!values || !values.length) {
              return false;
            }
            for (const key in sides) {
              if (sides[key] !== null && sides[key].special !== values[0].special) {
                return false;
              }
            }
            if (!this.canOverride(side, values[0])) {
              return true;
            }
            sides[side] = values[0];
            return true;
          } else if (name === this.name) {
            const values = this.getValueSequence(declaration, 4);
            if (!values || !values.length) {
              return false;
            }
            switch (values.length) {
              case 1:
                values[RIGHT] = values[TOP];
                values[BOTTOM] = values[TOP];
                values[LEFT] = values[TOP];
                break;
              case 2:
                values[BOTTOM] = values[TOP];
                values[LEFT] = values[RIGHT];
                break;
              case 3:
                values[LEFT] = values[RIGHT];
                break;
            }
            for (let i = 0; i < 4; i++) {
              for (const key in sides) {
                if (sides[key] !== null && sides[key].special !== values[i].special) {
                  return false;
                }
              }
            }
            for (let i = 0; i < 4; i++) {
              if (this.canOverride(SIDES[i], values[i])) {
                sides[SIDES[i]] = values[i];
              }
            }
            return true;
          }
        }
        if (!attemptToAdd.call(this)) {
          return false;
        }
        if (!this.loc) {
          this.loc = declaration.loc;
        }
        return true;
      }
      isOkToMinimize() {
        const top = this.sides.top;
        const right = this.sides.right;
        const bottom = this.sides.bottom;
        const left = this.sides.left;
        if (top && right && bottom && left) {
          const important = top.important + right.important + bottom.important + left.important;
          return important === 0 || important === 4;
        }
        return false;
      }
      getValue() {
        const result = new cssTree.List();
        const sides = this.sides;
        const values = [
          sides.top,
          sides.right,
          sides.bottom,
          sides.left
        ];
        const stringValues = [
          cssTree.generate(sides.top.node),
          cssTree.generate(sides.right.node),
          cssTree.generate(sides.bottom.node),
          cssTree.generate(sides.left.node)
        ];
        if (stringValues[LEFT] === stringValues[RIGHT]) {
          values.pop();
          if (stringValues[BOTTOM] === stringValues[TOP]) {
            values.pop();
            if (stringValues[RIGHT] === stringValues[TOP]) {
              values.pop();
            }
          }
        }
        for (let i = 0; i < values.length; i++) {
          result.appendData(values[i].node);
        }
        if (this.iehack) {
          result.appendData({
            type: "Identifier",
            loc: null,
            name: this.iehack
          });
        }
        return {
          type: "Value",
          loc: null,
          children: result
        };
      }
      getDeclaration() {
        return {
          type: "Declaration",
          loc: this.loc,
          important: this.sides.top.important,
          property: this.name,
          value: this.getValue()
        };
      }
    };
    function processRule(rule, shorts, shortDeclarations, lastShortSelector) {
      const declarations = rule.block.children;
      const selector = rule.prelude.children.first.id;
      rule.block.children.forEachRight(function(declaration, item) {
        const property = declaration.property;
        if (!MAIN_PROPERTY.hasOwnProperty(property)) {
          return;
        }
        const key = MAIN_PROPERTY[property];
        let shorthand;
        let operation;
        if (!lastShortSelector || selector === lastShortSelector) {
          if (key in shorts) {
            operation = REMOVE;
            shorthand = shorts[key];
          }
        }
        if (!shorthand || !shorthand.add(property, declaration)) {
          operation = REPLACE;
          shorthand = new TRBL(key);
          if (!shorthand.add(property, declaration)) {
            lastShortSelector = null;
            return;
          }
        }
        shorts[key] = shorthand;
        shortDeclarations.push({
          operation,
          block: declarations,
          item,
          shorthand
        });
        lastShortSelector = selector;
      });
      return lastShortSelector;
    }
    function processShorthands(shortDeclarations, markDeclaration) {
      shortDeclarations.forEach(function(item) {
        const shorthand = item.shorthand;
        if (!shorthand.isOkToMinimize()) {
          return;
        }
        if (item.operation === REPLACE) {
          item.item.data = markDeclaration(shorthand.getDeclaration());
        } else {
          item.block.remove(item.item);
        }
      });
    }
    function restructBlock(ast, indexer) {
      const stylesheetMap = {};
      const shortDeclarations = [];
      cssTree.walk(ast, {
        visit: "Rule",
        reverse: true,
        enter(node) {
          const stylesheet = this.block || this.stylesheet;
          const ruleId = (node.pseudoSignature || "") + "|" + node.prelude.children.first.id;
          let ruleMap;
          let shorts;
          if (!stylesheetMap.hasOwnProperty(stylesheet.id)) {
            ruleMap = {
              lastShortSelector: null
            };
            stylesheetMap[stylesheet.id] = ruleMap;
          } else {
            ruleMap = stylesheetMap[stylesheet.id];
          }
          if (ruleMap.hasOwnProperty(ruleId)) {
            shorts = ruleMap[ruleId];
          } else {
            shorts = {};
            ruleMap[ruleId] = shorts;
          }
          ruleMap.lastShortSelector = processRule.call(this, node, shorts, shortDeclarations, ruleMap.lastShortSelector);
        }
      });
      processShorthands(shortDeclarations, indexer.declaration);
    }
    module.exports = restructBlock;
  }
});

// node_modules/csso/cjs/restructure/6-restructBlock.cjs
var require_restructBlock = __commonJS({
  "node_modules/csso/cjs/restructure/6-restructBlock.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var fingerprintId = 1;
    var dontRestructure = /* @__PURE__ */ new Set([
      "src"
      // https://github.com/afelix/csso/issues/50
    ]);
    var DONT_MIX_VALUE = {
      // https://developer.mozilla.org/en-US/docs/Web/CSS/display#Browser_compatibility
      "display": /table|ruby|flex|-(flex)?box$|grid|contents|run-in/i,
      // https://developer.mozilla.org/en/docs/Web/CSS/text-align
      "text-align": /^(start|end|match-parent|justify-all)$/i
    };
    var SAFE_VALUES = {
      cursor: [
        "auto",
        "crosshair",
        "default",
        "move",
        "text",
        "wait",
        "help",
        "n-resize",
        "e-resize",
        "s-resize",
        "w-resize",
        "ne-resize",
        "nw-resize",
        "se-resize",
        "sw-resize",
        "pointer",
        "progress",
        "not-allowed",
        "no-drop",
        "vertical-text",
        "all-scroll",
        "col-resize",
        "row-resize"
      ],
      overflow: [
        "hidden",
        "visible",
        "scroll",
        "auto"
      ],
      position: [
        "static",
        "relative",
        "absolute",
        "fixed"
      ]
    };
    var NEEDLESS_TABLE = {
      "border-width": ["border"],
      "border-style": ["border"],
      "border-color": ["border"],
      "border-top": ["border"],
      "border-right": ["border"],
      "border-bottom": ["border"],
      "border-left": ["border"],
      "border-top-width": ["border-top", "border-width", "border"],
      "border-right-width": ["border-right", "border-width", "border"],
      "border-bottom-width": ["border-bottom", "border-width", "border"],
      "border-left-width": ["border-left", "border-width", "border"],
      "border-top-style": ["border-top", "border-style", "border"],
      "border-right-style": ["border-right", "border-style", "border"],
      "border-bottom-style": ["border-bottom", "border-style", "border"],
      "border-left-style": ["border-left", "border-style", "border"],
      "border-top-color": ["border-top", "border-color", "border"],
      "border-right-color": ["border-right", "border-color", "border"],
      "border-bottom-color": ["border-bottom", "border-color", "border"],
      "border-left-color": ["border-left", "border-color", "border"],
      "margin-top": ["margin"],
      "margin-right": ["margin"],
      "margin-bottom": ["margin"],
      "margin-left": ["margin"],
      "padding-top": ["padding"],
      "padding-right": ["padding"],
      "padding-bottom": ["padding"],
      "padding-left": ["padding"],
      "font-style": ["font"],
      "font-variant": ["font"],
      "font-weight": ["font"],
      "font-size": ["font"],
      "font-family": ["font"],
      "list-style-type": ["list-style"],
      "list-style-position": ["list-style"],
      "list-style-image": ["list-style"]
    };
    function getPropertyFingerprint(propertyName, declaration, fingerprints) {
      const realName = cssTree.property(propertyName).basename;
      if (realName === "background") {
        return propertyName + ":" + cssTree.generate(declaration.value);
      }
      const declarationId = declaration.id;
      let fingerprint = fingerprints[declarationId];
      if (!fingerprint) {
        switch (declaration.value.type) {
          case "Value":
            const special = {};
            let vendorId = "";
            let iehack = "";
            let raw = false;
            declaration.value.children.forEach(function walk(node) {
              switch (node.type) {
                case "Value":
                case "Brackets":
                case "Parentheses":
                  node.children.forEach(walk);
                  break;
                case "Raw":
                  raw = true;
                  break;
                case "Identifier": {
                  const { name } = node;
                  if (!vendorId) {
                    vendorId = cssTree.keyword(name).vendor;
                  }
                  if (/\\[09]/.test(name)) {
                    iehack = RegExp.lastMatch;
                  }
                  if (SAFE_VALUES.hasOwnProperty(realName)) {
                    if (SAFE_VALUES[realName].indexOf(name) === -1) {
                      special[name] = true;
                    }
                  } else if (DONT_MIX_VALUE.hasOwnProperty(realName)) {
                    if (DONT_MIX_VALUE[realName].test(name)) {
                      special[name] = true;
                    }
                  }
                  break;
                }
                case "Function": {
                  let { name } = node;
                  if (!vendorId) {
                    vendorId = cssTree.keyword(name).vendor;
                  }
                  if (name === "rect") {
                    const hasComma = node.children.some(
                      (node2) => node2.type === "Operator" && node2.value === ","
                    );
                    if (!hasComma) {
                      name = "rect-backward";
                    }
                  }
                  special[name + "()"] = true;
                  node.children.forEach(walk);
                  break;
                }
                case "Dimension": {
                  const { unit } = node;
                  if (/\\[09]/.test(unit)) {
                    iehack = RegExp.lastMatch;
                  }
                  switch (unit) {
                    // is not supported until IE11
                    case "rem":
                    // v* units is too buggy across browsers and better
                    // don't merge values with those units
                    case "vw":
                    case "vh":
                    case "vmin":
                    case "vmax":
                    case "vm":
                      special[unit] = true;
                      break;
                  }
                  break;
                }
              }
            });
            fingerprint = raw ? "!" + fingerprintId++ : "!" + Object.keys(special).sort() + "|" + iehack + vendorId;
            break;
          case "Raw":
            fingerprint = "!" + declaration.value.value;
            break;
          default:
            fingerprint = cssTree.generate(declaration.value);
        }
        fingerprints[declarationId] = fingerprint;
      }
      return propertyName + fingerprint;
    }
    function needless(props, declaration, fingerprints) {
      const property = cssTree.property(declaration.property);
      if (NEEDLESS_TABLE.hasOwnProperty(property.basename)) {
        const table = NEEDLESS_TABLE[property.basename];
        for (const entry of table) {
          const ppre = getPropertyFingerprint(property.prefix + entry, declaration, fingerprints);
          const prev = props.hasOwnProperty(ppre) ? props[ppre] : null;
          if (prev && (!declaration.important || prev.item.data.important)) {
            return prev;
          }
        }
      }
    }
    function processRule(rule, item, list, props, fingerprints) {
      const declarations = rule.block.children;
      declarations.forEachRight(function(declaration, declarationItem) {
        const { property } = declaration;
        const fingerprint = getPropertyFingerprint(property, declaration, fingerprints);
        const prev = props[fingerprint];
        if (prev && !dontRestructure.has(property)) {
          if (declaration.important && !prev.item.data.important) {
            props[fingerprint] = {
              block: declarations,
              item: declarationItem
            };
            prev.block.remove(prev.item);
          } else {
            declarations.remove(declarationItem);
          }
        } else {
          const prev2 = needless(props, declaration, fingerprints);
          if (prev2) {
            declarations.remove(declarationItem);
          } else {
            declaration.fingerprint = fingerprint;
            props[fingerprint] = {
              block: declarations,
              item: declarationItem
            };
          }
        }
      });
      if (declarations.isEmpty) {
        list.remove(item);
      }
    }
    function restructBlock(ast) {
      const stylesheetMap = {};
      const fingerprints = /* @__PURE__ */ Object.create(null);
      cssTree.walk(ast, {
        visit: "Rule",
        reverse: true,
        enter(node, item, list) {
          const stylesheet = this.block || this.stylesheet;
          const ruleId = (node.pseudoSignature || "") + "|" + node.prelude.children.first.id;
          let ruleMap;
          let props;
          if (!stylesheetMap.hasOwnProperty(stylesheet.id)) {
            ruleMap = {};
            stylesheetMap[stylesheet.id] = ruleMap;
          } else {
            ruleMap = stylesheetMap[stylesheet.id];
          }
          if (ruleMap.hasOwnProperty(ruleId)) {
            props = ruleMap[ruleId];
          } else {
            props = {};
            ruleMap[ruleId] = props;
          }
          processRule.call(this, node, item, list, props, fingerprints);
        }
      });
    }
    module.exports = restructBlock;
  }
});

// node_modules/csso/cjs/restructure/7-mergeRuleset.cjs
var require_mergeRuleset = __commonJS({
  "node_modules/csso/cjs/restructure/7-mergeRuleset.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var utils = require_utils4();
    function processRule(node, item, list) {
      const selectors = node.prelude.children;
      const declarations = node.block.children;
      const nodeCompareMarker = selectors.first.compareMarker;
      const skippedCompareMarkers = {};
      list.nextUntil(item.next, function(next, nextItem) {
        if (next.type !== "Rule") {
          return utils.unsafeToSkipNode.call(selectors, next);
        }
        if (node.pseudoSignature !== next.pseudoSignature) {
          return true;
        }
        const nextFirstSelector = next.prelude.children.head;
        const nextDeclarations = next.block.children;
        const nextCompareMarker = nextFirstSelector.data.compareMarker;
        if (nextCompareMarker in skippedCompareMarkers) {
          return true;
        }
        if (selectors.head === selectors.tail) {
          if (selectors.first.id === nextFirstSelector.data.id) {
            declarations.appendList(nextDeclarations);
            list.remove(nextItem);
            return;
          }
        }
        if (utils.isEqualDeclarations(declarations, nextDeclarations)) {
          const nextStr = nextFirstSelector.data.id;
          selectors.some((data, item2) => {
            const curStr = data.id;
            if (nextStr < curStr) {
              selectors.insert(nextFirstSelector, item2);
              return true;
            }
            if (!item2.next) {
              selectors.insert(nextFirstSelector);
              return true;
            }
          });
          list.remove(nextItem);
          return;
        }
        if (nextCompareMarker === nodeCompareMarker) {
          return true;
        }
        skippedCompareMarkers[nextCompareMarker] = true;
      });
    }
    function mergeRule(ast) {
      cssTree.walk(ast, {
        visit: "Rule",
        enter: processRule
      });
    }
    module.exports = mergeRule;
  }
});

// node_modules/csso/cjs/restructure/8-restructRuleset.cjs
var require_restructRuleset = __commonJS({
  "node_modules/csso/cjs/restructure/8-restructRuleset.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var utils = require_utils4();
    function calcSelectorLength(list) {
      return list.reduce((res, data) => res + data.id.length + 1, 0) - 1;
    }
    function calcDeclarationsLength(tokens) {
      let length = 0;
      for (const token of tokens) {
        length += token.length;
      }
      return length + // declarations
      tokens.length - 1;
    }
    function processRule(node, item, list) {
      const avoidRulesMerge = this.block !== null ? this.block.avoidRulesMerge : false;
      const selectors = node.prelude.children;
      const block = node.block;
      const disallowDownMarkers = /* @__PURE__ */ Object.create(null);
      let allowMergeUp = true;
      let allowMergeDown = true;
      list.prevUntil(item.prev, function(prev, prevItem) {
        const prevBlock = prev.block;
        const prevType = prev.type;
        if (prevType !== "Rule") {
          const unsafe = utils.unsafeToSkipNode.call(selectors, prev);
          if (!unsafe && prevType === "Atrule" && prevBlock) {
            cssTree.walk(prevBlock, {
              visit: "Rule",
              enter(node2) {
                node2.prelude.children.forEach((data) => {
                  disallowDownMarkers[data.compareMarker] = true;
                });
              }
            });
          }
          return unsafe;
        }
        if (node.pseudoSignature !== prev.pseudoSignature) {
          return true;
        }
        const prevSelectors = prev.prelude.children;
        allowMergeDown = !prevSelectors.some(
          (selector) => selector.compareMarker in disallowDownMarkers
        );
        if (!allowMergeDown && !allowMergeUp) {
          return true;
        }
        if (allowMergeUp && utils.isEqualSelectors(prevSelectors, selectors)) {
          prevBlock.children.appendList(block.children);
          list.remove(item);
          return true;
        }
        const diff = utils.compareDeclarations(block.children, prevBlock.children);
        if (diff.eq.length) {
          if (!diff.ne1.length && !diff.ne2.length) {
            if (allowMergeDown) {
              utils.addSelectors(selectors, prevSelectors);
              list.remove(prevItem);
            }
            return true;
          } else if (!avoidRulesMerge) {
            if (diff.ne1.length && !diff.ne2.length) {
              const selectorLength = calcSelectorLength(selectors);
              const blockLength = calcDeclarationsLength(diff.eq);
              if (allowMergeUp && selectorLength < blockLength) {
                utils.addSelectors(prevSelectors, selectors);
                block.children.fromArray(diff.ne1);
              }
            } else if (!diff.ne1.length && diff.ne2.length) {
              const selectorLength = calcSelectorLength(prevSelectors);
              const blockLength = calcDeclarationsLength(diff.eq);
              if (allowMergeDown && selectorLength < blockLength) {
                utils.addSelectors(selectors, prevSelectors);
                prevBlock.children.fromArray(diff.ne2);
              }
            } else {
              const newSelector = {
                type: "SelectorList",
                loc: null,
                children: utils.addSelectors(prevSelectors.copy(), selectors)
              };
              const newBlockLength = calcSelectorLength(newSelector.children) + 2;
              const blockLength = calcDeclarationsLength(diff.eq);
              if (blockLength >= newBlockLength) {
                const newItem = list.createItem({
                  type: "Rule",
                  loc: null,
                  prelude: newSelector,
                  block: {
                    type: "Block",
                    loc: null,
                    children: new cssTree.List().fromArray(diff.eq)
                  },
                  pseudoSignature: node.pseudoSignature
                });
                block.children.fromArray(diff.ne1);
                prevBlock.children.fromArray(diff.ne2overrided);
                if (allowMergeUp) {
                  list.insert(newItem, prevItem);
                } else {
                  list.insert(newItem, item);
                }
                return true;
              }
            }
          }
        }
        if (allowMergeUp) {
          allowMergeUp = !prevSelectors.some(
            (prevSelector) => selectors.some(
              (selector) => selector.compareMarker === prevSelector.compareMarker
            )
          );
        }
        prevSelectors.forEach((data) => {
          disallowDownMarkers[data.compareMarker] = true;
        });
      });
    }
    function restructRule(ast) {
      cssTree.walk(ast, {
        visit: "Rule",
        reverse: true,
        enter: processRule
      });
    }
    module.exports = restructRule;
  }
});

// node_modules/csso/cjs/restructure/index.cjs
var require_restructure = __commonJS({
  "node_modules/csso/cjs/restructure/index.cjs"(exports, module) {
    "use strict";
    var index = require_prepare();
    var _1MergeAtrule = require_mergeAtrule();
    var _2InitialMergeRuleset = require_initialMergeRuleset();
    var _3DisjoinRuleset = require_disjoinRuleset();
    var _4RestructShorthand = require_restructShorthand();
    var _6RestructBlock = require_restructBlock();
    var _7MergeRuleset = require_mergeRuleset();
    var _8RestructRuleset = require_restructRuleset();
    function restructure(ast, options) {
      const indexer = index(ast, options);
      options.logger("prepare", ast);
      _1MergeAtrule(ast, options);
      options.logger("mergeAtrule", ast);
      _2InitialMergeRuleset(ast);
      options.logger("initialMergeRuleset", ast);
      _3DisjoinRuleset(ast);
      options.logger("disjoinRuleset", ast);
      _4RestructShorthand(ast, indexer);
      options.logger("restructShorthand", ast);
      _6RestructBlock(ast);
      options.logger("restructBlock", ast);
      _7MergeRuleset(ast);
      options.logger("mergeRuleset", ast);
      _8RestructRuleset(ast);
      options.logger("restructRuleset", ast);
    }
    module.exports = restructure;
  }
});

// node_modules/csso/cjs/compress.cjs
var require_compress = __commonJS({
  "node_modules/csso/cjs/compress.cjs"(exports, module) {
    "use strict";
    var cssTree = require_cjs2();
    var usage = require_usage();
    var index = require_clean();
    var index$1 = require_replace();
    var index$2 = require_restructure();
    function readChunk(input, specialComments) {
      const children = new cssTree.List();
      let nonSpaceTokenInBuffer = false;
      let protectedComment;
      input.nextUntil(input.head, (node, item, list) => {
        if (node.type === "Comment") {
          if (!specialComments || node.value.charAt(0) !== "!") {
            list.remove(item);
            return;
          }
          if (nonSpaceTokenInBuffer || protectedComment) {
            return true;
          }
          list.remove(item);
          protectedComment = node;
          return;
        }
        if (node.type !== "WhiteSpace") {
          nonSpaceTokenInBuffer = true;
        }
        children.insert(list.remove(item));
      });
      return {
        comment: protectedComment,
        stylesheet: {
          type: "StyleSheet",
          loc: null,
          children
        }
      };
    }
    function compressChunk(ast, firstAtrulesAllowed, num, options) {
      options.logger(`Compress block #${num}`, null, true);
      let seed = 1;
      if (ast.type === "StyleSheet") {
        ast.firstAtrulesAllowed = firstAtrulesAllowed;
        ast.id = seed++;
      }
      cssTree.walk(ast, {
        visit: "Atrule",
        enter(node) {
          if (node.block !== null) {
            node.block.id = seed++;
          }
        }
      });
      options.logger("init", ast);
      index(ast, options);
      options.logger("clean", ast);
      index$1(ast);
      options.logger("replace", ast);
      if (options.restructuring) {
        index$2(ast, options);
      }
      return ast;
    }
    function getCommentsOption(options) {
      let comments = "comments" in options ? options.comments : "exclamation";
      if (typeof comments === "boolean") {
        comments = comments ? "exclamation" : false;
      } else if (comments !== "exclamation" && comments !== "first-exclamation") {
        comments = false;
      }
      return comments;
    }
    function getRestructureOption(options) {
      if ("restructure" in options) {
        return options.restructure;
      }
      return "restructuring" in options ? options.restructuring : true;
    }
    function wrapBlock(block) {
      return new cssTree.List().appendData({
        type: "Rule",
        loc: null,
        prelude: {
          type: "SelectorList",
          loc: null,
          children: new cssTree.List().appendData({
            type: "Selector",
            loc: null,
            children: new cssTree.List().appendData({
              type: "TypeSelector",
              loc: null,
              name: "x"
            })
          })
        },
        block
      });
    }
    function compress(ast, options) {
      ast = ast || { type: "StyleSheet", loc: null, children: new cssTree.List() };
      options = options || {};
      const compressOptions = {
        logger: typeof options.logger === "function" ? options.logger : function() {
        },
        restructuring: getRestructureOption(options),
        forceMediaMerge: Boolean(options.forceMediaMerge),
        usage: options.usage ? usage.buildIndex(options.usage) : false
      };
      const output = new cssTree.List();
      let specialComments = getCommentsOption(options);
      let firstAtrulesAllowed = true;
      let input;
      let chunk;
      let chunkNum = 1;
      let chunkChildren;
      if (options.clone) {
        ast = cssTree.clone(ast);
      }
      if (ast.type === "StyleSheet") {
        input = ast.children;
        ast.children = output;
      } else {
        input = wrapBlock(ast);
      }
      do {
        chunk = readChunk(input, Boolean(specialComments));
        compressChunk(chunk.stylesheet, firstAtrulesAllowed, chunkNum++, compressOptions);
        chunkChildren = chunk.stylesheet.children;
        if (chunk.comment) {
          if (!output.isEmpty) {
            output.insert(cssTree.List.createItem({
              type: "Raw",
              value: "\n"
            }));
          }
          output.insert(cssTree.List.createItem(chunk.comment));
          if (!chunkChildren.isEmpty) {
            output.insert(cssTree.List.createItem({
              type: "Raw",
              value: "\n"
            }));
          }
        }
        if (firstAtrulesAllowed && !chunkChildren.isEmpty) {
          const lastRule = chunkChildren.last;
          if (lastRule.type !== "Atrule" || lastRule.name !== "import" && lastRule.name !== "charset") {
            firstAtrulesAllowed = false;
          }
        }
        if (specialComments !== "exclamation") {
          specialComments = false;
        }
        output.appendList(chunkChildren);
      } while (!input.isEmpty);
      return {
        ast
      };
    }
    module.exports = compress;
  }
});

// node_modules/csso/cjs/syntax.cjs
var require_syntax3 = __commonJS({
  "node_modules/csso/cjs/syntax.cjs"(exports) {
    "use strict";
    var cssTree = require_cjs2();
    var compress = require_compress();
    var specificity = require_specificity();
    function encodeString(value) {
      const stringApostrophe = cssTree.string.encode(value, true);
      const stringQuote = cssTree.string.encode(value);
      return stringApostrophe.length < stringQuote.length ? stringApostrophe : stringQuote;
    }
    var {
      lexer,
      tokenize,
      parse,
      generate,
      walk,
      find,
      findLast,
      findAll,
      fromPlainObject,
      toPlainObject
    } = cssTree.fork({
      node: {
        String: {
          generate(node) {
            this.token(cssTree.tokenTypes.String, encodeString(node.value));
          }
        },
        Url: {
          generate(node) {
            const encodedUrl = cssTree.url.encode(node.value);
            const string = encodeString(node.value);
            this.token(
              cssTree.tokenTypes.Url,
              encodedUrl.length <= string.length + 5 ? encodedUrl : "url(" + string + ")"
            );
          }
        }
      }
    });
    exports.compress = compress;
    exports.specificity = specificity;
    exports.find = find;
    exports.findAll = findAll;
    exports.findLast = findLast;
    exports.fromPlainObject = fromPlainObject;
    exports.generate = generate;
    exports.lexer = lexer;
    exports.parse = parse;
    exports.toPlainObject = toPlainObject;
    exports.tokenize = tokenize;
    exports.walk = walk;
  }
});

// node_modules/csso/cjs/utils.cjs
var require_utils5 = __commonJS({
  "node_modules/csso/cjs/utils.cjs"(exports) {
    "use strict";
    var processSelector = require_processSelector();
    var utils$1 = require_utils4();
    exports.processSelector = processSelector;
    exports.addSelectors = utils$1.addSelectors;
    exports.compareDeclarations = utils$1.compareDeclarations;
    exports.hasSimilarSelectors = utils$1.hasSimilarSelectors;
    exports.isEqualDeclarations = utils$1.isEqualDeclarations;
    exports.isEqualSelectors = utils$1.isEqualSelectors;
    exports.unsafeToSkipNode = utils$1.unsafeToSkipNode;
  }
});

// node_modules/csso/cjs/index.cjs
var require_cjs3 = __commonJS({
  "node_modules/csso/cjs/index.cjs"(exports) {
    "use strict";
    var version = require_version2();
    var syntax = require_syntax3();
    var utils = require_utils5();
    var { parse, generate, compress } = syntax;
    function debugOutput(name, options, startTime, data) {
      if (options.debug) {
        console.error(`## ${name} done in %d ms
`, Date.now() - startTime);
      }
      return data;
    }
    function createDefaultLogger(level) {
      let lastDebug;
      return function logger(title, ast) {
        let line = title;
        if (ast) {
          line = `[${((Date.now() - lastDebug) / 1e3).toFixed(3)}s] ${line}`;
        }
        if (level > 1 && ast) {
          let css = generate(ast);
          if (level === 2 && css.length > 256) {
            css = css.substr(0, 256) + "...";
          }
          line += `
  ${css}
`;
        }
        console.error(line);
        lastDebug = Date.now();
      };
    }
    function buildCompressOptions(options) {
      options = { ...options };
      if (typeof options.logger !== "function" && options.debug) {
        options.logger = createDefaultLogger(options.debug);
      }
      return options;
    }
    function runHandler(ast, options, handlers) {
      if (!Array.isArray(handlers)) {
        handlers = [handlers];
      }
      handlers.forEach((fn) => fn(ast, options));
    }
    function minify(context, source, options) {
      options = options || {};
      const filename = options.filename || "<unknown>";
      let result;
      const ast = debugOutput(
        "parsing",
        options,
        Date.now(),
        parse(source, {
          context,
          filename,
          positions: Boolean(options.sourceMap)
        })
      );
      if (options.beforeCompress) {
        debugOutput(
          "beforeCompress",
          options,
          Date.now(),
          runHandler(ast, options, options.beforeCompress)
        );
      }
      const compressResult = debugOutput(
        "compress",
        options,
        Date.now(),
        compress(ast, buildCompressOptions(options))
      );
      if (options.afterCompress) {
        debugOutput(
          "afterCompress",
          options,
          Date.now(),
          runHandler(compressResult, options, options.afterCompress)
        );
      }
      if (options.sourceMap) {
        result = debugOutput("generate(sourceMap: true)", options, Date.now(), (() => {
          const tmp = generate(compressResult.ast, { sourceMap: true });
          tmp.map._file = filename;
          tmp.map.setSourceContent(filename, source);
          return tmp;
        })());
      } else {
        result = debugOutput("generate", options, Date.now(), {
          css: generate(compressResult.ast),
          map: null
        });
      }
      return result;
    }
    function minifyStylesheet(source, options) {
      return minify("stylesheet", source, options);
    }
    function minifyBlock(source, options) {
      return minify("declarationList", source, options);
    }
    exports.version = version.version;
    exports.syntax = syntax;
    exports.utils = utils;
    exports.minify = minifyStylesheet;
    exports.minifyBlock = minifyBlock;
  }
});

// src/svgo/plugins/inlineStyles.js
var require_inlineStyles = __commonJS({
  "src/svgo/plugins/inlineStyles.js"(exports) {
    "use strict";
    var csstree = require_cjs();
    var {
      syntax: { specificity }
    } = require_cjs3();
    var {
      visitSkip,
      querySelectorAll,
      detachNodeFromParent
    } = require_xast();
    exports.name = "inlineStyles";
    exports.description = "inline styles (additional options)";
    var compareSpecificity = (a, b) => {
      for (var i = 0; i < 4; i += 1) {
        if (a[i] < b[i]) {
          return -1;
        } else if (a[i] > b[i]) {
          return 1;
        }
      }
      return 0;
    };
    var toAny = (value) => value;
    exports.fn = (root, params) => {
      const {
        onlyMatchedOnce = true,
        removeMatchedSelectors = true,
        useMqs = ["", "screen"],
        usePseudos = [""]
      } = params;
      const styles = [];
      let selectors = [];
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "foreignObject") {
              return visitSkip;
            }
            if (node.name !== "style" || node.children.length === 0) {
              return;
            }
            if (node.attributes.type != null && node.attributes.type !== "" && node.attributes.type !== "text/css") {
              return;
            }
            let cssText = "";
            for (const child of node.children) {
              if (child.type === "text" || child.type === "cdata") {
                cssText += child.value;
              }
            }
            let cssAst = null;
            try {
              cssAst = csstree.parse(cssText, {
                parseValue: false,
                parseCustomProperty: false
              });
            } catch {
              return;
            }
            if (cssAst.type === "StyleSheet") {
              styles.push({ node, parentNode, cssAst });
            }
            csstree.walk(cssAst, {
              visit: "Selector",
              enter(node2, item) {
                const atrule = this.atrule;
                const rule = this.rule;
                if (rule == null) {
                  return;
                }
                let mq = "";
                if (atrule != null) {
                  mq = atrule.name;
                  if (atrule.prelude != null) {
                    mq += ` ${csstree.generate(atrule.prelude)}`;
                  }
                }
                if (useMqs.includes(mq) === false) {
                  return;
                }
                const pseudos = [];
                if (node2.type === "Selector") {
                  node2.children.forEach((childNode, childItem, childList) => {
                    if (childNode.type === "PseudoClassSelector" || childNode.type === "PseudoElementSelector") {
                      pseudos.push({ item: childItem, list: childList });
                    }
                  });
                }
                const pseudoSelectors = csstree.generate({
                  type: "Selector",
                  children: new csstree.List().fromArray(
                    pseudos.map((pseudo) => pseudo.item.data)
                  )
                });
                if (usePseudos.includes(pseudoSelectors) === false) {
                  return;
                }
                for (const pseudo of pseudos) {
                  pseudo.list.remove(pseudo.item);
                }
                selectors.push({ node: node2, item, rule });
              }
            });
          }
        },
        root: {
          exit: () => {
            if (styles.length === 0) {
              return;
            }
            const sortedSelectors = [...selectors].sort((a, b) => {
              const aSpecificity = specificity(a.item.data);
              const bSpecificity = specificity(b.item.data);
              return compareSpecificity(aSpecificity, bSpecificity);
            }).reverse();
            for (const selector of sortedSelectors) {
              const selectorText = csstree.generate(selector.item.data);
              const matchedElements = [];
              try {
                for (const node of querySelectorAll(root, selectorText)) {
                  if (node.type === "element") {
                    matchedElements.push(node);
                  }
                }
              } catch (selectError) {
                continue;
              }
              if (matchedElements.length === 0) {
                continue;
              }
              if (onlyMatchedOnce && matchedElements.length > 1) {
                continue;
              }
              for (const selectedEl of matchedElements) {
                const styleDeclarationList = csstree.parse(
                  selectedEl.attributes.style == null ? "" : selectedEl.attributes.style,
                  {
                    context: "declarationList",
                    parseValue: false
                  }
                );
                if (styleDeclarationList.type !== "DeclarationList") {
                  continue;
                }
                const styleDeclarationItems = /* @__PURE__ */ new Map();
                csstree.walk(styleDeclarationList, {
                  visit: "Declaration",
                  enter(node, item) {
                    styleDeclarationItems.set(node.property, item);
                  }
                });
                csstree.walk(selector.rule, {
                  visit: "Declaration",
                  enter(ruleDeclaration) {
                    const matchedItem = styleDeclarationItems.get(
                      ruleDeclaration.property
                    );
                    const ruleDeclarationItem = styleDeclarationList.children.createItem(ruleDeclaration);
                    if (matchedItem == null) {
                      styleDeclarationList.children.append(ruleDeclarationItem);
                    } else if (matchedItem.data.important !== true && ruleDeclaration.important === true) {
                      styleDeclarationList.children.replace(
                        matchedItem,
                        ruleDeclarationItem
                      );
                      styleDeclarationItems.set(
                        ruleDeclaration.property,
                        ruleDeclarationItem
                      );
                    }
                  }
                });
                selectedEl.attributes.style = csstree.generate(styleDeclarationList);
              }
              if (removeMatchedSelectors && matchedElements.length !== 0 && selector.rule.prelude.type === "SelectorList") {
                selector.rule.prelude.children.remove(selector.item);
              }
              selector.matchedElements = matchedElements;
            }
            if (removeMatchedSelectors === false) {
              return;
            }
            for (const selector of sortedSelectors) {
              if (selector.matchedElements == null) {
                continue;
              }
              if (onlyMatchedOnce && selector.matchedElements.length > 1) {
                continue;
              }
              for (const selectedEl of selector.matchedElements) {
                const classList = new Set(
                  selectedEl.attributes.class == null ? null : selectedEl.attributes.class.split(" ")
                );
                const firstSubSelector = toAny(selector.node.children.first);
                if (firstSubSelector != null && firstSubSelector.type === "ClassSelector") {
                  classList.delete(firstSubSelector.name);
                }
                if (classList.size === 0) {
                  delete selectedEl.attributes.class;
                } else {
                  selectedEl.attributes.class = Array.from(classList).join(" ");
                }
                if (firstSubSelector != null && firstSubSelector.type === "IdSelector") {
                  if (selectedEl.attributes.id === firstSubSelector.name) {
                    delete selectedEl.attributes.id;
                  }
                }
              }
            }
            for (const style of styles) {
              csstree.walk(style.cssAst, {
                visit: "Rule",
                enter: function(node, item, list) {
                  if (node.type === "Rule" && node.prelude.type === "SelectorList" && // csstree v2 changed this type
                  toAny(node.prelude.children.isEmpty)) {
                    list.remove(item);
                  }
                }
              });
              if (toAny(style.cssAst.children.isEmpty)) {
                detachNodeFromParent(style.node, style.parentNode);
              } else {
                const firstChild = style.node.children[0];
                if (firstChild.type === "text" || firstChild.type === "cdata") {
                  firstChild.value = csstree.generate(style.cssAst);
                }
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/minifyStyles.js
var require_minifyStyles = __commonJS({
  "src/svgo/plugins/minifyStyles.js"(exports) {
    "use strict";
    var csso = require_cjs3();
    exports.name = "minifyStyles";
    exports.description = "minifies styles and removes unused styles based on usage data";
    exports.fn = (_root, { usage, ...params }) => {
      let enableTagsUsage = true;
      let enableIdsUsage = true;
      let enableClassesUsage = true;
      let forceUsageDeoptimized = false;
      if (typeof usage === "boolean") {
        enableTagsUsage = usage;
        enableIdsUsage = usage;
        enableClassesUsage = usage;
      } else if (usage) {
        enableTagsUsage = usage.tags == null ? true : usage.tags;
        enableIdsUsage = usage.ids == null ? true : usage.ids;
        enableClassesUsage = usage.classes == null ? true : usage.classes;
        forceUsageDeoptimized = usage.force == null ? false : usage.force;
      }
      const styleElements = [];
      const elementsWithStyleAttributes = [];
      let deoptimized = false;
      const tagsUsage = /* @__PURE__ */ new Set();
      const idsUsage = /* @__PURE__ */ new Set();
      const classesUsage = /* @__PURE__ */ new Set();
      return {
        element: {
          enter: (node) => {
            if (node.name === "script") {
              deoptimized = true;
            }
            for (const name of Object.keys(node.attributes)) {
              if (name.startsWith("on")) {
                deoptimized = true;
              }
            }
            tagsUsage.add(node.name);
            if (node.attributes.id != null) {
              idsUsage.add(node.attributes.id);
            }
            if (node.attributes.class != null) {
              for (const className of node.attributes.class.split(/\s+/)) {
                classesUsage.add(className);
              }
            }
            if (node.name === "style" && node.children.length !== 0) {
              styleElements.push(node);
            } else if (node.attributes.style != null) {
              elementsWithStyleAttributes.push(node);
            }
          }
        },
        root: {
          exit: () => {
            const cssoUsage = {};
            if (deoptimized === false || forceUsageDeoptimized === true) {
              if (enableTagsUsage && tagsUsage.size !== 0) {
                cssoUsage.tags = Array.from(tagsUsage);
              }
              if (enableIdsUsage && idsUsage.size !== 0) {
                cssoUsage.ids = Array.from(idsUsage);
              }
              if (enableClassesUsage && classesUsage.size !== 0) {
                cssoUsage.classes = Array.from(classesUsage);
              }
            }
            for (const node of styleElements) {
              if (node.children[0].type === "text" || node.children[0].type === "cdata") {
                const cssText = node.children[0].value;
                const minified = csso.minify(cssText, {
                  ...params,
                  usage: cssoUsage
                }).css;
                if (cssText.indexOf(">") >= 0 || cssText.indexOf("<") >= 0) {
                  node.children[0].type = "cdata";
                  node.children[0].value = minified;
                } else {
                  node.children[0].type = "text";
                  node.children[0].value = minified;
                }
              }
            }
            for (const node of elementsWithStyleAttributes) {
              const elemStyle = node.attributes.style;
              node.attributes.style = csso.minifyBlock(elemStyle, {
                ...params
              }).css;
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/cleanupIds.js
var require_cleanupIds = __commonJS({
  "src/svgo/plugins/cleanupIds.js"(exports) {
    "use strict";
    var { visitSkip } = require_xast();
    var { referencesProps } = require_collections();
    exports.name = "cleanupIds";
    exports.description = "removes unused IDs and minifies used";
    var regReferencesUrl = /\burl\((["'])?#(.+?)\1\)/;
    var regReferencesHref = /^#(.+?)$/;
    var regReferencesBegin = /(\D+)\./;
    var generateIdChars = [
      "a",
      "b",
      "c",
      "d",
      "e",
      "f",
      "g",
      "h",
      "i",
      "j",
      "k",
      "l",
      "m",
      "n",
      "o",
      "p",
      "q",
      "r",
      "s",
      "t",
      "u",
      "v",
      "w",
      "x",
      "y",
      "z",
      "A",
      "B",
      "C",
      "D",
      "E",
      "F",
      "G",
      "H",
      "I",
      "J",
      "K",
      "L",
      "M",
      "N",
      "O",
      "P",
      "Q",
      "R",
      "S",
      "T",
      "U",
      "V",
      "W",
      "X",
      "Y",
      "Z"
    ];
    var maxIdIndex = generateIdChars.length - 1;
    var hasStringPrefix = (string, prefixes) => {
      for (const prefix of prefixes) {
        if (string.startsWith(prefix)) {
          return true;
        }
      }
      return false;
    };
    var generateId = (currentId) => {
      if (currentId == null) {
        return [0];
      }
      currentId[currentId.length - 1] += 1;
      for (let i = currentId.length - 1; i > 0; i--) {
        if (currentId[i] > maxIdIndex) {
          currentId[i] = 0;
          if (currentId[i - 1] !== void 0) {
            currentId[i - 1]++;
          }
        }
      }
      if (currentId[0] > maxIdIndex) {
        currentId[0] = 0;
        currentId.unshift(0);
      }
      return currentId;
    };
    var getIdString = (arr) => {
      return arr.map((i) => generateIdChars[i]).join("");
    };
    exports.fn = (_root, params) => {
      const {
        remove = true,
        minify = true,
        preserve = [],
        preservePrefixes = [],
        force = false
      } = params;
      const preserveIds = new Set(
        Array.isArray(preserve) ? preserve : preserve ? [preserve] : []
      );
      const preserveIdPrefixes = Array.isArray(preservePrefixes) ? preservePrefixes : preservePrefixes ? [preservePrefixes] : [];
      const nodeById = /* @__PURE__ */ new Map();
      const referencesById = /* @__PURE__ */ new Map();
      let deoptimized = false;
      return {
        element: {
          enter: (node) => {
            if (force == false) {
              if ((node.name === "style" || node.name === "script") && node.children.length !== 0) {
                deoptimized = true;
                return;
              }
              if (node.name === "svg") {
                let hasDefsOnly = true;
                for (const child of node.children) {
                  if (child.type !== "element" || child.name !== "defs") {
                    hasDefsOnly = false;
                    break;
                  }
                }
                if (hasDefsOnly) {
                  return visitSkip;
                }
              }
            }
            for (const [name, value] of Object.entries(node.attributes)) {
              if (name === "id") {
                const id = value;
                if (nodeById.has(id)) {
                  delete node.attributes.id;
                } else {
                  nodeById.set(id, node);
                }
              } else {
                let id = null;
                if (referencesProps.includes(name)) {
                  const match = value.match(regReferencesUrl);
                  if (match != null) {
                    id = match[2];
                  }
                }
                if (name === "href" || name.endsWith(":href")) {
                  const match = value.match(regReferencesHref);
                  if (match != null) {
                    id = match[1];
                  }
                }
                if (name === "begin") {
                  const match = value.match(regReferencesBegin);
                  if (match != null) {
                    id = match[1];
                  }
                }
                if (id != null) {
                  let refs = referencesById.get(id);
                  if (refs == null) {
                    refs = [];
                    referencesById.set(id, refs);
                  }
                  refs.push({ element: node, name, value });
                }
              }
            }
          }
        },
        root: {
          exit: () => {
            if (deoptimized) {
              return;
            }
            const isIdPreserved = (id) => preserveIds.has(id) || hasStringPrefix(id, preserveIdPrefixes);
            let currentId = null;
            for (const [id, refs] of referencesById) {
              const node = nodeById.get(id);
              if (node != null) {
                if (minify && isIdPreserved(id) === false) {
                  let currentIdString = null;
                  do {
                    currentId = generateId(currentId);
                    currentIdString = getIdString(currentId);
                  } while (isIdPreserved(currentIdString));
                  node.attributes.id = currentIdString;
                  for (const { element, name, value } of refs) {
                    if (value.includes("#")) {
                      element.attributes[name] = value.replace(
                        `#${id}`,
                        `#${currentIdString}`
                      );
                    } else {
                      element.attributes[name] = value.replace(
                        `${id}.`,
                        `${currentIdString}.`
                      );
                    }
                  }
                }
                nodeById.delete(id);
              }
            }
            if (remove) {
              for (const [id, node] of nodeById) {
                if (isIdPreserved(id) === false) {
                  delete node.attributes.id;
                }
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeUselessDefs.js
var require_removeUselessDefs = __commonJS({
  "src/svgo/plugins/removeUselessDefs.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    var { elemsGroups } = require_collections();
    exports.name = "removeUselessDefs";
    exports.description = "removes elements in <defs> without id";
    exports.fn = () => {
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "defs") {
              const usefulNodes = [];
              collectUsefulNodes(node, usefulNodes);
              if (usefulNodes.length === 0) {
                detachNodeFromParent(node, parentNode);
              }
              for (const usefulNode of usefulNodes) {
                Object.defineProperty(usefulNode, "parentNode", {
                  writable: true,
                  value: node
                });
              }
              node.children = usefulNodes;
            } else if (elemsGroups.nonRendering.includes(node.name) && node.attributes.id == null) {
              detachNodeFromParent(node, parentNode);
            }
          }
        }
      };
    };
    var collectUsefulNodes = (node, usefulNodes) => {
      for (const child of node.children) {
        if (child.type === "element") {
          if (child.attributes.id != null || child.name === "style") {
            usefulNodes.push(child);
          } else {
            collectUsefulNodes(child, usefulNodes);
          }
        }
      }
    };
  }
});

// src/svgo/plugins/cleanupNumericValues.js
var require_cleanupNumericValues = __commonJS({
  "src/svgo/plugins/cleanupNumericValues.js"(exports) {
    "use strict";
    var { removeLeadingZero } = require_tools();
    exports.name = "cleanupNumericValues";
    exports.description = "rounds numeric values to the fixed precision, removes default \u2018px\u2019 units";
    var regNumericValues = /^([-+]?\d*\.?\d+([eE][-+]?\d+)?)(px|pt|pc|mm|cm|m|in|ft|em|ex|%)?$/;
    var absoluteLengths = {
      // relative to px
      cm: 96 / 2.54,
      mm: 96 / 25.4,
      in: 96,
      pt: 4 / 3,
      pc: 16,
      px: 1
    };
    exports.fn = (_root, params) => {
      const {
        floatPrecision = 3,
        leadingZero = true,
        defaultPx = true,
        convertToPx = true
      } = params;
      return {
        element: {
          enter: (node) => {
            if (node.attributes.viewBox != null) {
              const nums = node.attributes.viewBox.split(/\s,?\s*|,\s*/g);
              node.attributes.viewBox = nums.map((value) => {
                const num = Number(value);
                return Number.isNaN(num) ? value : Number(num.toFixed(floatPrecision));
              }).join(" ");
            }
            for (const [name, value] of Object.entries(node.attributes)) {
              if (name === "version") {
                continue;
              }
              const match = value.match(regNumericValues);
              if (match) {
                let num = Number(Number(match[1]).toFixed(floatPrecision));
                let matchedUnit = match[3] || "";
                let units = matchedUnit;
                if (convertToPx && units !== "" && units in absoluteLengths) {
                  const pxNum = Number(
                    (absoluteLengths[units] * Number(match[1])).toFixed(
                      floatPrecision
                    )
                  );
                  if (pxNum.toString().length < match[0].length) {
                    num = pxNum;
                    units = "px";
                  }
                }
                let str;
                if (leadingZero) {
                  str = removeLeadingZero(num);
                } else {
                  str = num.toString();
                }
                if (defaultPx && units === "px") {
                  units = "";
                }
                node.attributes[name] = str + units;
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/convertColors.js
var require_convertColors = __commonJS({
  "src/svgo/plugins/convertColors.js"(exports) {
    "use strict";
    var collections = require_collections();
    exports.name = "convertColors";
    exports.description = "converts colors: rgb() to #rrggbb and #rrggbb to #rgb";
    var rNumber = "([+-]?(?:\\d*\\.\\d+|\\d+\\.?)%?)";
    var rComma = "\\s*,\\s*";
    var regRGB = new RegExp(
      "^rgb\\(\\s*" + rNumber + rComma + rNumber + rComma + rNumber + "\\s*\\)$"
    );
    var regHEX = /^#(([a-fA-F0-9])\2){3}$/;
    var convertRgbToHex = ([r, g, b]) => {
      const hexNumber = (
        // operator precedence is (+) > (<<) > (|)
        (256 + // [1][0]
        r << // [1][r]
        8 | // [1][r][0]
        g) << // [1][r][g]
        8 | // [1][r][g][0]
        b
      );
      return "#" + hexNumber.toString(16).slice(1).toUpperCase();
    };
    exports.fn = (_root, params) => {
      const {
        currentColor = false,
        names2hex = true,
        rgb2hex = true,
        shorthex = true,
        shortname = true
      } = params;
      return {
        element: {
          enter: (node) => {
            for (const [name, value] of Object.entries(node.attributes)) {
              if (collections.colorsProps.includes(name)) {
                let val = value;
                if (currentColor) {
                  let matched;
                  if (typeof currentColor === "string") {
                    matched = val === currentColor;
                  } else if (currentColor instanceof RegExp) {
                    matched = currentColor.exec(val) != null;
                  } else {
                    matched = val !== "none";
                  }
                  if (matched) {
                    val = "currentColor";
                  }
                }
                if (names2hex) {
                  const colorName = val.toLowerCase();
                  if (collections.colorsNames[colorName] != null) {
                    val = collections.colorsNames[colorName];
                  }
                }
                if (rgb2hex) {
                  let match = val.match(regRGB);
                  if (match != null) {
                    let nums = match.slice(1, 4).map((m) => {
                      let n;
                      if (m.indexOf("%") > -1) {
                        n = Math.round(parseFloat(m) * 2.55);
                      } else {
                        n = Number(m);
                      }
                      return Math.max(0, Math.min(n, 255));
                    });
                    val = convertRgbToHex(nums);
                  }
                }
                if (shorthex) {
                  let match = val.match(regHEX);
                  if (match != null) {
                    val = "#" + match[0][1] + match[0][3] + match[0][5];
                  }
                }
                if (shortname) {
                  const colorName = val.toLowerCase();
                  if (collections.colorsShortNames[colorName] != null) {
                    val = collections.colorsShortNames[colorName];
                  }
                }
                node.attributes[name] = val;
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/style.js
var require_style = __commonJS({
  "src/svgo/style.js"(exports) {
    "use strict";
    var csstree = require_cjs();
    var {
      syntax: { specificity }
    } = require_cjs3();
    var { visit, matches } = require_xast();
    var {
      attrsGroups,
      inheritableAttrs,
      presentationNonInheritableGroupAttrs
    } = require_collections();
    var csstreeWalkSkip = csstree.walk.skip;
    var parseRule = (ruleNode, dynamic) => {
      const declarations = [];
      ruleNode.block.children.forEach((cssNode) => {
        if (cssNode.type === "Declaration") {
          declarations.push({
            name: cssNode.property,
            value: csstree.generate(cssNode.value),
            important: cssNode.important === true
          });
        }
      });
      const rules = [];
      csstree.walk(ruleNode.prelude, (node) => {
        if (node.type === "Selector") {
          const newNode = csstree.clone(node);
          let hasPseudoClasses = false;
          csstree.walk(newNode, (pseudoClassNode, item, list) => {
            if (pseudoClassNode.type === "PseudoClassSelector") {
              hasPseudoClasses = true;
              list.remove(item);
            }
          });
          rules.push({
            specificity: specificity(node),
            dynamic: hasPseudoClasses || dynamic,
            // compute specificity from original node to consider pseudo classes
            selector: csstree.generate(newNode),
            declarations
          });
        }
      });
      return rules;
    };
    var parseStylesheet = (css, dynamic) => {
      const rules = [];
      const ast = csstree.parse(css, {
        parseValue: false,
        parseAtrulePrelude: false
      });
      csstree.walk(ast, (cssNode) => {
        if (cssNode.type === "Rule") {
          rules.push(...parseRule(cssNode, dynamic || false));
          return csstreeWalkSkip;
        }
        if (cssNode.type === "Atrule") {
          if (cssNode.name === "keyframes") {
            return csstreeWalkSkip;
          }
          csstree.walk(cssNode, (ruleNode) => {
            if (ruleNode.type === "Rule") {
              rules.push(...parseRule(ruleNode, dynamic || true));
              return csstreeWalkSkip;
            }
          });
          return csstreeWalkSkip;
        }
      });
      return rules;
    };
    var parseStyleDeclarations = (css) => {
      const declarations = [];
      const ast = csstree.parse(css, {
        context: "declarationList",
        parseValue: false
      });
      csstree.walk(ast, (cssNode) => {
        if (cssNode.type === "Declaration") {
          declarations.push({
            name: cssNode.property,
            value: csstree.generate(cssNode.value),
            important: cssNode.important === true
          });
        }
      });
      return declarations;
    };
    var computeOwnStyle = (stylesheet, node) => {
      const computedStyle = {};
      const importantStyles = /* @__PURE__ */ new Map();
      for (const [name, value] of Object.entries(node.attributes)) {
        if (attrsGroups.presentation.includes(name)) {
          computedStyle[name] = { type: "static", inherited: false, value };
          importantStyles.set(name, false);
        }
      }
      for (const { selector, declarations, dynamic } of stylesheet.rules) {
        if (matches(node, selector)) {
          for (const { name, value, important } of declarations) {
            const computed = computedStyle[name];
            if (computed && computed.type === "dynamic") {
              continue;
            }
            if (dynamic) {
              computedStyle[name] = { type: "dynamic", inherited: false };
              continue;
            }
            if (computed == null || important === true || importantStyles.get(name) === false) {
              computedStyle[name] = { type: "static", inherited: false, value };
              importantStyles.set(name, important);
            }
          }
        }
      }
      const styleDeclarations = node.attributes.style == null ? [] : parseStyleDeclarations(node.attributes.style);
      for (const { name, value, important } of styleDeclarations) {
        const computed = computedStyle[name];
        if (computed && computed.type === "dynamic") {
          continue;
        }
        if (computed == null || important === true || importantStyles.get(name) === false) {
          computedStyle[name] = { type: "static", inherited: false, value };
          importantStyles.set(name, important);
        }
      }
      return computedStyle;
    };
    var compareSpecificity = (a, b) => {
      for (let i = 0; i < 4; i += 1) {
        if (a[i] < b[i]) {
          return -1;
        } else if (a[i] > b[i]) {
          return 1;
        }
      }
      return 0;
    };
    var collectStylesheet = (root) => {
      const rules = [];
      const parents = /* @__PURE__ */ new Map();
      visit(root, {
        element: {
          enter: (node, parentNode) => {
            parents.set(node, parentNode);
            if (node.name === "style") {
              const dynamic = node.attributes.media != null && node.attributes.media !== "all";
              if (node.attributes.type == null || node.attributes.type === "" || node.attributes.type === "text/css") {
                const children = node.children;
                for (const child of children) {
                  if (child.type === "text" || child.type === "cdata") {
                    rules.push(...parseStylesheet(child.value, dynamic));
                  }
                }
              }
            }
          }
        }
      });
      rules.sort((a, b) => compareSpecificity(a.specificity, b.specificity));
      return { rules, parents };
    };
    exports.collectStylesheet = collectStylesheet;
    var computeStyle = (stylesheet, node) => {
      const { parents } = stylesheet;
      const computedStyles = computeOwnStyle(stylesheet, node);
      let parent = parents.get(node);
      while (parent != null && parent.type !== "root") {
        const inheritedStyles = computeOwnStyle(stylesheet, parent);
        for (const [name, computed] of Object.entries(inheritedStyles)) {
          if (computedStyles[name] == null && // ignore not inheritable styles
          inheritableAttrs.includes(name) === true && presentationNonInheritableGroupAttrs.includes(name) === false) {
            computedStyles[name] = { ...computed, inherited: true };
          }
        }
        parent = parents.get(parent);
      }
      return computedStyles;
    };
    exports.computeStyle = computeStyle;
  }
});

// src/svgo/plugins/removeUnknownsAndDefaults.js
var require_removeUnknownsAndDefaults = __commonJS({
  "src/svgo/plugins/removeUnknownsAndDefaults.js"(exports) {
    "use strict";
    var { visitSkip, detachNodeFromParent } = require_xast();
    var { collectStylesheet, computeStyle } = require_style();
    var {
      elems,
      attrsGroups,
      elemsGroups,
      attrsGroupsDefaults,
      presentationNonInheritableGroupAttrs
    } = require_collections();
    exports.name = "removeUnknownsAndDefaults";
    exports.description = "removes unknown elements content and attributes, removes attrs with default values";
    var allowedChildrenPerElement = /* @__PURE__ */ new Map();
    var allowedAttributesPerElement = /* @__PURE__ */ new Map();
    var attributesDefaultsPerElement = /* @__PURE__ */ new Map();
    for (const [name, config] of Object.entries(elems)) {
      const allowedChildren = /* @__PURE__ */ new Set();
      if (config.content) {
        for (const elementName of config.content) {
          allowedChildren.add(elementName);
        }
      }
      if (config.contentGroups) {
        for (const contentGroupName of config.contentGroups) {
          const elemsGroup = elemsGroups[contentGroupName];
          if (elemsGroup) {
            for (const elementName of elemsGroup) {
              allowedChildren.add(elementName);
            }
          }
        }
      }
      const allowedAttributes = /* @__PURE__ */ new Set();
      if (config.attrs) {
        for (const attrName of config.attrs) {
          allowedAttributes.add(attrName);
        }
      }
      const attributesDefaults = /* @__PURE__ */ new Map();
      if (config.defaults) {
        for (const [attrName, defaultValue] of Object.entries(config.defaults)) {
          attributesDefaults.set(attrName, defaultValue);
        }
      }
      for (const attrsGroupName of config.attrsGroups) {
        const attrsGroup = attrsGroups[attrsGroupName];
        if (attrsGroup) {
          for (const attrName of attrsGroup) {
            allowedAttributes.add(attrName);
          }
        }
        const groupDefaults = attrsGroupsDefaults[attrsGroupName];
        if (groupDefaults) {
          for (const [attrName, defaultValue] of Object.entries(groupDefaults)) {
            attributesDefaults.set(attrName, defaultValue);
          }
        }
      }
      allowedChildrenPerElement.set(name, allowedChildren);
      allowedAttributesPerElement.set(name, allowedAttributes);
      attributesDefaultsPerElement.set(name, attributesDefaults);
    }
    exports.fn = (root, params) => {
      const {
        unknownContent = true,
        unknownAttrs = true,
        defaultAttrs = true,
        uselessOverrides = true,
        keepDataAttrs = true,
        keepAriaAttrs = true,
        keepRoleAttr = false
      } = params;
      const stylesheet = collectStylesheet(root);
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name.includes(":")) {
              return;
            }
            if (node.name === "foreignObject") {
              return visitSkip;
            }
            if (unknownContent && parentNode.type === "element") {
              const allowedChildren = allowedChildrenPerElement.get(
                parentNode.name
              );
              if (allowedChildren == null || allowedChildren.size === 0) {
                if (allowedChildrenPerElement.get(node.name) == null) {
                  detachNodeFromParent(node, parentNode);
                  return;
                }
              } else {
                if (allowedChildren.has(node.name) === false) {
                  detachNodeFromParent(node, parentNode);
                  return;
                }
              }
            }
            const allowedAttributes = allowedAttributesPerElement.get(node.name);
            const attributesDefaults = attributesDefaultsPerElement.get(node.name);
            const computedParentStyle = parentNode.type === "element" ? computeStyle(stylesheet, parentNode) : null;
            for (const [name, value] of Object.entries(node.attributes)) {
              if (keepDataAttrs && name.startsWith("data-")) {
                continue;
              }
              if (keepAriaAttrs && name.startsWith("aria-")) {
                continue;
              }
              if (keepRoleAttr && name === "role") {
                continue;
              }
              if (name === "xmlns") {
                continue;
              }
              if (name.includes(":")) {
                const [prefix] = name.split(":");
                if (prefix !== "xml" && prefix !== "xlink") {
                  continue;
                }
              }
              if (unknownAttrs && allowedAttributes && allowedAttributes.has(name) === false) {
                delete node.attributes[name];
              }
              if (defaultAttrs && node.attributes.id == null && attributesDefaults && attributesDefaults.get(name) === value) {
                if (computedParentStyle == null || computedParentStyle[name] == null) {
                  delete node.attributes[name];
                }
              }
              if (uselessOverrides && node.attributes.id == null) {
                const style = computedParentStyle == null ? null : computedParentStyle[name];
                if (presentationNonInheritableGroupAttrs.includes(name) === false && style != null && style.type === "static" && style.value === value) {
                  delete node.attributes[name];
                }
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeNonInheritableGroupAttrs.js
var require_removeNonInheritableGroupAttrs = __commonJS({
  "src/svgo/plugins/removeNonInheritableGroupAttrs.js"(exports) {
    "use strict";
    var {
      inheritableAttrs,
      attrsGroups,
      presentationNonInheritableGroupAttrs
    } = require_collections();
    exports.name = "removeNonInheritableGroupAttrs";
    exports.description = "removes non-inheritable group\u2019s presentational attributes";
    exports.fn = () => {
      return {
        element: {
          enter: (node) => {
            if (node.name === "g") {
              for (const name of Object.keys(node.attributes)) {
                if (attrsGroups.presentation.includes(name) === true && inheritableAttrs.includes(name) === false && presentationNonInheritableGroupAttrs.includes(name) === false) {
                  delete node.attributes[name];
                }
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeUselessStrokeAndFill.js
var require_removeUselessStrokeAndFill = __commonJS({
  "src/svgo/plugins/removeUselessStrokeAndFill.js"(exports) {
    "use strict";
    var { visit, visitSkip, detachNodeFromParent } = require_xast();
    var { collectStylesheet, computeStyle } = require_style();
    var { elemsGroups } = require_collections();
    exports.name = "removeUselessStrokeAndFill";
    exports.description = "removes useless stroke and fill attributes";
    exports.fn = (root, params) => {
      const {
        stroke: removeStroke = true,
        fill: removeFill = true,
        removeNone = false
      } = params;
      let hasStyleOrScript = false;
      visit(root, {
        element: {
          enter: (node) => {
            if (node.name === "style" || node.name === "script") {
              hasStyleOrScript = true;
            }
          }
        }
      });
      if (hasStyleOrScript) {
        return null;
      }
      const stylesheet = collectStylesheet(root);
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.attributes.id != null) {
              return visitSkip;
            }
            if (elemsGroups.shape.includes(node.name) == false) {
              return;
            }
            const computedStyle = computeStyle(stylesheet, node);
            const stroke = computedStyle.stroke;
            const strokeOpacity = computedStyle["stroke-opacity"];
            const strokeWidth = computedStyle["stroke-width"];
            const markerEnd = computedStyle["marker-end"];
            const fill = computedStyle.fill;
            const fillOpacity = computedStyle["fill-opacity"];
            const computedParentStyle = parentNode.type === "element" ? computeStyle(stylesheet, parentNode) : null;
            const parentStroke = computedParentStyle == null ? null : computedParentStyle.stroke;
            if (removeStroke) {
              if (stroke == null || stroke.type === "static" && stroke.value == "none" || strokeOpacity != null && strokeOpacity.type === "static" && strokeOpacity.value === "0" || strokeWidth != null && strokeWidth.type === "static" && strokeWidth.value === "0") {
                if (strokeWidth != null && strokeWidth.type === "static" && strokeWidth.value === "0" || markerEnd == null) {
                  for (const name of Object.keys(node.attributes)) {
                    if (name.startsWith("stroke")) {
                      delete node.attributes[name];
                    }
                  }
                  if (parentStroke != null && parentStroke.type === "static" && parentStroke.value !== "none") {
                    node.attributes.stroke = "none";
                  }
                }
              }
            }
            if (removeFill) {
              if (fill != null && fill.type === "static" && fill.value === "none" || fillOpacity != null && fillOpacity.type === "static" && fillOpacity.value === "0") {
                for (const name of Object.keys(node.attributes)) {
                  if (name.startsWith("fill-")) {
                    delete node.attributes[name];
                  }
                }
                if (fill == null || fill.type === "static" && fill.value !== "none") {
                  node.attributes.fill = "none";
                }
              }
            }
            if (removeNone) {
              if ((stroke == null || node.attributes.stroke === "none") && (fill != null && fill.type === "static" && fill.value === "none" || node.attributes.fill === "none")) {
                detachNodeFromParent(node, parentNode);
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeViewBox.js
var require_removeViewBox = __commonJS({
  "src/svgo/plugins/removeViewBox.js"(exports) {
    "use strict";
    exports.name = "removeViewBox";
    exports.description = "removes viewBox attribute when possible";
    var viewBoxElems = ["svg", "pattern", "symbol"];
    exports.fn = () => {
      return {
        element: {
          enter: (node, parentNode) => {
            if (viewBoxElems.includes(node.name) && node.attributes.viewBox != null && node.attributes.width != null && node.attributes.height != null) {
              if (node.name === "svg" && parentNode.type !== "root") {
                return;
              }
              const nums = node.attributes.viewBox.split(/[ ,]+/g);
              if (nums[0] === "0" && nums[1] === "0" && node.attributes.width.replace(/px$/, "") === nums[2] && // could use parseFloat too
              node.attributes.height.replace(/px$/, "") === nums[3]) {
                delete node.attributes.viewBox;
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/cleanupEnableBackground.js
var require_cleanupEnableBackground = __commonJS({
  "src/svgo/plugins/cleanupEnableBackground.js"(exports) {
    "use strict";
    var { visit } = require_xast();
    exports.name = "cleanupEnableBackground";
    exports.description = "remove or cleanup enable-background attribute when possible";
    exports.fn = (root) => {
      const regEnableBackground = /^new\s0\s0\s([-+]?\d*\.?\d+([eE][-+]?\d+)?)\s([-+]?\d*\.?\d+([eE][-+]?\d+)?)$/;
      let hasFilter = false;
      visit(root, {
        element: {
          enter: (node) => {
            if (node.name === "filter") {
              hasFilter = true;
            }
          }
        }
      });
      return {
        element: {
          enter: (node) => {
            if (node.attributes["enable-background"] == null) {
              return;
            }
            if (hasFilter) {
              if ((node.name === "svg" || node.name === "mask" || node.name === "pattern") && node.attributes.width != null && node.attributes.height != null) {
                const match = node.attributes["enable-background"].match(regEnableBackground);
                if (match != null && node.attributes.width === match[1] && node.attributes.height === match[3]) {
                  if (node.name === "svg") {
                    delete node.attributes["enable-background"];
                  } else {
                    node.attributes["enable-background"] = "new";
                  }
                }
              }
            } else {
              delete node.attributes["enable-background"];
            }
          }
        }
      };
    };
  }
});

// src/svgo/path.js
var require_path = __commonJS({
  "src/svgo/path.js"(exports) {
    "use strict";
    var { removeLeadingZero } = require_tools();
    var argsCountPerCommand = {
      M: 2,
      m: 2,
      Z: 0,
      z: 0,
      L: 2,
      l: 2,
      H: 1,
      h: 1,
      V: 1,
      v: 1,
      C: 6,
      c: 6,
      S: 4,
      s: 4,
      Q: 4,
      q: 4,
      T: 2,
      t: 2,
      A: 7,
      a: 7
    };
    var isCommand = (c) => {
      return c in argsCountPerCommand;
    };
    var isWsp = (c) => {
      const codePoint = c.codePointAt(0);
      return codePoint === 32 || codePoint === 9 || codePoint === 13 || codePoint === 10;
    };
    var isDigit = (c) => {
      const codePoint = c.codePointAt(0);
      if (codePoint == null) {
        return false;
      }
      return 48 <= codePoint && codePoint <= 57;
    };
    var readNumber = (string, cursor) => {
      let i = cursor;
      let value = "";
      let state = "none";
      for (; i < string.length; i += 1) {
        const c = string[i];
        if (c === "+" || c === "-") {
          if (state === "none") {
            state = "sign";
            value += c;
            continue;
          }
          if (state === "e") {
            state = "exponent_sign";
            value += c;
            continue;
          }
        }
        if (isDigit(c)) {
          if (state === "none" || state === "sign" || state === "whole") {
            state = "whole";
            value += c;
            continue;
          }
          if (state === "decimal_point" || state === "decimal") {
            state = "decimal";
            value += c;
            continue;
          }
          if (state === "e" || state === "exponent_sign" || state === "exponent") {
            state = "exponent";
            value += c;
            continue;
          }
        }
        if (c === ".") {
          if (state === "none" || state === "sign" || state === "whole") {
            state = "decimal_point";
            value += c;
            continue;
          }
        }
        if (c === "E" || c == "e") {
          if (state === "whole" || state === "decimal_point" || state === "decimal") {
            state = "e";
            value += c;
            continue;
          }
        }
        break;
      }
      const number = Number.parseFloat(value);
      if (Number.isNaN(number)) {
        return [cursor, null];
      } else {
        return [i - 1, number];
      }
    };
    var parsePathData = (string) => {
      const pathData = [];
      let command = null;
      let args = [];
      let argsCount = 0;
      let canHaveComma = false;
      let hadComma = false;
      for (let i = 0; i < string.length; i += 1) {
        const c = string.charAt(i);
        if (isWsp(c)) {
          continue;
        }
        if (canHaveComma && c === ",") {
          if (hadComma) {
            break;
          }
          hadComma = true;
          continue;
        }
        if (isCommand(c)) {
          if (hadComma) {
            return pathData;
          }
          if (command == null) {
            if (c !== "M" && c !== "m") {
              return pathData;
            }
          } else {
            if (args.length !== 0) {
              return pathData;
            }
          }
          command = c;
          args = [];
          argsCount = argsCountPerCommand[command];
          canHaveComma = false;
          if (argsCount === 0) {
            pathData.push({ command, args });
          }
          continue;
        }
        if (command == null) {
          return pathData;
        }
        let newCursor = i;
        let number = null;
        if (command === "A" || command === "a") {
          const position = args.length;
          if (position === 0 || position === 1) {
            if (c !== "+" && c !== "-") {
              [newCursor, number] = readNumber(string, i);
            }
          }
          if (position === 2 || position === 5 || position === 6) {
            [newCursor, number] = readNumber(string, i);
          }
          if (position === 3 || position === 4) {
            if (c === "0") {
              number = 0;
            }
            if (c === "1") {
              number = 1;
            }
          }
        } else {
          [newCursor, number] = readNumber(string, i);
        }
        if (number == null) {
          return pathData;
        }
        args.push(number);
        canHaveComma = true;
        hadComma = false;
        i = newCursor;
        if (args.length === argsCount) {
          pathData.push({ command, args });
          if (command === "M") {
            command = "L";
          }
          if (command === "m") {
            command = "l";
          }
          args = [];
        }
      }
      return pathData;
    };
    exports.parsePathData = parsePathData;
    var stringifyNumber = (number, precision) => {
      if (precision != null) {
        const ratio = 10 ** precision;
        number = Math.round(number * ratio) / ratio;
      }
      return removeLeadingZero(number);
    };
    var stringifyArgs = (command, args, precision, disableSpaceAfterFlags) => {
      let result = "";
      let prev = "";
      for (let i = 0; i < args.length; i += 1) {
        const number = args[i];
        const numberString = stringifyNumber(number, precision);
        if (disableSpaceAfterFlags && (command === "A" || command === "a") && // consider combined arcs
        (i % 7 === 4 || i % 7 === 5)) {
          result += numberString;
        } else if (i === 0 || numberString.startsWith("-")) {
          result += numberString;
        } else if (prev.includes(".") && numberString.startsWith(".")) {
          result += numberString;
        } else {
          result += ` ${numberString}`;
        }
        prev = numberString;
      }
      return result;
    };
    var stringifyPathData = ({ pathData, precision, disableSpaceAfterFlags }) => {
      let combined = [];
      for (let i = 0; i < pathData.length; i += 1) {
        const { command, args } = pathData[i];
        if (i === 0) {
          combined.push({ command, args });
        } else {
          const last = combined[combined.length - 1];
          if (i === 1) {
            if (command === "L") {
              last.command = "M";
            }
            if (command === "l") {
              last.command = "m";
            }
          }
          if (last.command === command && last.command !== "M" && last.command !== "m" || // combine matching moveto and lineto sequences
          last.command === "M" && command === "L" || last.command === "m" && command === "l") {
            last.args = [...last.args, ...args];
          } else {
            combined.push({ command, args });
          }
        }
      }
      let result = "";
      for (const { command, args } of combined) {
        result += command + stringifyArgs(command, args, precision, disableSpaceAfterFlags);
      }
      return result;
    };
    exports.stringifyPathData = stringifyPathData;
  }
});

// src/svgo/plugins/removeHiddenElems.js
var require_removeHiddenElems = __commonJS({
  "src/svgo/plugins/removeHiddenElems.js"(exports) {
    "use strict";
    var {
      visit,
      visitSkip,
      querySelector,
      detachNodeFromParent
    } = require_xast();
    var { collectStylesheet, computeStyle } = require_style();
    var { parsePathData } = require_path();
    exports.name = "removeHiddenElems";
    exports.description = "removes hidden elements (zero sized, with absent attributes)";
    exports.fn = (root, params) => {
      const {
        isHidden = true,
        displayNone = true,
        opacity0 = true,
        circleR0 = true,
        ellipseRX0 = true,
        ellipseRY0 = true,
        rectWidth0 = true,
        rectHeight0 = true,
        patternWidth0 = true,
        patternHeight0 = true,
        imageWidth0 = true,
        imageHeight0 = true,
        pathEmptyD = true,
        polylineEmptyPoints = true,
        polygonEmptyPoints = true
      } = params;
      const stylesheet = collectStylesheet(root);
      visit(root, {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "clipPath") {
              return visitSkip;
            }
            const computedStyle = computeStyle(stylesheet, node);
            if (opacity0 && computedStyle.opacity && computedStyle.opacity.type === "static" && computedStyle.opacity.value === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
          }
        }
      });
      return {
        element: {
          enter: (node, parentNode) => {
            const computedStyle = computeStyle(stylesheet, node);
            if (isHidden && computedStyle.visibility && computedStyle.visibility.type === "static" && computedStyle.visibility.value === "hidden" && // keep if any descendant enables visibility
            querySelector(node, "[visibility=visible]") == null) {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (displayNone && computedStyle.display && computedStyle.display.type === "static" && computedStyle.display.value === "none" && // markers with display: none still rendered
            node.name !== "marker") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (circleR0 && node.name === "circle" && node.children.length === 0 && node.attributes.r === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (ellipseRX0 && node.name === "ellipse" && node.children.length === 0 && node.attributes.rx === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (ellipseRY0 && node.name === "ellipse" && node.children.length === 0 && node.attributes.ry === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (rectWidth0 && node.name === "rect" && node.children.length === 0 && node.attributes.width === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (rectHeight0 && rectWidth0 && node.name === "rect" && node.children.length === 0 && node.attributes.height === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (patternWidth0 && node.name === "pattern" && node.attributes.width === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (patternHeight0 && node.name === "pattern" && node.attributes.height === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (imageWidth0 && node.name === "image" && node.attributes.width === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (imageHeight0 && node.name === "image" && node.attributes.height === "0") {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (pathEmptyD && node.name === "path") {
              if (node.attributes.d == null) {
                detachNodeFromParent(node, parentNode);
                return;
              }
              const pathData = parsePathData(node.attributes.d);
              if (pathData.length === 0) {
                detachNodeFromParent(node, parentNode);
                return;
              }
              if (pathData.length === 1 && computedStyle["marker-start"] == null && computedStyle["marker-end"] == null) {
                detachNodeFromParent(node, parentNode);
                return;
              }
              return;
            }
            if (polylineEmptyPoints && node.name === "polyline" && node.attributes.points == null) {
              detachNodeFromParent(node, parentNode);
              return;
            }
            if (polygonEmptyPoints && node.name === "polygon" && node.attributes.points == null) {
              detachNodeFromParent(node, parentNode);
              return;
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeEmptyText.js
var require_removeEmptyText = __commonJS({
  "src/svgo/plugins/removeEmptyText.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeEmptyText";
    exports.description = "removes empty <text> elements";
    exports.fn = (root, params) => {
      const { text = true, tspan = true, tref = true } = params;
      return {
        element: {
          enter: (node, parentNode) => {
            if (text && node.name === "text" && node.children.length === 0) {
              detachNodeFromParent(node, parentNode);
            }
            if (tspan && node.name === "tspan" && node.children.length === 0) {
              detachNodeFromParent(node, parentNode);
            }
            if (tref && node.name === "tref" && node.attributes["xlink:href"] == null) {
              detachNodeFromParent(node, parentNode);
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/convertShapeToPath.js
var require_convertShapeToPath = __commonJS({
  "src/svgo/plugins/convertShapeToPath.js"(exports) {
    "use strict";
    var { stringifyPathData } = require_path();
    var { detachNodeFromParent } = require_xast();
    exports.name = "convertShapeToPath";
    exports.description = "converts basic shapes to more compact path form";
    var regNumber = /[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?/g;
    exports.fn = (root, params) => {
      const { convertArcs = false, floatPrecision: precision } = params;
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "rect" && node.attributes.width != null && node.attributes.height != null && node.attributes.rx == null && node.attributes.ry == null) {
              const x = Number(node.attributes.x || "0");
              const y = Number(node.attributes.y || "0");
              const width = Number(node.attributes.width);
              const height = Number(node.attributes.height);
              if (Number.isNaN(x - y + width - height)) return;
              const pathData = [
                { command: "M", args: [x, y] },
                { command: "H", args: [x + width] },
                { command: "V", args: [y + height] },
                { command: "H", args: [x] },
                { command: "z", args: [] }
              ];
              node.name = "path";
              node.attributes.d = stringifyPathData({ pathData, precision });
              delete node.attributes.x;
              delete node.attributes.y;
              delete node.attributes.width;
              delete node.attributes.height;
            }
            if (node.name === "line") {
              const x1 = Number(node.attributes.x1 || "0");
              const y1 = Number(node.attributes.y1 || "0");
              const x2 = Number(node.attributes.x2 || "0");
              const y2 = Number(node.attributes.y2 || "0");
              if (Number.isNaN(x1 - y1 + x2 - y2)) return;
              const pathData = [
                { command: "M", args: [x1, y1] },
                { command: "L", args: [x2, y2] }
              ];
              node.name = "path";
              node.attributes.d = stringifyPathData({ pathData, precision });
              delete node.attributes.x1;
              delete node.attributes.y1;
              delete node.attributes.x2;
              delete node.attributes.y2;
            }
            if ((node.name === "polyline" || node.name === "polygon") && node.attributes.points != null) {
              const coords = (node.attributes.points.match(regNumber) || []).map(
                Number
              );
              if (coords.length < 4) {
                detachNodeFromParent(node, parentNode);
                return;
              }
              const pathData = [];
              for (let i = 0; i < coords.length; i += 2) {
                pathData.push({
                  command: i === 0 ? "M" : "L",
                  args: coords.slice(i, i + 2)
                });
              }
              if (node.name === "polygon") {
                pathData.push({ command: "z", args: [] });
              }
              node.name = "path";
              node.attributes.d = stringifyPathData({ pathData, precision });
              delete node.attributes.points;
            }
            if (node.name === "circle" && convertArcs) {
              const cx = Number(node.attributes.cx || "0");
              const cy = Number(node.attributes.cy || "0");
              const r = Number(node.attributes.r || "0");
              if (Number.isNaN(cx - cy + r)) {
                return;
              }
              const pathData = [
                { command: "M", args: [cx, cy - r] },
                { command: "A", args: [r, r, 0, 1, 0, cx, cy + r] },
                { command: "A", args: [r, r, 0, 1, 0, cx, cy - r] },
                { command: "z", args: [] }
              ];
              node.name = "path";
              node.attributes.d = stringifyPathData({ pathData, precision });
              delete node.attributes.cx;
              delete node.attributes.cy;
              delete node.attributes.r;
            }
            if (node.name === "ellipse" && convertArcs) {
              const ecx = Number(node.attributes.cx || "0");
              const ecy = Number(node.attributes.cy || "0");
              const rx = Number(node.attributes.rx || "0");
              const ry = Number(node.attributes.ry || "0");
              if (Number.isNaN(ecx - ecy + rx - ry)) {
                return;
              }
              const pathData = [
                { command: "M", args: [ecx, ecy - ry] },
                { command: "A", args: [rx, ry, 0, 1, 0, ecx, ecy + ry] },
                { command: "A", args: [rx, ry, 0, 1, 0, ecx, ecy - ry] },
                { command: "z", args: [] }
              ];
              node.name = "path";
              node.attributes.d = stringifyPathData({ pathData, precision });
              delete node.attributes.cx;
              delete node.attributes.cy;
              delete node.attributes.rx;
              delete node.attributes.ry;
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/convertEllipseToCircle.js
var require_convertEllipseToCircle = __commonJS({
  "src/svgo/plugins/convertEllipseToCircle.js"(exports) {
    "use strict";
    exports.name = "convertEllipseToCircle";
    exports.description = "converts non-eccentric <ellipse>s to <circle>s";
    exports.fn = () => {
      return {
        element: {
          enter: (node) => {
            if (node.name === "ellipse") {
              const rx = node.attributes.rx || "0";
              const ry = node.attributes.ry || "0";
              if (rx === ry || rx === "auto" || ry === "auto") {
                node.name = "circle";
                const radius = rx === "auto" ? ry : rx;
                delete node.attributes.rx;
                delete node.attributes.ry;
                node.attributes.r = radius;
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/moveElemsAttrsToGroup.js
var require_moveElemsAttrsToGroup = __commonJS({
  "src/svgo/plugins/moveElemsAttrsToGroup.js"(exports) {
    "use strict";
    var { visit } = require_xast();
    var { inheritableAttrs, pathElems } = require_collections();
    exports.name = "moveElemsAttrsToGroup";
    exports.description = "Move common attributes of group children to the group";
    exports.fn = (root) => {
      let deoptimizedWithStyles = false;
      visit(root, {
        element: {
          enter: (node) => {
            if (node.name === "style") {
              deoptimizedWithStyles = true;
            }
          }
        }
      });
      return {
        element: {
          exit: (node) => {
            if (node.name !== "g" || node.children.length <= 1) {
              return;
            }
            if (deoptimizedWithStyles) {
              return;
            }
            const commonAttributes = /* @__PURE__ */ new Map();
            let initial = true;
            let everyChildIsPath = true;
            for (const child of node.children) {
              if (child.type === "element") {
                if (pathElems.includes(child.name) === false) {
                  everyChildIsPath = false;
                }
                if (initial) {
                  initial = false;
                  for (const [name, value] of Object.entries(child.attributes)) {
                    if (inheritableAttrs.includes(name)) {
                      commonAttributes.set(name, value);
                    }
                  }
                } else {
                  for (const [name, value] of commonAttributes) {
                    if (child.attributes[name] !== value) {
                      commonAttributes.delete(name);
                    }
                  }
                }
              }
            }
            if (node.attributes["clip-path"] != null || node.attributes.mask != null) {
              commonAttributes.delete("transform");
            }
            if (everyChildIsPath) {
              commonAttributes.delete("transform");
            }
            for (const [name, value] of commonAttributes) {
              if (name === "transform") {
                if (node.attributes.transform != null) {
                  node.attributes.transform = `${node.attributes.transform} ${value}`;
                } else {
                  node.attributes.transform = value;
                }
              } else {
                node.attributes[name] = value;
              }
            }
            for (const child of node.children) {
              if (child.type === "element") {
                for (const [name] of commonAttributes) {
                  delete child.attributes[name];
                }
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/moveGroupAttrsToElems.js
var require_moveGroupAttrsToElems = __commonJS({
  "src/svgo/plugins/moveGroupAttrsToElems.js"(exports) {
    "use strict";
    var { pathElems, referencesProps } = require_collections();
    exports.name = "moveGroupAttrsToElems";
    exports.description = "moves some group attributes to the content elements";
    var pathElemsWithGroupsAndText = [...pathElems, "g", "text"];
    exports.fn = () => {
      return {
        element: {
          enter: (node) => {
            if (node.name === "g" && node.children.length !== 0 && node.attributes.transform != null && Object.entries(node.attributes).some(
              ([name, value]) => referencesProps.includes(name) && value.includes("url(")
            ) === false && node.children.every(
              (child) => child.type === "element" && pathElemsWithGroupsAndText.includes(child.name) && child.attributes.id == null
            )) {
              for (const child of node.children) {
                const value = node.attributes.transform;
                if (child.type === "element") {
                  if (child.attributes.transform != null) {
                    child.attributes.transform = `${value} ${child.attributes.transform}`;
                  } else {
                    child.attributes.transform = value;
                  }
                }
              }
              delete node.attributes.transform;
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/collapseGroups.js
var require_collapseGroups = __commonJS({
  "src/svgo/plugins/collapseGroups.js"(exports) {
    "use strict";
    var { inheritableAttrs, elemsGroups } = require_collections();
    exports.name = "collapseGroups";
    exports.description = "collapses useless groups";
    var hasAnimatedAttr = (node, name) => {
      if (node.type === "element") {
        if (elemsGroups.animation.includes(node.name) && node.attributes.attributeName === name) {
          return true;
        }
        for (const child of node.children) {
          if (hasAnimatedAttr(child, name)) {
            return true;
          }
        }
      }
      return false;
    };
    exports.fn = () => {
      return {
        element: {
          exit: (node, parentNode) => {
            if (parentNode.type === "root" || parentNode.name === "switch") {
              return;
            }
            if (node.name !== "g" || node.children.length === 0) {
              return;
            }
            if (Object.keys(node.attributes).length !== 0 && node.children.length === 1) {
              const firstChild = node.children[0];
              if (firstChild.type === "element" && firstChild.attributes.id == null && node.attributes.filter == null && (node.attributes.class == null || firstChild.attributes.class == null) && (node.attributes["clip-path"] == null && node.attributes.mask == null || firstChild.name === "g" && node.attributes.transform == null && firstChild.attributes.transform == null)) {
                for (const [name, value] of Object.entries(node.attributes)) {
                  if (hasAnimatedAttr(firstChild, name)) {
                    return;
                  }
                  if (firstChild.attributes[name] == null) {
                    firstChild.attributes[name] = value;
                  } else if (name === "transform") {
                    firstChild.attributes[name] = value + " " + firstChild.attributes[name];
                  } else if (firstChild.attributes[name] === "inherit") {
                    firstChild.attributes[name] = value;
                  } else if (inheritableAttrs.includes(name) === false && firstChild.attributes[name] !== value) {
                    return;
                  }
                  delete node.attributes[name];
                }
              }
            }
            if (Object.keys(node.attributes).length === 0) {
              for (const child of node.children) {
                if (child.type === "element" && elemsGroups.animation.includes(child.name)) {
                  return;
                }
              }
              const index = parentNode.children.indexOf(node);
              parentNode.children.splice(index, 1, ...node.children);
              for (const child of node.children) {
                Object.defineProperty(child, "parentNode", {
                  writable: true,
                  value: parentNode
                });
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/_path.js
var require_path2 = __commonJS({
  "src/svgo/plugins/_path.js"(exports) {
    "use strict";
    var { parsePathData, stringifyPathData } = require_path();
    var prevCtrlPoint;
    var path2js = (path) => {
      if (path.pathJS) return path.pathJS;
      const pathData = [];
      const newPathData = parsePathData(path.attributes.d);
      for (const { command, args } of newPathData) {
        pathData.push({ command, args });
      }
      if (pathData.length && pathData[0].command == "m") {
        pathData[0].command = "M";
      }
      path.pathJS = pathData;
      return pathData;
    };
    exports.path2js = path2js;
    var convertRelativeToAbsolute = (data) => {
      const newData = [];
      let start = [0, 0];
      let cursor = [0, 0];
      for (let { command, args } of data) {
        args = args.slice();
        if (command === "m") {
          args[0] += cursor[0];
          args[1] += cursor[1];
          command = "M";
        }
        if (command === "M") {
          cursor[0] = args[0];
          cursor[1] = args[1];
          start[0] = cursor[0];
          start[1] = cursor[1];
        }
        if (command === "h") {
          args[0] += cursor[0];
          command = "H";
        }
        if (command === "H") {
          cursor[0] = args[0];
        }
        if (command === "v") {
          args[0] += cursor[1];
          command = "V";
        }
        if (command === "V") {
          cursor[1] = args[0];
        }
        if (command === "l") {
          args[0] += cursor[0];
          args[1] += cursor[1];
          command = "L";
        }
        if (command === "L") {
          cursor[0] = args[0];
          cursor[1] = args[1];
        }
        if (command === "c") {
          args[0] += cursor[0];
          args[1] += cursor[1];
          args[2] += cursor[0];
          args[3] += cursor[1];
          args[4] += cursor[0];
          args[5] += cursor[1];
          command = "C";
        }
        if (command === "C") {
          cursor[0] = args[4];
          cursor[1] = args[5];
        }
        if (command === "s") {
          args[0] += cursor[0];
          args[1] += cursor[1];
          args[2] += cursor[0];
          args[3] += cursor[1];
          command = "S";
        }
        if (command === "S") {
          cursor[0] = args[2];
          cursor[1] = args[3];
        }
        if (command === "q") {
          args[0] += cursor[0];
          args[1] += cursor[1];
          args[2] += cursor[0];
          args[3] += cursor[1];
          command = "Q";
        }
        if (command === "Q") {
          cursor[0] = args[2];
          cursor[1] = args[3];
        }
        if (command === "t") {
          args[0] += cursor[0];
          args[1] += cursor[1];
          command = "T";
        }
        if (command === "T") {
          cursor[0] = args[0];
          cursor[1] = args[1];
        }
        if (command === "a") {
          args[5] += cursor[0];
          args[6] += cursor[1];
          command = "A";
        }
        if (command === "A") {
          cursor[0] = args[5];
          cursor[1] = args[6];
        }
        if (command === "z" || command === "Z") {
          cursor[0] = start[0];
          cursor[1] = start[1];
          command = "z";
        }
        newData.push({ command, args });
      }
      return newData;
    };
    exports.js2path = function(path, data, params) {
      path.pathJS = data;
      const pathData = [];
      for (const item of data) {
        if (pathData.length !== 0 && (item.command === "M" || item.command === "m")) {
          const last = pathData[pathData.length - 1];
          if (last.command === "M" || last.command === "m") {
            pathData.pop();
          }
        }
        pathData.push({
          command: item.command,
          args: item.args
        });
      }
      path.attributes.d = stringifyPathData({
        pathData,
        precision: params.floatPrecision,
        disableSpaceAfterFlags: params.noSpaceAfterFlags
      });
    };
    function set(dest, source) {
      dest[0] = source[source.length - 2];
      dest[1] = source[source.length - 1];
      return dest;
    }
    exports.intersects = function(path1, path2) {
      const points1 = gatherPoints(convertRelativeToAbsolute(path1));
      const points2 = gatherPoints(convertRelativeToAbsolute(path2));
      if (points1.maxX <= points2.minX || points2.maxX <= points1.minX || points1.maxY <= points2.minY || points2.maxY <= points1.minY || points1.list.every((set1) => {
        return points2.list.every((set2) => {
          return set1.list[set1.maxX][0] <= set2.list[set2.minX][0] || set2.list[set2.maxX][0] <= set1.list[set1.minX][0] || set1.list[set1.maxY][1] <= set2.list[set2.minY][1] || set2.list[set2.maxY][1] <= set1.list[set1.minY][1];
        });
      }))
        return false;
      const hullNest1 = points1.list.map(convexHull);
      const hullNest2 = points2.list.map(convexHull);
      return hullNest1.some(function(hull1) {
        if (hull1.list.length < 3) return false;
        return hullNest2.some(function(hull2) {
          if (hull2.list.length < 3) return false;
          var simplex = [getSupport(hull1, hull2, [1, 0])], direction = minus(simplex[0]);
          var iterations = 1e4;
          while (true) {
            if (iterations-- == 0) {
              console.error(
                "Error: infinite loop while processing mergePaths plugin."
              );
              return true;
            }
            simplex.push(getSupport(hull1, hull2, direction));
            if (dot(direction, simplex[simplex.length - 1]) <= 0) return false;
            if (processSimplex(simplex, direction)) return true;
          }
        });
      });
      function getSupport(a, b, direction) {
        return sub(supportPoint(a, direction), supportPoint(b, minus(direction)));
      }
      function supportPoint(polygon, direction) {
        var index = direction[1] >= 0 ? direction[0] < 0 ? polygon.maxY : polygon.maxX : direction[0] < 0 ? polygon.minX : polygon.minY, max = -Infinity, value;
        while ((value = dot(polygon.list[index], direction)) > max) {
          max = value;
          index = ++index % polygon.list.length;
        }
        return polygon.list[(index || polygon.list.length) - 1];
      }
    };
    function processSimplex(simplex, direction) {
      if (simplex.length == 2) {
        let a = simplex[1], b = simplex[0], AO = minus(simplex[1]), AB = sub(b, a);
        if (dot(AO, AB) > 0) {
          set(direction, orth(AB, a));
        } else {
          set(direction, AO);
          simplex.shift();
        }
      } else {
        let a = simplex[2], b = simplex[1], c = simplex[0], AB = sub(b, a), AC = sub(c, a), AO = minus(a), ACB = orth(AB, AC), ABC = orth(AC, AB);
        if (dot(ACB, AO) > 0) {
          if (dot(AB, AO) > 0) {
            set(direction, ACB);
            simplex.shift();
          } else {
            set(direction, AO);
            simplex.splice(0, 2);
          }
        } else if (dot(ABC, AO) > 0) {
          if (dot(AC, AO) > 0) {
            set(direction, ABC);
            simplex.splice(1, 1);
          } else {
            set(direction, AO);
            simplex.splice(0, 2);
          }
        } else return true;
      }
      return false;
    }
    function minus(v) {
      return [-v[0], -v[1]];
    }
    function sub(v1, v2) {
      return [v1[0] - v2[0], v1[1] - v2[1]];
    }
    function dot(v1, v2) {
      return v1[0] * v2[0] + v1[1] * v2[1];
    }
    function orth(v, from) {
      var o = [-v[1], v[0]];
      return dot(o, minus(from)) < 0 ? minus(o) : o;
    }
    function gatherPoints(pathData) {
      const points = { list: [], minX: 0, minY: 0, maxX: 0, maxY: 0 };
      const addPoint = (path, point) => {
        if (!path.list.length || point[1] > path.list[path.maxY][1]) {
          path.maxY = path.list.length;
          points.maxY = points.list.length ? Math.max(point[1], points.maxY) : point[1];
        }
        if (!path.list.length || point[0] > path.list[path.maxX][0]) {
          path.maxX = path.list.length;
          points.maxX = points.list.length ? Math.max(point[0], points.maxX) : point[0];
        }
        if (!path.list.length || point[1] < path.list[path.minY][1]) {
          path.minY = path.list.length;
          points.minY = points.list.length ? Math.min(point[1], points.minY) : point[1];
        }
        if (!path.list.length || point[0] < path.list[path.minX][0]) {
          path.minX = path.list.length;
          points.minX = points.list.length ? Math.min(point[0], points.minX) : point[0];
        }
        path.list.push(point);
      };
      for (let i = 0; i < pathData.length; i += 1) {
        const pathDataItem = pathData[i];
        let subPath = points.list.length === 0 ? { list: [], minX: 0, minY: 0, maxX: 0, maxY: 0 } : points.list[points.list.length - 1];
        let prev = i === 0 ? null : pathData[i - 1];
        let basePoint = subPath.list.length === 0 ? null : subPath.list[subPath.list.length - 1];
        let data = pathDataItem.args;
        let ctrlPoint = basePoint;
        const toAbsolute = (n, i2) => n + (basePoint == null ? 0 : basePoint[i2 % 2]);
        switch (pathDataItem.command) {
          case "M":
            subPath = { list: [], minX: 0, minY: 0, maxX: 0, maxY: 0 };
            points.list.push(subPath);
            break;
          case "H":
            if (basePoint != null) {
              addPoint(subPath, [data[0], basePoint[1]]);
            }
            break;
          case "V":
            if (basePoint != null) {
              addPoint(subPath, [basePoint[0], data[0]]);
            }
            break;
          case "Q":
            addPoint(subPath, data.slice(0, 2));
            prevCtrlPoint = [data[2] - data[0], data[3] - data[1]];
            break;
          case "T":
            if (basePoint != null && prev != null && (prev.command == "Q" || prev.command == "T")) {
              ctrlPoint = [
                basePoint[0] + prevCtrlPoint[0],
                basePoint[1] + prevCtrlPoint[1]
              ];
              addPoint(subPath, ctrlPoint);
              prevCtrlPoint = [data[0] - ctrlPoint[0], data[1] - ctrlPoint[1]];
            }
            break;
          case "C":
            if (basePoint != null) {
              addPoint(subPath, [
                0.5 * (basePoint[0] + data[0]),
                0.5 * (basePoint[1] + data[1])
              ]);
            }
            addPoint(subPath, [
              0.5 * (data[0] + data[2]),
              0.5 * (data[1] + data[3])
            ]);
            addPoint(subPath, [
              0.5 * (data[2] + data[4]),
              0.5 * (data[3] + data[5])
            ]);
            prevCtrlPoint = [data[4] - data[2], data[5] - data[3]];
            break;
          case "S":
            if (basePoint != null && prev != null && (prev.command == "C" || prev.command == "S")) {
              addPoint(subPath, [
                basePoint[0] + 0.5 * prevCtrlPoint[0],
                basePoint[1] + 0.5 * prevCtrlPoint[1]
              ]);
              ctrlPoint = [
                basePoint[0] + prevCtrlPoint[0],
                basePoint[1] + prevCtrlPoint[1]
              ];
            }
            if (ctrlPoint != null) {
              addPoint(subPath, [
                0.5 * (ctrlPoint[0] + data[0]),
                0.5 * (ctrlPoint[1] + data[1])
              ]);
            }
            addPoint(subPath, [
              0.5 * (data[0] + data[2]),
              0.5 * (data[1] + data[3])
            ]);
            prevCtrlPoint = [data[2] - data[0], data[3] - data[1]];
            break;
          case "A":
            if (basePoint != null) {
              var curves = a2c.apply(0, basePoint.concat(data));
              for (var cData; (cData = curves.splice(0, 6).map(toAbsolute)).length; ) {
                if (basePoint != null) {
                  addPoint(subPath, [
                    0.5 * (basePoint[0] + cData[0]),
                    0.5 * (basePoint[1] + cData[1])
                  ]);
                }
                addPoint(subPath, [
                  0.5 * (cData[0] + cData[2]),
                  0.5 * (cData[1] + cData[3])
                ]);
                addPoint(subPath, [
                  0.5 * (cData[2] + cData[4]),
                  0.5 * (cData[3] + cData[5])
                ]);
                if (curves.length) addPoint(subPath, basePoint = cData.slice(-2));
              }
            }
            break;
        }
        if (data.length >= 2) addPoint(subPath, data.slice(-2));
      }
      return points;
    }
    function convexHull(points) {
      points.list.sort(function(a, b) {
        return a[0] == b[0] ? a[1] - b[1] : a[0] - b[0];
      });
      var lower = [], minY = 0, bottom = 0;
      for (let i = 0; i < points.list.length; i++) {
        while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points.list[i]) <= 0) {
          lower.pop();
        }
        if (points.list[i][1] < points.list[minY][1]) {
          minY = i;
          bottom = lower.length;
        }
        lower.push(points.list[i]);
      }
      var upper = [], maxY = points.list.length - 1, top = 0;
      for (let i = points.list.length; i--; ) {
        while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points.list[i]) <= 0) {
          upper.pop();
        }
        if (points.list[i][1] > points.list[maxY][1]) {
          maxY = i;
          top = upper.length;
        }
        upper.push(points.list[i]);
      }
      upper.pop();
      lower.pop();
      const hullList = lower.concat(upper);
      const hull = {
        list: hullList,
        minX: 0,
        // by sorting
        maxX: lower.length,
        minY: bottom,
        maxY: (lower.length + top) % hullList.length
      };
      return hull;
    }
    function cross(o, a, b) {
      return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
    }
    var a2c = (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) => {
      const _120 = Math.PI * 120 / 180;
      const rad = Math.PI / 180 * (+angle || 0);
      let res = [];
      const rotateX = (x3, y3, rad2) => {
        return x3 * Math.cos(rad2) - y3 * Math.sin(rad2);
      };
      const rotateY = (x3, y3, rad2) => {
        return x3 * Math.sin(rad2) + y3 * Math.cos(rad2);
      };
      if (!recursive) {
        x1 = rotateX(x1, y1, -rad);
        y1 = rotateY(x1, y1, -rad);
        x2 = rotateX(x2, y2, -rad);
        y2 = rotateY(x2, y2, -rad);
        var x = (x1 - x2) / 2, y = (y1 - y2) / 2;
        var h = x * x / (rx * rx) + y * y / (ry * ry);
        if (h > 1) {
          h = Math.sqrt(h);
          rx = h * rx;
          ry = h * ry;
        }
        var rx2 = rx * rx;
        var ry2 = ry * ry;
        var k = (large_arc_flag == sweep_flag ? -1 : 1) * Math.sqrt(
          Math.abs(
            (rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)
          )
        );
        var cx = k * rx * y / ry + (x1 + x2) / 2;
        var cy = k * -ry * x / rx + (y1 + y2) / 2;
        var f1 = Math.asin(Number(((y1 - cy) / ry).toFixed(9)));
        var f2 = Math.asin(Number(((y2 - cy) / ry).toFixed(9)));
        f1 = x1 < cx ? Math.PI - f1 : f1;
        f2 = x2 < cx ? Math.PI - f2 : f2;
        f1 < 0 && (f1 = Math.PI * 2 + f1);
        f2 < 0 && (f2 = Math.PI * 2 + f2);
        if (sweep_flag && f1 > f2) {
          f1 = f1 - Math.PI * 2;
        }
        if (!sweep_flag && f2 > f1) {
          f2 = f2 - Math.PI * 2;
        }
      } else {
        f1 = recursive[0];
        f2 = recursive[1];
        cx = recursive[2];
        cy = recursive[3];
      }
      var df = f2 - f1;
      if (Math.abs(df) > _120) {
        var f2old = f2, x2old = x2, y2old = y2;
        f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);
        x2 = cx + rx * Math.cos(f2);
        y2 = cy + ry * Math.sin(f2);
        res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [
          f2,
          f2old,
          cx,
          cy
        ]);
      }
      df = f2 - f1;
      var c1 = Math.cos(f1), s1 = Math.sin(f1), c2 = Math.cos(f2), s2 = Math.sin(f2), t = Math.tan(df / 4), hx = 4 / 3 * rx * t, hy = 4 / 3 * ry * t, m = [
        -hx * s1,
        hy * c1,
        x2 + hx * s2 - x1,
        y2 - hy * c2 - y1,
        x2 - x1,
        y2 - y1
      ];
      if (recursive) {
        return m.concat(res);
      } else {
        res = m.concat(res);
        var newres = [];
        for (var i = 0, n = res.length; i < n; i++) {
          newres[i] = i % 2 ? rotateY(res[i - 1], res[i], rad) : rotateX(res[i], res[i + 1], rad);
        }
        return newres;
      }
    };
  }
});

// src/svgo/plugins/_transforms.js
var require_transforms = __commonJS({
  "src/svgo/plugins/_transforms.js"(exports) {
    "use strict";
    var regTransformTypes = /matrix|translate|scale|rotate|skewX|skewY/;
    var regTransformSplit = /\s*(matrix|translate|scale|rotate|skewX|skewY)\s*\(\s*(.+?)\s*\)[\s,]*/;
    var regNumericValues = /[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?/g;
    exports.transform2js = (transformString) => {
      const transforms = [];
      let current = null;
      for (const item of transformString.split(regTransformSplit)) {
        var num;
        if (item) {
          if (regTransformTypes.test(item)) {
            current = { name: item, data: [] };
            transforms.push(current);
          } else {
            while (num = regNumericValues.exec(item)) {
              num = Number(num);
              if (current != null) {
                current.data.push(num);
              }
            }
          }
        }
      }
      return current == null || current.data.length == 0 ? [] : transforms;
    };
    exports.transformsMultiply = (transforms) => {
      const matrixData = transforms.map((transform) => {
        if (transform.name === "matrix") {
          return transform.data;
        }
        return transformToMatrix(transform);
      });
      const matrixTransform = {
        name: "matrix",
        data: matrixData.length > 0 ? matrixData.reduce(multiplyTransformMatrices) : []
      };
      return matrixTransform;
    };
    var mth = {
      rad: (deg) => {
        return deg * Math.PI / 180;
      },
      deg: (rad) => {
        return rad * 180 / Math.PI;
      },
      cos: (deg) => {
        return Math.cos(mth.rad(deg));
      },
      acos: (val, floatPrecision) => {
        return Number(mth.deg(Math.acos(val)).toFixed(floatPrecision));
      },
      sin: (deg) => {
        return Math.sin(mth.rad(deg));
      },
      asin: (val, floatPrecision) => {
        return Number(mth.deg(Math.asin(val)).toFixed(floatPrecision));
      },
      tan: (deg) => {
        return Math.tan(mth.rad(deg));
      },
      atan: (val, floatPrecision) => {
        return Number(mth.deg(Math.atan(val)).toFixed(floatPrecision));
      }
    };
    exports.matrixToTransform = (transform, params) => {
      let floatPrecision = params.floatPrecision;
      let data = transform.data;
      let transforms = [];
      let sx = Number(
        Math.hypot(data[0], data[1]).toFixed(params.transformPrecision)
      );
      let sy = Number(
        ((data[0] * data[3] - data[1] * data[2]) / sx).toFixed(
          params.transformPrecision
        )
      );
      let colsSum = data[0] * data[2] + data[1] * data[3];
      let rowsSum = data[0] * data[1] + data[2] * data[3];
      let scaleBefore = rowsSum != 0 || sx == sy;
      if (data[4] || data[5]) {
        transforms.push({
          name: "translate",
          data: data.slice(4, data[5] ? 6 : 5)
        });
      }
      if (!data[1] && data[2]) {
        transforms.push({
          name: "skewX",
          data: [mth.atan(data[2] / sy, floatPrecision)]
        });
      } else if (data[1] && !data[2]) {
        transforms.push({
          name: "skewY",
          data: [mth.atan(data[1] / data[0], floatPrecision)]
        });
        sx = data[0];
        sy = data[3];
      } else if (!colsSum || sx == 1 && sy == 1 || !scaleBefore) {
        if (!scaleBefore) {
          sx = (data[0] < 0 ? -1 : 1) * Math.hypot(data[0], data[2]);
          sy = (data[3] < 0 ? -1 : 1) * Math.hypot(data[1], data[3]);
          transforms.push({ name: "scale", data: [sx, sy] });
        }
        var angle = Math.min(Math.max(-1, data[0] / sx), 1), rotate = [
          mth.acos(angle, floatPrecision) * ((scaleBefore ? 1 : sy) * data[1] < 0 ? -1 : 1)
        ];
        if (rotate[0]) transforms.push({ name: "rotate", data: rotate });
        if (rowsSum && colsSum)
          transforms.push({
            name: "skewX",
            data: [mth.atan(colsSum / (sx * sx), floatPrecision)]
          });
        if (rotate[0] && (data[4] || data[5])) {
          transforms.shift();
          var cos = data[0] / sx, sin = data[1] / (scaleBefore ? sx : sy), x = data[4] * (scaleBefore ? 1 : sy), y = data[5] * (scaleBefore ? 1 : sx), denom = (Math.pow(1 - cos, 2) + Math.pow(sin, 2)) * (scaleBefore ? 1 : sx * sy);
          rotate.push(((1 - cos) * x - sin * y) / denom);
          rotate.push(((1 - cos) * y + sin * x) / denom);
        }
      } else if (data[1] || data[2]) {
        return [transform];
      }
      if (scaleBefore && (sx != 1 || sy != 1) || !transforms.length)
        transforms.push({
          name: "scale",
          data: sx == sy ? [sx] : [sx, sy]
        });
      return transforms;
    };
    var transformToMatrix = (transform) => {
      if (transform.name === "matrix") {
        return transform.data;
      }
      switch (transform.name) {
        case "translate":
          return [1, 0, 0, 1, transform.data[0], transform.data[1] || 0];
        case "scale":
          return [
            transform.data[0],
            0,
            0,
            transform.data[1] || transform.data[0],
            0,
            0
          ];
        case "rotate":
          var cos = mth.cos(transform.data[0]), sin = mth.sin(transform.data[0]), cx = transform.data[1] || 0, cy = transform.data[2] || 0;
          return [
            cos,
            sin,
            -sin,
            cos,
            (1 - cos) * cx + sin * cy,
            (1 - cos) * cy - sin * cx
          ];
        case "skewX":
          return [1, 0, mth.tan(transform.data[0]), 1, 0, 0];
        case "skewY":
          return [1, mth.tan(transform.data[0]), 0, 1, 0, 0];
        default:
          throw Error(`Unknown transform ${transform.name}`);
      }
    };
    exports.transformArc = (cursor, arc, transform) => {
      const x = arc[5] - cursor[0];
      const y = arc[6] - cursor[1];
      let a = arc[0];
      let b = arc[1];
      const rot = arc[2] * Math.PI / 180;
      const cos = Math.cos(rot);
      const sin = Math.sin(rot);
      if (a > 0 && b > 0) {
        let h = Math.pow(x * cos + y * sin, 2) / (4 * a * a) + Math.pow(y * cos - x * sin, 2) / (4 * b * b);
        if (h > 1) {
          h = Math.sqrt(h);
          a *= h;
          b *= h;
        }
      }
      const ellipse = [a * cos, a * sin, -b * sin, b * cos, 0, 0];
      const m = multiplyTransformMatrices(transform, ellipse);
      const lastCol = m[2] * m[2] + m[3] * m[3];
      const squareSum = m[0] * m[0] + m[1] * m[1] + lastCol;
      const root = Math.hypot(m[0] - m[3], m[1] + m[2]) * Math.hypot(m[0] + m[3], m[1] - m[2]);
      if (!root) {
        arc[0] = arc[1] = Math.sqrt(squareSum / 2);
        arc[2] = 0;
      } else {
        const majorAxisSqr = (squareSum + root) / 2;
        const minorAxisSqr = (squareSum - root) / 2;
        const major = Math.abs(majorAxisSqr - lastCol) > 1e-6;
        const sub = (major ? majorAxisSqr : minorAxisSqr) - lastCol;
        const rowsSum = m[0] * m[2] + m[1] * m[3];
        const term1 = m[0] * sub + m[2] * rowsSum;
        const term2 = m[1] * sub + m[3] * rowsSum;
        arc[0] = Math.sqrt(majorAxisSqr);
        arc[1] = Math.sqrt(minorAxisSqr);
        arc[2] = ((major ? term2 < 0 : term1 > 0) ? -1 : 1) * Math.acos((major ? term1 : term2) / Math.hypot(term1, term2)) * 180 / Math.PI;
      }
      if (transform[0] < 0 !== transform[3] < 0) {
        arc[4] = 1 - arc[4];
      }
      return arc;
    };
    var multiplyTransformMatrices = (a, b) => {
      return [
        a[0] * b[0] + a[2] * b[1],
        a[1] * b[0] + a[3] * b[1],
        a[0] * b[2] + a[2] * b[3],
        a[1] * b[2] + a[3] * b[3],
        a[0] * b[4] + a[2] * b[5] + a[4],
        a[1] * b[4] + a[3] * b[5] + a[5]
      ];
    };
  }
});

// src/svgo/plugins/applyTransforms.js
var require_applyTransforms = __commonJS({
  "src/svgo/plugins/applyTransforms.js"(exports) {
    "use strict";
    var { collectStylesheet, computeStyle } = require_style();
    var {
      transformsMultiply,
      transform2js,
      transformArc
    } = require_transforms();
    var { path2js } = require_path2();
    var { removeLeadingZero } = require_tools();
    var { referencesProps, attrsGroupsDefaults } = require_collections();
    var regNumericValues = /[-+]?(\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?/g;
    var applyTransforms = (root, params) => {
      const stylesheet = collectStylesheet(root);
      return {
        element: {
          enter: (node) => {
            const computedStyle = computeStyle(stylesheet, node);
            if (node.attributes.d == null) {
              return;
            }
            if (node.attributes.id != null) {
              return;
            }
            if (node.attributes.transform == null || node.attributes.transform === "" || // styles are not considered when applying transform
            // can be fixed properly with new style engine
            node.attributes.style != null || Object.entries(node.attributes).some(
              ([name, value]) => referencesProps.includes(name) && value.includes("url(")
            )) {
              return;
            }
            const matrix = transformsMultiply(
              transform2js(node.attributes.transform)
            );
            const stroke = computedStyle.stroke != null && computedStyle.stroke.type === "static" ? computedStyle.stroke.value : null;
            const strokeWidth = computedStyle["stroke-width"] != null && computedStyle["stroke-width"].type === "static" ? computedStyle["stroke-width"].value : null;
            const transformPrecision = params.transformPrecision;
            if (computedStyle.stroke != null && computedStyle.stroke.type === "dynamic" || computedStyle.strokeWidth != null && computedStyle["stroke-width"].type === "dynamic") {
              return;
            }
            const scale = Number(
              Math.sqrt(
                matrix.data[0] * matrix.data[0] + matrix.data[1] * matrix.data[1]
              ).toFixed(transformPrecision)
            );
            if (stroke && stroke != "none") {
              if (params.applyTransformsStroked === false) {
                return;
              }
              if ((matrix.data[0] !== matrix.data[3] || matrix.data[1] !== -matrix.data[2]) && (matrix.data[0] !== -matrix.data[3] || matrix.data[1] !== matrix.data[2])) {
                return;
              }
              if (scale !== 1) {
                if (node.attributes["vector-effect"] !== "non-scaling-stroke") {
                  node.attributes["stroke-width"] = (strokeWidth || attrsGroupsDefaults.presentation["stroke-width"]).trim().replace(
                    regNumericValues,
                    (num) => removeLeadingZero(Number(num) * scale)
                  );
                  if (node.attributes["stroke-dashoffset"] != null) {
                    node.attributes["stroke-dashoffset"] = node.attributes["stroke-dashoffset"].trim().replace(
                      regNumericValues,
                      (num) => removeLeadingZero(Number(num) * scale)
                    );
                  }
                  if (node.attributes["stroke-dasharray"] != null) {
                    node.attributes["stroke-dasharray"] = node.attributes["stroke-dasharray"].trim().replace(
                      regNumericValues,
                      (num) => removeLeadingZero(Number(num) * scale)
                    );
                  }
                }
              }
            }
            const pathData = path2js(node);
            applyMatrixToPathData(pathData, matrix.data);
            delete node.attributes.transform;
          }
        }
      };
    };
    exports.applyTransforms = applyTransforms;
    var transformAbsolutePoint = (matrix, x, y) => {
      const newX = matrix[0] * x + matrix[2] * y + matrix[4];
      const newY = matrix[1] * x + matrix[3] * y + matrix[5];
      return [newX, newY];
    };
    var transformRelativePoint = (matrix, x, y) => {
      const newX = matrix[0] * x + matrix[2] * y;
      const newY = matrix[1] * x + matrix[3] * y;
      return [newX, newY];
    };
    var applyMatrixToPathData = (pathData, matrix) => {
      const start = [0, 0];
      const cursor = [0, 0];
      for (const pathItem of pathData) {
        let { command, args } = pathItem;
        if (command === "M") {
          cursor[0] = args[0];
          cursor[1] = args[1];
          start[0] = cursor[0];
          start[1] = cursor[1];
          const [x, y] = transformAbsolutePoint(matrix, args[0], args[1]);
          args[0] = x;
          args[1] = y;
        }
        if (command === "m") {
          cursor[0] += args[0];
          cursor[1] += args[1];
          start[0] = cursor[0];
          start[1] = cursor[1];
          const [x, y] = transformRelativePoint(matrix, args[0], args[1]);
          args[0] = x;
          args[1] = y;
        }
        if (command === "H") {
          command = "L";
          args = [args[0], cursor[1]];
        }
        if (command === "h") {
          command = "l";
          args = [args[0], 0];
        }
        if (command === "V") {
          command = "L";
          args = [cursor[0], args[0]];
        }
        if (command === "v") {
          command = "l";
          args = [0, args[0]];
        }
        if (command === "L") {
          cursor[0] = args[0];
          cursor[1] = args[1];
          const [x, y] = transformAbsolutePoint(matrix, args[0], args[1]);
          args[0] = x;
          args[1] = y;
        }
        if (command === "l") {
          cursor[0] += args[0];
          cursor[1] += args[1];
          const [x, y] = transformRelativePoint(matrix, args[0], args[1]);
          args[0] = x;
          args[1] = y;
        }
        if (command === "C") {
          cursor[0] = args[4];
          cursor[1] = args[5];
          const [x1, y1] = transformAbsolutePoint(matrix, args[0], args[1]);
          const [x2, y2] = transformAbsolutePoint(matrix, args[2], args[3]);
          const [x, y] = transformAbsolutePoint(matrix, args[4], args[5]);
          args[0] = x1;
          args[1] = y1;
          args[2] = x2;
          args[3] = y2;
          args[4] = x;
          args[5] = y;
        }
        if (command === "c") {
          cursor[0] += args[4];
          cursor[1] += args[5];
          const [x1, y1] = transformRelativePoint(matrix, args[0], args[1]);
          const [x2, y2] = transformRelativePoint(matrix, args[2], args[3]);
          const [x, y] = transformRelativePoint(matrix, args[4], args[5]);
          args[0] = x1;
          args[1] = y1;
          args[2] = x2;
          args[3] = y2;
          args[4] = x;
          args[5] = y;
        }
        if (command === "S") {
          cursor[0] = args[2];
          cursor[1] = args[3];
          const [x2, y2] = transformAbsolutePoint(matrix, args[0], args[1]);
          const [x, y] = transformAbsolutePoint(matrix, args[2], args[3]);
          args[0] = x2;
          args[1] = y2;
          args[2] = x;
          args[3] = y;
        }
        if (command === "s") {
          cursor[0] += args[2];
          cursor[1] += args[3];
          const [x2, y2] = transformRelativePoint(matrix, args[0], args[1]);
          const [x, y] = transformRelativePoint(matrix, args[2], args[3]);
          args[0] = x2;
          args[1] = y2;
          args[2] = x;
          args[3] = y;
        }
        if (command === "Q") {
          cursor[0] = args[2];
          cursor[1] = args[3];
          const [x1, y1] = transformAbsolutePoint(matrix, args[0], args[1]);
          const [x, y] = transformAbsolutePoint(matrix, args[2], args[3]);
          args[0] = x1;
          args[1] = y1;
          args[2] = x;
          args[3] = y;
        }
        if (command === "q") {
          cursor[0] += args[2];
          cursor[1] += args[3];
          const [x1, y1] = transformRelativePoint(matrix, args[0], args[1]);
          const [x, y] = transformRelativePoint(matrix, args[2], args[3]);
          args[0] = x1;
          args[1] = y1;
          args[2] = x;
          args[3] = y;
        }
        if (command === "T") {
          cursor[0] = args[0];
          cursor[1] = args[1];
          const [x, y] = transformAbsolutePoint(matrix, args[0], args[1]);
          args[0] = x;
          args[1] = y;
        }
        if (command === "t") {
          cursor[0] += args[0];
          cursor[1] += args[1];
          const [x, y] = transformRelativePoint(matrix, args[0], args[1]);
          args[0] = x;
          args[1] = y;
        }
        if (command === "A") {
          transformArc(cursor, args, matrix);
          cursor[0] = args[5];
          cursor[1] = args[6];
          if (Math.abs(args[2]) > 80) {
            const a = args[0];
            const rotation = args[2];
            args[0] = args[1];
            args[1] = a;
            args[2] = rotation + (rotation > 0 ? -90 : 90);
          }
          const [x, y] = transformAbsolutePoint(matrix, args[5], args[6]);
          args[5] = x;
          args[6] = y;
        }
        if (command === "a") {
          transformArc([0, 0], args, matrix);
          cursor[0] += args[5];
          cursor[1] += args[6];
          if (Math.abs(args[2]) > 80) {
            const a = args[0];
            const rotation = args[2];
            args[0] = args[1];
            args[1] = a;
            args[2] = rotation + (rotation > 0 ? -90 : 90);
          }
          const [x, y] = transformRelativePoint(matrix, args[5], args[6]);
          args[5] = x;
          args[6] = y;
        }
        if (command === "z" || command === "Z") {
          cursor[0] = start[0];
          cursor[1] = start[1];
        }
        pathItem.command = command;
        pathItem.args = args;
      }
    };
  }
});

// src/svgo/plugins/convertPathData.js
var require_convertPathData = __commonJS({
  "src/svgo/plugins/convertPathData.js"(exports) {
    "use strict";
    var { collectStylesheet, computeStyle } = require_style();
    var { visit } = require_xast();
    var { pathElems } = require_collections();
    var { path2js, js2path } = require_path2();
    var { applyTransforms } = require_applyTransforms();
    var { cleanupOutData } = require_tools();
    exports.name = "convertPathData";
    exports.description = "optimizes path data: writes in shorter form, applies transformations";
    var roundData;
    var precision;
    var error;
    var arcThreshold;
    var arcTolerance;
    exports.fn = (root, params) => {
      const {
        // TODO convert to separate plugin in v3
        applyTransforms: _applyTransforms = true,
        applyTransformsStroked = true,
        makeArcs = {
          threshold: 2.5,
          // coefficient of rounding error
          tolerance: 0.5
          // percentage of radius
        },
        straightCurves = true,
        lineShorthands = true,
        curveSmoothShorthands = true,
        floatPrecision = 3,
        transformPrecision = 5,
        removeUseless = true,
        collapseRepeated = true,
        utilizeAbsolute = true,
        leadingZero = true,
        negativeExtraSpace = true,
        noSpaceAfterFlags = false,
        // a20 60 45 0 1 30 20 → a20 60 45 0130 20
        forceAbsolutePath = false
      } = params;
      const newParams = {
        applyTransforms: _applyTransforms,
        applyTransformsStroked,
        makeArcs,
        straightCurves,
        lineShorthands,
        curveSmoothShorthands,
        floatPrecision,
        transformPrecision,
        removeUseless,
        collapseRepeated,
        utilizeAbsolute,
        leadingZero,
        negativeExtraSpace,
        noSpaceAfterFlags,
        forceAbsolutePath
      };
      if (_applyTransforms) {
        visit(
          root,
          // @ts-ignore
          applyTransforms(root, {
            transformPrecision,
            applyTransformsStroked
          })
        );
      }
      const stylesheet = collectStylesheet(root);
      return {
        element: {
          enter: (node) => {
            if (pathElems.includes(node.name) && node.attributes.d != null) {
              const computedStyle = computeStyle(stylesheet, node);
              precision = floatPrecision;
              error = precision !== false ? +Math.pow(0.1, precision).toFixed(precision) : 0.01;
              roundData = precision > 0 && precision < 20 ? strongRound : round;
              if (makeArcs) {
                arcThreshold = makeArcs.threshold;
                arcTolerance = makeArcs.tolerance;
              }
              const hasMarkerMid = computedStyle["marker-mid"] != null;
              const maybeHasStroke = computedStyle.stroke && (computedStyle.stroke.type === "dynamic" || computedStyle.stroke.value !== "none");
              const maybeHasLinecap = computedStyle["stroke-linecap"] && (computedStyle["stroke-linecap"].type === "dynamic" || computedStyle["stroke-linecap"].value !== "butt");
              const maybeHasStrokeAndLinecap = maybeHasStroke && maybeHasLinecap;
              var data = path2js(node);
              if (data.length) {
                convertToRelative(data);
                data = filters(data, newParams, {
                  maybeHasStrokeAndLinecap,
                  hasMarkerMid
                });
                if (utilizeAbsolute) {
                  data = convertToMixed(data, newParams);
                }
                js2path(node, data, newParams);
              }
            }
          }
        }
      };
    };
    var convertToRelative = (pathData) => {
      let start = [0, 0];
      let cursor = [0, 0];
      let prevCoords = [0, 0];
      for (let i = 0; i < pathData.length; i += 1) {
        const pathItem = pathData[i];
        let { command, args } = pathItem;
        if (command === "m") {
          cursor[0] += args[0];
          cursor[1] += args[1];
          start[0] = cursor[0];
          start[1] = cursor[1];
        }
        if (command === "M") {
          if (i !== 0) {
            command = "m";
          }
          args[0] -= cursor[0];
          args[1] -= cursor[1];
          cursor[0] += args[0];
          cursor[1] += args[1];
          start[0] = cursor[0];
          start[1] = cursor[1];
        }
        if (command === "l") {
          cursor[0] += args[0];
          cursor[1] += args[1];
        }
        if (command === "L") {
          command = "l";
          args[0] -= cursor[0];
          args[1] -= cursor[1];
          cursor[0] += args[0];
          cursor[1] += args[1];
        }
        if (command === "h") {
          cursor[0] += args[0];
        }
        if (command === "H") {
          command = "h";
          args[0] -= cursor[0];
          cursor[0] += args[0];
        }
        if (command === "v") {
          cursor[1] += args[0];
        }
        if (command === "V") {
          command = "v";
          args[0] -= cursor[1];
          cursor[1] += args[0];
        }
        if (command === "c") {
          cursor[0] += args[4];
          cursor[1] += args[5];
        }
        if (command === "C") {
          command = "c";
          args[0] -= cursor[0];
          args[1] -= cursor[1];
          args[2] -= cursor[0];
          args[3] -= cursor[1];
          args[4] -= cursor[0];
          args[5] -= cursor[1];
          cursor[0] += args[4];
          cursor[1] += args[5];
        }
        if (command === "s") {
          cursor[0] += args[2];
          cursor[1] += args[3];
        }
        if (command === "S") {
          command = "s";
          args[0] -= cursor[0];
          args[1] -= cursor[1];
          args[2] -= cursor[0];
          args[3] -= cursor[1];
          cursor[0] += args[2];
          cursor[1] += args[3];
        }
        if (command === "q") {
          cursor[0] += args[2];
          cursor[1] += args[3];
        }
        if (command === "Q") {
          command = "q";
          args[0] -= cursor[0];
          args[1] -= cursor[1];
          args[2] -= cursor[0];
          args[3] -= cursor[1];
          cursor[0] += args[2];
          cursor[1] += args[3];
        }
        if (command === "t") {
          cursor[0] += args[0];
          cursor[1] += args[1];
        }
        if (command === "T") {
          command = "t";
          args[0] -= cursor[0];
          args[1] -= cursor[1];
          cursor[0] += args[0];
          cursor[1] += args[1];
        }
        if (command === "a") {
          cursor[0] += args[5];
          cursor[1] += args[6];
        }
        if (command === "A") {
          command = "a";
          args[5] -= cursor[0];
          args[6] -= cursor[1];
          cursor[0] += args[5];
          cursor[1] += args[6];
        }
        if (command === "Z" || command === "z") {
          cursor[0] = start[0];
          cursor[1] = start[1];
        }
        pathItem.command = command;
        pathItem.args = args;
        pathItem.base = prevCoords;
        pathItem.coords = [cursor[0], cursor[1]];
        prevCoords = pathItem.coords;
      }
      return pathData;
    };
    function filters(path, params, { maybeHasStrokeAndLinecap, hasMarkerMid }) {
      var stringify = data2Path.bind(null, params), relSubpoint = [0, 0], pathBase = [0, 0], prev = {};
      path = path.filter(function(item, index, path2) {
        let command = item.command;
        let data = item.args;
        let next = path2[index + 1];
        if (command !== "Z" && command !== "z") {
          var sdata = data, circle;
          if (command === "s") {
            sdata = [0, 0].concat(data);
            var pdata = prev.args, n = pdata.length;
            sdata[0] = pdata[n - 2] - pdata[n - 4];
            sdata[1] = pdata[n - 1] - pdata[n - 3];
          }
          if (params.makeArcs && (command == "c" || command == "s") && isConvex(sdata) && (circle = findCircle(sdata))) {
            var r = roundData([circle.radius])[0], angle = findArcAngle(sdata, circle), sweep = sdata[5] * sdata[0] - sdata[4] * sdata[1] > 0 ? 1 : 0, arc = {
              command: "a",
              args: [r, r, 0, 0, sweep, sdata[4], sdata[5]],
              // @ts-ignore
              coords: item.coords.slice(),
              // @ts-ignore
              base: item.base
            }, output = [arc], relCenter = [
              circle.center[0] - sdata[4],
              circle.center[1] - sdata[5]
            ], relCircle = { center: relCenter, radius: circle.radius }, arcCurves = [item], hasPrev = 0, suffix = "", nextLonghand;
            if (
              // @ts-ignore
              prev.command == "c" && // @ts-ignore
              isConvex(prev.args) && // @ts-ignore
              isArcPrev(prev.args, circle) || // @ts-ignore
              prev.command == "a" && prev.sdata && isArcPrev(prev.sdata, circle)
            ) {
              arcCurves.unshift(prev);
              arc.base = prev.base;
              arc.args[5] = arc.coords[0] - arc.base[0];
              arc.args[6] = arc.coords[1] - arc.base[1];
              var prevData = prev.command == "a" ? prev.sdata : prev.args;
              var prevAngle = findArcAngle(prevData, {
                center: [
                  prevData[4] + circle.center[0],
                  prevData[5] + circle.center[1]
                ],
                radius: circle.radius
              });
              angle += prevAngle;
              if (angle > Math.PI) arc.args[3] = 1;
              hasPrev = 1;
            }
            for (var j = index; (next = path2[++j]) && ~"cs".indexOf(next.command); ) {
              var nextData = next.args;
              if (next.command == "s") {
                nextLonghand = makeLonghand(
                  { command: "s", args: next.args.slice() },
                  path2[j - 1].args
                );
                nextData = nextLonghand.args;
                nextLonghand.args = nextData.slice(0, 2);
                suffix = stringify([nextLonghand]);
              }
              if (isConvex(nextData) && isArc(nextData, relCircle)) {
                angle += findArcAngle(nextData, relCircle);
                if (angle - 2 * Math.PI > 1e-3) break;
                if (angle > Math.PI) arc.args[3] = 1;
                arcCurves.push(next);
                if (2 * Math.PI - angle > 1e-3) {
                  arc.coords = next.coords;
                  arc.args[5] = arc.coords[0] - arc.base[0];
                  arc.args[6] = arc.coords[1] - arc.base[1];
                } else {
                  arc.args[5] = 2 * (relCircle.center[0] - nextData[4]);
                  arc.args[6] = 2 * (relCircle.center[1] - nextData[5]);
                  arc.coords = [
                    // @ts-ignore
                    arc.base[0] + arc.args[5],
                    // @ts-ignore
                    arc.base[1] + arc.args[6]
                  ];
                  arc = {
                    command: "a",
                    args: [
                      r,
                      r,
                      0,
                      0,
                      sweep,
                      // @ts-ignore
                      next.coords[0] - arc.coords[0],
                      // @ts-ignore
                      next.coords[1] - arc.coords[1]
                    ],
                    // @ts-ignore
                    coords: next.coords,
                    // @ts-ignore
                    base: arc.coords
                  };
                  output.push(arc);
                  j++;
                  break;
                }
                relCenter[0] -= nextData[4];
                relCenter[1] -= nextData[5];
              } else break;
            }
            if ((stringify(output) + suffix).length < stringify(arcCurves).length) {
              if (path2[j] && path2[j].command == "s") {
                makeLonghand(path2[j], path2[j - 1].args);
              }
              if (hasPrev) {
                var prevArc = output.shift();
                roundData(prevArc.args);
                relSubpoint[0] += prevArc.args[5] - prev.args[prev.args.length - 2];
                relSubpoint[1] += prevArc.args[6] - prev.args[prev.args.length - 1];
                prev.command = "a";
                prev.args = prevArc.args;
                item.base = prev.coords = prevArc.coords;
              }
              arc = output.shift();
              if (arcCurves.length == 1) {
                item.sdata = sdata.slice();
              } else if (arcCurves.length - 1 - hasPrev > 0) {
                path2.splice.apply(
                  path2,
                  // @ts-ignore
                  [index + 1, arcCurves.length - 1 - hasPrev].concat(output)
                );
              }
              if (!arc) return false;
              command = "a";
              data = arc.args;
              item.coords = arc.coords;
            }
          }
          if (precision !== false) {
            if (command === "m" || command === "l" || command === "t" || command === "q" || command === "s" || command === "c") {
              for (var i = data.length; i--; ) {
                data[i] += item.base[i % 2] - relSubpoint[i % 2];
              }
            } else if (command == "h") {
              data[0] += item.base[0] - relSubpoint[0];
            } else if (command == "v") {
              data[0] += item.base[1] - relSubpoint[1];
            } else if (command == "a") {
              data[5] += item.base[0] - relSubpoint[0];
              data[6] += item.base[1] - relSubpoint[1];
            }
            roundData(data);
            if (command == "h") relSubpoint[0] += data[0];
            else if (command == "v") relSubpoint[1] += data[0];
            else {
              relSubpoint[0] += data[data.length - 2];
              relSubpoint[1] += data[data.length - 1];
            }
            roundData(relSubpoint);
            if (command === "M" || command === "m") {
              pathBase[0] = relSubpoint[0];
              pathBase[1] = relSubpoint[1];
            }
          }
          if (params.straightCurves) {
            if (command === "c" && isCurveStraightLine(data) || command === "s" && isCurveStraightLine(sdata)) {
              if (next && next.command == "s") makeLonghand(next, data);
              command = "l";
              data = data.slice(-2);
            } else if (command === "q" && isCurveStraightLine(data)) {
              if (next && next.command == "t") makeLonghand(next, data);
              command = "l";
              data = data.slice(-2);
            } else if (command === "t" && // @ts-ignore
            prev.command !== "q" && // @ts-ignore
            prev.command !== "t") {
              command = "l";
              data = data.slice(-2);
            } else if (command === "a" && (data[0] === 0 || data[1] === 0)) {
              command = "l";
              data = data.slice(-2);
            }
          }
          if (params.lineShorthands && command === "l") {
            if (data[1] === 0) {
              command = "h";
              data.pop();
            } else if (data[0] === 0) {
              command = "v";
              data.shift();
            }
          }
          if (params.collapseRepeated && hasMarkerMid === false && (command === "m" || command === "h" || command === "v") && // @ts-ignore
          prev.command && // @ts-ignore
          command == prev.command.toLowerCase() && (command != "h" && command != "v" || // @ts-ignore
          prev.args[0] >= 0 == data[0] >= 0)) {
            prev.args[0] += data[0];
            if (command != "h" && command != "v") {
              prev.args[1] += data[1];
            }
            prev.coords = item.coords;
            path2[index] = prev;
            return false;
          }
          if (params.curveSmoothShorthands && prev.command) {
            if (command === "c") {
              if (
                // @ts-ignore
                prev.command === "c" && // @ts-ignore
                data[0] === -(prev.args[2] - prev.args[4]) && // @ts-ignore
                data[1] === -(prev.args[3] - prev.args[5])
              ) {
                command = "s";
                data = data.slice(2);
              } else if (
                // @ts-ignore
                prev.command === "s" && // @ts-ignore
                data[0] === -(prev.args[0] - prev.args[2]) && // @ts-ignore
                data[1] === -(prev.args[1] - prev.args[3])
              ) {
                command = "s";
                data = data.slice(2);
              } else if (
                // @ts-ignore
                prev.command !== "c" && // @ts-ignore
                prev.command !== "s" && data[0] === 0 && data[1] === 0
              ) {
                command = "s";
                data = data.slice(2);
              }
            } else if (command === "q") {
              if (
                // @ts-ignore
                prev.command === "q" && // @ts-ignore
                data[0] === prev.args[2] - prev.args[0] && // @ts-ignore
                data[1] === prev.args[3] - prev.args[1]
              ) {
                command = "t";
                data = data.slice(2);
              } else if (
                // @ts-ignore
                prev.command === "t" && // @ts-ignore
                data[2] === prev.args[0] && // @ts-ignore
                data[3] === prev.args[1]
              ) {
                command = "t";
                data = data.slice(2);
              }
            }
          }
          if (params.removeUseless && !maybeHasStrokeAndLinecap) {
            if ((command === "l" || command === "h" || command === "v" || command === "q" || command === "t" || command === "c" || command === "s") && data.every(function(i2) {
              return i2 === 0;
            })) {
              path2[index] = prev;
              return false;
            }
            if (command === "a" && data[5] === 0 && data[6] === 0) {
              path2[index] = prev;
              return false;
            }
          }
          item.command = command;
          item.args = data;
          prev = item;
        } else {
          relSubpoint[0] = pathBase[0];
          relSubpoint[1] = pathBase[1];
          if (prev.command === "Z" || prev.command === "z") return false;
          prev = item;
        }
        return true;
      });
      return path;
    }
    function convertToMixed(path, params) {
      var prev = path[0];
      path = path.filter(function(item, index) {
        if (index == 0) return true;
        if (item.command === "Z" || item.command === "z") {
          prev = item;
          return true;
        }
        var command = item.command, data = item.args, adata = data.slice();
        if (command === "m" || command === "l" || command === "t" || command === "q" || command === "s" || command === "c") {
          for (var i = adata.length; i--; ) {
            adata[i] += item.base[i % 2];
          }
        } else if (command == "h") {
          adata[0] += item.base[0];
        } else if (command == "v") {
          adata[0] += item.base[1];
        } else if (command == "a") {
          adata[5] += item.base[0];
          adata[6] += item.base[1];
        }
        roundData(adata);
        var absoluteDataStr = cleanupOutData(adata, params), relativeDataStr = cleanupOutData(data, params);
        if (params.forceAbsolutePath || absoluteDataStr.length < relativeDataStr.length && !(params.negativeExtraSpace && command == prev.command && prev.command.charCodeAt(0) > 96 && absoluteDataStr.length == relativeDataStr.length - 1 && (data[0] < 0 || // @ts-ignore
        /^0\./.test(data[0]) && prev.args[prev.args.length - 1] % 1))) {
          item.command = command.toUpperCase();
          item.args = adata;
        }
        prev = item;
        return true;
      });
      return path;
    }
    function isConvex(data) {
      var center = getIntersection([
        0,
        0,
        data[2],
        data[3],
        data[0],
        data[1],
        data[4],
        data[5]
      ]);
      return center != null && data[2] < center[0] == center[0] < 0 && data[3] < center[1] == center[1] < 0 && data[4] < center[0] == center[0] < data[0] && data[5] < center[1] == center[1] < data[1];
    }
    function getIntersection(coords) {
      var a1 = coords[1] - coords[3], b1 = coords[2] - coords[0], c1 = coords[0] * coords[3] - coords[2] * coords[1], a2 = coords[5] - coords[7], b2 = coords[6] - coords[4], c2 = coords[4] * coords[7] - coords[5] * coords[6], denom = a1 * b2 - a2 * b1;
      if (!denom) return;
      var cross = [(b1 * c2 - b2 * c1) / denom, (a1 * c2 - a2 * c1) / -denom];
      if (!isNaN(cross[0]) && !isNaN(cross[1]) && isFinite(cross[0]) && isFinite(cross[1])) {
        return cross;
      }
    }
    function toFixed(num, precision2) {
      const pow = 10 ** precision2;
      return Math.round(num * pow) / pow;
    }
    function strongRound(data) {
      const precisionNum = precision || 0;
      for (let i = data.length; i-- > 0; ) {
        const fixed = toFixed(data[i], precisionNum);
        if (fixed !== data[i]) {
          const rounded = toFixed(data[i], precisionNum - 1);
          data[i] = toFixed(Math.abs(rounded - data[i]), precisionNum + 1) >= error ? fixed : rounded;
        }
      }
      return data;
    }
    function round(data) {
      for (var i = data.length; i-- > 0; ) {
        data[i] = Math.round(data[i]);
      }
      return data;
    }
    function isCurveStraightLine(data) {
      var i = data.length - 2, a = -data[i + 1], b = data[i], d = 1 / (a * a + b * b);
      if (i <= 1 || !isFinite(d)) return false;
      while ((i -= 2) >= 0) {
        if (Math.sqrt(Math.pow(a * data[i] + b * data[i + 1], 2) * d) > error)
          return false;
      }
      return true;
    }
    function makeLonghand(item, data) {
      switch (item.command) {
        case "s":
          item.command = "c";
          break;
        case "t":
          item.command = "q";
          break;
      }
      item.args.unshift(
        data[data.length - 2] - data[data.length - 4],
        data[data.length - 1] - data[data.length - 3]
      );
      return item;
    }
    function getDistance(point1, point2) {
      return Math.hypot(point1[0] - point2[0], point1[1] - point2[1]);
    }
    function getCubicBezierPoint(curve, t) {
      var sqrT = t * t, cubT = sqrT * t, mt = 1 - t, sqrMt = mt * mt;
      return [
        3 * sqrMt * t * curve[0] + 3 * mt * sqrT * curve[2] + cubT * curve[4],
        3 * sqrMt * t * curve[1] + 3 * mt * sqrT * curve[3] + cubT * curve[5]
      ];
    }
    function findCircle(curve) {
      var midPoint = getCubicBezierPoint(curve, 1 / 2), m1 = [midPoint[0] / 2, midPoint[1] / 2], m2 = [(midPoint[0] + curve[4]) / 2, (midPoint[1] + curve[5]) / 2], center = getIntersection([
        m1[0],
        m1[1],
        m1[0] + m1[1],
        m1[1] - m1[0],
        m2[0],
        m2[1],
        m2[0] + (m2[1] - midPoint[1]),
        m2[1] - (m2[0] - midPoint[0])
      ]), radius = center && getDistance([0, 0], center), tolerance = Math.min(arcThreshold * error, arcTolerance * radius / 100);
      if (center && // @ts-ignore
      radius < 1e15 && [1 / 4, 3 / 4].every(function(point) {
        return Math.abs(
          // @ts-ignore
          getDistance(getCubicBezierPoint(curve, point), center) - radius
        ) <= tolerance;
      }))
        return { center, radius };
    }
    function isArc(curve, circle) {
      var tolerance = Math.min(
        arcThreshold * error,
        arcTolerance * circle.radius / 100
      );
      return [0, 1 / 4, 1 / 2, 3 / 4, 1].every(function(point) {
        return Math.abs(
          getDistance(getCubicBezierPoint(curve, point), circle.center) - circle.radius
        ) <= tolerance;
      });
    }
    function isArcPrev(curve, circle) {
      return isArc(curve, {
        center: [circle.center[0] + curve[4], circle.center[1] + curve[5]],
        radius: circle.radius
      });
    }
    function findArcAngle(curve, relCircle) {
      var x1 = -relCircle.center[0], y1 = -relCircle.center[1], x2 = curve[4] - relCircle.center[0], y2 = curve[5] - relCircle.center[1];
      return Math.acos(
        (x1 * x2 + y1 * y2) / Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2))
      );
    }
    function data2Path(params, pathData) {
      return pathData.reduce(function(pathString, item) {
        var strData = "";
        if (item.args) {
          strData = cleanupOutData(roundData(item.args.slice()), params);
        }
        return pathString + item.command + strData;
      }, "");
    }
  }
});

// src/svgo/plugins/convertTransform.js
var require_convertTransform = __commonJS({
  "src/svgo/plugins/convertTransform.js"(exports) {
    "use strict";
    var { cleanupOutData } = require_tools();
    var {
      transform2js,
      transformsMultiply,
      matrixToTransform
    } = require_transforms();
    exports.name = "convertTransform";
    exports.description = "collapses multiple transformations and optimizes it";
    exports.fn = (_root, params) => {
      const {
        convertToShorts: convertToShorts2 = true,
        // degPrecision = 3, // transformPrecision (or matrix precision) - 2 by default
        degPrecision,
        floatPrecision = 3,
        transformPrecision = 5,
        matrixToTransform: matrixToTransform2 = true,
        shortTranslate = true,
        shortScale = true,
        shortRotate = true,
        removeUseless: removeUseless2 = true,
        collapseIntoOne = true,
        leadingZero = true,
        negativeExtraSpace = false
      } = params;
      const newParams = {
        convertToShorts: convertToShorts2,
        degPrecision,
        floatPrecision,
        transformPrecision,
        matrixToTransform: matrixToTransform2,
        shortTranslate,
        shortScale,
        shortRotate,
        removeUseless: removeUseless2,
        collapseIntoOne,
        leadingZero,
        negativeExtraSpace
      };
      return {
        element: {
          enter: (node) => {
            if (node.attributes.transform != null) {
              convertTransform(node, "transform", newParams);
            }
            if (node.attributes.gradientTransform != null) {
              convertTransform(node, "gradientTransform", newParams);
            }
            if (node.attributes.patternTransform != null) {
              convertTransform(node, "patternTransform", newParams);
            }
          }
        }
      };
    };
    var convertTransform = (item, attrName, params) => {
      let data = transform2js(item.attributes[attrName]);
      params = definePrecision(data, params);
      if (params.collapseIntoOne && data.length > 1) {
        data = [transformsMultiply(data)];
      }
      if (params.convertToShorts) {
        data = convertToShorts(data, params);
      } else {
        data.forEach((item2) => roundTransform(item2, params));
      }
      if (params.removeUseless) {
        data = removeUseless(data);
      }
      if (data.length) {
        item.attributes[attrName] = js2transform(data, params);
      } else {
        delete item.attributes[attrName];
      }
    };
    var definePrecision = (data, { ...newParams }) => {
      const matrixData = [];
      for (const item of data) {
        if (item.name == "matrix") {
          matrixData.push(...item.data.slice(0, 4));
        }
      }
      let significantDigits = newParams.transformPrecision;
      if (matrixData.length) {
        newParams.transformPrecision = Math.min(
          newParams.transformPrecision,
          Math.max.apply(Math, matrixData.map(floatDigits)) || newParams.transformPrecision
        );
        significantDigits = Math.max.apply(
          Math,
          matrixData.map(
            (n) => n.toString().replace(/\D+/g, "").length
            // Number of digits in a number. 123.45 → 5
          )
        );
      }
      if (newParams.degPrecision == null) {
        newParams.degPrecision = Math.max(
          0,
          Math.min(newParams.floatPrecision, significantDigits - 2)
        );
      }
      return newParams;
    };
    var degRound = (data, params) => {
      if (params.degPrecision != null && params.degPrecision >= 1 && params.floatPrecision < 20) {
        return smartRound(params.degPrecision, data);
      } else {
        return round(data);
      }
    };
    var floatRound = (data, params) => {
      if (params.floatPrecision >= 1 && params.floatPrecision < 20) {
        return smartRound(params.floatPrecision, data);
      } else {
        return round(data);
      }
    };
    var transformRound = (data, params) => {
      if (params.transformPrecision >= 1 && params.floatPrecision < 20) {
        return smartRound(params.transformPrecision, data);
      } else {
        return round(data);
      }
    };
    var floatDigits = (n) => {
      const str = n.toString();
      return str.slice(str.indexOf(".")).length - 1;
    };
    var convertToShorts = (transforms, params) => {
      for (var i = 0; i < transforms.length; i++) {
        var transform = transforms[i];
        if (params.matrixToTransform && transform.name === "matrix") {
          var decomposed = matrixToTransform(transform, params);
          if (js2transform(decomposed, params).length <= js2transform([transform], params).length) {
            transforms.splice(i, 1, ...decomposed);
          }
          transform = transforms[i];
        }
        roundTransform(transform, params);
        if (params.shortTranslate && transform.name === "translate" && transform.data.length === 2 && !transform.data[1]) {
          transform.data.pop();
        }
        if (params.shortScale && transform.name === "scale" && transform.data.length === 2 && transform.data[0] === transform.data[1]) {
          transform.data.pop();
        }
        if (params.shortRotate && transforms[i - 2] && transforms[i - 2].name === "translate" && transforms[i - 1].name === "rotate" && transforms[i].name === "translate" && transforms[i - 2].data[0] === -transforms[i].data[0] && transforms[i - 2].data[1] === -transforms[i].data[1]) {
          transforms.splice(i - 2, 3, {
            name: "rotate",
            data: [
              transforms[i - 1].data[0],
              transforms[i - 2].data[0],
              transforms[i - 2].data[1]
            ]
          });
          i -= 2;
        }
      }
      return transforms;
    };
    var removeUseless = (transforms) => {
      return transforms.filter((transform) => {
        if (["translate", "rotate", "skewX", "skewY"].indexOf(transform.name) > -1 && (transform.data.length == 1 || transform.name == "rotate") && !transform.data[0] || // translate(0, 0)
        transform.name == "translate" && !transform.data[0] && !transform.data[1] || // scale(1)
        transform.name == "scale" && transform.data[0] == 1 && (transform.data.length < 2 || transform.data[1] == 1) || // matrix(1 0 0 1 0 0)
        transform.name == "matrix" && transform.data[0] == 1 && transform.data[3] == 1 && !(transform.data[1] || transform.data[2] || transform.data[4] || transform.data[5])) {
          return false;
        }
        return true;
      });
    };
    var js2transform = (transformJS, params) => {
      var transformString = "";
      transformJS.forEach((transform) => {
        roundTransform(transform, params);
        transformString += (transformString && " ") + transform.name + "(" + cleanupOutData(transform.data, params) + ")";
      });
      return transformString;
    };
    var roundTransform = (transform, params) => {
      switch (transform.name) {
        case "translate":
          transform.data = floatRound(transform.data, params);
          break;
        case "rotate":
          transform.data = [
            ...degRound(transform.data.slice(0, 1), params),
            ...floatRound(transform.data.slice(1), params)
          ];
          break;
        case "skewX":
        case "skewY":
          transform.data = degRound(transform.data, params);
          break;
        case "scale":
          transform.data = transformRound(transform.data, params);
          break;
        case "matrix":
          transform.data = [
            ...transformRound(transform.data.slice(0, 4), params),
            ...floatRound(transform.data.slice(4), params)
          ];
          break;
      }
      return transform;
    };
    var round = (data) => {
      return data.map(Math.round);
    };
    var smartRound = (precision, data) => {
      for (var i = data.length, tolerance = +Math.pow(0.1, precision).toFixed(precision); i--; ) {
        if (Number(data[i].toFixed(precision)) !== data[i]) {
          var rounded = +data[i].toFixed(precision - 1);
          data[i] = +Math.abs(rounded - data[i]).toFixed(precision + 1) >= tolerance ? +data[i].toFixed(precision) : rounded;
        }
      }
      return data;
    };
  }
});

// src/svgo/plugins/removeEmptyAttrs.js
var require_removeEmptyAttrs = __commonJS({
  "src/svgo/plugins/removeEmptyAttrs.js"(exports) {
    "use strict";
    var { attrsGroups } = require_collections();
    exports.name = "removeEmptyAttrs";
    exports.description = "removes empty attributes";
    exports.fn = () => {
      return {
        element: {
          enter: (node) => {
            for (const [name, value] of Object.entries(node.attributes)) {
              if (value === "" && // empty conditional processing attributes prevents elements from rendering
              attrsGroups.conditionalProcessing.includes(name) === false) {
                delete node.attributes[name];
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeEmptyContainers.js
var require_removeEmptyContainers = __commonJS({
  "src/svgo/plugins/removeEmptyContainers.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    var { elemsGroups } = require_collections();
    exports.name = "removeEmptyContainers";
    exports.description = "removes empty container elements";
    exports.fn = () => {
      return {
        element: {
          exit: (node, parentNode) => {
            if (node.name === "svg" || elemsGroups.container.includes(node.name) === false || node.children.length !== 0) {
              return;
            }
            if (node.name === "pattern" && Object.keys(node.attributes).length !== 0) {
              return;
            }
            if (node.name === "g" && node.attributes.filter != null) {
              return;
            }
            if (node.name === "mask" && node.attributes.id != null) {
              return;
            }
            detachNodeFromParent(node, parentNode);
          }
        }
      };
    };
  }
});

// src/svgo/plugins/mergePaths.js
var require_mergePaths = __commonJS({
  "src/svgo/plugins/mergePaths.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    var { collectStylesheet, computeStyle } = require_style();
    var { path2js, js2path, intersects } = require_path2();
    exports.name = "mergePaths";
    exports.description = "merges multiple paths in one if possible";
    exports.fn = (root, params) => {
      const {
        force = false,
        floatPrecision,
        noSpaceAfterFlags = false
        // a20 60 45 0 1 30 20 → a20 60 45 0130 20
      } = params;
      const stylesheet = collectStylesheet(root);
      return {
        element: {
          enter: (node) => {
            let prevChild = null;
            for (const child of node.children) {
              if (prevChild == null || prevChild.type !== "element" || prevChild.name !== "path" || prevChild.children.length !== 0 || prevChild.attributes.d == null) {
                prevChild = child;
                continue;
              }
              if (child.type !== "element" || child.name !== "path" || child.children.length !== 0 || child.attributes.d == null) {
                prevChild = child;
                continue;
              }
              const computedStyle = computeStyle(stylesheet, child);
              if (computedStyle["marker-start"] || computedStyle["marker-mid"] || computedStyle["marker-end"]) {
                prevChild = child;
                continue;
              }
              const prevChildAttrs = Object.keys(prevChild.attributes);
              const childAttrs = Object.keys(child.attributes);
              let attributesAreEqual = prevChildAttrs.length === childAttrs.length;
              for (const name of childAttrs) {
                if (name !== "d") {
                  if (prevChild.attributes[name] == null || prevChild.attributes[name] !== child.attributes[name]) {
                    attributesAreEqual = false;
                  }
                }
              }
              const prevPathJS = path2js(prevChild);
              const curPathJS = path2js(child);
              if (attributesAreEqual && (force || !intersects(prevPathJS, curPathJS))) {
                js2path(prevChild, prevPathJS.concat(curPathJS), {
                  floatPrecision,
                  noSpaceAfterFlags
                });
                detachNodeFromParent(child, node);
                continue;
              }
              prevChild = child;
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeUnusedNS.js
var require_removeUnusedNS = __commonJS({
  "src/svgo/plugins/removeUnusedNS.js"(exports) {
    "use strict";
    exports.name = "removeUnusedNS";
    exports.description = "removes unused namespaces declaration";
    exports.fn = () => {
      const unusedNamespaces = /* @__PURE__ */ new Set();
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "svg" && parentNode.type === "root") {
              for (const name of Object.keys(node.attributes)) {
                if (name.startsWith("xmlns:")) {
                  const local = name.slice("xmlns:".length);
                  unusedNamespaces.add(local);
                }
              }
            }
            if (unusedNamespaces.size !== 0) {
              if (node.name.includes(":")) {
                const [ns] = node.name.split(":");
                if (unusedNamespaces.has(ns)) {
                  unusedNamespaces.delete(ns);
                }
              }
              for (const name of Object.keys(node.attributes)) {
                if (name.includes(":")) {
                  const [ns] = name.split(":");
                  unusedNamespaces.delete(ns);
                }
              }
            }
          },
          exit: (node, parentNode) => {
            if (node.name === "svg" && parentNode.type === "root") {
              for (const name of unusedNamespaces) {
                delete node.attributes[`xmlns:${name}`];
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/sortAttrs.js
var require_sortAttrs = __commonJS({
  "src/svgo/plugins/sortAttrs.js"(exports) {
    "use strict";
    exports.name = "sortAttrs";
    exports.description = "Sort element attributes for better compression";
    exports.fn = (_root, params) => {
      const {
        order = [
          "id",
          "width",
          "height",
          "x",
          "x1",
          "x2",
          "y",
          "y1",
          "y2",
          "cx",
          "cy",
          "r",
          "fill",
          "stroke",
          "marker",
          "d",
          "points"
        ],
        xmlnsOrder = "front"
      } = params;
      const getNsPriority = (name) => {
        if (xmlnsOrder === "front") {
          if (name === "xmlns") {
            return 3;
          }
          if (name.startsWith("xmlns:")) {
            return 2;
          }
        }
        if (name.includes(":")) {
          return 1;
        }
        return 0;
      };
      const compareAttrs = ([aName], [bName]) => {
        const aPriority = getNsPriority(aName);
        const bPriority = getNsPriority(bName);
        const priorityNs = bPriority - aPriority;
        if (priorityNs !== 0) {
          return priorityNs;
        }
        const [aPart] = aName.split("-");
        const [bPart] = bName.split("-");
        if (aPart !== bPart) {
          const aInOrderFlag = order.includes(aPart) ? 1 : 0;
          const bInOrderFlag = order.includes(bPart) ? 1 : 0;
          if (aInOrderFlag === 1 && bInOrderFlag === 1) {
            return order.indexOf(aPart) - order.indexOf(bPart);
          }
          const priorityOrder = bInOrderFlag - aInOrderFlag;
          if (priorityOrder !== 0) {
            return priorityOrder;
          }
        }
        return aName < bName ? -1 : 1;
      };
      return {
        element: {
          enter: (node) => {
            const attrs = Object.entries(node.attributes);
            attrs.sort(compareAttrs);
            const sortedAttributes = {};
            for (const [name, value] of attrs) {
              sortedAttributes[name] = value;
            }
            node.attributes = sortedAttributes;
          }
        }
      };
    };
  }
});

// src/svgo/plugins/sortDefsChildren.js
var require_sortDefsChildren = __commonJS({
  "src/svgo/plugins/sortDefsChildren.js"(exports) {
    "use strict";
    exports.name = "sortDefsChildren";
    exports.description = "Sorts children of <defs> to improve compression";
    exports.fn = () => {
      return {
        element: {
          enter: (node) => {
            if (node.name === "defs") {
              const frequencies = /* @__PURE__ */ new Map();
              for (const child of node.children) {
                if (child.type === "element") {
                  const frequency = frequencies.get(child.name);
                  if (frequency == null) {
                    frequencies.set(child.name, 1);
                  } else {
                    frequencies.set(child.name, frequency + 1);
                  }
                }
              }
              node.children.sort((a, b) => {
                if (a.type !== "element" || b.type !== "element") {
                  return 0;
                }
                const aFrequency = frequencies.get(a.name);
                const bFrequency = frequencies.get(b.name);
                if (aFrequency != null && bFrequency != null) {
                  const frequencyComparison = bFrequency - aFrequency;
                  if (frequencyComparison !== 0) {
                    return frequencyComparison;
                  }
                }
                const lengthComparison = b.name.length - a.name.length;
                if (lengthComparison !== 0) {
                  return lengthComparison;
                }
                if (a.name !== b.name) {
                  return a.name > b.name ? -1 : 1;
                }
                return 0;
              });
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeTitle.js
var require_removeTitle = __commonJS({
  "src/svgo/plugins/removeTitle.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeTitle";
    exports.description = "removes <title>";
    exports.fn = () => {
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "title") {
              detachNodeFromParent(node, parentNode);
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeDesc.js
var require_removeDesc = __commonJS({
  "src/svgo/plugins/removeDesc.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeDesc";
    exports.description = "removes <desc>";
    var standardDescs = /^(Created with|Created using)/;
    exports.fn = (root, params) => {
      const { removeAny = true } = params;
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "desc") {
              if (removeAny || node.children.length === 0 || node.children[0].type === "text" && standardDescs.test(node.children[0].value)) {
                detachNodeFromParent(node, parentNode);
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/default.js
var require_default3 = __commonJS({
  "src/svgo/plugins/default.js"(exports, module) {
    "use strict";
    var { createPreset } = require_tools();
    var removeDoctype = require_removeDoctype();
    var removeXMLProcInst = require_removeXMLProcInst();
    var removeComments = require_removeComments();
    var removeMetadata = require_removeMetadata();
    var removeEditorsNSData = require_removeEditorsNSData();
    var cleanupAttrs = require_cleanupAttrs();
    var mergeStyles = require_mergeStyles();
    var inlineStyles = require_inlineStyles();
    var minifyStyles = require_minifyStyles();
    var cleanupIds = require_cleanupIds();
    var removeUselessDefs = require_removeUselessDefs();
    var cleanupNumericValues = require_cleanupNumericValues();
    var convertColors = require_convertColors();
    var removeUnknownsAndDefaults = require_removeUnknownsAndDefaults();
    var removeNonInheritableGroupAttrs = require_removeNonInheritableGroupAttrs();
    var removeUselessStrokeAndFill = require_removeUselessStrokeAndFill();
    var removeViewBox = require_removeViewBox();
    var cleanupEnableBackground = require_cleanupEnableBackground();
    var removeHiddenElems = require_removeHiddenElems();
    var removeEmptyText = require_removeEmptyText();
    var convertShapeToPath = require_convertShapeToPath();
    var convertEllipseToCircle = require_convertEllipseToCircle();
    var moveElemsAttrsToGroup = require_moveElemsAttrsToGroup();
    var moveGroupAttrsToElems = require_moveGroupAttrsToElems();
    var collapseGroups = require_collapseGroups();
    var convertPathData = require_convertPathData();
    var convertTransform = require_convertTransform();
    var removeEmptyAttrs = require_removeEmptyAttrs();
    var removeEmptyContainers = require_removeEmptyContainers();
    var mergePaths = require_mergePaths();
    var removeUnusedNS = require_removeUnusedNS();
    var sortAttrs = require_sortAttrs();
    var sortDefsChildren = require_sortDefsChildren();
    var removeTitle = require_removeTitle();
    var removeDesc = require_removeDesc();
    var presetDefault = createPreset({
      name: "defaultPreset",
      plugins: [
        removeDoctype,
        removeXMLProcInst,
        removeComments,
        removeMetadata,
        removeEditorsNSData,
        cleanupAttrs,
        mergeStyles,
        inlineStyles,
        minifyStyles,
        cleanupIds,
        removeUselessDefs,
        cleanupNumericValues,
        convertColors,
        removeUnknownsAndDefaults,
        removeNonInheritableGroupAttrs,
        removeUselessStrokeAndFill,
        removeViewBox,
        cleanupEnableBackground,
        removeHiddenElems,
        removeEmptyText,
        convertShapeToPath,
        convertEllipseToCircle,
        moveElemsAttrsToGroup,
        moveGroupAttrsToElems,
        collapseGroups,
        convertPathData,
        convertTransform,
        removeEmptyAttrs,
        removeEmptyContainers,
        mergePaths,
        removeUnusedNS,
        sortAttrs,
        sortDefsChildren,
        removeTitle,
        removeDesc
      ]
    });
    module.exports = presetDefault;
  }
});

// src/svgo/plugins/safe.js
var require_safe = __commonJS({
  "src/svgo/plugins/safe.js"(exports, module) {
    "use strict";
    var { createPreset } = require_tools();
    var removeDoctype = require_removeDoctype();
    var removeXMLProcInst = require_removeXMLProcInst();
    var removeComments = require_removeComments();
    var removeMetadata = require_removeMetadata();
    var removeEditorsNSData = require_removeEditorsNSData();
    var cleanupAttrs = require_cleanupAttrs();
    var mergeStyles = require_mergeStyles();
    var inlineStyles = require_inlineStyles();
    var minifyStyles = require_minifyStyles();
    var cleanupIds = require_cleanupIds();
    var removeUselessDefs = require_removeUselessDefs();
    var cleanupNumericValues = require_cleanupNumericValues();
    var convertColors = require_convertColors();
    var removeUnknownsAndDefaults = require_removeUnknownsAndDefaults();
    var removeNonInheritableGroupAttrs = require_removeNonInheritableGroupAttrs();
    var removeUselessStrokeAndFill = require_removeUselessStrokeAndFill();
    var removeViewBox = require_removeViewBox();
    var cleanupEnableBackground = require_cleanupEnableBackground();
    var removeHiddenElems = require_removeHiddenElems();
    var removeEmptyText = require_removeEmptyText();
    var convertEllipseToCircle = require_convertEllipseToCircle();
    var collapseGroups = require_collapseGroups();
    var convertPathData = require_convertPathData();
    var convertTransform = require_convertTransform();
    var removeEmptyAttrs = require_removeEmptyAttrs();
    var removeEmptyContainers = require_removeEmptyContainers();
    var mergePaths = require_mergePaths();
    var removeUnusedNS = require_removeUnusedNS();
    var sortDefsChildren = require_sortDefsChildren();
    var removeTitle = require_removeTitle();
    var removeDesc = require_removeDesc();
    var presetSafe = createPreset({
      name: "safePreset",
      plugins: [
        removeDoctype,
        removeXMLProcInst,
        removeComments,
        removeMetadata,
        removeEditorsNSData,
        cleanupAttrs,
        mergeStyles,
        cleanupIds,
        inlineStyles,
        removeUselessDefs,
        cleanupNumericValues,
        convertColors,
        removeUnknownsAndDefaults,
        removeNonInheritableGroupAttrs,
        removeUselessStrokeAndFill,
        removeViewBox,
        cleanupEnableBackground,
        removeHiddenElems,
        removeEmptyText,
        convertEllipseToCircle,
        collapseGroups,
        convertPathData,
        convertTransform,
        removeEmptyAttrs,
        removeEmptyContainers,
        mergePaths,
        removeUnusedNS,
        sortDefsChildren,
        removeTitle,
        removeDesc
      ]
    });
    module.exports = presetSafe;
  }
});

// src/svgo/plugins/safeAndFast.js
var require_safeAndFast = __commonJS({
  "src/svgo/plugins/safeAndFast.js"(exports, module) {
    "use strict";
    var { createPreset } = require_tools();
    var removeDoctype = require_removeDoctype();
    var removeXMLProcInst = require_removeXMLProcInst();
    var removeComments = require_removeComments();
    var removeMetadata = require_removeMetadata();
    var removeEditorsNSData = require_removeEditorsNSData();
    var cleanupAttrs = require_cleanupAttrs();
    var mergeStyles = require_mergeStyles();
    var minifyStyles = require_minifyStyles();
    var cleanupIds = require_cleanupIds();
    var removeUselessDefs = require_removeUselessDefs();
    var cleanupNumericValues = require_cleanupNumericValues();
    var convertColors = require_convertColors();
    var removeUnknownsAndDefaults = require_removeUnknownsAndDefaults();
    var removeNonInheritableGroupAttrs = require_removeNonInheritableGroupAttrs();
    var removeUselessStrokeAndFill = require_removeUselessStrokeAndFill();
    var removeViewBox = require_removeViewBox();
    var cleanupEnableBackground = require_cleanupEnableBackground();
    var removeHiddenElems = require_removeHiddenElems();
    var removeEmptyText = require_removeEmptyText();
    var collapseGroups = require_collapseGroups();
    var removeEmptyAttrs = require_removeEmptyAttrs();
    var removeEmptyContainers = require_removeEmptyContainers();
    var mergePaths = require_mergePaths();
    var removeUnusedNS = require_removeUnusedNS();
    var sortDefsChildren = require_sortDefsChildren();
    var removeTitle = require_removeTitle();
    var removeDesc = require_removeDesc();
    var presetSafe = createPreset({
      name: "safeAndFastPreset",
      plugins: [
        removeDoctype,
        removeXMLProcInst,
        removeComments,
        removeMetadata,
        removeEditorsNSData,
        cleanupAttrs,
        mergeStyles,
        cleanupIds,
        removeUselessDefs,
        cleanupNumericValues,
        convertColors,
        removeUnknownsAndDefaults,
        removeNonInheritableGroupAttrs,
        removeUselessStrokeAndFill,
        removeViewBox,
        cleanupEnableBackground,
        removeHiddenElems,
        removeEmptyText,
        collapseGroups,
        removeEmptyAttrs,
        removeEmptyContainers,
        removeUnusedNS,
        removeTitle,
        removeDesc
      ]
    });
    module.exports = presetSafe;
  }
});

// src/svgo/plugins/addAttributesToSVGElement.js
var require_addAttributesToSVGElement = __commonJS({
  "src/svgo/plugins/addAttributesToSVGElement.js"(exports) {
    "use strict";
    exports.name = "addAttributesToSVGElement";
    exports.description = "adds attributes to an outer <svg> element";
    var ENOCLS = `Error in plugin "addAttributesToSVGElement": absent parameters.
It should have a list of "attributes" or one "attribute".
Config example:

plugins: [
  {
    name: 'addAttributesToSVGElement',
    params: {
      attribute: "mySvg"
    }
  }
]

plugins: [
  {
    name: 'addAttributesToSVGElement',
    params: {
      attributes: ["mySvg", "size-big"]
    }
  }
]

plugins: [
  {
    name: 'addAttributesToSVGElement',
    params: {
      attributes: [
        {
          focusable: false
        },
        {
          'data-image': icon
        }
      ]
    }
  }
]
`;
    exports.fn = (root, params) => {
      if (!Array.isArray(params.attributes) && !params.attribute) {
        console.error(ENOCLS);
        return null;
      }
      const attributes = params.attributes || [params.attribute];
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "svg" && parentNode.type === "root") {
              for (const attribute of attributes) {
                if (typeof attribute === "string") {
                  if (node.attributes[attribute] == null) {
                    node.attributes[attribute] = void 0;
                  }
                }
                if (typeof attribute === "object") {
                  for (const key of Object.keys(attribute)) {
                    if (node.attributes[key] == null) {
                      node.attributes[key] = attribute[key];
                    }
                  }
                }
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/addClassesToSVGElement.js
var require_addClassesToSVGElement = __commonJS({
  "src/svgo/plugins/addClassesToSVGElement.js"(exports) {
    "use strict";
    exports.name = "addClassesToSVGElement";
    exports.description = "adds classnames to an outer <svg> element";
    var ENOCLS = `Error in plugin "addClassesToSVGElement": absent parameters.
It should have a list of classes in "classNames" or one "className".
Config example:

plugins: [
  {
    name: "addClassesToSVGElement",
    params: {
      className: "mySvg"
    }
  }
]

plugins: [
  {
    name: "addClassesToSVGElement",
    params: {
      classNames: ["mySvg", "size-big"]
    }
  }
]
`;
    exports.fn = (root, params) => {
      if (!(Array.isArray(params.classNames) && params.classNames.some(String)) && !params.className) {
        console.error(ENOCLS);
        return null;
      }
      const classNames = params.classNames || [params.className];
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "svg" && parentNode.type === "root") {
              const classList = new Set(
                node.attributes.class == null ? null : node.attributes.class.split(" ")
              );
              for (const className of classNames) {
                if (className != null) {
                  classList.add(className);
                }
              }
              node.attributes.class = Array.from(classList).join(" ");
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/cleanupListOfValues.js
var require_cleanupListOfValues = __commonJS({
  "src/svgo/plugins/cleanupListOfValues.js"(exports) {
    "use strict";
    var { removeLeadingZero } = require_tools();
    exports.name = "cleanupListOfValues";
    exports.description = "rounds list of values to the fixed precision";
    var regNumericValues = /^([-+]?\d*\.?\d+([eE][-+]?\d+)?)(px|pt|pc|mm|cm|m|in|ft|em|ex|%)?$/;
    var regSeparator = /\s+,?\s*|,\s*/;
    var absoluteLengths = {
      // relative to px
      cm: 96 / 2.54,
      mm: 96 / 25.4,
      in: 96,
      pt: 4 / 3,
      pc: 16,
      px: 1
    };
    exports.fn = (_root, params) => {
      const {
        floatPrecision = 3,
        leadingZero = true,
        defaultPx = true,
        convertToPx = true
      } = params;
      const roundValues = (lists) => {
        const roundedList = [];
        for (const elem of lists.split(regSeparator)) {
          const match = elem.match(regNumericValues);
          const matchNew = elem.match(/new/);
          if (match) {
            let num = Number(Number(match[1]).toFixed(floatPrecision));
            let matchedUnit = match[3] || "";
            let units = matchedUnit;
            if (convertToPx && units && units in absoluteLengths) {
              const pxNum = Number(
                (absoluteLengths[units] * Number(match[1])).toFixed(floatPrecision)
              );
              if (pxNum.toString().length < match[0].length) {
                num = pxNum;
                units = "px";
              }
            }
            let str;
            if (leadingZero) {
              str = removeLeadingZero(num);
            } else {
              str = num.toString();
            }
            if (defaultPx && units === "px") {
              units = "";
            }
            roundedList.push(str + units);
          } else if (matchNew) {
            roundedList.push("new");
          } else if (elem) {
            roundedList.push(elem);
          }
        }
        return roundedList.join(" ");
      };
      return {
        element: {
          enter: (node) => {
            if (node.attributes.points != null) {
              node.attributes.points = roundValues(node.attributes.points);
            }
            if (node.attributes["enable-background"] != null) {
              node.attributes["enable-background"] = roundValues(
                node.attributes["enable-background"]
              );
            }
            if (node.attributes.viewBox != null) {
              node.attributes.viewBox = roundValues(node.attributes.viewBox);
            }
            if (node.attributes["stroke-dasharray"] != null) {
              node.attributes["stroke-dasharray"] = roundValues(
                node.attributes["stroke-dasharray"]
              );
            }
            if (node.attributes.dx != null) {
              node.attributes.dx = roundValues(node.attributes.dx);
            }
            if (node.attributes.dy != null) {
              node.attributes.dy = roundValues(node.attributes.dy);
            }
            if (node.attributes.x != null) {
              node.attributes.x = roundValues(node.attributes.x);
            }
            if (node.attributes.y != null) {
              node.attributes.y = roundValues(node.attributes.y);
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/convertStyleToAttrs.js
var require_convertStyleToAttrs = __commonJS({
  "src/svgo/plugins/convertStyleToAttrs.js"(exports) {
    "use strict";
    var { attrsGroups } = require_collections();
    exports.name = "convertStyleToAttrs";
    exports.description = "converts style to attributes";
    var g = (...args) => {
      return "(?:" + args.join("|") + ")";
    };
    var stylingProps = attrsGroups.presentation;
    var rEscape = "\\\\(?:[0-9a-f]{1,6}\\s?|\\r\\n|.)";
    var rAttr = "\\s*(" + g("[^:;\\\\]", rEscape) + "*?)\\s*";
    var rSingleQuotes = "'(?:[^'\\n\\r\\\\]|" + rEscape + ")*?(?:'|$)";
    var rQuotes = '"(?:[^"\\n\\r\\\\]|' + rEscape + ')*?(?:"|$)';
    var rQuotedString = new RegExp("^" + g(rSingleQuotes, rQuotes) + "$");
    var rParenthesis = "\\(" + g(`[^'"()\\\\]+`, rEscape, rSingleQuotes, rQuotes) + "*?\\)";
    var rValue = "\\s*(" + g(
      `[^!'"();\\\\]+?`,
      rEscape,
      rSingleQuotes,
      rQuotes,
      rParenthesis,
      "[^;]*?"
    ) + "*?)";
    var rDeclEnd = "\\s*(?:;\\s*|$)";
    var rImportant = "(\\s*!important(?![-(\\w]))?";
    var regDeclarationBlock = new RegExp(
      rAttr + ":" + rValue + rImportant + rDeclEnd,
      "ig"
    );
    var regStripComments = new RegExp(
      g(rEscape, rSingleQuotes, rQuotes, "/\\*[^]*?\\*/"),
      "ig"
    );
    exports.fn = (_root, params) => {
      const { keepImportant = false } = params;
      return {
        element: {
          enter: (node) => {
            if (node.attributes.style != null) {
              let styles = [];
              const newAttributes = {};
              const styleValue = node.attributes.style.replace(
                regStripComments,
                (match) => {
                  return match[0] == "/" ? "" : match[0] == "\\" && /[-g-z]/i.test(match[1]) ? match[1] : match;
                }
              );
              regDeclarationBlock.lastIndex = 0;
              for (var rule; rule = regDeclarationBlock.exec(styleValue); ) {
                if (!keepImportant || !rule[3]) {
                  styles.push([rule[1], rule[2]]);
                }
              }
              if (styles.length) {
                styles = styles.filter(function(style) {
                  if (style[0]) {
                    var prop = style[0].toLowerCase(), val = style[1];
                    if (rQuotedString.test(val)) {
                      val = val.slice(1, -1);
                    }
                    if (stylingProps.includes(prop)) {
                      newAttributes[prop] = val;
                      return false;
                    }
                  }
                  return true;
                });
                Object.assign(node.attributes, newAttributes);
                if (styles.length) {
                  node.attributes.style = styles.map((declaration) => declaration.join(":")).join(";");
                } else {
                  delete node.attributes.style;
                }
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/prefixIds.js
var require_prefixIds = __commonJS({
  "src/svgo/plugins/prefixIds.js"(exports) {
    "use strict";
    var csstree = require_cjs();
    var { referencesProps } = require_collections();
    exports.name = "prefixIds";
    exports.description = "prefix IDs";
    var getBasename = (path) => {
      const matched = path.match(/[/\\]?([^/\\]+)$/);
      if (matched) {
        return matched[1];
      }
      return "";
    };
    var escapeIdentifierName = (str) => {
      return str.replace(/[. ]/g, "_");
    };
    var unquote = (string) => {
      if (string.startsWith('"') && string.endsWith('"') || string.startsWith("'") && string.endsWith("'")) {
        return string.slice(1, -1);
      }
      return string;
    };
    var prefixId = (prefix, value) => {
      if (value.startsWith(prefix)) {
        return value;
      }
      return prefix + value;
    };
    var prefixReference = (prefix, value) => {
      if (value.startsWith("#")) {
        return "#" + prefixId(prefix, value.slice(1));
      }
      return null;
    };
    var toAny = (value) => value;
    exports.fn = (_root, params, info) => {
      const { delim = "__", prefixIds = true, prefixClassNames = true } = params;
      return {
        element: {
          enter: (node) => {
            let prefix = "prefix" + delim;
            if (typeof params.prefix === "function") {
              prefix = params.prefix(node, info) + delim;
            } else if (typeof params.prefix === "string") {
              prefix = params.prefix + delim;
            } else if (params.prefix === false) {
              prefix = "";
            } else if (info.path != null && info.path.length > 0) {
              prefix = escapeIdentifierName(getBasename(info.path)) + delim;
            }
            if (node.name === "style") {
              if (node.children.length === 0) {
                return;
              }
              let cssText = "";
              if (node.children[0].type === "text" || node.children[0].type === "cdata") {
                cssText = node.children[0].value;
              }
              let cssAst = null;
              try {
                cssAst = csstree.parse(cssText, {
                  parseValue: true,
                  parseCustomProperty: false
                });
              } catch {
                return;
              }
              csstree.walk(cssAst, (node2) => {
                if (prefixIds && node2.type === "IdSelector" || prefixClassNames && node2.type === "ClassSelector") {
                  node2.name = prefixId(prefix, node2.name);
                  return;
                }
                if (node2.type === "Url" && toAny(node2.value).length > 0) {
                  const prefixed = prefixReference(
                    prefix,
                    unquote(toAny(node2.value))
                  );
                  if (prefixed != null) {
                    toAny(node2).value = prefixed;
                  }
                }
              });
              if (node.children[0].type === "text" || node.children[0].type === "cdata") {
                node.children[0].value = csstree.generate(cssAst);
              }
              return;
            }
            if (prefixIds && node.attributes.id != null && node.attributes.id.length !== 0) {
              node.attributes.id = prefixId(prefix, node.attributes.id);
            }
            if (prefixClassNames && node.attributes.class != null && node.attributes.class.length !== 0) {
              node.attributes.class = node.attributes.class.split(/\s+/).map((name) => prefixId(prefix, name)).join(" ");
            }
            for (const name of ["href", "xlink:href"]) {
              if (node.attributes[name] != null && node.attributes[name].length !== 0) {
                const prefixed = prefixReference(prefix, node.attributes[name]);
                if (prefixed != null) {
                  node.attributes[name] = prefixed;
                }
              }
            }
            for (const name of referencesProps) {
              if (node.attributes[name] != null && node.attributes[name].length !== 0) {
                node.attributes[name] = node.attributes[name].replace(
                  /url\((.*?)\)/gi,
                  (match, url) => {
                    const prefixed = prefixReference(prefix, url);
                    if (prefixed == null) {
                      return match;
                    }
                    return `url(${prefixed})`;
                  }
                );
              }
            }
            for (const name of ["begin", "end"]) {
              if (node.attributes[name] != null && node.attributes[name].length !== 0) {
                const parts = node.attributes[name].split(/\s*;\s+/).map((val) => {
                  if (val.endsWith(".end") || val.endsWith(".start")) {
                    const [id, postfix] = val.split(".");
                    return `${prefixId(prefix, id)}.${postfix}`;
                  }
                  return val;
                });
                node.attributes[name] = parts.join("; ");
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeAttributesBySelector.js
var require_removeAttributesBySelector = __commonJS({
  "src/svgo/plugins/removeAttributesBySelector.js"(exports) {
    "use strict";
    var { querySelectorAll } = require_xast();
    exports.name = "removeAttributesBySelector";
    exports.description = "removes attributes of elements that match a css selector";
    exports.fn = (root, params) => {
      const selectors = Array.isArray(params.selectors) ? params.selectors : [params];
      for (const { selector, attributes } of selectors) {
        const nodes = querySelectorAll(root, selector);
        for (const node of nodes) {
          if (node.type === "element") {
            if (Array.isArray(attributes)) {
              for (const name of attributes) {
                delete node.attributes[name];
              }
            } else {
              delete node.attributes[attributes];
            }
          }
        }
      }
      return {};
    };
  }
});

// src/svgo/plugins/removeAttrs.js
var require_removeAttrs = __commonJS({
  "src/svgo/plugins/removeAttrs.js"(exports) {
    "use strict";
    exports.name = "removeAttrs";
    exports.description = "removes specified attributes";
    var DEFAULT_SEPARATOR = ":";
    exports.fn = (root, params) => {
      if (typeof params.attrs == "undefined") {
        return null;
      }
      const elemSeparator = typeof params.elemSeparator == "string" ? params.elemSeparator : DEFAULT_SEPARATOR;
      const preserveCurrentColor = typeof params.preserveCurrentColor == "boolean" ? params.preserveCurrentColor : false;
      const attrs = Array.isArray(params.attrs) ? params.attrs : [params.attrs];
      return {
        element: {
          enter: (node) => {
            for (let pattern of attrs) {
              if (pattern.includes(elemSeparator) === false) {
                pattern = [".*", elemSeparator, pattern, elemSeparator, ".*"].join(
                  ""
                );
              } else if (pattern.split(elemSeparator).length < 3) {
                pattern = [pattern, elemSeparator, ".*"].join("");
              }
              const list = pattern.split(elemSeparator).map((value) => {
                if (value === "*") {
                  value = ".*";
                }
                return new RegExp(["^", value, "$"].join(""), "i");
              });
              if (list[0].test(node.name)) {
                for (const [name, value] of Object.entries(node.attributes)) {
                  const isFillCurrentColor = preserveCurrentColor && name == "fill" && value == "currentColor";
                  const isStrokeCurrentColor = preserveCurrentColor && name == "stroke" && value == "currentColor";
                  if (!isFillCurrentColor && !isStrokeCurrentColor && // matches attribute name
                  list[1].test(name) && // matches attribute value
                  list[2].test(value)) {
                    delete node.attributes[name];
                  }
                }
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeDimensions.js
var require_removeDimensions = __commonJS({
  "src/svgo/plugins/removeDimensions.js"(exports) {
    "use strict";
    exports.name = "removeDimensions";
    exports.description = "removes width and height in presence of viewBox (opposite to removeViewBox, disable it first)";
    exports.fn = () => {
      return {
        element: {
          enter: (node) => {
            if (node.name === "svg") {
              if (node.attributes.viewBox != null) {
                delete node.attributes.width;
                delete node.attributes.height;
              } else if (node.attributes.width != null && node.attributes.height != null && Number.isNaN(Number(node.attributes.width)) === false && Number.isNaN(Number(node.attributes.height)) === false) {
                const width = Number(node.attributes.width);
                const height = Number(node.attributes.height);
                node.attributes.viewBox = `0 0 ${width} ${height}`;
                delete node.attributes.width;
                delete node.attributes.height;
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeElementsByAttr.js
var require_removeElementsByAttr = __commonJS({
  "src/svgo/plugins/removeElementsByAttr.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeElementsByAttr";
    exports.description = "removes arbitrary elements by ID or className (disabled by default)";
    exports.fn = (root, params) => {
      const ids = params.id == null ? [] : Array.isArray(params.id) ? params.id : [params.id];
      const classes = params.class == null ? [] : Array.isArray(params.class) ? params.class : [params.class];
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.attributes.id != null && ids.length !== 0) {
              if (ids.includes(node.attributes.id)) {
                detachNodeFromParent(node, parentNode);
              }
            }
            if (node.attributes.class && classes.length !== 0) {
              const classList = node.attributes.class.split(" ");
              for (const item of classes) {
                if (classList.includes(item)) {
                  detachNodeFromParent(node, parentNode);
                  break;
                }
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeOffCanvasPaths.js
var require_removeOffCanvasPaths = __commonJS({
  "src/svgo/plugins/removeOffCanvasPaths.js"(exports) {
    "use strict";
    var { visitSkip, detachNodeFromParent } = require_xast();
    var { parsePathData } = require_path();
    var { intersects } = require_path2();
    exports.name = "removeOffCanvasPaths";
    exports.description = "removes elements that are drawn outside of the viewbox (disabled by default)";
    exports.fn = () => {
      let viewBoxData = null;
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "svg" && parentNode.type === "root") {
              let viewBox = "";
              if (node.attributes.viewBox != null) {
                viewBox = node.attributes.viewBox;
              } else if (node.attributes.height != null && node.attributes.width != null) {
                viewBox = `0 0 ${node.attributes.width} ${node.attributes.height}`;
              }
              viewBox = viewBox.replace(/[,+]|px/g, " ").replace(/\s+/g, " ").replace(/^\s*|\s*$/g, "");
              const m = /^(-?\d*\.?\d+) (-?\d*\.?\d+) (\d*\.?\d+) (\d*\.?\d+)$/.exec(
                viewBox
              );
              if (m == null) {
                return;
              }
              const left = Number.parseFloat(m[1]);
              const top = Number.parseFloat(m[2]);
              const width = Number.parseFloat(m[3]);
              const height = Number.parseFloat(m[4]);
              viewBoxData = {
                left,
                top,
                right: left + width,
                bottom: top + height,
                width,
                height
              };
            }
            if (node.attributes.transform != null) {
              return visitSkip;
            }
            if (node.name === "path" && node.attributes.d != null && viewBoxData != null) {
              const pathData = parsePathData(node.attributes.d);
              let visible = false;
              for (const pathDataItem of pathData) {
                if (pathDataItem.command === "M") {
                  const [x, y] = pathDataItem.args;
                  if (x >= viewBoxData.left && x <= viewBoxData.right && y >= viewBoxData.top && y <= viewBoxData.bottom) {
                    visible = true;
                  }
                }
              }
              if (visible) {
                return;
              }
              if (pathData.length === 2) {
                pathData.push({ command: "z", args: [] });
              }
              const { left, top, width, height } = viewBoxData;
              const viewBoxPathData = [
                { command: "M", args: [left, top] },
                { command: "h", args: [width] },
                { command: "v", args: [height] },
                { command: "H", args: [left] },
                { command: "z", args: [] }
              ];
              if (intersects(viewBoxPathData, pathData) === false) {
                detachNodeFromParent(node, parentNode);
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeRasterImages.js
var require_removeRasterImages = __commonJS({
  "src/svgo/plugins/removeRasterImages.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeRasterImages";
    exports.description = "removes raster images (disabled by default)";
    exports.fn = () => {
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "image" && node.attributes["xlink:href"] != null && /(\.|image\/)(jpg|png|gif)/.test(node.attributes["xlink:href"])) {
              detachNodeFromParent(node, parentNode);
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeScriptElement.js
var require_removeScriptElement = __commonJS({
  "src/svgo/plugins/removeScriptElement.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeScriptElement";
    exports.description = "removes <script> elements (disabled by default)";
    exports.fn = () => {
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "script") {
              detachNodeFromParent(node, parentNode);
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeStyleElement.js
var require_removeStyleElement = __commonJS({
  "src/svgo/plugins/removeStyleElement.js"(exports) {
    "use strict";
    var { detachNodeFromParent } = require_xast();
    exports.name = "removeStyleElement";
    exports.description = "removes <style> element (disabled by default)";
    exports.fn = () => {
      return {
        element: {
          enter: (node, parentNode) => {
            if (node.name === "style") {
              detachNodeFromParent(node, parentNode);
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/removeXMLNS.js
var require_removeXMLNS = __commonJS({
  "src/svgo/plugins/removeXMLNS.js"(exports) {
    "use strict";
    exports.name = "removeXMLNS";
    exports.description = "removes xmlns attribute (for inline svg, disabled by default)";
    exports.fn = () => {
      return {
        element: {
          enter: (node) => {
            if (node.name === "svg") {
              delete node.attributes.xmlns;
              delete node.attributes["xmlns:xlink"];
            }
          }
        }
      };
    };
  }
});

// src/svgo/plugins/reusePaths.js
var require_reusePaths = __commonJS({
  "src/svgo/plugins/reusePaths.js"(exports) {
    "use strict";
    exports.name = "reusePaths";
    exports.description = "Finds <path> elements with the same d, fill, and stroke, and converts them to <use> elements referencing a single <path> def.";
    exports.fn = () => {
      const paths = /* @__PURE__ */ new Map();
      return {
        element: {
          enter: (node) => {
            if (node.name === "path" && node.attributes.d != null) {
              const d = node.attributes.d;
              const fill = node.attributes.fill || "";
              const stroke = node.attributes.stroke || "";
              const key = d + ";s:" + stroke + ";f:" + fill;
              let list = paths.get(key);
              if (list == null) {
                list = [];
                paths.set(key, list);
              }
              list.push(node);
            }
          },
          exit: (node, parentNode) => {
            if (node.name === "svg" && parentNode.type === "root") {
              const defsTag = {
                type: "element",
                name: "defs",
                attributes: {},
                children: []
              };
              Object.defineProperty(defsTag, "parentNode", {
                writable: true,
                value: node
              });
              let index = 0;
              for (const list of paths.values()) {
                if (list.length > 1) {
                  const reusablePath = {
                    type: "element",
                    name: "path",
                    attributes: { ...list[0].attributes },
                    children: []
                  };
                  delete reusablePath.attributes.transform;
                  let id;
                  if (reusablePath.attributes.id == null) {
                    id = "reuse-" + index;
                    index += 1;
                    reusablePath.attributes.id = id;
                  } else {
                    id = reusablePath.attributes.id;
                    delete list[0].attributes.id;
                  }
                  Object.defineProperty(reusablePath, "parentNode", {
                    writable: true,
                    value: defsTag
                  });
                  defsTag.children.push(reusablePath);
                  for (const pathNode of list) {
                    pathNode.name = "use";
                    pathNode.attributes["xlink:href"] = "#" + id;
                    delete pathNode.attributes.d;
                    delete pathNode.attributes.stroke;
                    delete pathNode.attributes.fill;
                  }
                }
              }
              if (defsTag.children.length !== 0) {
                if (node.attributes["xmlns:xlink"] == null) {
                  node.attributes["xmlns:xlink"] = "http://www.w3.org/1999/xlink";
                }
                node.children.unshift(defsTag);
              }
            }
          }
        }
      };
    };
  }
});

// src/svgo/builtin.js
var require_builtin = __commonJS({
  "src/svgo/builtin.js"(exports) {
    "use strict";
    exports.builtin = [
      require_default3(),
      require_safe(),
      require_safeAndFast(),
      require_addAttributesToSVGElement(),
      require_addClassesToSVGElement(),
      require_cleanupAttrs(),
      require_cleanupEnableBackground(),
      require_cleanupIds(),
      require_cleanupListOfValues(),
      require_cleanupNumericValues(),
      require_collapseGroups(),
      require_convertColors(),
      require_convertEllipseToCircle(),
      require_convertPathData(),
      require_convertShapeToPath(),
      require_convertStyleToAttrs(),
      require_convertTransform(),
      require_mergeStyles(),
      require_inlineStyles(),
      require_mergePaths(),
      require_minifyStyles(),
      require_moveElemsAttrsToGroup(),
      require_moveGroupAttrsToElems(),
      require_prefixIds(),
      require_removeAttributesBySelector(),
      require_removeAttrs(),
      require_removeComments(),
      require_removeDesc(),
      require_removeDimensions(),
      require_removeDoctype(),
      require_removeEditorsNSData(),
      require_removeElementsByAttr(),
      require_removeEmptyAttrs(),
      require_removeEmptyContainers(),
      require_removeEmptyText(),
      require_removeHiddenElems(),
      require_removeMetadata(),
      require_removeNonInheritableGroupAttrs(),
      require_removeOffCanvasPaths(),
      require_removeRasterImages(),
      require_removeScriptElement(),
      require_removeStyleElement(),
      require_removeTitle(),
      require_removeUnknownsAndDefaults(),
      require_removeUnusedNS(),
      require_removeUselessDefs(),
      require_removeUselessStrokeAndFill(),
      require_removeViewBox(),
      require_removeXMLNS(),
      require_removeXMLProcInst(),
      require_reusePaths(),
      require_sortAttrs(),
      require_sortDefsChildren()
    ];
  }
});

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

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

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

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

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

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

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

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

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

// node_modules/lodash/isPlainObject.js
var require_isPlainObject = __commonJS({
  "node_modules/lodash/isPlainObject.js"(exports, module) {
    var baseGetTag = require_baseGetTag();
    var getPrototype = require_getPrototype();
    var isObjectLike = require_isObjectLike();
    var objectTag = "[object Object]";
    var funcProto = Function.prototype;
    var objectProto = Object.prototype;
    var funcToString = funcProto.toString;
    var hasOwnProperty2 = objectProto.hasOwnProperty;
    var objectCtorString = funcToString.call(Object);
    function isPlainObject(value) {
      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
        return false;
      }
      var proto = getPrototype(value);
      if (proto === null) {
        return true;
      }
      var Ctor = hasOwnProperty2.call(proto, "constructor") && proto.constructor;
      return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
    }
    module.exports = isPlainObject;
  }
});

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

// node_modules/lodash/isString.js
var require_isString = __commonJS({
  "node_modules/lodash/isString.js"(exports, module) {
    var baseGetTag = require_baseGetTag();
    var isArray = require_isArray();
    var isObjectLike = require_isObjectLike();
    var stringTag = "[object String]";
    function isString(value) {
      return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
    }
    module.exports = isString;
  }
});

// src/svgo/plugins.js
var require_plugins = __commonJS({
  "src/svgo/plugins.js"(exports) {
    "use strict";
    var { builtin } = require_builtin();
    var isPlainObject = require_isPlainObject();
    var isString = require_isString();
    var pluginsMap = {};
    for (const plugin of builtin) {
      pluginsMap[plugin.name] = plugin;
    }
    function resolvePlugin(plugin) {
      if (typeof plugin === "string") {
        const builtinPlugin = pluginsMap[plugin];
        if (builtinPlugin == null) {
          throw Error(`Unknown builtin plugin "${plugin}" specified.`);
        }
        return {
          name: plugin,
          params: {},
          fn: builtinPlugin.fn
        };
      }
      if (isPlainObject(plugin)) {
        if (!isString(plugin.name)) {
          throw Error(`Plugin name should be specified`);
        }
        let fn = plugin.fn;
        if (fn == null) {
          const builtinPlugin = pluginsMap[plugin.name];
          if (builtinPlugin == null) {
            throw Error(`Unknown builtin plugin "${plugin.name}" specified.`);
          }
          fn = builtinPlugin.fn;
        }
        return {
          name: plugin.name,
          params: plugin.params,
          fn
        };
      }
      return null;
    }
    exports.resolvePlugin = resolvePlugin;
  }
});

// src/svgo.js
var require_svgo = __commonJS({
  "src/svgo.js"(exports) {
    var { parseSvg } = require_parser();
    var { stringifySvg } = require_stringifier();
    var { resolvePlugin } = require_plugins();
    var { invokePlugins } = require_tools();
    var isPlainObject = require_isPlainObject();
    var optimize = (input, config) => {
      if (config === null) {
        config = {};
      }
      if (!isPlainObject(config)) {
        throw Error("Config should be an object");
      }
      let plugins = config.plugins || ["safePreset"];
      if (Array.isArray(plugins) === false) {
        throw Error("Invalid plugins list");
      }
      plugins = plugins.map(resolvePlugin);
      const globalOverrides = {};
      if (config.floatPrecision !== null) {
        globalOverrides.floatPrecision = config.floatPrecision;
      }
      let maxPassCount = config.multipass ? 10 : 1;
      let prevResultSize = Number.POSITIVE_INFINITY;
      let output = "";
      let info = {};
      for (let i = 0; i < maxPassCount; i += 1) {
        info.multipassCount = i;
        const ast = parseSvg(input, config.path);
        invokePlugins(ast, info, plugins, null, globalOverrides);
        output = stringifySvg(ast, config);
        if (output.length < prevResultSize) {
          input = output;
          prevResultSize = output.length;
        } else {
          break;
        }
      }
      return output;
    };
    exports.optimize = optimize;
    var defaultOptions = {
      multipass: false,
      plugins: ["safeAndFastPreset"]
    };
    exports.defaultOptions = defaultOptions;
  }
});
export default require_svgo();
//# sourceMappingURL=svgo.mjs.map
