Index: frontend/node_modules/tailwindcss/LICENSE
===================================================================
--- frontend/node_modules/tailwindcss/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) Tailwind Labs, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Index: frontend/node_modules/tailwindcss/README.md
===================================================================
--- frontend/node_modules/tailwindcss/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,40 @@
+<p align="center">
+  <a href="https://tailwindcss.com" target="_blank">
+    <picture>
+      <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-dark.svg">
+      <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-light.svg">
+      <img alt="Tailwind CSS" src="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-light.svg" width="350" height="70" style="max-width: 100%;">
+    </picture>
+  </a>
+</p>
+
+<p align="center">
+  A utility-first CSS framework for rapidly building custom user interfaces.
+</p>
+
+<p align="center">
+    <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=main" alt="Build Status"></a>
+    <a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
+    <a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
+    <a href="https://github.com/tailwindcss/tailwindcss/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
+</p>
+
+---
+
+## Documentation
+
+For full documentation, visit [tailwindcss.com](https://tailwindcss.com/).
+
+## Community
+
+For help, discussion about best practices, or any other conversation that would benefit from being searchable:
+
+[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
+
+For casual chit-chat with others using the framework:
+
+[Join the Tailwind CSS Discord Server](https://discord.gg/7NF8GNe)
+
+## Contributing
+
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
Index: frontend/node_modules/tailwindcss/base.css
===================================================================
--- frontend/node_modules/tailwindcss/base.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/base.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+@tailwind base;
Index: frontend/node_modules/tailwindcss/colors.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/colors.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/colors.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { DefaultColors } from './types/generated/colors'
+declare const colors: DefaultColors
+export = colors
Index: frontend/node_modules/tailwindcss/colors.js
===================================================================
--- frontend/node_modules/tailwindcss/colors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/colors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+let colors = require('./lib/public/colors')
+module.exports = (colors.__esModule ? colors : { default: colors }).default
Index: frontend/node_modules/tailwindcss/components.css
===================================================================
--- frontend/node_modules/tailwindcss/components.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/components.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+@tailwind components;
Index: frontend/node_modules/tailwindcss/defaultConfig.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/defaultConfig.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/defaultConfig.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { Config } from './types/config'
+declare const config: Config
+export = config
Index: frontend/node_modules/tailwindcss/defaultConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/defaultConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/defaultConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+let defaultConfig = require('./lib/public/default-config')
+module.exports = (defaultConfig.__esModule ? defaultConfig : { default: defaultConfig }).default
Index: frontend/node_modules/tailwindcss/defaultTheme.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/defaultTheme.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/defaultTheme.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { Config } from './types/config'
+import { DefaultTheme } from './types/generated/default-theme'
+declare const theme: Config['theme'] & DefaultTheme
+export = theme
Index: frontend/node_modules/tailwindcss/defaultTheme.js
===================================================================
--- frontend/node_modules/tailwindcss/defaultTheme.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/defaultTheme.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+let defaultTheme = require('./lib/public/default-theme')
+module.exports = (defaultTheme.__esModule ? defaultTheme : { default: defaultTheme }).default
Index: frontend/node_modules/tailwindcss/lib/cli-peer-dependencies.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/cli-peer-dependencies.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/cli-peer-dependencies.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,36 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    lazyPostcss: function() {
+        return lazyPostcss;
+    },
+    lazyPostcssImport: function() {
+        return lazyPostcssImport;
+    },
+    lazyAutoprefixer: function() {
+        return lazyAutoprefixer;
+    },
+    lazyCssnano: function() {
+        return lazyCssnano;
+    }
+});
+function lazyPostcss() {
+    return require("postcss");
+}
+function lazyPostcssImport() {
+    return require("postcss-import");
+}
+function lazyAutoprefixer() {
+    return require("autoprefixer");
+}
+function lazyCssnano() {
+    return require("cssnano");
+}
Index: frontend/node_modules/tailwindcss/lib/cli.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/cli.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/cli.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+"use strict";
+module.exports = require("./cli/index");
Index: frontend/node_modules/tailwindcss/lib/cli/help/index.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/cli/help/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/cli/help/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,73 @@
+// @ts-check
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "help", {
+    enumerable: true,
+    get: function() {
+        return help;
+    }
+});
+const _packagejson = /*#__PURE__*/ _interop_require_default(require("../../../package.json"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function help({ message , usage , commands , options  }) {
+    let indent = 2;
+    // Render header
+    console.log();
+    console.log(`${_packagejson.default.name} v${_packagejson.default.version}`);
+    // Render message
+    if (message) {
+        console.log();
+        for (let msg of message.split("\n")){
+            console.log(msg);
+        }
+    }
+    // Render usage
+    if (usage && usage.length > 0) {
+        console.log();
+        console.log("Usage:");
+        for (let example of usage){
+            console.log(" ".repeat(indent), example);
+        }
+    }
+    // Render commands
+    if (commands && commands.length > 0) {
+        console.log();
+        console.log("Commands:");
+        for (let command of commands){
+            console.log(" ".repeat(indent), command);
+        }
+    }
+    // Render options
+    if (options) {
+        let groupedOptions = {};
+        for (let [key, value] of Object.entries(options)){
+            if (typeof value === "object") {
+                groupedOptions[key] = {
+                    ...value,
+                    flags: [
+                        key
+                    ]
+                };
+            } else {
+                groupedOptions[value].flags.push(key);
+            }
+        }
+        console.log();
+        console.log("Options:");
+        for (let { flags , description , deprecated  } of Object.values(groupedOptions)){
+            if (deprecated) continue;
+            if (flags.length === 1) {
+                console.log(" ".repeat(indent + 4 /* 4 = "-i, ".length */ ), flags.slice().reverse().join(", ").padEnd(20, " "), description);
+            } else {
+                console.log(" ".repeat(indent), flags.slice().reverse().join(", ").padEnd(24, " "), description);
+            }
+        }
+    }
+    console.log();
+}
Index: frontend/node_modules/tailwindcss/lib/cli/index.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/cli/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/cli/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,230 @@
+#!/usr/bin/env node
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+const _path = /*#__PURE__*/ _interop_require_default(require("path"));
+const _arg = /*#__PURE__*/ _interop_require_default(require("arg"));
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _build = require("./build");
+const _help = require("./help");
+const _init = require("./init");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function oneOf(...options) {
+    return Object.assign((value = true)=>{
+        for (let option of options){
+            let parsed = option(value);
+            if (parsed === value) {
+                return parsed;
+            }
+        }
+        throw new Error("...");
+    }, {
+        manualParsing: true
+    });
+}
+let commands = {
+    init: {
+        run: _init.init,
+        args: {
+            "--esm": {
+                type: Boolean,
+                description: `Initialize configuration file as ESM`
+            },
+            "--ts": {
+                type: Boolean,
+                description: `Initialize configuration file as TypeScript`
+            },
+            "--postcss": {
+                type: Boolean,
+                description: `Initialize a \`postcss.config.js\` file`
+            },
+            "--full": {
+                type: Boolean,
+                description: `Include the default values for all options in the generated configuration file`
+            },
+            "-f": "--full",
+            "-p": "--postcss"
+        }
+    },
+    build: {
+        run: _build.build,
+        args: {
+            "--input": {
+                type: String,
+                description: "Input file"
+            },
+            "--output": {
+                type: String,
+                description: "Output file"
+            },
+            "--watch": {
+                type: oneOf(String, Boolean),
+                description: "Watch for changes and rebuild as needed"
+            },
+            "--poll": {
+                type: Boolean,
+                description: "Use polling instead of filesystem events when watching"
+            },
+            "--content": {
+                type: String,
+                description: "Content paths to use for removing unused classes"
+            },
+            "--purge": {
+                type: String,
+                deprecated: true
+            },
+            "--postcss": {
+                type: oneOf(String, Boolean),
+                description: "Load custom PostCSS configuration"
+            },
+            "--minify": {
+                type: Boolean,
+                description: "Minify the output"
+            },
+            "--config": {
+                type: String,
+                description: "Path to a custom config file"
+            },
+            "--no-autoprefixer": {
+                type: Boolean,
+                description: "Disable autoprefixer"
+            },
+            "-c": "--config",
+            "-i": "--input",
+            "-o": "--output",
+            "-m": "--minify",
+            "-w": "--watch",
+            "-p": "--poll"
+        }
+    }
+};
+let sharedFlags = {
+    "--help": {
+        type: Boolean,
+        description: "Display usage information"
+    },
+    "-h": "--help"
+};
+if (process.stdout.isTTY /* Detect redirecting output to a file */  && (process.argv[2] === undefined || process.argv.slice(2).every((flag)=>sharedFlags[flag] !== undefined))) {
+    (0, _help.help)({
+        usage: [
+            "tailwindcss [--input input.css] [--output output.css] [--watch] [options...]",
+            "tailwindcss init [--full] [--postcss] [options...]"
+        ],
+        commands: Object.keys(commands).filter((command)=>command !== "build").map((command)=>`${command} [options]`),
+        options: {
+            ...commands.build.args,
+            ...sharedFlags
+        }
+    });
+    process.exit(0);
+}
+let command = ((arg = "")=>arg.startsWith("-") ? undefined : arg)(process.argv[2]) || "build";
+if (commands[command] === undefined) {
+    if (_fs.default.existsSync(_path.default.resolve(command))) {
+        // TODO: Deprecate this in future versions
+        // Check if non-existing command, might be a file.
+        command = "build";
+    } else {
+        (0, _help.help)({
+            message: `Invalid command: ${command}`,
+            usage: [
+                "tailwindcss <command> [options]"
+            ],
+            commands: Object.keys(commands).filter((command)=>command !== "build").map((command)=>`${command} [options]`),
+            options: sharedFlags
+        });
+        process.exit(1);
+    }
+}
+// Execute command
+let { args: flags , run  } = commands[command];
+let args = (()=>{
+    try {
+        let result = (0, _arg.default)(Object.fromEntries(Object.entries({
+            ...flags,
+            ...sharedFlags
+        }).filter(([_key, value])=>{
+            var _value_type;
+            return !(value === null || value === void 0 ? void 0 : (_value_type = value.type) === null || _value_type === void 0 ? void 0 : _value_type.manualParsing);
+        }).map(([key, value])=>[
+                key,
+                typeof value === "object" ? value.type : value
+            ])), {
+            permissive: true
+        });
+        // Manual parsing of flags to allow for special flags like oneOf(Boolean, String)
+        for(let i = result["_"].length - 1; i >= 0; --i){
+            let flag = result["_"][i];
+            if (!flag.startsWith("-")) continue;
+            let [flagName, flagValue] = flag.split("=");
+            let handler = flags[flagName];
+            // Resolve flagName & handler
+            while(typeof handler === "string"){
+                flagName = handler;
+                handler = flags[handler];
+            }
+            if (!handler) continue;
+            let args = [];
+            let offset = i + 1;
+            // --flag value syntax was used so we need to pull `value` from `args`
+            if (flagValue === undefined) {
+                // Parse args for current flag
+                while(result["_"][offset] && !result["_"][offset].startsWith("-")){
+                    args.push(result["_"][offset++]);
+                }
+                // Cleanup manually parsed flags + args
+                result["_"].splice(i, 1 + args.length);
+                // No args were provided, use default value defined in handler
+                // One arg was provided, use that directly
+                // Multiple args were provided so pass them all in an array
+                flagValue = args.length === 0 ? undefined : args.length === 1 ? args[0] : args;
+            } else {
+                // Remove the whole flag from the args array
+                result["_"].splice(i, 1);
+            }
+            // Set the resolved value in the `result` object
+            result[flagName] = handler.type(flagValue, flagName);
+        }
+        // Ensure that the `command` is always the first argument in the `args`.
+        // This is important so that we don't have to check if a default command
+        // (build) was used or not from within each plugin.
+        //
+        // E.g.: tailwindcss input.css -> _: ['build', 'input.css']
+        // E.g.: tailwindcss build input.css -> _: ['build', 'input.css']
+        if (result["_"][0] !== command) {
+            result["_"].unshift(command);
+        }
+        return result;
+    } catch (err) {
+        if (err.code === "ARG_UNKNOWN_OPTION") {
+            (0, _help.help)({
+                message: err.message,
+                usage: [
+                    "tailwindcss <command> [options]"
+                ],
+                options: sharedFlags
+            });
+            process.exit(1);
+        }
+        throw err;
+    }
+})();
+if (args["--help"]) {
+    (0, _help.help)({
+        options: {
+            ...flags,
+            ...sharedFlags
+        },
+        usage: [
+            `tailwindcss ${command} [options]`
+        ]
+    });
+    process.exit(0);
+}
+run(args);
Index: frontend/node_modules/tailwindcss/lib/cli/init/index.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/cli/init/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/cli/init/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,63 @@
+// @ts-check
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "init", {
+    enumerable: true,
+    get: function() {
+        return init;
+    }
+});
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _path = /*#__PURE__*/ _interop_require_default(require("path"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function isESM() {
+    const pkgPath = _path.default.resolve("./package.json");
+    try {
+        let pkg = JSON.parse(_fs.default.readFileSync(pkgPath, "utf8"));
+        return pkg.type && pkg.type === "module";
+    } catch (err) {
+        return false;
+    }
+}
+function init(args) {
+    let messages = [];
+    let isProjectESM = args["--ts"] || args["--esm"] || isESM();
+    let syntax = args["--ts"] ? "ts" : isProjectESM ? "js" : "cjs";
+    let extension = args["--ts"] ? "ts" : "js";
+    var _args___;
+    let tailwindConfigLocation = _path.default.resolve((_args___ = args["_"][1]) !== null && _args___ !== void 0 ? _args___ : `./tailwind.config.${extension}`);
+    if (_fs.default.existsSync(tailwindConfigLocation)) {
+        messages.push(`${_path.default.basename(tailwindConfigLocation)} already exists.`);
+    } else {
+        let stubContentsFile = _fs.default.readFileSync(args["--full"] ? _path.default.resolve(__dirname, "../../../stubs/config.full.js") : _path.default.resolve(__dirname, "../../../stubs/config.simple.js"), "utf8");
+        let stubFile = _fs.default.readFileSync(_path.default.resolve(__dirname, `../../../stubs/tailwind.config.${syntax}`), "utf8");
+        // Change colors import
+        stubContentsFile = stubContentsFile.replace("../colors", "tailwindcss/colors");
+        // Replace contents of {ts,js,cjs} file with the stub {simple,full}.
+        stubFile = stubFile.replace("__CONFIG__", stubContentsFile.replace("module.exports =", "").trim()).trim() + "\n\n";
+        _fs.default.writeFileSync(tailwindConfigLocation, stubFile, "utf8");
+        messages.push(`Created Tailwind CSS config file: ${_path.default.basename(tailwindConfigLocation)}`);
+    }
+    if (args["--postcss"]) {
+        let postcssConfigLocation = _path.default.resolve("./postcss.config.js");
+        if (_fs.default.existsSync(postcssConfigLocation)) {
+            messages.push(`${_path.default.basename(postcssConfigLocation)} already exists.`);
+        } else {
+            let stubFile = _fs.default.readFileSync(isProjectESM ? _path.default.resolve(__dirname, "../../../stubs/postcss.config.js") : _path.default.resolve(__dirname, "../../../stubs/postcss.config.cjs"), "utf8");
+            _fs.default.writeFileSync(postcssConfigLocation, stubFile, "utf8");
+            messages.push(`Created PostCSS config file: ${_path.default.basename(postcssConfigLocation)}`);
+        }
+    }
+    if (messages.length > 0) {
+        console.log();
+        for (let message of messages){
+            console.log(message);
+        }
+    }
+}
Index: frontend/node_modules/tailwindcss/lib/corePluginList.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/corePluginList.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/corePluginList.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,191 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _default = [
+    "preflight",
+    "container",
+    "accessibility",
+    "pointerEvents",
+    "visibility",
+    "position",
+    "inset",
+    "isolation",
+    "zIndex",
+    "order",
+    "gridColumn",
+    "gridColumnStart",
+    "gridColumnEnd",
+    "gridRow",
+    "gridRowStart",
+    "gridRowEnd",
+    "float",
+    "clear",
+    "margin",
+    "boxSizing",
+    "lineClamp",
+    "display",
+    "aspectRatio",
+    "size",
+    "height",
+    "maxHeight",
+    "minHeight",
+    "width",
+    "minWidth",
+    "maxWidth",
+    "flex",
+    "flexShrink",
+    "flexGrow",
+    "flexBasis",
+    "tableLayout",
+    "captionSide",
+    "borderCollapse",
+    "borderSpacing",
+    "transformOrigin",
+    "translate",
+    "rotate",
+    "skew",
+    "scale",
+    "transform",
+    "animation",
+    "cursor",
+    "touchAction",
+    "userSelect",
+    "resize",
+    "scrollSnapType",
+    "scrollSnapAlign",
+    "scrollSnapStop",
+    "scrollMargin",
+    "scrollPadding",
+    "listStylePosition",
+    "listStyleType",
+    "listStyleImage",
+    "appearance",
+    "columns",
+    "breakBefore",
+    "breakInside",
+    "breakAfter",
+    "gridAutoColumns",
+    "gridAutoFlow",
+    "gridAutoRows",
+    "gridTemplateColumns",
+    "gridTemplateRows",
+    "flexDirection",
+    "flexWrap",
+    "placeContent",
+    "placeItems",
+    "alignContent",
+    "alignItems",
+    "justifyContent",
+    "justifyItems",
+    "gap",
+    "space",
+    "divideWidth",
+    "divideStyle",
+    "divideColor",
+    "divideOpacity",
+    "placeSelf",
+    "alignSelf",
+    "justifySelf",
+    "overflow",
+    "overscrollBehavior",
+    "scrollBehavior",
+    "textOverflow",
+    "hyphens",
+    "whitespace",
+    "textWrap",
+    "wordBreak",
+    "borderRadius",
+    "borderWidth",
+    "borderStyle",
+    "borderColor",
+    "borderOpacity",
+    "backgroundColor",
+    "backgroundOpacity",
+    "backgroundImage",
+    "gradientColorStops",
+    "boxDecorationBreak",
+    "backgroundSize",
+    "backgroundAttachment",
+    "backgroundClip",
+    "backgroundPosition",
+    "backgroundRepeat",
+    "backgroundOrigin",
+    "fill",
+    "stroke",
+    "strokeWidth",
+    "objectFit",
+    "objectPosition",
+    "padding",
+    "textAlign",
+    "textIndent",
+    "verticalAlign",
+    "fontFamily",
+    "fontSize",
+    "fontWeight",
+    "textTransform",
+    "fontStyle",
+    "fontVariantNumeric",
+    "lineHeight",
+    "letterSpacing",
+    "textColor",
+    "textOpacity",
+    "textDecoration",
+    "textDecorationColor",
+    "textDecorationStyle",
+    "textDecorationThickness",
+    "textUnderlineOffset",
+    "fontSmoothing",
+    "placeholderColor",
+    "placeholderOpacity",
+    "caretColor",
+    "accentColor",
+    "opacity",
+    "backgroundBlendMode",
+    "mixBlendMode",
+    "boxShadow",
+    "boxShadowColor",
+    "outlineStyle",
+    "outlineWidth",
+    "outlineOffset",
+    "outlineColor",
+    "ringWidth",
+    "ringColor",
+    "ringOpacity",
+    "ringOffsetWidth",
+    "ringOffsetColor",
+    "blur",
+    "brightness",
+    "contrast",
+    "dropShadow",
+    "grayscale",
+    "hueRotate",
+    "invert",
+    "saturate",
+    "sepia",
+    "filter",
+    "backdropBlur",
+    "backdropBrightness",
+    "backdropContrast",
+    "backdropGrayscale",
+    "backdropHueRotate",
+    "backdropInvert",
+    "backdropOpacity",
+    "backdropSaturate",
+    "backdropSepia",
+    "backdropFilter",
+    "transitionProperty",
+    "transitionDelay",
+    "transitionDuration",
+    "transitionTimingFunction",
+    "willChange",
+    "contain",
+    "content",
+    "forcedColorAdjust"
+];
Index: frontend/node_modules/tailwindcss/lib/corePlugins.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/corePlugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/corePlugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4339 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    variantPlugins: function() {
+        return variantPlugins;
+    },
+    corePlugins: function() {
+        return corePlugins;
+    }
+});
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
+const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
+const _createUtilityPlugin = /*#__PURE__*/ _interop_require_default(require("./util/createUtilityPlugin"));
+const _buildMediaQuery = /*#__PURE__*/ _interop_require_default(require("./util/buildMediaQuery"));
+const _escapeClassName = /*#__PURE__*/ _interop_require_default(require("./util/escapeClassName"));
+const _parseAnimationValue = /*#__PURE__*/ _interop_require_default(require("./util/parseAnimationValue"));
+const _flattenColorPalette = /*#__PURE__*/ _interop_require_default(require("./util/flattenColorPalette"));
+const _withAlphaVariable = /*#__PURE__*/ _interop_require_wildcard(require("./util/withAlphaVariable"));
+const _toColorValue = /*#__PURE__*/ _interop_require_default(require("./util/toColorValue"));
+const _isPlainObject = /*#__PURE__*/ _interop_require_default(require("./util/isPlainObject"));
+const _transformThemeValue = /*#__PURE__*/ _interop_require_default(require("./util/transformThemeValue"));
+const _packagejson = require("../package.json");
+const _log = /*#__PURE__*/ _interop_require_default(require("./util/log"));
+const _normalizeScreens = require("./util/normalizeScreens");
+const _parseBoxShadowValue = require("./util/parseBoxShadowValue");
+const _removeAlphaVariables = require("./util/removeAlphaVariables");
+const _featureFlags = require("./featureFlags");
+const _dataTypes = require("./util/dataTypes");
+const _setupContextUtils = require("./lib/setupContextUtils");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function _getRequireWildcardCache(nodeInterop) {
+    if (typeof WeakMap !== "function") return null;
+    var cacheBabelInterop = new WeakMap();
+    var cacheNodeInterop = new WeakMap();
+    return (_getRequireWildcardCache = function(nodeInterop) {
+        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+    })(nodeInterop);
+}
+function _interop_require_wildcard(obj, nodeInterop) {
+    if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+    }
+    if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return {
+            default: obj
+        };
+    }
+    var cache = _getRequireWildcardCache(nodeInterop);
+    if (cache && cache.has(obj)) {
+        return cache.get(obj);
+    }
+    var newObj = {};
+    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+    for(var key in obj){
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+            if (desc && (desc.get || desc.set)) {
+                Object.defineProperty(newObj, key, desc);
+            } else {
+                newObj[key] = obj[key];
+            }
+        }
+    }
+    newObj.default = obj;
+    if (cache) {
+        cache.set(obj, newObj);
+    }
+    return newObj;
+}
+let variantPlugins = {
+    childVariant: ({ addVariant  })=>{
+        addVariant("*", "& > *");
+    },
+    pseudoElementVariants: ({ addVariant  })=>{
+        addVariant("first-letter", "&::first-letter");
+        addVariant("first-line", "&::first-line");
+        addVariant("marker", [
+            ({ container  })=>{
+                (0, _removeAlphaVariables.removeAlphaVariables)(container, [
+                    "--tw-text-opacity"
+                ]);
+                return "& *::marker";
+            },
+            ({ container  })=>{
+                (0, _removeAlphaVariables.removeAlphaVariables)(container, [
+                    "--tw-text-opacity"
+                ]);
+                return "&::marker";
+            }
+        ]);
+        addVariant("selection", [
+            "& *::selection",
+            "&::selection"
+        ]);
+        addVariant("file", "&::file-selector-button");
+        addVariant("placeholder", "&::placeholder");
+        addVariant("backdrop", "&::backdrop");
+        addVariant("before", ({ container  })=>{
+            container.walkRules((rule)=>{
+                let foundContent = false;
+                rule.walkDecls("content", ()=>{
+                    foundContent = true;
+                });
+                if (!foundContent) {
+                    rule.prepend(_postcss.default.decl({
+                        prop: "content",
+                        value: "var(--tw-content)"
+                    }));
+                }
+            });
+            return "&::before";
+        });
+        addVariant("after", ({ container  })=>{
+            container.walkRules((rule)=>{
+                let foundContent = false;
+                rule.walkDecls("content", ()=>{
+                    foundContent = true;
+                });
+                if (!foundContent) {
+                    rule.prepend(_postcss.default.decl({
+                        prop: "content",
+                        value: "var(--tw-content)"
+                    }));
+                }
+            });
+            return "&::after";
+        });
+    },
+    pseudoClassVariants: ({ addVariant , matchVariant , config , prefix  })=>{
+        let pseudoVariants = [
+            // Positional
+            [
+                "first",
+                "&:first-child"
+            ],
+            [
+                "last",
+                "&:last-child"
+            ],
+            [
+                "only",
+                "&:only-child"
+            ],
+            [
+                "odd",
+                "&:nth-child(odd)"
+            ],
+            [
+                "even",
+                "&:nth-child(even)"
+            ],
+            "first-of-type",
+            "last-of-type",
+            "only-of-type",
+            // State
+            [
+                "visited",
+                ({ container  })=>{
+                    (0, _removeAlphaVariables.removeAlphaVariables)(container, [
+                        "--tw-text-opacity",
+                        "--tw-border-opacity",
+                        "--tw-bg-opacity"
+                    ]);
+                    return "&:visited";
+                }
+            ],
+            "target",
+            [
+                "open",
+                "&[open]"
+            ],
+            // Forms
+            "default",
+            "checked",
+            "indeterminate",
+            "placeholder-shown",
+            "autofill",
+            "optional",
+            "required",
+            "valid",
+            "invalid",
+            "in-range",
+            "out-of-range",
+            "read-only",
+            // Content
+            "empty",
+            // Interactive
+            "focus-within",
+            [
+                "hover",
+                !(0, _featureFlags.flagEnabled)(config(), "hoverOnlyWhenSupported") ? "&:hover" : "@media (hover: hover) and (pointer: fine) { &:hover }"
+            ],
+            "focus",
+            "focus-visible",
+            "active",
+            "enabled",
+            "disabled"
+        ].map((variant)=>Array.isArray(variant) ? variant : [
+                variant,
+                `&:${variant}`
+            ]);
+        for (let [variantName, state] of pseudoVariants){
+            addVariant(variantName, (ctx)=>{
+                let result = typeof state === "function" ? state(ctx) : state;
+                return result;
+            });
+        }
+        let variants = {
+            group: (_, { modifier  })=>modifier ? [
+                    `:merge(${prefix(".group")}\\/${(0, _escapeClassName.default)(modifier)})`,
+                    " &"
+                ] : [
+                    `:merge(${prefix(".group")})`,
+                    " &"
+                ],
+            peer: (_, { modifier  })=>modifier ? [
+                    `:merge(${prefix(".peer")}\\/${(0, _escapeClassName.default)(modifier)})`,
+                    " ~ &"
+                ] : [
+                    `:merge(${prefix(".peer")})`,
+                    " ~ &"
+                ]
+        };
+        for (let [name, fn] of Object.entries(variants)){
+            matchVariant(name, (value = "", extra)=>{
+                let result = (0, _dataTypes.normalize)(typeof value === "function" ? value(extra) : value);
+                if (!result.includes("&")) result = "&" + result;
+                let [a, b] = fn("", extra);
+                let start = null;
+                let end = null;
+                let quotes = 0;
+                for(let i = 0; i < result.length; ++i){
+                    let c = result[i];
+                    if (c === "&") {
+                        start = i;
+                    } else if (c === "'" || c === '"') {
+                        quotes += 1;
+                    } else if (start !== null && c === " " && !quotes) {
+                        end = i;
+                    }
+                }
+                if (start !== null && end === null) {
+                    end = result.length;
+                }
+                // Basically this but can handle quotes:
+                // result.replace(/&(\S+)?/g, (_, pseudo = '') => a + pseudo + b)
+                return result.slice(0, start) + a + result.slice(start + 1, end) + b + result.slice(end);
+            }, {
+                values: Object.fromEntries(pseudoVariants),
+                [_setupContextUtils.INTERNAL_FEATURES]: {
+                    respectPrefix: false
+                }
+            });
+        }
+    },
+    directionVariants: ({ addVariant  })=>{
+        addVariant("ltr", '&:where([dir="ltr"], [dir="ltr"] *)');
+        addVariant("rtl", '&:where([dir="rtl"], [dir="rtl"] *)');
+    },
+    reducedMotionVariants: ({ addVariant  })=>{
+        addVariant("motion-safe", "@media (prefers-reduced-motion: no-preference)");
+        addVariant("motion-reduce", "@media (prefers-reduced-motion: reduce)");
+    },
+    darkVariants: ({ config , addVariant  })=>{
+        let [mode, selector = ".dark"] = [].concat(config("darkMode", "media"));
+        if (mode === false) {
+            mode = "media";
+            _log.default.warn("darkmode-false", [
+                "The `darkMode` option in your Tailwind CSS configuration is set to `false`, which now behaves the same as `media`.",
+                "Change `darkMode` to `media` or remove it entirely.",
+                "https://tailwindcss.com/docs/upgrade-guide#remove-dark-mode-configuration"
+            ]);
+        }
+        if (mode === "variant") {
+            let formats;
+            if (Array.isArray(selector)) {
+                formats = selector;
+            } else if (typeof selector === "function") {
+                formats = selector;
+            } else if (typeof selector === "string") {
+                formats = [
+                    selector
+                ];
+            }
+            // TODO: We could also add these warnings if the user passes a function that returns string | string[]
+            // But this is an advanced enough use case that it's probably not necessary
+            if (Array.isArray(formats)) {
+                for (let format of formats){
+                    if (format === ".dark") {
+                        mode = false;
+                        _log.default.warn("darkmode-variant-without-selector", [
+                            "When using `variant` for `darkMode`, you must provide a selector.",
+                            'Example: `darkMode: ["variant", ".your-selector &"]`'
+                        ]);
+                    } else if (!format.includes("&")) {
+                        mode = false;
+                        _log.default.warn("darkmode-variant-without-ampersand", [
+                            "When using `variant` for `darkMode`, your selector must contain `&`.",
+                            'Example `darkMode: ["variant", ".your-selector &"]`'
+                        ]);
+                    }
+                }
+            }
+            selector = formats;
+        }
+        if (mode === "selector") {
+            // New preferred behavior
+            addVariant("dark", `&:where(${selector}, ${selector} *)`);
+        } else if (mode === "media") {
+            addVariant("dark", "@media (prefers-color-scheme: dark)");
+        } else if (mode === "variant") {
+            addVariant("dark", selector);
+        } else if (mode === "class") {
+            // Old behavior
+            addVariant("dark", `&:is(${selector} *)`);
+        }
+    },
+    printVariant: ({ addVariant  })=>{
+        addVariant("print", "@media print");
+    },
+    screenVariants: ({ theme , addVariant , matchVariant  })=>{
+        var _theme;
+        let rawScreens = (_theme = theme("screens")) !== null && _theme !== void 0 ? _theme : {};
+        let areSimpleScreens = Object.values(rawScreens).every((v)=>typeof v === "string");
+        let screens = (0, _normalizeScreens.normalizeScreens)(theme("screens"));
+        /** @type {Set<string>} */ let unitCache = new Set([]);
+        /** @param {string} value */ function units(value) {
+            var _value_match;
+            var _value_match_;
+            return (_value_match_ = (_value_match = value.match(/(\D+)$/)) === null || _value_match === void 0 ? void 0 : _value_match[1]) !== null && _value_match_ !== void 0 ? _value_match_ : "(none)";
+        }
+        /** @param {string} value */ function recordUnits(value) {
+            if (value !== undefined) {
+                unitCache.add(units(value));
+            }
+        }
+        /** @param {string} value */ function canUseUnits(value) {
+            recordUnits(value);
+            // If the cache was empty it'll become 1 because we've just added the current unit
+            // If the cache was not empty and the units are the same the size doesn't change
+            // Otherwise, if the units are different from what is already known the size will always be > 1
+            return unitCache.size === 1;
+        }
+        for (const screen of screens){
+            for (const value of screen.values){
+                recordUnits(value.min);
+                recordUnits(value.max);
+            }
+        }
+        let screensUseConsistentUnits = unitCache.size <= 1;
+        /**
+     * @typedef {import('./util/normalizeScreens').Screen} Screen
+     */ /**
+     * @param {'min' | 'max'} type
+     * @returns {Record<string, Screen>}
+     */ function buildScreenValues(type) {
+            return Object.fromEntries(screens.filter((screen)=>(0, _normalizeScreens.isScreenSortable)(screen).result).map((screen)=>{
+                let { min , max  } = screen.values[0];
+                if (type === "min" && min !== undefined) {
+                    return screen;
+                } else if (type === "min" && max !== undefined) {
+                    return {
+                        ...screen,
+                        not: !screen.not
+                    };
+                } else if (type === "max" && max !== undefined) {
+                    return screen;
+                } else if (type === "max" && min !== undefined) {
+                    return {
+                        ...screen,
+                        not: !screen.not
+                    };
+                }
+            }).map((screen)=>[
+                    screen.name,
+                    screen
+                ]));
+        }
+        /**
+     * @param {'min' | 'max'} type
+     * @returns {(a: { value: string | Screen }, z: { value: string | Screen }) => number}
+     */ function buildSort(type) {
+            return (a, z)=>(0, _normalizeScreens.compareScreens)(type, a.value, z.value);
+        }
+        let maxSort = buildSort("max");
+        let minSort = buildSort("min");
+        /** @param {'min'|'max'} type */ function buildScreenVariant(type) {
+            return (value)=>{
+                if (!areSimpleScreens) {
+                    _log.default.warn("complex-screen-config", [
+                        "The `min-*` and `max-*` variants are not supported with a `screens` configuration containing objects."
+                    ]);
+                    return [];
+                } else if (!screensUseConsistentUnits) {
+                    _log.default.warn("mixed-screen-units", [
+                        "The `min-*` and `max-*` variants are not supported with a `screens` configuration containing mixed units."
+                    ]);
+                    return [];
+                } else if (typeof value === "string" && !canUseUnits(value)) {
+                    _log.default.warn("minmax-have-mixed-units", [
+                        "The `min-*` and `max-*` variants are not supported with a `screens` configuration containing mixed units."
+                    ]);
+                    return [];
+                }
+                return [
+                    `@media ${(0, _buildMediaQuery.default)((0, _normalizeScreens.toScreen)(value, type))}`
+                ];
+            };
+        }
+        matchVariant("max", buildScreenVariant("max"), {
+            sort: maxSort,
+            values: areSimpleScreens ? buildScreenValues("max") : {}
+        });
+        // screens and min-* are sorted together when they can be
+        let id = "min-screens";
+        for (let screen of screens){
+            addVariant(screen.name, `@media ${(0, _buildMediaQuery.default)(screen)}`, {
+                id,
+                sort: areSimpleScreens && screensUseConsistentUnits ? minSort : undefined,
+                value: screen
+            });
+        }
+        matchVariant("min", buildScreenVariant("min"), {
+            id,
+            sort: minSort
+        });
+    },
+    supportsVariants: ({ matchVariant , theme  })=>{
+        var _theme;
+        matchVariant("supports", (value = "")=>{
+            let check = value.startsWith("--") ? value : (0, _dataTypes.normalize)(value);
+            let isRaw = /^[\w-]*\s*\(/.test(check);
+            // Chrome has a bug where `(condition1)or(condition2)` is not valid
+            // But `(condition1) or (condition2)` is supported.
+            check = isRaw ? check.replace(/\b(and|or|not)\b/g, " $1 ") : check;
+            if (isRaw) {
+                return `@supports ${check}`;
+            }
+            if (!check.includes(":")) {
+                check = `${check}: var(--tw)`;
+            }
+            if (!(check.startsWith("(") && check.endsWith(")"))) {
+                check = `(${check})`;
+            }
+            return `@supports ${check}`;
+        }, {
+            values: (_theme = theme("supports")) !== null && _theme !== void 0 ? _theme : {}
+        });
+    },
+    hasVariants: ({ matchVariant , prefix  })=>{
+        matchVariant("has", (value)=>`&:has(${(0, _dataTypes.normalize)(value)})`, {
+            values: {},
+            [_setupContextUtils.INTERNAL_FEATURES]: {
+                respectPrefix: false
+            }
+        });
+        matchVariant("group-has", (value, { modifier  })=>modifier ? `:merge(${prefix(".group")}\\/${modifier}):has(${(0, _dataTypes.normalize)(value)}) &` : `:merge(${prefix(".group")}):has(${(0, _dataTypes.normalize)(value)}) &`, {
+            values: {},
+            [_setupContextUtils.INTERNAL_FEATURES]: {
+                respectPrefix: false
+            }
+        });
+        matchVariant("peer-has", (value, { modifier  })=>modifier ? `:merge(${prefix(".peer")}\\/${modifier}):has(${(0, _dataTypes.normalize)(value)}) ~ &` : `:merge(${prefix(".peer")}):has(${(0, _dataTypes.normalize)(value)}) ~ &`, {
+            values: {},
+            [_setupContextUtils.INTERNAL_FEATURES]: {
+                respectPrefix: false
+            }
+        });
+    },
+    ariaVariants: ({ matchVariant , theme  })=>{
+        var _theme;
+        matchVariant("aria", (value)=>`&[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}]`, {
+            values: (_theme = theme("aria")) !== null && _theme !== void 0 ? _theme : {}
+        });
+        var _theme1;
+        matchVariant("group-aria", (value, { modifier  })=>modifier ? `:merge(.group\\/${modifier})[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] &` : `:merge(.group)[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] &`, {
+            values: (_theme1 = theme("aria")) !== null && _theme1 !== void 0 ? _theme1 : {}
+        });
+        var _theme2;
+        matchVariant("peer-aria", (value, { modifier  })=>modifier ? `:merge(.peer\\/${modifier})[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] ~ &` : `:merge(.peer)[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] ~ &`, {
+            values: (_theme2 = theme("aria")) !== null && _theme2 !== void 0 ? _theme2 : {}
+        });
+    },
+    dataVariants: ({ matchVariant , theme  })=>{
+        var _theme;
+        matchVariant("data", (value)=>`&[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}]`, {
+            values: (_theme = theme("data")) !== null && _theme !== void 0 ? _theme : {}
+        });
+        var _theme1;
+        matchVariant("group-data", (value, { modifier  })=>modifier ? `:merge(.group\\/${modifier})[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] &` : `:merge(.group)[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] &`, {
+            values: (_theme1 = theme("data")) !== null && _theme1 !== void 0 ? _theme1 : {}
+        });
+        var _theme2;
+        matchVariant("peer-data", (value, { modifier  })=>modifier ? `:merge(.peer\\/${modifier})[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] ~ &` : `:merge(.peer)[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] ~ &`, {
+            values: (_theme2 = theme("data")) !== null && _theme2 !== void 0 ? _theme2 : {}
+        });
+    },
+    orientationVariants: ({ addVariant  })=>{
+        addVariant("portrait", "@media (orientation: portrait)");
+        addVariant("landscape", "@media (orientation: landscape)");
+    },
+    prefersContrastVariants: ({ addVariant  })=>{
+        addVariant("contrast-more", "@media (prefers-contrast: more)");
+        addVariant("contrast-less", "@media (prefers-contrast: less)");
+    },
+    forcedColorsVariants: ({ addVariant  })=>{
+        addVariant("forced-colors", "@media (forced-colors: active)");
+    }
+};
+let cssTransformValue = [
+    "translate(var(--tw-translate-x), var(--tw-translate-y))",
+    "rotate(var(--tw-rotate))",
+    "skewX(var(--tw-skew-x))",
+    "skewY(var(--tw-skew-y))",
+    "scaleX(var(--tw-scale-x))",
+    "scaleY(var(--tw-scale-y))"
+].join(" ");
+let cssFilterValue = [
+    "var(--tw-blur)",
+    "var(--tw-brightness)",
+    "var(--tw-contrast)",
+    "var(--tw-grayscale)",
+    "var(--tw-hue-rotate)",
+    "var(--tw-invert)",
+    "var(--tw-saturate)",
+    "var(--tw-sepia)",
+    "var(--tw-drop-shadow)"
+].join(" ");
+let cssBackdropFilterValue = [
+    "var(--tw-backdrop-blur)",
+    "var(--tw-backdrop-brightness)",
+    "var(--tw-backdrop-contrast)",
+    "var(--tw-backdrop-grayscale)",
+    "var(--tw-backdrop-hue-rotate)",
+    "var(--tw-backdrop-invert)",
+    "var(--tw-backdrop-opacity)",
+    "var(--tw-backdrop-saturate)",
+    "var(--tw-backdrop-sepia)"
+].join(" ");
+let corePlugins = {
+    preflight: ({ addBase  })=>{
+        let preflightStyles = _postcss.default.parse(_fs.default.readFileSync(_path.join(__dirname, "./css/preflight.css"), "utf8"));
+        addBase([
+            _postcss.default.comment({
+                text: `! tailwindcss v${_packagejson.version} | MIT License | https://tailwindcss.com`
+            }),
+            ...preflightStyles.nodes
+        ]);
+    },
+    container: (()=>{
+        function extractMinWidths(breakpoints = []) {
+            return breakpoints.flatMap((breakpoint)=>breakpoint.values.map((breakpoint)=>breakpoint.min)).filter((v)=>v !== undefined);
+        }
+        function mapMinWidthsToPadding(minWidths, screens, paddings) {
+            if (typeof paddings === "undefined") {
+                return [];
+            }
+            if (!(typeof paddings === "object" && paddings !== null)) {
+                return [
+                    {
+                        screen: "DEFAULT",
+                        minWidth: 0,
+                        padding: paddings
+                    }
+                ];
+            }
+            let mapping = [];
+            if (paddings.DEFAULT) {
+                mapping.push({
+                    screen: "DEFAULT",
+                    minWidth: 0,
+                    padding: paddings.DEFAULT
+                });
+            }
+            for (let minWidth of minWidths){
+                for (let screen of screens){
+                    for (let { min  } of screen.values){
+                        if (min === minWidth) {
+                            mapping.push({
+                                minWidth,
+                                padding: paddings[screen.name]
+                            });
+                        }
+                    }
+                }
+            }
+            return mapping;
+        }
+        return function({ addComponents , theme  }) {
+            let screens = (0, _normalizeScreens.normalizeScreens)(theme("container.screens", theme("screens")));
+            let minWidths = extractMinWidths(screens);
+            let paddings = mapMinWidthsToPadding(minWidths, screens, theme("container.padding"));
+            let generatePaddingFor = (minWidth)=>{
+                let paddingConfig = paddings.find((padding)=>padding.minWidth === minWidth);
+                if (!paddingConfig) {
+                    return {};
+                }
+                return {
+                    paddingRight: paddingConfig.padding,
+                    paddingLeft: paddingConfig.padding
+                };
+            };
+            let atRules = Array.from(new Set(minWidths.slice().sort((a, z)=>parseInt(a) - parseInt(z)))).map((minWidth)=>({
+                    [`@media (min-width: ${minWidth})`]: {
+                        ".container": {
+                            "max-width": minWidth,
+                            ...generatePaddingFor(minWidth)
+                        }
+                    }
+                }));
+            addComponents([
+                {
+                    ".container": Object.assign({
+                        width: "100%"
+                    }, theme("container.center", false) ? {
+                        marginRight: "auto",
+                        marginLeft: "auto"
+                    } : {}, generatePaddingFor(0))
+                },
+                ...atRules
+            ]);
+        };
+    })(),
+    accessibility: ({ addUtilities  })=>{
+        addUtilities({
+            ".sr-only": {
+                position: "absolute",
+                width: "1px",
+                height: "1px",
+                padding: "0",
+                margin: "-1px",
+                overflow: "hidden",
+                clip: "rect(0, 0, 0, 0)",
+                whiteSpace: "nowrap",
+                borderWidth: "0"
+            },
+            ".not-sr-only": {
+                position: "static",
+                width: "auto",
+                height: "auto",
+                padding: "0",
+                margin: "0",
+                overflow: "visible",
+                clip: "auto",
+                whiteSpace: "normal"
+            }
+        });
+    },
+    pointerEvents: ({ addUtilities  })=>{
+        addUtilities({
+            ".pointer-events-none": {
+                "pointer-events": "none"
+            },
+            ".pointer-events-auto": {
+                "pointer-events": "auto"
+            }
+        });
+    },
+    visibility: ({ addUtilities  })=>{
+        addUtilities({
+            ".visible": {
+                visibility: "visible"
+            },
+            ".invisible": {
+                visibility: "hidden"
+            },
+            ".collapse": {
+                visibility: "collapse"
+            }
+        });
+    },
+    position: ({ addUtilities  })=>{
+        addUtilities({
+            ".static": {
+                position: "static"
+            },
+            ".fixed": {
+                position: "fixed"
+            },
+            ".absolute": {
+                position: "absolute"
+            },
+            ".relative": {
+                position: "relative"
+            },
+            ".sticky": {
+                position: "sticky"
+            }
+        });
+    },
+    inset: (0, _createUtilityPlugin.default)("inset", [
+        [
+            "inset",
+            [
+                "inset"
+            ]
+        ],
+        [
+            [
+                "inset-x",
+                [
+                    "left",
+                    "right"
+                ]
+            ],
+            [
+                "inset-y",
+                [
+                    "top",
+                    "bottom"
+                ]
+            ]
+        ],
+        [
+            [
+                "start",
+                [
+                    "inset-inline-start"
+                ]
+            ],
+            [
+                "end",
+                [
+                    "inset-inline-end"
+                ]
+            ],
+            [
+                "top",
+                [
+                    "top"
+                ]
+            ],
+            [
+                "right",
+                [
+                    "right"
+                ]
+            ],
+            [
+                "bottom",
+                [
+                    "bottom"
+                ]
+            ],
+            [
+                "left",
+                [
+                    "left"
+                ]
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    isolation: ({ addUtilities  })=>{
+        addUtilities({
+            ".isolate": {
+                isolation: "isolate"
+            },
+            ".isolation-auto": {
+                isolation: "auto"
+            }
+        });
+    },
+    zIndex: (0, _createUtilityPlugin.default)("zIndex", [
+        [
+            "z",
+            [
+                "zIndex"
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    order: (0, _createUtilityPlugin.default)("order", undefined, {
+        supportsNegativeValues: true
+    }),
+    gridColumn: (0, _createUtilityPlugin.default)("gridColumn", [
+        [
+            "col",
+            [
+                "gridColumn"
+            ]
+        ]
+    ]),
+    gridColumnStart: (0, _createUtilityPlugin.default)("gridColumnStart", [
+        [
+            "col-start",
+            [
+                "gridColumnStart"
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    gridColumnEnd: (0, _createUtilityPlugin.default)("gridColumnEnd", [
+        [
+            "col-end",
+            [
+                "gridColumnEnd"
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    gridRow: (0, _createUtilityPlugin.default)("gridRow", [
+        [
+            "row",
+            [
+                "gridRow"
+            ]
+        ]
+    ]),
+    gridRowStart: (0, _createUtilityPlugin.default)("gridRowStart", [
+        [
+            "row-start",
+            [
+                "gridRowStart"
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    gridRowEnd: (0, _createUtilityPlugin.default)("gridRowEnd", [
+        [
+            "row-end",
+            [
+                "gridRowEnd"
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    float: ({ addUtilities  })=>{
+        addUtilities({
+            ".float-start": {
+                float: "inline-start"
+            },
+            ".float-end": {
+                float: "inline-end"
+            },
+            ".float-right": {
+                float: "right"
+            },
+            ".float-left": {
+                float: "left"
+            },
+            ".float-none": {
+                float: "none"
+            }
+        });
+    },
+    clear: ({ addUtilities  })=>{
+        addUtilities({
+            ".clear-start": {
+                clear: "inline-start"
+            },
+            ".clear-end": {
+                clear: "inline-end"
+            },
+            ".clear-left": {
+                clear: "left"
+            },
+            ".clear-right": {
+                clear: "right"
+            },
+            ".clear-both": {
+                clear: "both"
+            },
+            ".clear-none": {
+                clear: "none"
+            }
+        });
+    },
+    margin: (0, _createUtilityPlugin.default)("margin", [
+        [
+            "m",
+            [
+                "margin"
+            ]
+        ],
+        [
+            [
+                "mx",
+                [
+                    "margin-left",
+                    "margin-right"
+                ]
+            ],
+            [
+                "my",
+                [
+                    "margin-top",
+                    "margin-bottom"
+                ]
+            ]
+        ],
+        [
+            [
+                "ms",
+                [
+                    "margin-inline-start"
+                ]
+            ],
+            [
+                "me",
+                [
+                    "margin-inline-end"
+                ]
+            ],
+            [
+                "mt",
+                [
+                    "margin-top"
+                ]
+            ],
+            [
+                "mr",
+                [
+                    "margin-right"
+                ]
+            ],
+            [
+                "mb",
+                [
+                    "margin-bottom"
+                ]
+            ],
+            [
+                "ml",
+                [
+                    "margin-left"
+                ]
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    boxSizing: ({ addUtilities  })=>{
+        addUtilities({
+            ".box-border": {
+                "box-sizing": "border-box"
+            },
+            ".box-content": {
+                "box-sizing": "content-box"
+            }
+        });
+    },
+    lineClamp: ({ matchUtilities , addUtilities , theme  })=>{
+        matchUtilities({
+            "line-clamp": (value)=>({
+                    overflow: "hidden",
+                    display: "-webkit-box",
+                    "-webkit-box-orient": "vertical",
+                    "-webkit-line-clamp": `${value}`
+                })
+        }, {
+            values: theme("lineClamp")
+        });
+        addUtilities({
+            ".line-clamp-none": {
+                overflow: "visible",
+                display: "block",
+                "-webkit-box-orient": "horizontal",
+                "-webkit-line-clamp": "none"
+            }
+        });
+    },
+    display: ({ addUtilities  })=>{
+        addUtilities({
+            ".block": {
+                display: "block"
+            },
+            ".inline-block": {
+                display: "inline-block"
+            },
+            ".inline": {
+                display: "inline"
+            },
+            ".flex": {
+                display: "flex"
+            },
+            ".inline-flex": {
+                display: "inline-flex"
+            },
+            ".table": {
+                display: "table"
+            },
+            ".inline-table": {
+                display: "inline-table"
+            },
+            ".table-caption": {
+                display: "table-caption"
+            },
+            ".table-cell": {
+                display: "table-cell"
+            },
+            ".table-column": {
+                display: "table-column"
+            },
+            ".table-column-group": {
+                display: "table-column-group"
+            },
+            ".table-footer-group": {
+                display: "table-footer-group"
+            },
+            ".table-header-group": {
+                display: "table-header-group"
+            },
+            ".table-row-group": {
+                display: "table-row-group"
+            },
+            ".table-row": {
+                display: "table-row"
+            },
+            ".flow-root": {
+                display: "flow-root"
+            },
+            ".grid": {
+                display: "grid"
+            },
+            ".inline-grid": {
+                display: "inline-grid"
+            },
+            ".contents": {
+                display: "contents"
+            },
+            ".list-item": {
+                display: "list-item"
+            },
+            ".hidden": {
+                display: "none"
+            }
+        });
+    },
+    aspectRatio: (0, _createUtilityPlugin.default)("aspectRatio", [
+        [
+            "aspect",
+            [
+                "aspect-ratio"
+            ]
+        ]
+    ]),
+    size: (0, _createUtilityPlugin.default)("size", [
+        [
+            "size",
+            [
+                "width",
+                "height"
+            ]
+        ]
+    ]),
+    height: (0, _createUtilityPlugin.default)("height", [
+        [
+            "h",
+            [
+                "height"
+            ]
+        ]
+    ]),
+    maxHeight: (0, _createUtilityPlugin.default)("maxHeight", [
+        [
+            "max-h",
+            [
+                "maxHeight"
+            ]
+        ]
+    ]),
+    minHeight: (0, _createUtilityPlugin.default)("minHeight", [
+        [
+            "min-h",
+            [
+                "minHeight"
+            ]
+        ]
+    ]),
+    width: (0, _createUtilityPlugin.default)("width", [
+        [
+            "w",
+            [
+                "width"
+            ]
+        ]
+    ]),
+    minWidth: (0, _createUtilityPlugin.default)("minWidth", [
+        [
+            "min-w",
+            [
+                "minWidth"
+            ]
+        ]
+    ]),
+    maxWidth: (0, _createUtilityPlugin.default)("maxWidth", [
+        [
+            "max-w",
+            [
+                "maxWidth"
+            ]
+        ]
+    ]),
+    flex: (0, _createUtilityPlugin.default)("flex"),
+    flexShrink: (0, _createUtilityPlugin.default)("flexShrink", [
+        [
+            "flex-shrink",
+            [
+                "flex-shrink"
+            ]
+        ],
+        [
+            "shrink",
+            [
+                "flex-shrink"
+            ]
+        ]
+    ]),
+    flexGrow: (0, _createUtilityPlugin.default)("flexGrow", [
+        [
+            "flex-grow",
+            [
+                "flex-grow"
+            ]
+        ],
+        [
+            "grow",
+            [
+                "flex-grow"
+            ]
+        ]
+    ]),
+    flexBasis: (0, _createUtilityPlugin.default)("flexBasis", [
+        [
+            "basis",
+            [
+                "flex-basis"
+            ]
+        ]
+    ]),
+    tableLayout: ({ addUtilities  })=>{
+        addUtilities({
+            ".table-auto": {
+                "table-layout": "auto"
+            },
+            ".table-fixed": {
+                "table-layout": "fixed"
+            }
+        });
+    },
+    captionSide: ({ addUtilities  })=>{
+        addUtilities({
+            ".caption-top": {
+                "caption-side": "top"
+            },
+            ".caption-bottom": {
+                "caption-side": "bottom"
+            }
+        });
+    },
+    borderCollapse: ({ addUtilities  })=>{
+        addUtilities({
+            ".border-collapse": {
+                "border-collapse": "collapse"
+            },
+            ".border-separate": {
+                "border-collapse": "separate"
+            }
+        });
+    },
+    borderSpacing: ({ addDefaults , matchUtilities , theme  })=>{
+        addDefaults("border-spacing", {
+            "--tw-border-spacing-x": 0,
+            "--tw-border-spacing-y": 0
+        });
+        matchUtilities({
+            "border-spacing": (value)=>{
+                return {
+                    "--tw-border-spacing-x": value,
+                    "--tw-border-spacing-y": value,
+                    "@defaults border-spacing": {},
+                    "border-spacing": "var(--tw-border-spacing-x) var(--tw-border-spacing-y)"
+                };
+            },
+            "border-spacing-x": (value)=>{
+                return {
+                    "--tw-border-spacing-x": value,
+                    "@defaults border-spacing": {},
+                    "border-spacing": "var(--tw-border-spacing-x) var(--tw-border-spacing-y)"
+                };
+            },
+            "border-spacing-y": (value)=>{
+                return {
+                    "--tw-border-spacing-y": value,
+                    "@defaults border-spacing": {},
+                    "border-spacing": "var(--tw-border-spacing-x) var(--tw-border-spacing-y)"
+                };
+            }
+        }, {
+            values: theme("borderSpacing")
+        });
+    },
+    transformOrigin: (0, _createUtilityPlugin.default)("transformOrigin", [
+        [
+            "origin",
+            [
+                "transformOrigin"
+            ]
+        ]
+    ]),
+    translate: (0, _createUtilityPlugin.default)("translate", [
+        [
+            [
+                "translate-x",
+                [
+                    [
+                        "@defaults transform",
+                        {}
+                    ],
+                    "--tw-translate-x",
+                    [
+                        "transform",
+                        cssTransformValue
+                    ]
+                ]
+            ],
+            [
+                "translate-y",
+                [
+                    [
+                        "@defaults transform",
+                        {}
+                    ],
+                    "--tw-translate-y",
+                    [
+                        "transform",
+                        cssTransformValue
+                    ]
+                ]
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    rotate: (0, _createUtilityPlugin.default)("rotate", [
+        [
+            "rotate",
+            [
+                [
+                    "@defaults transform",
+                    {}
+                ],
+                "--tw-rotate",
+                [
+                    "transform",
+                    cssTransformValue
+                ]
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    skew: (0, _createUtilityPlugin.default)("skew", [
+        [
+            [
+                "skew-x",
+                [
+                    [
+                        "@defaults transform",
+                        {}
+                    ],
+                    "--tw-skew-x",
+                    [
+                        "transform",
+                        cssTransformValue
+                    ]
+                ]
+            ],
+            [
+                "skew-y",
+                [
+                    [
+                        "@defaults transform",
+                        {}
+                    ],
+                    "--tw-skew-y",
+                    [
+                        "transform",
+                        cssTransformValue
+                    ]
+                ]
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    scale: (0, _createUtilityPlugin.default)("scale", [
+        [
+            "scale",
+            [
+                [
+                    "@defaults transform",
+                    {}
+                ],
+                "--tw-scale-x",
+                "--tw-scale-y",
+                [
+                    "transform",
+                    cssTransformValue
+                ]
+            ]
+        ],
+        [
+            [
+                "scale-x",
+                [
+                    [
+                        "@defaults transform",
+                        {}
+                    ],
+                    "--tw-scale-x",
+                    [
+                        "transform",
+                        cssTransformValue
+                    ]
+                ]
+            ],
+            [
+                "scale-y",
+                [
+                    [
+                        "@defaults transform",
+                        {}
+                    ],
+                    "--tw-scale-y",
+                    [
+                        "transform",
+                        cssTransformValue
+                    ]
+                ]
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    transform: ({ addDefaults , addUtilities  })=>{
+        addDefaults("transform", {
+            "--tw-translate-x": "0",
+            "--tw-translate-y": "0",
+            "--tw-rotate": "0",
+            "--tw-skew-x": "0",
+            "--tw-skew-y": "0",
+            "--tw-scale-x": "1",
+            "--tw-scale-y": "1"
+        });
+        addUtilities({
+            ".transform": {
+                "@defaults transform": {},
+                transform: cssTransformValue
+            },
+            ".transform-cpu": {
+                transform: cssTransformValue
+            },
+            ".transform-gpu": {
+                transform: cssTransformValue.replace("translate(var(--tw-translate-x), var(--tw-translate-y))", "translate3d(var(--tw-translate-x), var(--tw-translate-y), 0)")
+            },
+            ".transform-none": {
+                transform: "none"
+            }
+        });
+    },
+    animation: ({ matchUtilities , theme , config  })=>{
+        let prefixName = (name)=>(0, _escapeClassName.default)(config("prefix") + name);
+        var _theme;
+        let keyframes = Object.fromEntries(Object.entries((_theme = theme("keyframes")) !== null && _theme !== void 0 ? _theme : {}).map(([key, value])=>{
+            return [
+                key,
+                {
+                    [`@keyframes ${prefixName(key)}`]: value
+                }
+            ];
+        }));
+        matchUtilities({
+            animate: (value)=>{
+                let animations = (0, _parseAnimationValue.default)(value);
+                return [
+                    ...animations.flatMap((animation)=>keyframes[animation.name]),
+                    {
+                        animation: animations.map(({ name , value  })=>{
+                            if (name === undefined || keyframes[name] === undefined) {
+                                return value;
+                            }
+                            return value.replace(name, prefixName(name));
+                        }).join(", ")
+                    }
+                ];
+            }
+        }, {
+            values: theme("animation")
+        });
+    },
+    cursor: (0, _createUtilityPlugin.default)("cursor"),
+    touchAction: ({ addDefaults , addUtilities  })=>{
+        addDefaults("touch-action", {
+            "--tw-pan-x": " ",
+            "--tw-pan-y": " ",
+            "--tw-pinch-zoom": " "
+        });
+        let cssTouchActionValue = "var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)";
+        addUtilities({
+            ".touch-auto": {
+                "touch-action": "auto"
+            },
+            ".touch-none": {
+                "touch-action": "none"
+            },
+            ".touch-pan-x": {
+                "@defaults touch-action": {},
+                "--tw-pan-x": "pan-x",
+                "touch-action": cssTouchActionValue
+            },
+            ".touch-pan-left": {
+                "@defaults touch-action": {},
+                "--tw-pan-x": "pan-left",
+                "touch-action": cssTouchActionValue
+            },
+            ".touch-pan-right": {
+                "@defaults touch-action": {},
+                "--tw-pan-x": "pan-right",
+                "touch-action": cssTouchActionValue
+            },
+            ".touch-pan-y": {
+                "@defaults touch-action": {},
+                "--tw-pan-y": "pan-y",
+                "touch-action": cssTouchActionValue
+            },
+            ".touch-pan-up": {
+                "@defaults touch-action": {},
+                "--tw-pan-y": "pan-up",
+                "touch-action": cssTouchActionValue
+            },
+            ".touch-pan-down": {
+                "@defaults touch-action": {},
+                "--tw-pan-y": "pan-down",
+                "touch-action": cssTouchActionValue
+            },
+            ".touch-pinch-zoom": {
+                "@defaults touch-action": {},
+                "--tw-pinch-zoom": "pinch-zoom",
+                "touch-action": cssTouchActionValue
+            },
+            ".touch-manipulation": {
+                "touch-action": "manipulation"
+            }
+        });
+    },
+    userSelect: ({ addUtilities  })=>{
+        addUtilities({
+            ".select-none": {
+                "user-select": "none"
+            },
+            ".select-text": {
+                "user-select": "text"
+            },
+            ".select-all": {
+                "user-select": "all"
+            },
+            ".select-auto": {
+                "user-select": "auto"
+            }
+        });
+    },
+    resize: ({ addUtilities  })=>{
+        addUtilities({
+            ".resize-none": {
+                resize: "none"
+            },
+            ".resize-y": {
+                resize: "vertical"
+            },
+            ".resize-x": {
+                resize: "horizontal"
+            },
+            ".resize": {
+                resize: "both"
+            }
+        });
+    },
+    scrollSnapType: ({ addDefaults , addUtilities  })=>{
+        addDefaults("scroll-snap-type", {
+            "--tw-scroll-snap-strictness": "proximity"
+        });
+        addUtilities({
+            ".snap-none": {
+                "scroll-snap-type": "none"
+            },
+            ".snap-x": {
+                "@defaults scroll-snap-type": {},
+                "scroll-snap-type": "x var(--tw-scroll-snap-strictness)"
+            },
+            ".snap-y": {
+                "@defaults scroll-snap-type": {},
+                "scroll-snap-type": "y var(--tw-scroll-snap-strictness)"
+            },
+            ".snap-both": {
+                "@defaults scroll-snap-type": {},
+                "scroll-snap-type": "both var(--tw-scroll-snap-strictness)"
+            },
+            ".snap-mandatory": {
+                "--tw-scroll-snap-strictness": "mandatory"
+            },
+            ".snap-proximity": {
+                "--tw-scroll-snap-strictness": "proximity"
+            }
+        });
+    },
+    scrollSnapAlign: ({ addUtilities  })=>{
+        addUtilities({
+            ".snap-start": {
+                "scroll-snap-align": "start"
+            },
+            ".snap-end": {
+                "scroll-snap-align": "end"
+            },
+            ".snap-center": {
+                "scroll-snap-align": "center"
+            },
+            ".snap-align-none": {
+                "scroll-snap-align": "none"
+            }
+        });
+    },
+    scrollSnapStop: ({ addUtilities  })=>{
+        addUtilities({
+            ".snap-normal": {
+                "scroll-snap-stop": "normal"
+            },
+            ".snap-always": {
+                "scroll-snap-stop": "always"
+            }
+        });
+    },
+    scrollMargin: (0, _createUtilityPlugin.default)("scrollMargin", [
+        [
+            "scroll-m",
+            [
+                "scroll-margin"
+            ]
+        ],
+        [
+            [
+                "scroll-mx",
+                [
+                    "scroll-margin-left",
+                    "scroll-margin-right"
+                ]
+            ],
+            [
+                "scroll-my",
+                [
+                    "scroll-margin-top",
+                    "scroll-margin-bottom"
+                ]
+            ]
+        ],
+        [
+            [
+                "scroll-ms",
+                [
+                    "scroll-margin-inline-start"
+                ]
+            ],
+            [
+                "scroll-me",
+                [
+                    "scroll-margin-inline-end"
+                ]
+            ],
+            [
+                "scroll-mt",
+                [
+                    "scroll-margin-top"
+                ]
+            ],
+            [
+                "scroll-mr",
+                [
+                    "scroll-margin-right"
+                ]
+            ],
+            [
+                "scroll-mb",
+                [
+                    "scroll-margin-bottom"
+                ]
+            ],
+            [
+                "scroll-ml",
+                [
+                    "scroll-margin-left"
+                ]
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    scrollPadding: (0, _createUtilityPlugin.default)("scrollPadding", [
+        [
+            "scroll-p",
+            [
+                "scroll-padding"
+            ]
+        ],
+        [
+            [
+                "scroll-px",
+                [
+                    "scroll-padding-left",
+                    "scroll-padding-right"
+                ]
+            ],
+            [
+                "scroll-py",
+                [
+                    "scroll-padding-top",
+                    "scroll-padding-bottom"
+                ]
+            ]
+        ],
+        [
+            [
+                "scroll-ps",
+                [
+                    "scroll-padding-inline-start"
+                ]
+            ],
+            [
+                "scroll-pe",
+                [
+                    "scroll-padding-inline-end"
+                ]
+            ],
+            [
+                "scroll-pt",
+                [
+                    "scroll-padding-top"
+                ]
+            ],
+            [
+                "scroll-pr",
+                [
+                    "scroll-padding-right"
+                ]
+            ],
+            [
+                "scroll-pb",
+                [
+                    "scroll-padding-bottom"
+                ]
+            ],
+            [
+                "scroll-pl",
+                [
+                    "scroll-padding-left"
+                ]
+            ]
+        ]
+    ]),
+    listStylePosition: ({ addUtilities  })=>{
+        addUtilities({
+            ".list-inside": {
+                "list-style-position": "inside"
+            },
+            ".list-outside": {
+                "list-style-position": "outside"
+            }
+        });
+    },
+    listStyleType: (0, _createUtilityPlugin.default)("listStyleType", [
+        [
+            "list",
+            [
+                "listStyleType"
+            ]
+        ]
+    ]),
+    listStyleImage: (0, _createUtilityPlugin.default)("listStyleImage", [
+        [
+            "list-image",
+            [
+                "listStyleImage"
+            ]
+        ]
+    ]),
+    appearance: ({ addUtilities  })=>{
+        addUtilities({
+            ".appearance-none": {
+                appearance: "none"
+            },
+            ".appearance-auto": {
+                appearance: "auto"
+            }
+        });
+    },
+    columns: (0, _createUtilityPlugin.default)("columns", [
+        [
+            "columns",
+            [
+                "columns"
+            ]
+        ]
+    ]),
+    breakBefore: ({ addUtilities  })=>{
+        addUtilities({
+            ".break-before-auto": {
+                "break-before": "auto"
+            },
+            ".break-before-avoid": {
+                "break-before": "avoid"
+            },
+            ".break-before-all": {
+                "break-before": "all"
+            },
+            ".break-before-avoid-page": {
+                "break-before": "avoid-page"
+            },
+            ".break-before-page": {
+                "break-before": "page"
+            },
+            ".break-before-left": {
+                "break-before": "left"
+            },
+            ".break-before-right": {
+                "break-before": "right"
+            },
+            ".break-before-column": {
+                "break-before": "column"
+            }
+        });
+    },
+    breakInside: ({ addUtilities  })=>{
+        addUtilities({
+            ".break-inside-auto": {
+                "break-inside": "auto"
+            },
+            ".break-inside-avoid": {
+                "break-inside": "avoid"
+            },
+            ".break-inside-avoid-page": {
+                "break-inside": "avoid-page"
+            },
+            ".break-inside-avoid-column": {
+                "break-inside": "avoid-column"
+            }
+        });
+    },
+    breakAfter: ({ addUtilities  })=>{
+        addUtilities({
+            ".break-after-auto": {
+                "break-after": "auto"
+            },
+            ".break-after-avoid": {
+                "break-after": "avoid"
+            },
+            ".break-after-all": {
+                "break-after": "all"
+            },
+            ".break-after-avoid-page": {
+                "break-after": "avoid-page"
+            },
+            ".break-after-page": {
+                "break-after": "page"
+            },
+            ".break-after-left": {
+                "break-after": "left"
+            },
+            ".break-after-right": {
+                "break-after": "right"
+            },
+            ".break-after-column": {
+                "break-after": "column"
+            }
+        });
+    },
+    gridAutoColumns: (0, _createUtilityPlugin.default)("gridAutoColumns", [
+        [
+            "auto-cols",
+            [
+                "gridAutoColumns"
+            ]
+        ]
+    ]),
+    gridAutoFlow: ({ addUtilities  })=>{
+        addUtilities({
+            ".grid-flow-row": {
+                gridAutoFlow: "row"
+            },
+            ".grid-flow-col": {
+                gridAutoFlow: "column"
+            },
+            ".grid-flow-dense": {
+                gridAutoFlow: "dense"
+            },
+            ".grid-flow-row-dense": {
+                gridAutoFlow: "row dense"
+            },
+            ".grid-flow-col-dense": {
+                gridAutoFlow: "column dense"
+            }
+        });
+    },
+    gridAutoRows: (0, _createUtilityPlugin.default)("gridAutoRows", [
+        [
+            "auto-rows",
+            [
+                "gridAutoRows"
+            ]
+        ]
+    ]),
+    gridTemplateColumns: (0, _createUtilityPlugin.default)("gridTemplateColumns", [
+        [
+            "grid-cols",
+            [
+                "gridTemplateColumns"
+            ]
+        ]
+    ]),
+    gridTemplateRows: (0, _createUtilityPlugin.default)("gridTemplateRows", [
+        [
+            "grid-rows",
+            [
+                "gridTemplateRows"
+            ]
+        ]
+    ]),
+    flexDirection: ({ addUtilities  })=>{
+        addUtilities({
+            ".flex-row": {
+                "flex-direction": "row"
+            },
+            ".flex-row-reverse": {
+                "flex-direction": "row-reverse"
+            },
+            ".flex-col": {
+                "flex-direction": "column"
+            },
+            ".flex-col-reverse": {
+                "flex-direction": "column-reverse"
+            }
+        });
+    },
+    flexWrap: ({ addUtilities  })=>{
+        addUtilities({
+            ".flex-wrap": {
+                "flex-wrap": "wrap"
+            },
+            ".flex-wrap-reverse": {
+                "flex-wrap": "wrap-reverse"
+            },
+            ".flex-nowrap": {
+                "flex-wrap": "nowrap"
+            }
+        });
+    },
+    placeContent: ({ addUtilities  })=>{
+        addUtilities({
+            ".place-content-center": {
+                "place-content": "center"
+            },
+            ".place-content-start": {
+                "place-content": "start"
+            },
+            ".place-content-end": {
+                "place-content": "end"
+            },
+            ".place-content-between": {
+                "place-content": "space-between"
+            },
+            ".place-content-around": {
+                "place-content": "space-around"
+            },
+            ".place-content-evenly": {
+                "place-content": "space-evenly"
+            },
+            ".place-content-baseline": {
+                "place-content": "baseline"
+            },
+            ".place-content-stretch": {
+                "place-content": "stretch"
+            }
+        });
+    },
+    placeItems: ({ addUtilities  })=>{
+        addUtilities({
+            ".place-items-start": {
+                "place-items": "start"
+            },
+            ".place-items-end": {
+                "place-items": "end"
+            },
+            ".place-items-center": {
+                "place-items": "center"
+            },
+            ".place-items-baseline": {
+                "place-items": "baseline"
+            },
+            ".place-items-stretch": {
+                "place-items": "stretch"
+            }
+        });
+    },
+    alignContent: ({ addUtilities  })=>{
+        addUtilities({
+            ".content-normal": {
+                "align-content": "normal"
+            },
+            ".content-center": {
+                "align-content": "center"
+            },
+            ".content-start": {
+                "align-content": "flex-start"
+            },
+            ".content-end": {
+                "align-content": "flex-end"
+            },
+            ".content-between": {
+                "align-content": "space-between"
+            },
+            ".content-around": {
+                "align-content": "space-around"
+            },
+            ".content-evenly": {
+                "align-content": "space-evenly"
+            },
+            ".content-baseline": {
+                "align-content": "baseline"
+            },
+            ".content-stretch": {
+                "align-content": "stretch"
+            }
+        });
+    },
+    alignItems: ({ addUtilities  })=>{
+        addUtilities({
+            ".items-start": {
+                "align-items": "flex-start"
+            },
+            ".items-end": {
+                "align-items": "flex-end"
+            },
+            ".items-center": {
+                "align-items": "center"
+            },
+            ".items-baseline": {
+                "align-items": "baseline"
+            },
+            ".items-stretch": {
+                "align-items": "stretch"
+            }
+        });
+    },
+    justifyContent: ({ addUtilities  })=>{
+        addUtilities({
+            ".justify-normal": {
+                "justify-content": "normal"
+            },
+            ".justify-start": {
+                "justify-content": "flex-start"
+            },
+            ".justify-end": {
+                "justify-content": "flex-end"
+            },
+            ".justify-center": {
+                "justify-content": "center"
+            },
+            ".justify-between": {
+                "justify-content": "space-between"
+            },
+            ".justify-around": {
+                "justify-content": "space-around"
+            },
+            ".justify-evenly": {
+                "justify-content": "space-evenly"
+            },
+            ".justify-stretch": {
+                "justify-content": "stretch"
+            }
+        });
+    },
+    justifyItems: ({ addUtilities  })=>{
+        addUtilities({
+            ".justify-items-start": {
+                "justify-items": "start"
+            },
+            ".justify-items-end": {
+                "justify-items": "end"
+            },
+            ".justify-items-center": {
+                "justify-items": "center"
+            },
+            ".justify-items-stretch": {
+                "justify-items": "stretch"
+            }
+        });
+    },
+    gap: (0, _createUtilityPlugin.default)("gap", [
+        [
+            "gap",
+            [
+                "gap"
+            ]
+        ],
+        [
+            [
+                "gap-x",
+                [
+                    "columnGap"
+                ]
+            ],
+            [
+                "gap-y",
+                [
+                    "rowGap"
+                ]
+            ]
+        ]
+    ]),
+    space: ({ matchUtilities , addUtilities , theme  })=>{
+        matchUtilities({
+            "space-x": (value)=>{
+                value = value === "0" ? "0px" : value;
+                return {
+                    "& > :not([hidden]) ~ :not([hidden])": {
+                        "--tw-space-x-reverse": "0",
+                        "margin-right": `calc(${value} * var(--tw-space-x-reverse))`,
+                        "margin-left": `calc(${value} * calc(1 - var(--tw-space-x-reverse)))`
+                    }
+                };
+            },
+            "space-y": (value)=>{
+                value = value === "0" ? "0px" : value;
+                return {
+                    "& > :not([hidden]) ~ :not([hidden])": {
+                        "--tw-space-y-reverse": "0",
+                        "margin-top": `calc(${value} * calc(1 - var(--tw-space-y-reverse)))`,
+                        "margin-bottom": `calc(${value} * var(--tw-space-y-reverse))`
+                    }
+                };
+            }
+        }, {
+            values: theme("space"),
+            supportsNegativeValues: true
+        });
+        addUtilities({
+            ".space-y-reverse > :not([hidden]) ~ :not([hidden])": {
+                "--tw-space-y-reverse": "1"
+            },
+            ".space-x-reverse > :not([hidden]) ~ :not([hidden])": {
+                "--tw-space-x-reverse": "1"
+            }
+        });
+    },
+    divideWidth: ({ matchUtilities , addUtilities , theme  })=>{
+        matchUtilities({
+            "divide-x": (value)=>{
+                value = value === "0" ? "0px" : value;
+                return {
+                    "& > :not([hidden]) ~ :not([hidden])": {
+                        "@defaults border-width": {},
+                        "--tw-divide-x-reverse": "0",
+                        "border-right-width": `calc(${value} * var(--tw-divide-x-reverse))`,
+                        "border-left-width": `calc(${value} * calc(1 - var(--tw-divide-x-reverse)))`
+                    }
+                };
+            },
+            "divide-y": (value)=>{
+                value = value === "0" ? "0px" : value;
+                return {
+                    "& > :not([hidden]) ~ :not([hidden])": {
+                        "@defaults border-width": {},
+                        "--tw-divide-y-reverse": "0",
+                        "border-top-width": `calc(${value} * calc(1 - var(--tw-divide-y-reverse)))`,
+                        "border-bottom-width": `calc(${value} * var(--tw-divide-y-reverse))`
+                    }
+                };
+            }
+        }, {
+            values: theme("divideWidth"),
+            type: [
+                "line-width",
+                "length",
+                "any"
+            ]
+        });
+        addUtilities({
+            ".divide-y-reverse > :not([hidden]) ~ :not([hidden])": {
+                "@defaults border-width": {},
+                "--tw-divide-y-reverse": "1"
+            },
+            ".divide-x-reverse > :not([hidden]) ~ :not([hidden])": {
+                "@defaults border-width": {},
+                "--tw-divide-x-reverse": "1"
+            }
+        });
+    },
+    divideStyle: ({ addUtilities  })=>{
+        addUtilities({
+            ".divide-solid > :not([hidden]) ~ :not([hidden])": {
+                "border-style": "solid"
+            },
+            ".divide-dashed > :not([hidden]) ~ :not([hidden])": {
+                "border-style": "dashed"
+            },
+            ".divide-dotted > :not([hidden]) ~ :not([hidden])": {
+                "border-style": "dotted"
+            },
+            ".divide-double > :not([hidden]) ~ :not([hidden])": {
+                "border-style": "double"
+            },
+            ".divide-none > :not([hidden]) ~ :not([hidden])": {
+                "border-style": "none"
+            }
+        });
+    },
+    divideColor: ({ matchUtilities , theme , corePlugins  })=>{
+        matchUtilities({
+            divide: (value)=>{
+                if (!corePlugins("divideOpacity")) {
+                    return {
+                        ["& > :not([hidden]) ~ :not([hidden])"]: {
+                            "border-color": (0, _toColorValue.default)(value)
+                        }
+                    };
+                }
+                return {
+                    ["& > :not([hidden]) ~ :not([hidden])"]: (0, _withAlphaVariable.default)({
+                        color: value,
+                        property: "border-color",
+                        variable: "--tw-divide-opacity"
+                    })
+                };
+            }
+        }, {
+            values: (({ DEFAULT: _ , ...colors })=>colors)((0, _flattenColorPalette.default)(theme("divideColor"))),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    divideOpacity: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "divide-opacity": (value)=>{
+                return {
+                    [`& > :not([hidden]) ~ :not([hidden])`]: {
+                        "--tw-divide-opacity": value
+                    }
+                };
+            }
+        }, {
+            values: theme("divideOpacity")
+        });
+    },
+    placeSelf: ({ addUtilities  })=>{
+        addUtilities({
+            ".place-self-auto": {
+                "place-self": "auto"
+            },
+            ".place-self-start": {
+                "place-self": "start"
+            },
+            ".place-self-end": {
+                "place-self": "end"
+            },
+            ".place-self-center": {
+                "place-self": "center"
+            },
+            ".place-self-stretch": {
+                "place-self": "stretch"
+            }
+        });
+    },
+    alignSelf: ({ addUtilities  })=>{
+        addUtilities({
+            ".self-auto": {
+                "align-self": "auto"
+            },
+            ".self-start": {
+                "align-self": "flex-start"
+            },
+            ".self-end": {
+                "align-self": "flex-end"
+            },
+            ".self-center": {
+                "align-self": "center"
+            },
+            ".self-stretch": {
+                "align-self": "stretch"
+            },
+            ".self-baseline": {
+                "align-self": "baseline"
+            }
+        });
+    },
+    justifySelf: ({ addUtilities  })=>{
+        addUtilities({
+            ".justify-self-auto": {
+                "justify-self": "auto"
+            },
+            ".justify-self-start": {
+                "justify-self": "start"
+            },
+            ".justify-self-end": {
+                "justify-self": "end"
+            },
+            ".justify-self-center": {
+                "justify-self": "center"
+            },
+            ".justify-self-stretch": {
+                "justify-self": "stretch"
+            }
+        });
+    },
+    overflow: ({ addUtilities  })=>{
+        addUtilities({
+            ".overflow-auto": {
+                overflow: "auto"
+            },
+            ".overflow-hidden": {
+                overflow: "hidden"
+            },
+            ".overflow-clip": {
+                overflow: "clip"
+            },
+            ".overflow-visible": {
+                overflow: "visible"
+            },
+            ".overflow-scroll": {
+                overflow: "scroll"
+            },
+            ".overflow-x-auto": {
+                "overflow-x": "auto"
+            },
+            ".overflow-y-auto": {
+                "overflow-y": "auto"
+            },
+            ".overflow-x-hidden": {
+                "overflow-x": "hidden"
+            },
+            ".overflow-y-hidden": {
+                "overflow-y": "hidden"
+            },
+            ".overflow-x-clip": {
+                "overflow-x": "clip"
+            },
+            ".overflow-y-clip": {
+                "overflow-y": "clip"
+            },
+            ".overflow-x-visible": {
+                "overflow-x": "visible"
+            },
+            ".overflow-y-visible": {
+                "overflow-y": "visible"
+            },
+            ".overflow-x-scroll": {
+                "overflow-x": "scroll"
+            },
+            ".overflow-y-scroll": {
+                "overflow-y": "scroll"
+            }
+        });
+    },
+    overscrollBehavior: ({ addUtilities  })=>{
+        addUtilities({
+            ".overscroll-auto": {
+                "overscroll-behavior": "auto"
+            },
+            ".overscroll-contain": {
+                "overscroll-behavior": "contain"
+            },
+            ".overscroll-none": {
+                "overscroll-behavior": "none"
+            },
+            ".overscroll-y-auto": {
+                "overscroll-behavior-y": "auto"
+            },
+            ".overscroll-y-contain": {
+                "overscroll-behavior-y": "contain"
+            },
+            ".overscroll-y-none": {
+                "overscroll-behavior-y": "none"
+            },
+            ".overscroll-x-auto": {
+                "overscroll-behavior-x": "auto"
+            },
+            ".overscroll-x-contain": {
+                "overscroll-behavior-x": "contain"
+            },
+            ".overscroll-x-none": {
+                "overscroll-behavior-x": "none"
+            }
+        });
+    },
+    scrollBehavior: ({ addUtilities  })=>{
+        addUtilities({
+            ".scroll-auto": {
+                "scroll-behavior": "auto"
+            },
+            ".scroll-smooth": {
+                "scroll-behavior": "smooth"
+            }
+        });
+    },
+    textOverflow: ({ addUtilities  })=>{
+        addUtilities({
+            ".truncate": {
+                overflow: "hidden",
+                "text-overflow": "ellipsis",
+                "white-space": "nowrap"
+            },
+            ".overflow-ellipsis": {
+                "text-overflow": "ellipsis"
+            },
+            ".text-ellipsis": {
+                "text-overflow": "ellipsis"
+            },
+            ".text-clip": {
+                "text-overflow": "clip"
+            }
+        });
+    },
+    hyphens: ({ addUtilities  })=>{
+        addUtilities({
+            ".hyphens-none": {
+                hyphens: "none"
+            },
+            ".hyphens-manual": {
+                hyphens: "manual"
+            },
+            ".hyphens-auto": {
+                hyphens: "auto"
+            }
+        });
+    },
+    whitespace: ({ addUtilities  })=>{
+        addUtilities({
+            ".whitespace-normal": {
+                "white-space": "normal"
+            },
+            ".whitespace-nowrap": {
+                "white-space": "nowrap"
+            },
+            ".whitespace-pre": {
+                "white-space": "pre"
+            },
+            ".whitespace-pre-line": {
+                "white-space": "pre-line"
+            },
+            ".whitespace-pre-wrap": {
+                "white-space": "pre-wrap"
+            },
+            ".whitespace-break-spaces": {
+                "white-space": "break-spaces"
+            }
+        });
+    },
+    textWrap: ({ addUtilities  })=>{
+        addUtilities({
+            ".text-wrap": {
+                "text-wrap": "wrap"
+            },
+            ".text-nowrap": {
+                "text-wrap": "nowrap"
+            },
+            ".text-balance": {
+                "text-wrap": "balance"
+            },
+            ".text-pretty": {
+                "text-wrap": "pretty"
+            }
+        });
+    },
+    wordBreak: ({ addUtilities  })=>{
+        addUtilities({
+            ".break-normal": {
+                "overflow-wrap": "normal",
+                "word-break": "normal"
+            },
+            ".break-words": {
+                "overflow-wrap": "break-word"
+            },
+            ".break-all": {
+                "word-break": "break-all"
+            },
+            ".break-keep": {
+                "word-break": "keep-all"
+            }
+        });
+    },
+    borderRadius: (0, _createUtilityPlugin.default)("borderRadius", [
+        [
+            "rounded",
+            [
+                "border-radius"
+            ]
+        ],
+        [
+            [
+                "rounded-s",
+                [
+                    "border-start-start-radius",
+                    "border-end-start-radius"
+                ]
+            ],
+            [
+                "rounded-e",
+                [
+                    "border-start-end-radius",
+                    "border-end-end-radius"
+                ]
+            ],
+            [
+                "rounded-t",
+                [
+                    "border-top-left-radius",
+                    "border-top-right-radius"
+                ]
+            ],
+            [
+                "rounded-r",
+                [
+                    "border-top-right-radius",
+                    "border-bottom-right-radius"
+                ]
+            ],
+            [
+                "rounded-b",
+                [
+                    "border-bottom-right-radius",
+                    "border-bottom-left-radius"
+                ]
+            ],
+            [
+                "rounded-l",
+                [
+                    "border-top-left-radius",
+                    "border-bottom-left-radius"
+                ]
+            ]
+        ],
+        [
+            [
+                "rounded-ss",
+                [
+                    "border-start-start-radius"
+                ]
+            ],
+            [
+                "rounded-se",
+                [
+                    "border-start-end-radius"
+                ]
+            ],
+            [
+                "rounded-ee",
+                [
+                    "border-end-end-radius"
+                ]
+            ],
+            [
+                "rounded-es",
+                [
+                    "border-end-start-radius"
+                ]
+            ],
+            [
+                "rounded-tl",
+                [
+                    "border-top-left-radius"
+                ]
+            ],
+            [
+                "rounded-tr",
+                [
+                    "border-top-right-radius"
+                ]
+            ],
+            [
+                "rounded-br",
+                [
+                    "border-bottom-right-radius"
+                ]
+            ],
+            [
+                "rounded-bl",
+                [
+                    "border-bottom-left-radius"
+                ]
+            ]
+        ]
+    ]),
+    borderWidth: (0, _createUtilityPlugin.default)("borderWidth", [
+        [
+            "border",
+            [
+                [
+                    "@defaults border-width",
+                    {}
+                ],
+                "border-width"
+            ]
+        ],
+        [
+            [
+                "border-x",
+                [
+                    [
+                        "@defaults border-width",
+                        {}
+                    ],
+                    "border-left-width",
+                    "border-right-width"
+                ]
+            ],
+            [
+                "border-y",
+                [
+                    [
+                        "@defaults border-width",
+                        {}
+                    ],
+                    "border-top-width",
+                    "border-bottom-width"
+                ]
+            ]
+        ],
+        [
+            [
+                "border-s",
+                [
+                    [
+                        "@defaults border-width",
+                        {}
+                    ],
+                    "border-inline-start-width"
+                ]
+            ],
+            [
+                "border-e",
+                [
+                    [
+                        "@defaults border-width",
+                        {}
+                    ],
+                    "border-inline-end-width"
+                ]
+            ],
+            [
+                "border-t",
+                [
+                    [
+                        "@defaults border-width",
+                        {}
+                    ],
+                    "border-top-width"
+                ]
+            ],
+            [
+                "border-r",
+                [
+                    [
+                        "@defaults border-width",
+                        {}
+                    ],
+                    "border-right-width"
+                ]
+            ],
+            [
+                "border-b",
+                [
+                    [
+                        "@defaults border-width",
+                        {}
+                    ],
+                    "border-bottom-width"
+                ]
+            ],
+            [
+                "border-l",
+                [
+                    [
+                        "@defaults border-width",
+                        {}
+                    ],
+                    "border-left-width"
+                ]
+            ]
+        ]
+    ], {
+        type: [
+            "line-width",
+            "length"
+        ]
+    }),
+    borderStyle: ({ addUtilities  })=>{
+        addUtilities({
+            ".border-solid": {
+                "border-style": "solid"
+            },
+            ".border-dashed": {
+                "border-style": "dashed"
+            },
+            ".border-dotted": {
+                "border-style": "dotted"
+            },
+            ".border-double": {
+                "border-style": "double"
+            },
+            ".border-hidden": {
+                "border-style": "hidden"
+            },
+            ".border-none": {
+                "border-style": "none"
+            }
+        });
+    },
+    borderColor: ({ matchUtilities , theme , corePlugins  })=>{
+        matchUtilities({
+            border: (value)=>{
+                if (!corePlugins("borderOpacity")) {
+                    return {
+                        "border-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "border-color",
+                    variable: "--tw-border-opacity"
+                });
+            }
+        }, {
+            values: (({ DEFAULT: _ , ...colors })=>colors)((0, _flattenColorPalette.default)(theme("borderColor"))),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+        matchUtilities({
+            "border-x": (value)=>{
+                if (!corePlugins("borderOpacity")) {
+                    return {
+                        "border-left-color": (0, _toColorValue.default)(value),
+                        "border-right-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: [
+                        "border-left-color",
+                        "border-right-color"
+                    ],
+                    variable: "--tw-border-opacity"
+                });
+            },
+            "border-y": (value)=>{
+                if (!corePlugins("borderOpacity")) {
+                    return {
+                        "border-top-color": (0, _toColorValue.default)(value),
+                        "border-bottom-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: [
+                        "border-top-color",
+                        "border-bottom-color"
+                    ],
+                    variable: "--tw-border-opacity"
+                });
+            }
+        }, {
+            values: (({ DEFAULT: _ , ...colors })=>colors)((0, _flattenColorPalette.default)(theme("borderColor"))),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+        matchUtilities({
+            "border-s": (value)=>{
+                if (!corePlugins("borderOpacity")) {
+                    return {
+                        "border-inline-start-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "border-inline-start-color",
+                    variable: "--tw-border-opacity"
+                });
+            },
+            "border-e": (value)=>{
+                if (!corePlugins("borderOpacity")) {
+                    return {
+                        "border-inline-end-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "border-inline-end-color",
+                    variable: "--tw-border-opacity"
+                });
+            },
+            "border-t": (value)=>{
+                if (!corePlugins("borderOpacity")) {
+                    return {
+                        "border-top-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "border-top-color",
+                    variable: "--tw-border-opacity"
+                });
+            },
+            "border-r": (value)=>{
+                if (!corePlugins("borderOpacity")) {
+                    return {
+                        "border-right-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "border-right-color",
+                    variable: "--tw-border-opacity"
+                });
+            },
+            "border-b": (value)=>{
+                if (!corePlugins("borderOpacity")) {
+                    return {
+                        "border-bottom-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "border-bottom-color",
+                    variable: "--tw-border-opacity"
+                });
+            },
+            "border-l": (value)=>{
+                if (!corePlugins("borderOpacity")) {
+                    return {
+                        "border-left-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "border-left-color",
+                    variable: "--tw-border-opacity"
+                });
+            }
+        }, {
+            values: (({ DEFAULT: _ , ...colors })=>colors)((0, _flattenColorPalette.default)(theme("borderColor"))),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    borderOpacity: (0, _createUtilityPlugin.default)("borderOpacity", [
+        [
+            "border-opacity",
+            [
+                "--tw-border-opacity"
+            ]
+        ]
+    ]),
+    backgroundColor: ({ matchUtilities , theme , corePlugins  })=>{
+        matchUtilities({
+            bg: (value)=>{
+                if (!corePlugins("backgroundOpacity")) {
+                    return {
+                        "background-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "background-color",
+                    variable: "--tw-bg-opacity"
+                });
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("backgroundColor")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    backgroundOpacity: (0, _createUtilityPlugin.default)("backgroundOpacity", [
+        [
+            "bg-opacity",
+            [
+                "--tw-bg-opacity"
+            ]
+        ]
+    ]),
+    backgroundImage: (0, _createUtilityPlugin.default)("backgroundImage", [
+        [
+            "bg",
+            [
+                "background-image"
+            ]
+        ]
+    ], {
+        type: [
+            "lookup",
+            "image",
+            "url"
+        ]
+    }),
+    gradientColorStops: (()=>{
+        function transparentTo(value) {
+            return (0, _withAlphaVariable.withAlphaValue)(value, 0, "rgb(255 255 255 / 0)");
+        }
+        return function({ matchUtilities , theme , addDefaults  }) {
+            addDefaults("gradient-color-stops", {
+                "--tw-gradient-from-position": " ",
+                "--tw-gradient-via-position": " ",
+                "--tw-gradient-to-position": " "
+            });
+            let options = {
+                values: (0, _flattenColorPalette.default)(theme("gradientColorStops")),
+                type: [
+                    "color",
+                    "any"
+                ]
+            };
+            let positionOptions = {
+                values: theme("gradientColorStopPositions"),
+                type: [
+                    "length",
+                    "percentage"
+                ]
+            };
+            matchUtilities({
+                from: (value)=>{
+                    let transparentToValue = transparentTo(value);
+                    return {
+                        "@defaults gradient-color-stops": {},
+                        "--tw-gradient-from": `${(0, _toColorValue.default)(value)} var(--tw-gradient-from-position)`,
+                        "--tw-gradient-to": `${transparentToValue} var(--tw-gradient-to-position)`,
+                        "--tw-gradient-stops": `var(--tw-gradient-from), var(--tw-gradient-to)`
+                    };
+                }
+            }, options);
+            matchUtilities({
+                from: (value)=>{
+                    return {
+                        "--tw-gradient-from-position": value
+                    };
+                }
+            }, positionOptions);
+            matchUtilities({
+                via: (value)=>{
+                    let transparentToValue = transparentTo(value);
+                    return {
+                        "@defaults gradient-color-stops": {},
+                        "--tw-gradient-to": `${transparentToValue}  var(--tw-gradient-to-position)`,
+                        "--tw-gradient-stops": `var(--tw-gradient-from), ${(0, _toColorValue.default)(value)} var(--tw-gradient-via-position), var(--tw-gradient-to)`
+                    };
+                }
+            }, options);
+            matchUtilities({
+                via: (value)=>{
+                    return {
+                        "--tw-gradient-via-position": value
+                    };
+                }
+            }, positionOptions);
+            matchUtilities({
+                to: (value)=>({
+                        "@defaults gradient-color-stops": {},
+                        "--tw-gradient-to": `${(0, _toColorValue.default)(value)} var(--tw-gradient-to-position)`
+                    })
+            }, options);
+            matchUtilities({
+                to: (value)=>{
+                    return {
+                        "--tw-gradient-to-position": value
+                    };
+                }
+            }, positionOptions);
+        };
+    })(),
+    boxDecorationBreak: ({ addUtilities  })=>{
+        addUtilities({
+            ".decoration-slice": {
+                "box-decoration-break": "slice"
+            },
+            ".decoration-clone": {
+                "box-decoration-break": "clone"
+            },
+            ".box-decoration-slice": {
+                "box-decoration-break": "slice"
+            },
+            ".box-decoration-clone": {
+                "box-decoration-break": "clone"
+            }
+        });
+    },
+    backgroundSize: (0, _createUtilityPlugin.default)("backgroundSize", [
+        [
+            "bg",
+            [
+                "background-size"
+            ]
+        ]
+    ], {
+        type: [
+            "lookup",
+            "length",
+            "percentage",
+            "size"
+        ]
+    }),
+    backgroundAttachment: ({ addUtilities  })=>{
+        addUtilities({
+            ".bg-fixed": {
+                "background-attachment": "fixed"
+            },
+            ".bg-local": {
+                "background-attachment": "local"
+            },
+            ".bg-scroll": {
+                "background-attachment": "scroll"
+            }
+        });
+    },
+    backgroundClip: ({ addUtilities  })=>{
+        addUtilities({
+            ".bg-clip-border": {
+                "background-clip": "border-box"
+            },
+            ".bg-clip-padding": {
+                "background-clip": "padding-box"
+            },
+            ".bg-clip-content": {
+                "background-clip": "content-box"
+            },
+            ".bg-clip-text": {
+                "background-clip": "text"
+            }
+        });
+    },
+    backgroundPosition: (0, _createUtilityPlugin.default)("backgroundPosition", [
+        [
+            "bg",
+            [
+                "background-position"
+            ]
+        ]
+    ], {
+        type: [
+            "lookup",
+            [
+                "position",
+                {
+                    preferOnConflict: true
+                }
+            ]
+        ]
+    }),
+    backgroundRepeat: ({ addUtilities  })=>{
+        addUtilities({
+            ".bg-repeat": {
+                "background-repeat": "repeat"
+            },
+            ".bg-no-repeat": {
+                "background-repeat": "no-repeat"
+            },
+            ".bg-repeat-x": {
+                "background-repeat": "repeat-x"
+            },
+            ".bg-repeat-y": {
+                "background-repeat": "repeat-y"
+            },
+            ".bg-repeat-round": {
+                "background-repeat": "round"
+            },
+            ".bg-repeat-space": {
+                "background-repeat": "space"
+            }
+        });
+    },
+    backgroundOrigin: ({ addUtilities  })=>{
+        addUtilities({
+            ".bg-origin-border": {
+                "background-origin": "border-box"
+            },
+            ".bg-origin-padding": {
+                "background-origin": "padding-box"
+            },
+            ".bg-origin-content": {
+                "background-origin": "content-box"
+            }
+        });
+    },
+    fill: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            fill: (value)=>{
+                return {
+                    fill: (0, _toColorValue.default)(value)
+                };
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("fill")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    stroke: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            stroke: (value)=>{
+                return {
+                    stroke: (0, _toColorValue.default)(value)
+                };
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("stroke")),
+            type: [
+                "color",
+                "url",
+                "any"
+            ]
+        });
+    },
+    strokeWidth: (0, _createUtilityPlugin.default)("strokeWidth", [
+        [
+            "stroke",
+            [
+                "stroke-width"
+            ]
+        ]
+    ], {
+        type: [
+            "length",
+            "number",
+            "percentage"
+        ]
+    }),
+    objectFit: ({ addUtilities  })=>{
+        addUtilities({
+            ".object-contain": {
+                "object-fit": "contain"
+            },
+            ".object-cover": {
+                "object-fit": "cover"
+            },
+            ".object-fill": {
+                "object-fit": "fill"
+            },
+            ".object-none": {
+                "object-fit": "none"
+            },
+            ".object-scale-down": {
+                "object-fit": "scale-down"
+            }
+        });
+    },
+    objectPosition: (0, _createUtilityPlugin.default)("objectPosition", [
+        [
+            "object",
+            [
+                "object-position"
+            ]
+        ]
+    ]),
+    padding: (0, _createUtilityPlugin.default)("padding", [
+        [
+            "p",
+            [
+                "padding"
+            ]
+        ],
+        [
+            [
+                "px",
+                [
+                    "padding-left",
+                    "padding-right"
+                ]
+            ],
+            [
+                "py",
+                [
+                    "padding-top",
+                    "padding-bottom"
+                ]
+            ]
+        ],
+        [
+            [
+                "ps",
+                [
+                    "padding-inline-start"
+                ]
+            ],
+            [
+                "pe",
+                [
+                    "padding-inline-end"
+                ]
+            ],
+            [
+                "pt",
+                [
+                    "padding-top"
+                ]
+            ],
+            [
+                "pr",
+                [
+                    "padding-right"
+                ]
+            ],
+            [
+                "pb",
+                [
+                    "padding-bottom"
+                ]
+            ],
+            [
+                "pl",
+                [
+                    "padding-left"
+                ]
+            ]
+        ]
+    ]),
+    textAlign: ({ addUtilities  })=>{
+        addUtilities({
+            ".text-left": {
+                "text-align": "left"
+            },
+            ".text-center": {
+                "text-align": "center"
+            },
+            ".text-right": {
+                "text-align": "right"
+            },
+            ".text-justify": {
+                "text-align": "justify"
+            },
+            ".text-start": {
+                "text-align": "start"
+            },
+            ".text-end": {
+                "text-align": "end"
+            }
+        });
+    },
+    textIndent: (0, _createUtilityPlugin.default)("textIndent", [
+        [
+            "indent",
+            [
+                "text-indent"
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    verticalAlign: ({ addUtilities , matchUtilities  })=>{
+        addUtilities({
+            ".align-baseline": {
+                "vertical-align": "baseline"
+            },
+            ".align-top": {
+                "vertical-align": "top"
+            },
+            ".align-middle": {
+                "vertical-align": "middle"
+            },
+            ".align-bottom": {
+                "vertical-align": "bottom"
+            },
+            ".align-text-top": {
+                "vertical-align": "text-top"
+            },
+            ".align-text-bottom": {
+                "vertical-align": "text-bottom"
+            },
+            ".align-sub": {
+                "vertical-align": "sub"
+            },
+            ".align-super": {
+                "vertical-align": "super"
+            }
+        });
+        matchUtilities({
+            align: (value)=>({
+                    "vertical-align": value
+                })
+        });
+    },
+    fontFamily: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            font: (value)=>{
+                let [families, options = {}] = Array.isArray(value) && (0, _isPlainObject.default)(value[1]) ? value : [
+                    value
+                ];
+                let { fontFeatureSettings , fontVariationSettings  } = options;
+                return {
+                    "font-family": Array.isArray(families) ? families.join(", ") : families,
+                    ...fontFeatureSettings === undefined ? {} : {
+                        "font-feature-settings": fontFeatureSettings
+                    },
+                    ...fontVariationSettings === undefined ? {} : {
+                        "font-variation-settings": fontVariationSettings
+                    }
+                };
+            }
+        }, {
+            values: theme("fontFamily"),
+            type: [
+                "lookup",
+                "generic-name",
+                "family-name"
+            ]
+        });
+    },
+    fontSize: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            text: (value, { modifier  })=>{
+                let [fontSize, options] = Array.isArray(value) ? value : [
+                    value
+                ];
+                if (modifier) {
+                    return {
+                        "font-size": fontSize,
+                        "line-height": modifier
+                    };
+                }
+                let { lineHeight , letterSpacing , fontWeight  } = (0, _isPlainObject.default)(options) ? options : {
+                    lineHeight: options
+                };
+                return {
+                    "font-size": fontSize,
+                    ...lineHeight === undefined ? {} : {
+                        "line-height": lineHeight
+                    },
+                    ...letterSpacing === undefined ? {} : {
+                        "letter-spacing": letterSpacing
+                    },
+                    ...fontWeight === undefined ? {} : {
+                        "font-weight": fontWeight
+                    }
+                };
+            }
+        }, {
+            values: theme("fontSize"),
+            modifiers: theme("lineHeight"),
+            type: [
+                "absolute-size",
+                "relative-size",
+                "length",
+                "percentage"
+            ]
+        });
+    },
+    fontWeight: (0, _createUtilityPlugin.default)("fontWeight", [
+        [
+            "font",
+            [
+                "fontWeight"
+            ]
+        ]
+    ], {
+        type: [
+            "lookup",
+            "number",
+            "any"
+        ]
+    }),
+    textTransform: ({ addUtilities  })=>{
+        addUtilities({
+            ".uppercase": {
+                "text-transform": "uppercase"
+            },
+            ".lowercase": {
+                "text-transform": "lowercase"
+            },
+            ".capitalize": {
+                "text-transform": "capitalize"
+            },
+            ".normal-case": {
+                "text-transform": "none"
+            }
+        });
+    },
+    fontStyle: ({ addUtilities  })=>{
+        addUtilities({
+            ".italic": {
+                "font-style": "italic"
+            },
+            ".not-italic": {
+                "font-style": "normal"
+            }
+        });
+    },
+    fontVariantNumeric: ({ addDefaults , addUtilities  })=>{
+        let cssFontVariantNumericValue = "var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)";
+        addDefaults("font-variant-numeric", {
+            "--tw-ordinal": " ",
+            "--tw-slashed-zero": " ",
+            "--tw-numeric-figure": " ",
+            "--tw-numeric-spacing": " ",
+            "--tw-numeric-fraction": " "
+        });
+        addUtilities({
+            ".normal-nums": {
+                "font-variant-numeric": "normal"
+            },
+            ".ordinal": {
+                "@defaults font-variant-numeric": {},
+                "--tw-ordinal": "ordinal",
+                "font-variant-numeric": cssFontVariantNumericValue
+            },
+            ".slashed-zero": {
+                "@defaults font-variant-numeric": {},
+                "--tw-slashed-zero": "slashed-zero",
+                "font-variant-numeric": cssFontVariantNumericValue
+            },
+            ".lining-nums": {
+                "@defaults font-variant-numeric": {},
+                "--tw-numeric-figure": "lining-nums",
+                "font-variant-numeric": cssFontVariantNumericValue
+            },
+            ".oldstyle-nums": {
+                "@defaults font-variant-numeric": {},
+                "--tw-numeric-figure": "oldstyle-nums",
+                "font-variant-numeric": cssFontVariantNumericValue
+            },
+            ".proportional-nums": {
+                "@defaults font-variant-numeric": {},
+                "--tw-numeric-spacing": "proportional-nums",
+                "font-variant-numeric": cssFontVariantNumericValue
+            },
+            ".tabular-nums": {
+                "@defaults font-variant-numeric": {},
+                "--tw-numeric-spacing": "tabular-nums",
+                "font-variant-numeric": cssFontVariantNumericValue
+            },
+            ".diagonal-fractions": {
+                "@defaults font-variant-numeric": {},
+                "--tw-numeric-fraction": "diagonal-fractions",
+                "font-variant-numeric": cssFontVariantNumericValue
+            },
+            ".stacked-fractions": {
+                "@defaults font-variant-numeric": {},
+                "--tw-numeric-fraction": "stacked-fractions",
+                "font-variant-numeric": cssFontVariantNumericValue
+            }
+        });
+    },
+    lineHeight: (0, _createUtilityPlugin.default)("lineHeight", [
+        [
+            "leading",
+            [
+                "lineHeight"
+            ]
+        ]
+    ]),
+    letterSpacing: (0, _createUtilityPlugin.default)("letterSpacing", [
+        [
+            "tracking",
+            [
+                "letterSpacing"
+            ]
+        ]
+    ], {
+        supportsNegativeValues: true
+    }),
+    textColor: ({ matchUtilities , theme , corePlugins  })=>{
+        matchUtilities({
+            text: (value)=>{
+                if (!corePlugins("textOpacity")) {
+                    return {
+                        color: (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "color",
+                    variable: "--tw-text-opacity"
+                });
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("textColor")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    textOpacity: (0, _createUtilityPlugin.default)("textOpacity", [
+        [
+            "text-opacity",
+            [
+                "--tw-text-opacity"
+            ]
+        ]
+    ]),
+    textDecoration: ({ addUtilities  })=>{
+        addUtilities({
+            ".underline": {
+                "text-decoration-line": "underline"
+            },
+            ".overline": {
+                "text-decoration-line": "overline"
+            },
+            ".line-through": {
+                "text-decoration-line": "line-through"
+            },
+            ".no-underline": {
+                "text-decoration-line": "none"
+            }
+        });
+    },
+    textDecorationColor: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            decoration: (value)=>{
+                return {
+                    "text-decoration-color": (0, _toColorValue.default)(value)
+                };
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("textDecorationColor")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    textDecorationStyle: ({ addUtilities  })=>{
+        addUtilities({
+            ".decoration-solid": {
+                "text-decoration-style": "solid"
+            },
+            ".decoration-double": {
+                "text-decoration-style": "double"
+            },
+            ".decoration-dotted": {
+                "text-decoration-style": "dotted"
+            },
+            ".decoration-dashed": {
+                "text-decoration-style": "dashed"
+            },
+            ".decoration-wavy": {
+                "text-decoration-style": "wavy"
+            }
+        });
+    },
+    textDecorationThickness: (0, _createUtilityPlugin.default)("textDecorationThickness", [
+        [
+            "decoration",
+            [
+                "text-decoration-thickness"
+            ]
+        ]
+    ], {
+        type: [
+            "length",
+            "percentage"
+        ]
+    }),
+    textUnderlineOffset: (0, _createUtilityPlugin.default)("textUnderlineOffset", [
+        [
+            "underline-offset",
+            [
+                "text-underline-offset"
+            ]
+        ]
+    ], {
+        type: [
+            "length",
+            "percentage",
+            "any"
+        ]
+    }),
+    fontSmoothing: ({ addUtilities  })=>{
+        addUtilities({
+            ".antialiased": {
+                "-webkit-font-smoothing": "antialiased",
+                "-moz-osx-font-smoothing": "grayscale"
+            },
+            ".subpixel-antialiased": {
+                "-webkit-font-smoothing": "auto",
+                "-moz-osx-font-smoothing": "auto"
+            }
+        });
+    },
+    placeholderColor: ({ matchUtilities , theme , corePlugins  })=>{
+        matchUtilities({
+            placeholder: (value)=>{
+                if (!corePlugins("placeholderOpacity")) {
+                    return {
+                        "&::placeholder": {
+                            color: (0, _toColorValue.default)(value)
+                        }
+                    };
+                }
+                return {
+                    "&::placeholder": (0, _withAlphaVariable.default)({
+                        color: value,
+                        property: "color",
+                        variable: "--tw-placeholder-opacity"
+                    })
+                };
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("placeholderColor")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    placeholderOpacity: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "placeholder-opacity": (value)=>{
+                return {
+                    ["&::placeholder"]: {
+                        "--tw-placeholder-opacity": value
+                    }
+                };
+            }
+        }, {
+            values: theme("placeholderOpacity")
+        });
+    },
+    caretColor: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            caret: (value)=>{
+                return {
+                    "caret-color": (0, _toColorValue.default)(value)
+                };
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("caretColor")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    accentColor: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            accent: (value)=>{
+                return {
+                    "accent-color": (0, _toColorValue.default)(value)
+                };
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("accentColor")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    opacity: (0, _createUtilityPlugin.default)("opacity", [
+        [
+            "opacity",
+            [
+                "opacity"
+            ]
+        ]
+    ]),
+    backgroundBlendMode: ({ addUtilities  })=>{
+        addUtilities({
+            ".bg-blend-normal": {
+                "background-blend-mode": "normal"
+            },
+            ".bg-blend-multiply": {
+                "background-blend-mode": "multiply"
+            },
+            ".bg-blend-screen": {
+                "background-blend-mode": "screen"
+            },
+            ".bg-blend-overlay": {
+                "background-blend-mode": "overlay"
+            },
+            ".bg-blend-darken": {
+                "background-blend-mode": "darken"
+            },
+            ".bg-blend-lighten": {
+                "background-blend-mode": "lighten"
+            },
+            ".bg-blend-color-dodge": {
+                "background-blend-mode": "color-dodge"
+            },
+            ".bg-blend-color-burn": {
+                "background-blend-mode": "color-burn"
+            },
+            ".bg-blend-hard-light": {
+                "background-blend-mode": "hard-light"
+            },
+            ".bg-blend-soft-light": {
+                "background-blend-mode": "soft-light"
+            },
+            ".bg-blend-difference": {
+                "background-blend-mode": "difference"
+            },
+            ".bg-blend-exclusion": {
+                "background-blend-mode": "exclusion"
+            },
+            ".bg-blend-hue": {
+                "background-blend-mode": "hue"
+            },
+            ".bg-blend-saturation": {
+                "background-blend-mode": "saturation"
+            },
+            ".bg-blend-color": {
+                "background-blend-mode": "color"
+            },
+            ".bg-blend-luminosity": {
+                "background-blend-mode": "luminosity"
+            }
+        });
+    },
+    mixBlendMode: ({ addUtilities  })=>{
+        addUtilities({
+            ".mix-blend-normal": {
+                "mix-blend-mode": "normal"
+            },
+            ".mix-blend-multiply": {
+                "mix-blend-mode": "multiply"
+            },
+            ".mix-blend-screen": {
+                "mix-blend-mode": "screen"
+            },
+            ".mix-blend-overlay": {
+                "mix-blend-mode": "overlay"
+            },
+            ".mix-blend-darken": {
+                "mix-blend-mode": "darken"
+            },
+            ".mix-blend-lighten": {
+                "mix-blend-mode": "lighten"
+            },
+            ".mix-blend-color-dodge": {
+                "mix-blend-mode": "color-dodge"
+            },
+            ".mix-blend-color-burn": {
+                "mix-blend-mode": "color-burn"
+            },
+            ".mix-blend-hard-light": {
+                "mix-blend-mode": "hard-light"
+            },
+            ".mix-blend-soft-light": {
+                "mix-blend-mode": "soft-light"
+            },
+            ".mix-blend-difference": {
+                "mix-blend-mode": "difference"
+            },
+            ".mix-blend-exclusion": {
+                "mix-blend-mode": "exclusion"
+            },
+            ".mix-blend-hue": {
+                "mix-blend-mode": "hue"
+            },
+            ".mix-blend-saturation": {
+                "mix-blend-mode": "saturation"
+            },
+            ".mix-blend-color": {
+                "mix-blend-mode": "color"
+            },
+            ".mix-blend-luminosity": {
+                "mix-blend-mode": "luminosity"
+            },
+            ".mix-blend-plus-darker": {
+                "mix-blend-mode": "plus-darker"
+            },
+            ".mix-blend-plus-lighter": {
+                "mix-blend-mode": "plus-lighter"
+            }
+        });
+    },
+    boxShadow: (()=>{
+        let transformValue = (0, _transformThemeValue.default)("boxShadow");
+        let defaultBoxShadow = [
+            `var(--tw-ring-offset-shadow, 0 0 #0000)`,
+            `var(--tw-ring-shadow, 0 0 #0000)`,
+            `var(--tw-shadow)`
+        ].join(", ");
+        return function({ matchUtilities , addDefaults , theme  }) {
+            addDefaults("box-shadow", {
+                "--tw-ring-offset-shadow": "0 0 #0000",
+                "--tw-ring-shadow": "0 0 #0000",
+                "--tw-shadow": "0 0 #0000",
+                "--tw-shadow-colored": "0 0 #0000"
+            });
+            matchUtilities({
+                shadow: (value)=>{
+                    value = transformValue(value);
+                    let ast = (0, _parseBoxShadowValue.parseBoxShadowValue)(value);
+                    for (let shadow of ast){
+                        // Don't override color if the whole shadow is a variable
+                        if (!shadow.valid) {
+                            continue;
+                        }
+                        shadow.color = "var(--tw-shadow-color)";
+                    }
+                    return {
+                        "@defaults box-shadow": {},
+                        "--tw-shadow": value === "none" ? "0 0 #0000" : value,
+                        "--tw-shadow-colored": value === "none" ? "0 0 #0000" : (0, _parseBoxShadowValue.formatBoxShadowValue)(ast),
+                        "box-shadow": defaultBoxShadow
+                    };
+                }
+            }, {
+                values: theme("boxShadow"),
+                type: [
+                    "shadow"
+                ]
+            });
+        };
+    })(),
+    boxShadowColor: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            shadow: (value)=>{
+                return {
+                    "--tw-shadow-color": (0, _toColorValue.default)(value),
+                    "--tw-shadow": "var(--tw-shadow-colored)"
+                };
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("boxShadowColor")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    outlineStyle: ({ addUtilities  })=>{
+        addUtilities({
+            ".outline-none": {
+                outline: "2px solid transparent",
+                "outline-offset": "2px"
+            },
+            ".outline": {
+                "outline-style": "solid"
+            },
+            ".outline-dashed": {
+                "outline-style": "dashed"
+            },
+            ".outline-dotted": {
+                "outline-style": "dotted"
+            },
+            ".outline-double": {
+                "outline-style": "double"
+            }
+        });
+    },
+    outlineWidth: (0, _createUtilityPlugin.default)("outlineWidth", [
+        [
+            "outline",
+            [
+                "outline-width"
+            ]
+        ]
+    ], {
+        type: [
+            "length",
+            "number",
+            "percentage"
+        ]
+    }),
+    outlineOffset: (0, _createUtilityPlugin.default)("outlineOffset", [
+        [
+            "outline-offset",
+            [
+                "outline-offset"
+            ]
+        ]
+    ], {
+        type: [
+            "length",
+            "number",
+            "percentage",
+            "any"
+        ],
+        supportsNegativeValues: true
+    }),
+    outlineColor: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            outline: (value)=>{
+                return {
+                    "outline-color": (0, _toColorValue.default)(value)
+                };
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("outlineColor")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    ringWidth: ({ matchUtilities , addDefaults , addUtilities , theme , config  })=>{
+        let ringColorDefault = (()=>{
+            var _theme, _theme1;
+            if ((0, _featureFlags.flagEnabled)(config(), "respectDefaultRingColorOpacity")) {
+                return theme("ringColor.DEFAULT");
+            }
+            let ringOpacityDefault = theme("ringOpacity.DEFAULT", "0.5");
+            if (!((_theme = theme("ringColor")) === null || _theme === void 0 ? void 0 : _theme.DEFAULT)) {
+                return `rgb(147 197 253 / ${ringOpacityDefault})`;
+            }
+            return (0, _withAlphaVariable.withAlphaValue)((_theme1 = theme("ringColor")) === null || _theme1 === void 0 ? void 0 : _theme1.DEFAULT, ringOpacityDefault, `rgb(147 197 253 / ${ringOpacityDefault})`);
+        })();
+        addDefaults("ring-width", {
+            "--tw-ring-inset": " ",
+            "--tw-ring-offset-width": theme("ringOffsetWidth.DEFAULT", "0px"),
+            "--tw-ring-offset-color": theme("ringOffsetColor.DEFAULT", "#fff"),
+            "--tw-ring-color": ringColorDefault,
+            "--tw-ring-offset-shadow": "0 0 #0000",
+            "--tw-ring-shadow": "0 0 #0000",
+            "--tw-shadow": "0 0 #0000",
+            "--tw-shadow-colored": "0 0 #0000"
+        });
+        matchUtilities({
+            ring: (value)=>{
+                return {
+                    "@defaults ring-width": {},
+                    "--tw-ring-offset-shadow": `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`,
+                    "--tw-ring-shadow": `var(--tw-ring-inset) 0 0 0 calc(${value} + var(--tw-ring-offset-width)) var(--tw-ring-color)`,
+                    "box-shadow": [
+                        `var(--tw-ring-offset-shadow)`,
+                        `var(--tw-ring-shadow)`,
+                        `var(--tw-shadow, 0 0 #0000)`
+                    ].join(", ")
+                };
+            }
+        }, {
+            values: theme("ringWidth"),
+            type: "length"
+        });
+        addUtilities({
+            ".ring-inset": {
+                "@defaults ring-width": {},
+                "--tw-ring-inset": "inset"
+            }
+        });
+    },
+    ringColor: ({ matchUtilities , theme , corePlugins  })=>{
+        matchUtilities({
+            ring: (value)=>{
+                if (!corePlugins("ringOpacity")) {
+                    return {
+                        "--tw-ring-color": (0, _toColorValue.default)(value)
+                    };
+                }
+                return (0, _withAlphaVariable.default)({
+                    color: value,
+                    property: "--tw-ring-color",
+                    variable: "--tw-ring-opacity"
+                });
+            }
+        }, {
+            values: Object.fromEntries(Object.entries((0, _flattenColorPalette.default)(theme("ringColor"))).filter(([modifier])=>modifier !== "DEFAULT")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    ringOpacity: (helpers)=>{
+        let { config  } = helpers;
+        return (0, _createUtilityPlugin.default)("ringOpacity", [
+            [
+                "ring-opacity",
+                [
+                    "--tw-ring-opacity"
+                ]
+            ]
+        ], {
+            filterDefault: !(0, _featureFlags.flagEnabled)(config(), "respectDefaultRingColorOpacity")
+        })(helpers);
+    },
+    ringOffsetWidth: (0, _createUtilityPlugin.default)("ringOffsetWidth", [
+        [
+            "ring-offset",
+            [
+                "--tw-ring-offset-width"
+            ]
+        ]
+    ], {
+        type: "length"
+    }),
+    ringOffsetColor: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "ring-offset": (value)=>{
+                return {
+                    "--tw-ring-offset-color": (0, _toColorValue.default)(value)
+                };
+            }
+        }, {
+            values: (0, _flattenColorPalette.default)(theme("ringOffsetColor")),
+            type: [
+                "color",
+                "any"
+            ]
+        });
+    },
+    blur: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            blur: (value)=>{
+                return {
+                    "--tw-blur": value.trim() === "" ? " " : `blur(${value})`,
+                    "@defaults filter": {},
+                    filter: cssFilterValue
+                };
+            }
+        }, {
+            values: theme("blur")
+        });
+    },
+    brightness: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            brightness: (value)=>{
+                return {
+                    "--tw-brightness": `brightness(${value})`,
+                    "@defaults filter": {},
+                    filter: cssFilterValue
+                };
+            }
+        }, {
+            values: theme("brightness")
+        });
+    },
+    contrast: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            contrast: (value)=>{
+                return {
+                    "--tw-contrast": `contrast(${value})`,
+                    "@defaults filter": {},
+                    filter: cssFilterValue
+                };
+            }
+        }, {
+            values: theme("contrast")
+        });
+    },
+    dropShadow: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "drop-shadow": (value)=>{
+                return {
+                    "--tw-drop-shadow": Array.isArray(value) ? value.map((v)=>`drop-shadow(${v})`).join(" ") : `drop-shadow(${value})`,
+                    "@defaults filter": {},
+                    filter: cssFilterValue
+                };
+            }
+        }, {
+            values: theme("dropShadow")
+        });
+    },
+    grayscale: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            grayscale: (value)=>{
+                return {
+                    "--tw-grayscale": `grayscale(${value})`,
+                    "@defaults filter": {},
+                    filter: cssFilterValue
+                };
+            }
+        }, {
+            values: theme("grayscale")
+        });
+    },
+    hueRotate: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "hue-rotate": (value)=>{
+                return {
+                    "--tw-hue-rotate": `hue-rotate(${value})`,
+                    "@defaults filter": {},
+                    filter: cssFilterValue
+                };
+            }
+        }, {
+            values: theme("hueRotate"),
+            supportsNegativeValues: true
+        });
+    },
+    invert: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            invert: (value)=>{
+                return {
+                    "--tw-invert": `invert(${value})`,
+                    "@defaults filter": {},
+                    filter: cssFilterValue
+                };
+            }
+        }, {
+            values: theme("invert")
+        });
+    },
+    saturate: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            saturate: (value)=>{
+                return {
+                    "--tw-saturate": `saturate(${value})`,
+                    "@defaults filter": {},
+                    filter: cssFilterValue
+                };
+            }
+        }, {
+            values: theme("saturate")
+        });
+    },
+    sepia: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            sepia: (value)=>{
+                return {
+                    "--tw-sepia": `sepia(${value})`,
+                    "@defaults filter": {},
+                    filter: cssFilterValue
+                };
+            }
+        }, {
+            values: theme("sepia")
+        });
+    },
+    filter: ({ addDefaults , addUtilities  })=>{
+        addDefaults("filter", {
+            "--tw-blur": " ",
+            "--tw-brightness": " ",
+            "--tw-contrast": " ",
+            "--tw-grayscale": " ",
+            "--tw-hue-rotate": " ",
+            "--tw-invert": " ",
+            "--tw-saturate": " ",
+            "--tw-sepia": " ",
+            "--tw-drop-shadow": " "
+        });
+        addUtilities({
+            ".filter": {
+                "@defaults filter": {},
+                filter: cssFilterValue
+            },
+            ".filter-none": {
+                filter: "none"
+            }
+        });
+    },
+    backdropBlur: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "backdrop-blur": (value)=>{
+                return {
+                    "--tw-backdrop-blur": value.trim() === "" ? " " : `blur(${value})`,
+                    "@defaults backdrop-filter": {},
+                    "-webkit-backdrop-filter": cssBackdropFilterValue,
+                    "backdrop-filter": cssBackdropFilterValue
+                };
+            }
+        }, {
+            values: theme("backdropBlur")
+        });
+    },
+    backdropBrightness: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "backdrop-brightness": (value)=>{
+                return {
+                    "--tw-backdrop-brightness": `brightness(${value})`,
+                    "@defaults backdrop-filter": {},
+                    "-webkit-backdrop-filter": cssBackdropFilterValue,
+                    "backdrop-filter": cssBackdropFilterValue
+                };
+            }
+        }, {
+            values: theme("backdropBrightness")
+        });
+    },
+    backdropContrast: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "backdrop-contrast": (value)=>{
+                return {
+                    "--tw-backdrop-contrast": `contrast(${value})`,
+                    "@defaults backdrop-filter": {},
+                    "-webkit-backdrop-filter": cssBackdropFilterValue,
+                    "backdrop-filter": cssBackdropFilterValue
+                };
+            }
+        }, {
+            values: theme("backdropContrast")
+        });
+    },
+    backdropGrayscale: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "backdrop-grayscale": (value)=>{
+                return {
+                    "--tw-backdrop-grayscale": `grayscale(${value})`,
+                    "@defaults backdrop-filter": {},
+                    "-webkit-backdrop-filter": cssBackdropFilterValue,
+                    "backdrop-filter": cssBackdropFilterValue
+                };
+            }
+        }, {
+            values: theme("backdropGrayscale")
+        });
+    },
+    backdropHueRotate: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "backdrop-hue-rotate": (value)=>{
+                return {
+                    "--tw-backdrop-hue-rotate": `hue-rotate(${value})`,
+                    "@defaults backdrop-filter": {},
+                    "-webkit-backdrop-filter": cssBackdropFilterValue,
+                    "backdrop-filter": cssBackdropFilterValue
+                };
+            }
+        }, {
+            values: theme("backdropHueRotate"),
+            supportsNegativeValues: true
+        });
+    },
+    backdropInvert: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "backdrop-invert": (value)=>{
+                return {
+                    "--tw-backdrop-invert": `invert(${value})`,
+                    "@defaults backdrop-filter": {},
+                    "-webkit-backdrop-filter": cssBackdropFilterValue,
+                    "backdrop-filter": cssBackdropFilterValue
+                };
+            }
+        }, {
+            values: theme("backdropInvert")
+        });
+    },
+    backdropOpacity: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "backdrop-opacity": (value)=>{
+                return {
+                    "--tw-backdrop-opacity": `opacity(${value})`,
+                    "@defaults backdrop-filter": {},
+                    "-webkit-backdrop-filter": cssBackdropFilterValue,
+                    "backdrop-filter": cssBackdropFilterValue
+                };
+            }
+        }, {
+            values: theme("backdropOpacity")
+        });
+    },
+    backdropSaturate: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "backdrop-saturate": (value)=>{
+                return {
+                    "--tw-backdrop-saturate": `saturate(${value})`,
+                    "@defaults backdrop-filter": {},
+                    "-webkit-backdrop-filter": cssBackdropFilterValue,
+                    "backdrop-filter": cssBackdropFilterValue
+                };
+            }
+        }, {
+            values: theme("backdropSaturate")
+        });
+    },
+    backdropSepia: ({ matchUtilities , theme  })=>{
+        matchUtilities({
+            "backdrop-sepia": (value)=>{
+                return {
+                    "--tw-backdrop-sepia": `sepia(${value})`,
+                    "@defaults backdrop-filter": {},
+                    "-webkit-backdrop-filter": cssBackdropFilterValue,
+                    "backdrop-filter": cssBackdropFilterValue
+                };
+            }
+        }, {
+            values: theme("backdropSepia")
+        });
+    },
+    backdropFilter: ({ addDefaults , addUtilities  })=>{
+        addDefaults("backdrop-filter", {
+            "--tw-backdrop-blur": " ",
+            "--tw-backdrop-brightness": " ",
+            "--tw-backdrop-contrast": " ",
+            "--tw-backdrop-grayscale": " ",
+            "--tw-backdrop-hue-rotate": " ",
+            "--tw-backdrop-invert": " ",
+            "--tw-backdrop-opacity": " ",
+            "--tw-backdrop-saturate": " ",
+            "--tw-backdrop-sepia": " "
+        });
+        addUtilities({
+            ".backdrop-filter": {
+                "@defaults backdrop-filter": {},
+                "-webkit-backdrop-filter": cssBackdropFilterValue,
+                "backdrop-filter": cssBackdropFilterValue
+            },
+            ".backdrop-filter-none": {
+                "-webkit-backdrop-filter": "none",
+                "backdrop-filter": "none"
+            }
+        });
+    },
+    transitionProperty: ({ matchUtilities , theme  })=>{
+        let defaultTimingFunction = theme("transitionTimingFunction.DEFAULT");
+        let defaultDuration = theme("transitionDuration.DEFAULT");
+        matchUtilities({
+            transition: (value)=>{
+                return {
+                    "transition-property": value,
+                    ...value === "none" ? {} : {
+                        "transition-timing-function": defaultTimingFunction,
+                        "transition-duration": defaultDuration
+                    }
+                };
+            }
+        }, {
+            values: theme("transitionProperty")
+        });
+    },
+    transitionDelay: (0, _createUtilityPlugin.default)("transitionDelay", [
+        [
+            "delay",
+            [
+                "transitionDelay"
+            ]
+        ]
+    ]),
+    transitionDuration: (0, _createUtilityPlugin.default)("transitionDuration", [
+        [
+            "duration",
+            [
+                "transitionDuration"
+            ]
+        ]
+    ], {
+        filterDefault: true
+    }),
+    transitionTimingFunction: (0, _createUtilityPlugin.default)("transitionTimingFunction", [
+        [
+            "ease",
+            [
+                "transitionTimingFunction"
+            ]
+        ]
+    ], {
+        filterDefault: true
+    }),
+    willChange: (0, _createUtilityPlugin.default)("willChange", [
+        [
+            "will-change",
+            [
+                "will-change"
+            ]
+        ]
+    ]),
+    contain: ({ addDefaults , addUtilities  })=>{
+        let cssContainValue = "var(--tw-contain-size) var(--tw-contain-layout) var(--tw-contain-paint) var(--tw-contain-style)";
+        addDefaults("contain", {
+            "--tw-contain-size": " ",
+            "--tw-contain-layout": " ",
+            "--tw-contain-paint": " ",
+            "--tw-contain-style": " "
+        });
+        addUtilities({
+            ".contain-none": {
+                contain: "none"
+            },
+            ".contain-content": {
+                contain: "content"
+            },
+            ".contain-strict": {
+                contain: "strict"
+            },
+            ".contain-size": {
+                "@defaults contain": {},
+                "--tw-contain-size": "size",
+                contain: cssContainValue
+            },
+            ".contain-inline-size": {
+                "@defaults contain": {},
+                "--tw-contain-size": "inline-size",
+                contain: cssContainValue
+            },
+            ".contain-layout": {
+                "@defaults contain": {},
+                "--tw-contain-layout": "layout",
+                contain: cssContainValue
+            },
+            ".contain-paint": {
+                "@defaults contain": {},
+                "--tw-contain-paint": "paint",
+                contain: cssContainValue
+            },
+            ".contain-style": {
+                "@defaults contain": {},
+                "--tw-contain-style": "style",
+                contain: cssContainValue
+            }
+        });
+    },
+    content: (0, _createUtilityPlugin.default)("content", [
+        [
+            "content",
+            [
+                "--tw-content",
+                [
+                    "content",
+                    "var(--tw-content)"
+                ]
+            ]
+        ]
+    ]),
+    forcedColorAdjust: ({ addUtilities  })=>{
+        addUtilities({
+            ".forced-color-adjust-auto": {
+                "forced-color-adjust": "auto"
+            },
+            ".forced-color-adjust-none": {
+                "forced-color-adjust": "none"
+            }
+        });
+    }
+};
Index: frontend/node_modules/tailwindcss/lib/css/LICENSE
===================================================================
--- frontend/node_modules/tailwindcss/lib/css/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/css/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,25 @@
+MIT License
+
+Copyright (c) Nicolas Gallagher
+Copyright (c) Jonathan Neal
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+Copyright (c) Adam Wathan
+Copyright (c) Jonathan Reinink
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Index: frontend/node_modules/tailwindcss/lib/css/preflight.css
===================================================================
--- frontend/node_modules/tailwindcss/lib/css/preflight.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/css/preflight.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,386 @@
+/*
+1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
+2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
+*/
+
+*,
+::before,
+::after {
+  box-sizing: border-box; /* 1 */
+  border-width: 0; /* 2 */
+  border-style: solid; /* 2 */
+  border-color: theme('borderColor.DEFAULT', currentColor); /* 2 */
+}
+
+::before,
+::after {
+  --tw-content: '';
+}
+
+/*
+1. Use a consistent sensible line-height in all browsers.
+2. Prevent adjustments of font size after orientation changes in iOS.
+3. Use a more readable tab size.
+4. Use the user's configured `sans` font-family by default.
+5. Use the user's configured `sans` font-feature-settings by default.
+6. Use the user's configured `sans` font-variation-settings by default.
+7. Disable tap highlights on iOS
+*/
+
+html,
+:host {
+  line-height: 1.5; /* 1 */
+  -webkit-text-size-adjust: 100%; /* 2 */
+  -moz-tab-size: 4; /* 3 */
+  tab-size: 4; /* 3 */
+  font-family: theme('fontFamily.sans', ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); /* 4 */
+  font-feature-settings: theme('fontFamily.sans[1].fontFeatureSettings', normal); /* 5 */
+  font-variation-settings: theme('fontFamily.sans[1].fontVariationSettings', normal); /* 6 */
+  -webkit-tap-highlight-color: transparent; /* 7 */
+}
+
+/*
+1. Remove the margin in all browsers.
+2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
+*/
+
+body {
+  margin: 0; /* 1 */
+  line-height: inherit; /* 2 */
+}
+
+/*
+1. Add the correct height in Firefox.
+2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
+3. Ensure horizontal rules are visible by default.
+*/
+
+hr {
+  height: 0; /* 1 */
+  color: inherit; /* 2 */
+  border-top-width: 1px; /* 3 */
+}
+
+/*
+Add the correct text decoration in Chrome, Edge, and Safari.
+*/
+
+abbr:where([title]) {
+  text-decoration: underline dotted;
+}
+
+/*
+Remove the default font size and weight for headings.
+*/
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  font-size: inherit;
+  font-weight: inherit;
+}
+
+/*
+Reset links to optimize for opt-in styling instead of opt-out.
+*/
+
+a {
+  color: inherit;
+  text-decoration: inherit;
+}
+
+/*
+Add the correct font weight in Edge and Safari.
+*/
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+/*
+1. Use the user's configured `mono` font-family by default.
+2. Use the user's configured `mono` font-feature-settings by default.
+3. Use the user's configured `mono` font-variation-settings by default.
+4. Correct the odd `em` font sizing in all browsers.
+*/
+
+code,
+kbd,
+samp,
+pre {
+  font-family: theme('fontFamily.mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); /* 1 */
+  font-feature-settings: theme('fontFamily.mono[1].fontFeatureSettings', normal); /* 2 */
+  font-variation-settings: theme('fontFamily.mono[1].fontVariationSettings', normal); /* 3 */
+  font-size: 1em; /* 4 */
+}
+
+/*
+Add the correct font size in all browsers.
+*/
+
+small {
+  font-size: 80%;
+}
+
+/*
+Prevent `sub` and `sup` elements from affecting the line height in all browsers.
+*/
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+/*
+1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
+2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
+3. Remove gaps between table borders by default.
+*/
+
+table {
+  text-indent: 0; /* 1 */
+  border-color: inherit; /* 2 */
+  border-collapse: collapse; /* 3 */
+}
+
+/*
+1. Change the font styles in all browsers.
+2. Remove the margin in Firefox and Safari.
+3. Remove default padding in all browsers.
+*/
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: inherit; /* 1 */
+  font-feature-settings: inherit; /* 1 */
+  font-variation-settings: inherit; /* 1 */
+  font-size: 100%; /* 1 */
+  font-weight: inherit; /* 1 */
+  line-height: inherit; /* 1 */
+  letter-spacing: inherit; /* 1 */
+  color: inherit; /* 1 */
+  margin: 0; /* 2 */
+  padding: 0; /* 3 */
+}
+
+/*
+Remove the inheritance of text transform in Edge and Firefox.
+*/
+
+button,
+select {
+  text-transform: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Remove default button styles.
+*/
+
+button,
+input:where([type='button']),
+input:where([type='reset']),
+input:where([type='submit']) {
+  -webkit-appearance: button; /* 1 */
+  background-color: transparent; /* 2 */
+  background-image: none; /* 2 */
+}
+
+/*
+Use the modern Firefox focus style for all focusable elements.
+*/
+
+:-moz-focusring {
+  outline: auto;
+}
+
+/*
+Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
+*/
+
+:-moz-ui-invalid {
+  box-shadow: none;
+}
+
+/*
+Add the correct vertical alignment in Chrome and Firefox.
+*/
+
+progress {
+  vertical-align: baseline;
+}
+
+/*
+Correct the cursor style of increment and decrement buttons in Safari.
+*/
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/*
+1. Correct the odd appearance in Chrome and Safari.
+2. Correct the outline style in Safari.
+*/
+
+[type='search'] {
+  -webkit-appearance: textfield; /* 1 */
+  outline-offset: -2px; /* 2 */
+}
+
+/*
+Remove the inner padding in Chrome and Safari on macOS.
+*/
+
+::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Change font properties to `inherit` in Safari.
+*/
+
+::-webkit-file-upload-button {
+  -webkit-appearance: button; /* 1 */
+  font: inherit; /* 2 */
+}
+
+/*
+Add the correct display in Chrome and Safari.
+*/
+
+summary {
+  display: list-item;
+}
+
+/*
+Removes the default spacing and border for appropriate elements.
+*/
+
+blockquote,
+dl,
+dd,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+hr,
+figure,
+p,
+pre {
+  margin: 0;
+}
+
+fieldset {
+  margin: 0;
+  padding: 0;
+}
+
+legend {
+  padding: 0;
+}
+
+ol,
+ul,
+menu {
+  list-style: none;
+  margin: 0;
+  padding: 0;
+}
+
+/*
+Reset default styling for dialogs.
+*/
+dialog {
+  padding: 0;
+}
+
+/*
+Prevent resizing textareas horizontally by default.
+*/
+
+textarea {
+  resize: vertical;
+}
+
+/*
+1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
+2. Set the default placeholder color to the user's configured gray 400 color.
+*/
+
+input::placeholder,
+textarea::placeholder {
+  opacity: 1; /* 1 */
+  color: theme('colors.gray.400', #9ca3af); /* 2 */
+}
+
+/*
+Set the default cursor for buttons.
+*/
+
+button,
+[role="button"] {
+  cursor: pointer;
+}
+
+/*
+Make sure disabled buttons don't get the pointer cursor.
+*/
+:disabled {
+  cursor: default;
+}
+
+/*
+1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
+2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
+   This can trigger a poorly considered lint error in some tools but is included by design.
+*/
+
+img,
+svg,
+video,
+canvas,
+audio,
+iframe,
+embed,
+object {
+  display: block; /* 1 */
+  vertical-align: middle; /* 2 */
+}
+
+/*
+Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
+*/
+
+img,
+video {
+  max-width: 100%;
+  height: auto;
+}
+
+/* Make elements with the HTML hidden attribute stay hidden by default */
+[hidden]:where(:not([hidden="until-found"])) {
+  display: none;
+}
Index: frontend/node_modules/tailwindcss/lib/featureFlags.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/featureFlags.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/featureFlags.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,79 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    flagEnabled: function() {
+        return flagEnabled;
+    },
+    issueFlagNotices: function() {
+        return issueFlagNotices;
+    },
+    default: function() {
+        return _default;
+    }
+});
+const _picocolors = /*#__PURE__*/ _interop_require_default(require("picocolors"));
+const _log = /*#__PURE__*/ _interop_require_default(require("./util/log"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+let defaults = {
+    optimizeUniversalDefaults: false,
+    generalizedModifiers: true,
+    disableColorOpacityUtilitiesByDefault: false,
+    relativeContentPathsByDefault: false
+};
+let featureFlags = {
+    future: [
+        "hoverOnlyWhenSupported",
+        "respectDefaultRingColorOpacity",
+        "disableColorOpacityUtilitiesByDefault",
+        "relativeContentPathsByDefault"
+    ],
+    experimental: [
+        "optimizeUniversalDefaults",
+        "generalizedModifiers"
+    ]
+};
+function flagEnabled(config, flag) {
+    if (featureFlags.future.includes(flag)) {
+        var _config_future;
+        var _config_future_flag, _ref;
+        return config.future === "all" || ((_ref = (_config_future_flag = config === null || config === void 0 ? void 0 : (_config_future = config.future) === null || _config_future === void 0 ? void 0 : _config_future[flag]) !== null && _config_future_flag !== void 0 ? _config_future_flag : defaults[flag]) !== null && _ref !== void 0 ? _ref : false);
+    }
+    if (featureFlags.experimental.includes(flag)) {
+        var _config_experimental;
+        var _config_experimental_flag, _ref1;
+        return config.experimental === "all" || ((_ref1 = (_config_experimental_flag = config === null || config === void 0 ? void 0 : (_config_experimental = config.experimental) === null || _config_experimental === void 0 ? void 0 : _config_experimental[flag]) !== null && _config_experimental_flag !== void 0 ? _config_experimental_flag : defaults[flag]) !== null && _ref1 !== void 0 ? _ref1 : false);
+    }
+    return false;
+}
+function experimentalFlagsEnabled(config) {
+    if (config.experimental === "all") {
+        return featureFlags.experimental;
+    }
+    var _config_experimental;
+    return Object.keys((_config_experimental = config === null || config === void 0 ? void 0 : config.experimental) !== null && _config_experimental !== void 0 ? _config_experimental : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);
+}
+function issueFlagNotices(config) {
+    if (process.env.JEST_WORKER_ID !== undefined) {
+        return;
+    }
+    if (experimentalFlagsEnabled(config).length > 0) {
+        let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(", ");
+        _log.default.warn("experimental-flags-enabled", [
+            `You have enabled experimental features: ${changes}`,
+            "Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time."
+        ]);
+    }
+}
+const _default = featureFlags;
Index: frontend/node_modules/tailwindcss/lib/index.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+"use strict";
+module.exports = require("./plugin");
Index: frontend/node_modules/tailwindcss/lib/lib/cacheInvalidation.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/cacheInvalidation.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/cacheInvalidation.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,92 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "hasContentChanged", {
+    enumerable: true,
+    get: function() {
+        return hasContentChanged;
+    }
+});
+const _crypto = /*#__PURE__*/ _interop_require_default(require("crypto"));
+const _sharedState = /*#__PURE__*/ _interop_require_wildcard(require("./sharedState"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function _getRequireWildcardCache(nodeInterop) {
+    if (typeof WeakMap !== "function") return null;
+    var cacheBabelInterop = new WeakMap();
+    var cacheNodeInterop = new WeakMap();
+    return (_getRequireWildcardCache = function(nodeInterop) {
+        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+    })(nodeInterop);
+}
+function _interop_require_wildcard(obj, nodeInterop) {
+    if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+    }
+    if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return {
+            default: obj
+        };
+    }
+    var cache = _getRequireWildcardCache(nodeInterop);
+    if (cache && cache.has(obj)) {
+        return cache.get(obj);
+    }
+    var newObj = {};
+    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+    for(var key in obj){
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+            if (desc && (desc.get || desc.set)) {
+                Object.defineProperty(newObj, key, desc);
+            } else {
+                newObj[key] = obj[key];
+            }
+        }
+    }
+    newObj.default = obj;
+    if (cache) {
+        cache.set(obj, newObj);
+    }
+    return newObj;
+}
+/**
+ * Calculate the hash of a string.
+ *
+ * This doesn't need to be cryptographically secure or
+ * anything like that since it's used only to detect
+ * when the CSS changes to invalidate the context.
+ *
+ * This is wrapped in a try/catch because it's really dependent
+ * on how Node itself is build and the environment and OpenSSL
+ * version / build that is installed on the user's machine.
+ *
+ * Based on the environment this can just outright fail.
+ *
+ * See https://github.com/nodejs/node/issues/40455
+ *
+ * @param {string} str
+ */ function getHash(str) {
+    try {
+        return _crypto.default.createHash("md5").update(str, "utf-8").digest("binary");
+    } catch (err) {
+        return "";
+    }
+}
+function hasContentChanged(sourcePath, root) {
+    let css = root.toString();
+    // We only care about files with @tailwind directives
+    // Other files use an existing context
+    if (!css.includes("@tailwind")) {
+        return false;
+    }
+    let existingHash = _sharedState.sourceHashMap.get(sourcePath);
+    let rootHash = getHash(css);
+    let didChange = existingHash !== rootHash;
+    _sharedState.sourceHashMap.set(sourcePath, rootHash);
+    return didChange;
+}
Index: frontend/node_modules/tailwindcss/lib/lib/collapseAdjacentRules.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/collapseAdjacentRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/collapseAdjacentRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,61 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return collapseAdjacentRules;
+    }
+});
+let comparisonMap = {
+    atrule: [
+        "name",
+        "params"
+    ],
+    rule: [
+        "selector"
+    ]
+};
+let types = new Set(Object.keys(comparisonMap));
+function collapseAdjacentRules() {
+    function collapseRulesIn(root) {
+        let currentRule = null;
+        root.each((node)=>{
+            if (!types.has(node.type)) {
+                currentRule = null;
+                return;
+            }
+            if (currentRule === null) {
+                currentRule = node;
+                return;
+            }
+            let properties = comparisonMap[node.type];
+            var _node_property, _currentRule_property;
+            if (node.type === "atrule" && node.name === "font-face") {
+                currentRule = node;
+            } else if (properties.every((property)=>((_node_property = node[property]) !== null && _node_property !== void 0 ? _node_property : "").replace(/\s+/g, " ") === ((_currentRule_property = currentRule[property]) !== null && _currentRule_property !== void 0 ? _currentRule_property : "").replace(/\s+/g, " "))) {
+                // An AtRule may not have children (for example if we encounter duplicate @import url(…) rules)
+                if (node.nodes) {
+                    currentRule.append(node.nodes);
+                }
+                node.remove();
+            } else {
+                currentRule = node;
+            }
+        });
+        // After we've collapsed adjacent rules & at-rules, we need to collapse
+        // adjacent rules & at-rules that are children of at-rules.
+        // We do not care about nesting rules because Tailwind CSS
+        // explicitly does not handle rule nesting on its own as
+        // the user is expected to use a nesting plugin
+        root.each((node)=>{
+            if (node.type === "atrule") {
+                collapseRulesIn(node);
+            }
+        });
+    }
+    return (root)=>{
+        collapseRulesIn(root);
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/lib/collapseDuplicateDeclarations.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/collapseDuplicateDeclarations.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/collapseDuplicateDeclarations.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,85 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return collapseDuplicateDeclarations;
+    }
+});
+function collapseDuplicateDeclarations() {
+    return (root)=>{
+        root.walkRules((node)=>{
+            let seen = new Map();
+            let droppable = new Set([]);
+            let byProperty = new Map();
+            node.walkDecls((decl)=>{
+                // This could happen if we have nested selectors. In that case the
+                // parent will loop over all its declarations but also the declarations
+                // of nested rules. With this we ensure that we are shallowly checking
+                // declarations.
+                if (decl.parent !== node) {
+                    return;
+                }
+                if (seen.has(decl.prop)) {
+                    // Exact same value as what we have seen so far
+                    if (seen.get(decl.prop).value === decl.value) {
+                        // Keep the last one, drop the one we've seen so far
+                        droppable.add(seen.get(decl.prop));
+                        // Override the existing one with the new value. This is necessary
+                        // so that if we happen to have more than one declaration with the
+                        // same value, that we keep removing the previous one. Otherwise we
+                        // will only remove the *first* one.
+                        seen.set(decl.prop, decl);
+                        return;
+                    }
+                    // Not the same value, so we need to check if we can merge it so
+                    // let's collect it first.
+                    if (!byProperty.has(decl.prop)) {
+                        byProperty.set(decl.prop, new Set());
+                    }
+                    byProperty.get(decl.prop).add(seen.get(decl.prop));
+                    byProperty.get(decl.prop).add(decl);
+                }
+                seen.set(decl.prop, decl);
+            });
+            // Drop all the duplicate declarations with the exact same value we've
+            // already seen so far.
+            for (let decl of droppable){
+                decl.remove();
+            }
+            // Analyze the declarations based on its unit, drop all the declarations
+            // with the same unit but the last one in the list.
+            for (let declarations of byProperty.values()){
+                let byUnit = new Map();
+                for (let decl of declarations){
+                    let unit = resolveUnit(decl.value);
+                    if (unit === null) {
+                        continue;
+                    }
+                    if (!byUnit.has(unit)) {
+                        byUnit.set(unit, new Set());
+                    }
+                    byUnit.get(unit).add(decl);
+                }
+                for (let declarations of byUnit.values()){
+                    // Get all but the last one
+                    let removableDeclarations = Array.from(declarations).slice(0, -1);
+                    for (let decl of removableDeclarations){
+                        decl.remove();
+                    }
+                }
+            }
+        });
+    };
+}
+let UNITLESS_NUMBER = Symbol("unitless-number");
+function resolveUnit(input) {
+    let result = /^-?\d*.?\d+([\w%]+)?$/g.exec(input);
+    if (result) {
+        var _result_;
+        return (_result_ = result[1]) !== null && _result_ !== void 0 ? _result_ : UNITLESS_NUMBER;
+    }
+    return null;
+}
Index: frontend/node_modules/tailwindcss/lib/lib/content.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/content.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/content.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,247 @@
+// @ts-check
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    parseCandidateFiles: function() {
+        return parseCandidateFiles;
+    },
+    resolvedChangedContent: function() {
+        return resolvedChangedContent;
+    },
+    createBroadPatternCheck: function() {
+        return createBroadPatternCheck;
+    }
+});
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _path = /*#__PURE__*/ _interop_require_default(require("path"));
+const _isglob = /*#__PURE__*/ _interop_require_default(require("is-glob"));
+const _fastglob = /*#__PURE__*/ _interop_require_default(require("fast-glob"));
+const _normalizepath = /*#__PURE__*/ _interop_require_default(require("normalize-path"));
+const _parseGlob = require("../util/parseGlob");
+const _sharedState = require("./sharedState");
+const _log = /*#__PURE__*/ _interop_require_default(require("../util/log"));
+const _micromatch = /*#__PURE__*/ _interop_require_default(require("micromatch"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function parseCandidateFiles(context, tailwindConfig) {
+    let files = tailwindConfig.content.files;
+    // Normalize the file globs
+    files = files.filter((filePath)=>typeof filePath === "string");
+    files = files.map(_normalizepath.default);
+    // Split into included and excluded globs
+    let tasks = _fastglob.default.generateTasks(files);
+    /** @type {ContentPath[]} */ let included = [];
+    /** @type {ContentPath[]} */ let excluded = [];
+    for (const task of tasks){
+        included.push(...task.positive.map((filePath)=>parseFilePath(filePath, false)));
+        excluded.push(...task.negative.map((filePath)=>parseFilePath(filePath, true)));
+    }
+    let paths = [
+        ...included,
+        ...excluded
+    ];
+    // Resolve paths relative to the config file or cwd
+    paths = resolveRelativePaths(context, paths);
+    // Resolve symlinks if possible
+    paths = paths.flatMap(resolvePathSymlinks);
+    // Update cached patterns
+    paths = paths.map(resolveGlobPattern);
+    return paths;
+}
+/**
+ *
+ * @param {string} filePath
+ * @param {boolean} ignore
+ * @returns {ContentPath}
+ */ function parseFilePath(filePath, ignore) {
+    let contentPath = {
+        original: filePath,
+        base: filePath,
+        ignore,
+        pattern: filePath,
+        glob: null
+    };
+    if ((0, _isglob.default)(filePath)) {
+        Object.assign(contentPath, (0, _parseGlob.parseGlob)(filePath));
+    }
+    return contentPath;
+}
+/**
+ *
+ * @param {ContentPath} contentPath
+ * @returns {ContentPath}
+ */ function resolveGlobPattern(contentPath) {
+    // This is required for Windows support to properly pick up Glob paths.
+    // Afaik, this technically shouldn't be needed but there's probably
+    // some internal, direct path matching with a normalized path in
+    // a package which can't handle mixed directory separators
+    let base = (0, _normalizepath.default)(contentPath.base);
+    // If the user's file path contains any special characters (like parens) for instance fast-glob
+    // is like "OOOH SHINY" and treats them as such. So we have to escape the base path to fix this
+    base = _fastglob.default.escapePath(base);
+    contentPath.pattern = contentPath.glob ? `${base}/${contentPath.glob}` : base;
+    contentPath.pattern = contentPath.ignore ? `!${contentPath.pattern}` : contentPath.pattern;
+    return contentPath;
+}
+/**
+ * Resolve each path relative to the config file (when possible) if the experimental flag is enabled
+ * Otherwise, resolve relative to the current working directory
+ *
+ * @param {any} context
+ * @param {ContentPath[]} contentPaths
+ * @returns {ContentPath[]}
+ */ function resolveRelativePaths(context, contentPaths) {
+    let resolveFrom = [];
+    // Resolve base paths relative to the config file (when possible) if the experimental flag is enabled
+    if (context.userConfigPath && context.tailwindConfig.content.relative) {
+        resolveFrom = [
+            _path.default.dirname(context.userConfigPath)
+        ];
+    }
+    return contentPaths.map((contentPath)=>{
+        contentPath.base = _path.default.resolve(...resolveFrom, contentPath.base);
+        return contentPath;
+    });
+}
+/**
+ * Resolve the symlink for the base directory / file in each path
+ * These are added as additional dependencies to watch for changes because
+ * some tools (like webpack) will only watch the actual file or directory
+ * but not the symlink itself even in projects that use monorepos.
+ *
+ * @param {ContentPath} contentPath
+ * @returns {ContentPath[]}
+ */ function resolvePathSymlinks(contentPath) {
+    let paths = [
+        contentPath
+    ];
+    try {
+        let resolvedPath = _fs.default.realpathSync(contentPath.base);
+        if (resolvedPath !== contentPath.base) {
+            paths.push({
+                ...contentPath,
+                base: resolvedPath
+            });
+        }
+    } catch  {
+    // TODO: log this?
+    }
+    return paths;
+}
+function resolvedChangedContent(context, candidateFiles, fileModifiedMap) {
+    let changedContent = context.tailwindConfig.content.files.filter((item)=>typeof item.raw === "string").map(({ raw , extension ="html"  })=>({
+            content: raw,
+            extension
+        }));
+    let [changedFiles, mTimesToCommit] = resolveChangedFiles(candidateFiles, fileModifiedMap);
+    for (let changedFile of changedFiles){
+        let extension = _path.default.extname(changedFile).slice(1);
+        changedContent.push({
+            file: changedFile,
+            extension
+        });
+    }
+    return [
+        changedContent,
+        mTimesToCommit
+    ];
+}
+const LARGE_DIRECTORIES = [
+    "node_modules"
+];
+// Ensures that `node_modules` has to match as-is, otherwise `mynode_modules`
+// would match as well, but that is not a known large directory.
+const LARGE_DIRECTORIES_REGEX = new RegExp(`(${LARGE_DIRECTORIES.map((dir)=>String.raw`\b${dir}\b`).join("|")})`);
+function createBroadPatternCheck(paths) {
+    // Detect whether a glob pattern might be too broad. This means that it:
+    // - Includes `**`
+    // - Does not include any of the known large directories (e.g.: node_modules)
+    let maybeBroadPattern = paths.some((path)=>path.includes("**") && !LARGE_DIRECTORIES_REGEX.test(path));
+    // Didn't detect any potentially broad patterns, so we can skip further
+    // checks.
+    if (!maybeBroadPattern) {
+        return ()=>{};
+    }
+    // All glob matchers
+    let matchers = [];
+    // All glob matchers that explicitly contain any of the known large
+    // directories (e.g.: node_modules).
+    let explicitMatchers = [];
+    // Create matchers for all paths
+    for (let path of paths){
+        let matcher = _micromatch.default.matcher(path);
+        if (LARGE_DIRECTORIES_REGEX.test(path)) {
+            explicitMatchers.push(matcher);
+        }
+        matchers.push(matcher);
+    }
+    // Keep track of whether we already warned about the broad pattern issue or
+    // not. The `log.warn` function already does something similar where we only
+    // output the log once. However, with this we can also skip the other checks
+    // when we already warned about the broad pattern.
+    let warned = false;
+    /**
+   * @param {string} file
+   */ return (file)=>{
+        if (warned) return; // Already warned about the broad pattern
+        if (explicitMatchers.some((matcher)=>matcher(file))) return; // Explicitly included, so we can skip further checks
+        // When a broad pattern is used, we have to double check that the file was
+        // not explicitly included in the globs.
+        let matchingGlobIndex = matchers.findIndex((matcher)=>matcher(file));
+        if (matchingGlobIndex === -1) return; // This should never happen
+        let matchingGlob = paths[matchingGlobIndex];
+        // Create relative paths to make the output a bit more readable.
+        let relativeMatchingGlob = _path.default.relative(process.cwd(), matchingGlob);
+        if (relativeMatchingGlob[0] !== ".") relativeMatchingGlob = `./${relativeMatchingGlob}`;
+        let largeDirectory = LARGE_DIRECTORIES.find((directory)=>file.includes(directory));
+        if (largeDirectory) {
+            warned = true;
+            _log.default.warn("broad-content-glob-pattern", [
+                `Your \`content\` configuration includes a pattern which looks like it's accidentally matching all of \`${largeDirectory}\` and can cause serious performance issues.`,
+                `Pattern: \`${relativeMatchingGlob}\``,
+                `See our documentation for recommendations:`,
+                "https://tailwindcss.com/docs/content-configuration#pattern-recommendations"
+            ]);
+        }
+    };
+}
+/**
+ *
+ * @param {ContentPath[]} candidateFiles
+ * @param {Map<string, number>} fileModifiedMap
+ * @returns {[Set<string>, Map<string, number>]}
+ */ function resolveChangedFiles(candidateFiles, fileModifiedMap) {
+    let paths = candidateFiles.map((contentPath)=>contentPath.pattern);
+    let mTimesToCommit = new Map();
+    let checkBroadPattern = createBroadPatternCheck(paths);
+    let changedFiles = new Set();
+    _sharedState.env.DEBUG && console.time("Finding changed files");
+    let files = _fastglob.default.sync(paths, {
+        absolute: true
+    });
+    for (let file of files){
+        checkBroadPattern(file);
+        let prevModified = fileModifiedMap.get(file) || -Infinity;
+        let modified = _fs.default.statSync(file).mtimeMs;
+        if (modified > prevModified) {
+            changedFiles.add(file);
+            mTimesToCommit.set(file, modified);
+        }
+    }
+    _sharedState.env.DEBUG && console.timeEnd("Finding changed files");
+    return [
+        changedFiles,
+        mTimesToCommit
+    ];
+}
Index: frontend/node_modules/tailwindcss/lib/lib/defaultExtractor.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/defaultExtractor.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/defaultExtractor.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,273 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "defaultExtractor", {
+    enumerable: true,
+    get: function() {
+        return defaultExtractor;
+    }
+});
+const _regex = /*#__PURE__*/ _interop_require_wildcard(require("./regex"));
+const _splitAtTopLevelOnly = require("../util/splitAtTopLevelOnly");
+function _getRequireWildcardCache(nodeInterop) {
+    if (typeof WeakMap !== "function") return null;
+    var cacheBabelInterop = new WeakMap();
+    var cacheNodeInterop = new WeakMap();
+    return (_getRequireWildcardCache = function(nodeInterop) {
+        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+    })(nodeInterop);
+}
+function _interop_require_wildcard(obj, nodeInterop) {
+    if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+    }
+    if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return {
+            default: obj
+        };
+    }
+    var cache = _getRequireWildcardCache(nodeInterop);
+    if (cache && cache.has(obj)) {
+        return cache.get(obj);
+    }
+    var newObj = {};
+    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+    for(var key in obj){
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+            if (desc && (desc.get || desc.set)) {
+                Object.defineProperty(newObj, key, desc);
+            } else {
+                newObj[key] = obj[key];
+            }
+        }
+    }
+    newObj.default = obj;
+    if (cache) {
+        cache.set(obj, newObj);
+    }
+    return newObj;
+}
+function defaultExtractor(context) {
+    let patterns = Array.from(buildRegExps(context));
+    /**
+   * @param {string} content
+   */ return (content)=>{
+        /** @type {(string|string)[]} */ let results = [];
+        for (let pattern of patterns){
+            var _content_match;
+            for (let result of (_content_match = content.match(pattern)) !== null && _content_match !== void 0 ? _content_match : []){
+                results.push(clipAtBalancedParens(result));
+            }
+        }
+        // Extract any subclasses from languages like Slim and Pug, eg:
+        // div.flex.px-5.underline
+        for (let result of results.slice()){
+            let segments = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(result, ".");
+            for(let idx = 0; idx < segments.length; idx++){
+                let segment = segments[idx];
+                if (idx >= segments.length - 1) {
+                    results.push(segment);
+                    continue;
+                }
+                // If the next segment is a number, discard both, for example seeing
+                // `px-1` and `5` means the real candidate was `px-1.5` which is already
+                // captured.
+                let next = Number(segments[idx + 1]);
+                if (isNaN(next)) {
+                    results.push(segment);
+                } else {
+                    idx++;
+                }
+            }
+        }
+        return results;
+    };
+}
+function* buildRegExps(context) {
+    let separator = context.tailwindConfig.separator;
+    let prefix = context.tailwindConfig.prefix !== "" ? _regex.optional(_regex.pattern([
+        /-?/,
+        _regex.escape(context.tailwindConfig.prefix)
+    ])) : "";
+    let utility = _regex.any([
+        // Arbitrary properties (without square brackets)
+        /\[[^\s:'"`]+:[^\s\[\]]+\]/,
+        // Arbitrary properties with balanced square brackets
+        // This is a targeted fix to continue to allow theme()
+        // with square brackets to work in arbitrary properties
+        // while fixing a problem with the regex matching too much
+        /\[[^\s:'"`\]]+:[^\s]+?\[[^\s]+\][^\s]+?\]/,
+        // Utilities
+        _regex.pattern([
+            // Utility Name / Group Name
+            _regex.any([
+                /-?(?:\w+)/,
+                // This is here to make sure @container supports everything that other utilities do
+                /@(?:\w+)/
+            ]),
+            // Normal/Arbitrary values
+            _regex.optional(_regex.any([
+                _regex.pattern([
+                    // Arbitrary values
+                    _regex.any([
+                        /-(?:\w+-)*\['[^\s]+'\]/,
+                        /-(?:\w+-)*\["[^\s]+"\]/,
+                        /-(?:\w+-)*\[`[^\s]+`\]/,
+                        /-(?:\w+-)*\[(?:[^\s\[\]]+\[[^\s\[\]]+\])*[^\s:\[\]]+\]/
+                    ]),
+                    // Not immediately followed by an `{[(`
+                    /(?![{([]])/,
+                    // optionally followed by an opacity modifier
+                    /(?:\/[^\s'"`\\><$]*)?/
+                ]),
+                _regex.pattern([
+                    // Arbitrary values
+                    _regex.any([
+                        /-(?:\w+-)*\['[^\s]+'\]/,
+                        /-(?:\w+-)*\["[^\s]+"\]/,
+                        /-(?:\w+-)*\[`[^\s]+`\]/,
+                        /-(?:\w+-)*\[(?:[^\s\[\]]+\[[^\s\[\]]+\])*[^\s\[\]]+\]/
+                    ]),
+                    // Not immediately followed by an `{[(`
+                    /(?![{([]])/,
+                    // optionally followed by an opacity modifier
+                    /(?:\/[^\s'"`\\$]*)?/
+                ]),
+                // Normal values w/o quotes — may include an opacity modifier
+                /[-\/][^\s'"`\\$={><]*/
+            ]))
+        ])
+    ]);
+    let variantPatterns = [
+        // Without quotes
+        _regex.any([
+            // This is here to provide special support for the `@` variant
+            _regex.pattern([
+                /@\[[^\s"'`]+\](\/[^\s"'`]+)?/,
+                separator
+            ]),
+            // With variant modifier (e.g.: group-[..]/modifier)
+            _regex.pattern([
+                /([^\s"'`\[\\]+-)?\[[^\s"'`]+\]\/[\w_-]+/,
+                separator
+            ]),
+            _regex.pattern([
+                /([^\s"'`\[\\]+-)?\[[^\s"'`]+\]/,
+                separator
+            ]),
+            _regex.pattern([
+                /[^\s"'`\[\\]+/,
+                separator
+            ])
+        ]),
+        // With quotes allowed
+        _regex.any([
+            // With variant modifier (e.g.: group-[..]/modifier)
+            _regex.pattern([
+                /([^\s"'`\[\\]+-)?\[[^\s`]+\]\/[\w_-]+/,
+                separator
+            ]),
+            _regex.pattern([
+                /([^\s"'`\[\\]+-)?\[[^\s`]+\]/,
+                separator
+            ]),
+            _regex.pattern([
+                /[^\s`\[\\]+/,
+                separator
+            ])
+        ])
+    ];
+    for (const variantPattern of variantPatterns){
+        yield _regex.pattern([
+            // Variants
+            "((?=((",
+            variantPattern,
+            ")+))\\2)?",
+            // Important (optional)
+            /!?/,
+            prefix,
+            utility
+        ]);
+    }
+    // 5. Inner matches
+    yield /[^<>"'`\s.(){}[\]#=%$][^<>"'`\s(){}[\]#=%$]*[^<>"'`\s.(){}[\]#=%:$]/g;
+}
+// We want to capture any "special" characters
+// AND the characters immediately following them (if there is one)
+let SPECIALS = /([\[\]'"`])([^\[\]'"`])?/g;
+let ALLOWED_CLASS_CHARACTERS = /[^"'`\s<>\]]+/;
+/**
+ * Clips a string ensuring that parentheses, quotes, etc… are balanced
+ * Used for arbitrary values only
+ *
+ * We will go past the end of the balanced parens until we find a non-class character
+ *
+ * Depth matching behavior:
+ * w-[calc(100%-theme('spacing[some_key][1.5]'))]']
+ *   ┬    ┬          ┬┬       ┬        ┬┬   ┬┬┬┬┬┬┬
+ *   1    2          3        4        34   3 210 END
+ *   ╰────┴──────────┴────────┴────────┴┴───┴─┴┴┴
+ *
+ * @param {string} input
+ */ function clipAtBalancedParens(input) {
+    // We are care about this for arbitrary values
+    if (!input.includes("-[")) {
+        return input;
+    }
+    let depth = 0;
+    let openStringTypes = [];
+    // Find all parens, brackets, quotes, etc
+    // Stop when we end at a balanced pair
+    // This is naive and will treat mismatched parens as balanced
+    // This shouldn't be a problem in practice though
+    let matches = input.matchAll(SPECIALS);
+    // We can't use lookbehind assertions because we have to support Safari
+    // So, instead, we've emulated it using capture groups and we'll re-work the matches to accommodate
+    matches = Array.from(matches).flatMap((match)=>{
+        const [, ...groups] = match;
+        return groups.map((group, idx)=>Object.assign([], match, {
+                index: match.index + idx,
+                0: group
+            }));
+    });
+    for (let match of matches){
+        let char = match[0];
+        let inStringType = openStringTypes[openStringTypes.length - 1];
+        if (char === inStringType) {
+            openStringTypes.pop();
+        } else if (char === "'" || char === '"' || char === "`") {
+            openStringTypes.push(char);
+        }
+        if (inStringType) {
+            continue;
+        } else if (char === "[") {
+            depth++;
+            continue;
+        } else if (char === "]") {
+            depth--;
+            continue;
+        }
+        // We've gone one character past the point where we should stop
+        // This means that there was an extra closing `]`
+        // We'll clip to just before it
+        if (depth < 0) {
+            return input.substring(0, match.index - 1);
+        }
+        // We've finished balancing the brackets but there still may be characters that can be included
+        // For example in the class `text-[#336699]/[.35]`
+        // The depth goes to `0` at the closing `]` but goes up again at the `[`
+        // If we're at zero and encounter a non-class character then we clip the class there
+        if (depth === 0 && !ALLOWED_CLASS_CHARACTERS.test(char)) {
+            return input.substring(0, match.index);
+        }
+    }
+    return input;
+} // Regular utilities
+ // {{modifier}:}*{namespace}{-{suffix}}*{/{opacityModifier}}?
+ // Arbitrary values
+ // {{modifier}:}*{namespace}-[{arbitraryValue}]{/{opacityModifier}}?
+ // arbitraryValue: no whitespace, balanced quotes unless within quotes, balanced brackets unless within quotes
+ // Arbitrary properties
+ // {{modifier}:}*[{validCssPropertyName}:{arbitraryValue}]
Index: frontend/node_modules/tailwindcss/lib/lib/evaluateTailwindFunctions.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/evaluateTailwindFunctions.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/evaluateTailwindFunctions.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,238 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _dlv = /*#__PURE__*/ _interop_require_default(require("dlv"));
+const _didyoumean = /*#__PURE__*/ _interop_require_default(require("didyoumean"));
+const _transformThemeValue = /*#__PURE__*/ _interop_require_default(require("../util/transformThemeValue"));
+const _index = /*#__PURE__*/ _interop_require_default(require("../value-parser/index"));
+const _normalizeScreens = require("../util/normalizeScreens");
+const _buildMediaQuery = /*#__PURE__*/ _interop_require_default(require("../util/buildMediaQuery"));
+const _toPath = require("../util/toPath");
+const _withAlphaVariable = require("../util/withAlphaVariable");
+const _pluginUtils = require("../util/pluginUtils");
+const _log = /*#__PURE__*/ _interop_require_default(require("../util/log"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function isObject(input) {
+    return typeof input === "object" && input !== null;
+}
+function findClosestExistingPath(theme, path) {
+    let parts = (0, _toPath.toPath)(path);
+    do {
+        parts.pop();
+        if ((0, _dlv.default)(theme, parts) !== undefined) break;
+    }while (parts.length);
+    return parts.length ? parts : undefined;
+}
+function pathToString(path) {
+    if (typeof path === "string") return path;
+    return path.reduce((acc, cur, i)=>{
+        if (cur.includes(".")) return `${acc}[${cur}]`;
+        return i === 0 ? cur : `${acc}.${cur}`;
+    }, "");
+}
+function list(items) {
+    return items.map((key)=>`'${key}'`).join(", ");
+}
+function listKeys(obj) {
+    return list(Object.keys(obj));
+}
+function validatePath(config, path, defaultValue, themeOpts = {}) {
+    const pathString = Array.isArray(path) ? pathToString(path) : path.replace(/^['"]+|['"]+$/g, "");
+    const pathSegments = Array.isArray(path) ? path : (0, _toPath.toPath)(pathString);
+    const value = (0, _dlv.default)(config.theme, pathSegments, defaultValue);
+    if (value === undefined) {
+        let error = `'${pathString}' does not exist in your theme config.`;
+        const parentSegments = pathSegments.slice(0, -1);
+        const parentValue = (0, _dlv.default)(config.theme, parentSegments);
+        if (isObject(parentValue)) {
+            const validKeys = Object.keys(parentValue).filter((key)=>validatePath(config, [
+                    ...parentSegments,
+                    key
+                ]).isValid);
+            const suggestion = (0, _didyoumean.default)(pathSegments[pathSegments.length - 1], validKeys);
+            if (suggestion) {
+                error += ` Did you mean '${pathToString([
+                    ...parentSegments,
+                    suggestion
+                ])}'?`;
+            } else if (validKeys.length > 0) {
+                error += ` '${pathToString(parentSegments)}' has the following valid keys: ${list(validKeys)}`;
+            }
+        } else {
+            const closestPath = findClosestExistingPath(config.theme, pathString);
+            if (closestPath) {
+                const closestValue = (0, _dlv.default)(config.theme, closestPath);
+                if (isObject(closestValue)) {
+                    error += ` '${pathToString(closestPath)}' has the following keys: ${listKeys(closestValue)}`;
+                } else {
+                    error += ` '${pathToString(closestPath)}' is not an object.`;
+                }
+            } else {
+                error += ` Your theme has the following top-level keys: ${listKeys(config.theme)}`;
+            }
+        }
+        return {
+            isValid: false,
+            error
+        };
+    }
+    if (!(typeof value === "string" || typeof value === "number" || typeof value === "function" || value instanceof String || value instanceof Number || Array.isArray(value))) {
+        let error = `'${pathString}' was found but does not resolve to a string.`;
+        if (isObject(value)) {
+            let validKeys = Object.keys(value).filter((key)=>validatePath(config, [
+                    ...pathSegments,
+                    key
+                ]).isValid);
+            if (validKeys.length) {
+                error += ` Did you mean something like '${pathToString([
+                    ...pathSegments,
+                    validKeys[0]
+                ])}'?`;
+            }
+        }
+        return {
+            isValid: false,
+            error
+        };
+    }
+    const [themeSection] = pathSegments;
+    return {
+        isValid: true,
+        value: (0, _transformThemeValue.default)(themeSection)(value, themeOpts)
+    };
+}
+function extractArgs(node, vNodes, functions) {
+    vNodes = vNodes.map((vNode)=>resolveVNode(node, vNode, functions));
+    let args = [
+        ""
+    ];
+    for (let vNode of vNodes){
+        if (vNode.type === "div" && vNode.value === ",") {
+            args.push("");
+        } else {
+            args[args.length - 1] += _index.default.stringify(vNode);
+        }
+    }
+    return args;
+}
+function resolveVNode(node, vNode, functions) {
+    if (vNode.type === "function" && functions[vNode.value] !== undefined) {
+        let args = extractArgs(node, vNode.nodes, functions);
+        vNode.type = "word";
+        vNode.value = functions[vNode.value](node, ...args);
+    }
+    return vNode;
+}
+function resolveFunctions(node, input, functions) {
+    let hasAnyFn = Object.keys(functions).some((fn)=>input.includes(`${fn}(`));
+    if (!hasAnyFn) return input;
+    return (0, _index.default)(input).walk((vNode)=>{
+        resolveVNode(node, vNode, functions);
+    }).toString();
+}
+let nodeTypePropertyMap = {
+    atrule: "params",
+    decl: "value"
+};
+/**
+ * @param {string} path
+ * @returns {Iterable<[path: string, alpha: string|undefined]>}
+ */ function* toPaths(path) {
+    // Strip quotes from beginning and end of string
+    // This allows the alpha value to be present inside of quotes
+    path = path.replace(/^['"]+|['"]+$/g, "");
+    let matches = path.match(/^([^\s]+)(?![^\[]*\])(?:\s*\/\s*([^\/\s]+))$/);
+    let alpha = undefined;
+    yield [
+        path,
+        undefined
+    ];
+    if (matches) {
+        path = matches[1];
+        alpha = matches[2];
+        yield [
+            path,
+            alpha
+        ];
+    }
+}
+/**
+ *
+ * @param {any} config
+ * @param {string} path
+ * @param {any} defaultValue
+ */ function resolvePath(config, path, defaultValue) {
+    const results = Array.from(toPaths(path)).map(([path, alpha])=>{
+        return Object.assign(validatePath(config, path, defaultValue, {
+            opacityValue: alpha
+        }), {
+            resolvedPath: path,
+            alpha
+        });
+    });
+    var _results_find;
+    return (_results_find = results.find((result)=>result.isValid)) !== null && _results_find !== void 0 ? _results_find : results[0];
+}
+function _default(context) {
+    let config = context.tailwindConfig;
+    let functions = {
+        theme: (node, path, ...defaultValue)=>{
+            let { isValid , value , error , alpha  } = resolvePath(config, path, defaultValue.length ? defaultValue : undefined);
+            if (!isValid) {
+                var _parentNode_raws_tailwind;
+                let parentNode = node.parent;
+                let candidate = (_parentNode_raws_tailwind = parentNode === null || parentNode === void 0 ? void 0 : parentNode.raws.tailwind) === null || _parentNode_raws_tailwind === void 0 ? void 0 : _parentNode_raws_tailwind.candidate;
+                if (parentNode && candidate !== undefined) {
+                    // Remove this utility from any caches
+                    context.markInvalidUtilityNode(parentNode);
+                    // Remove the CSS node from the markup
+                    parentNode.remove();
+                    // Show a warning
+                    _log.default.warn("invalid-theme-key-in-class", [
+                        `The utility \`${candidate}\` contains an invalid theme value and was not generated.`
+                    ]);
+                    return;
+                }
+                throw node.error(error);
+            }
+            let maybeColor = (0, _pluginUtils.parseColorFormat)(value);
+            let isColorFunction = maybeColor !== undefined && typeof maybeColor === "function";
+            if (alpha !== undefined || isColorFunction) {
+                if (alpha === undefined) {
+                    alpha = 1.0;
+                }
+                value = (0, _withAlphaVariable.withAlphaValue)(maybeColor, alpha, maybeColor);
+            }
+            return value;
+        },
+        screen: (node, screen)=>{
+            screen = screen.replace(/^['"]+/g, "").replace(/['"]+$/g, "");
+            let screens = (0, _normalizeScreens.normalizeScreens)(config.theme.screens);
+            let screenDefinition = screens.find(({ name  })=>name === screen);
+            if (!screenDefinition) {
+                throw node.error(`The '${screen}' screen does not exist in your theme.`);
+            }
+            return (0, _buildMediaQuery.default)(screenDefinition);
+        }
+    };
+    return (root)=>{
+        root.walk((node)=>{
+            let property = nodeTypePropertyMap[node.type];
+            if (property === undefined) {
+                return;
+            }
+            node[property] = resolveFunctions(node, node[property], functions);
+        });
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/lib/expandApplyAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/expandApplyAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/expandApplyAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,553 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return expandApplyAtRules;
+    }
+});
+const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
+const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
+const _generateRules = require("./generateRules");
+const _escapeClassName = /*#__PURE__*/ _interop_require_default(require("../util/escapeClassName"));
+const _applyImportantSelector = require("../util/applyImportantSelector");
+const _pseudoElements = require("../util/pseudoElements");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+/** @typedef {Map<string, [any, import('postcss').Rule[]]>} ApplyCache */ function extractClasses(node) {
+    /** @type {Map<string, Set<string>>} */ let groups = new Map();
+    let container = _postcss.default.root({
+        nodes: [
+            node.clone()
+        ]
+    });
+    container.walkRules((rule)=>{
+        (0, _postcssselectorparser.default)((selectors)=>{
+            selectors.walkClasses((classSelector)=>{
+                let parentSelector = classSelector.parent.toString();
+                let classes = groups.get(parentSelector);
+                if (!classes) {
+                    groups.set(parentSelector, classes = new Set());
+                }
+                classes.add(classSelector.value);
+            });
+        }).processSync(rule.selector);
+    });
+    let normalizedGroups = Array.from(groups.values(), (classes)=>Array.from(classes));
+    let classes = normalizedGroups.flat();
+    return Object.assign(classes, {
+        groups: normalizedGroups
+    });
+}
+let selectorExtractor = (0, _postcssselectorparser.default)();
+/**
+ * @param {string} ruleSelectors
+ */ function extractSelectors(ruleSelectors) {
+    return selectorExtractor.astSync(ruleSelectors);
+}
+function extractBaseCandidates(candidates, separator) {
+    let baseClasses = new Set();
+    for (let candidate of candidates){
+        baseClasses.add(candidate.split(separator).pop());
+    }
+    return Array.from(baseClasses);
+}
+function prefix(context, selector) {
+    let prefix = context.tailwindConfig.prefix;
+    return typeof prefix === "function" ? prefix(selector) : prefix + selector;
+}
+function* pathToRoot(node) {
+    yield node;
+    while(node.parent){
+        yield node.parent;
+        node = node.parent;
+    }
+}
+/**
+ * Only clone the node itself and not its children
+ *
+ * @param {*} node
+ * @param {*} overrides
+ * @returns
+ */ function shallowClone(node, overrides = {}) {
+    let children = node.nodes;
+    node.nodes = [];
+    let tmp = node.clone(overrides);
+    node.nodes = children;
+    return tmp;
+}
+/**
+ * Clone just the nodes all the way to the top that are required to represent
+ * this singular rule in the tree.
+ *
+ * For example, if we have CSS like this:
+ * ```css
+ * @media (min-width: 768px) {
+ *   @supports (display: grid) {
+ *     .foo {
+ *       display: grid;
+ *       grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ *     }
+ *   }
+ *
+ *   @supports (backdrop-filter: blur(1px)) {
+ *     .bar {
+ *       backdrop-filter: blur(1px);
+ *     }
+ *   }
+ *
+ *   .baz {
+ *     color: orange;
+ *   }
+ * }
+ * ```
+ *
+ * And we're cloning `.bar` it'll return a cloned version of what's required for just that single node:
+ *
+ * ```css
+ * @media (min-width: 768px) {
+ *   @supports (backdrop-filter: blur(1px)) {
+ *     .bar {
+ *       backdrop-filter: blur(1px);
+ *     }
+ *   }
+ * }
+ * ```
+ *
+ * @param {import('postcss').Node} node
+ */ function nestedClone(node) {
+    for (let parent of pathToRoot(node)){
+        if (node === parent) {
+            continue;
+        }
+        if (parent.type === "root") {
+            break;
+        }
+        node = shallowClone(parent, {
+            nodes: [
+                node
+            ]
+        });
+    }
+    return node;
+}
+/**
+ * @param {import('postcss').Root} root
+ */ function buildLocalApplyCache(root, context) {
+    /** @type {ApplyCache} */ let cache = new Map();
+    root.walkRules((rule)=>{
+        // Ignore rules generated by Tailwind
+        for (let node of pathToRoot(rule)){
+            var _node_raws_tailwind;
+            if (((_node_raws_tailwind = node.raws.tailwind) === null || _node_raws_tailwind === void 0 ? void 0 : _node_raws_tailwind.layer) !== undefined) {
+                return;
+            }
+        }
+        // Clone what's required to represent this singular rule in the tree
+        let container = nestedClone(rule);
+        let sort = context.offsets.create("user");
+        for (let className of extractClasses(rule)){
+            let list = cache.get(className) || [];
+            cache.set(className, list);
+            list.push([
+                {
+                    layer: "user",
+                    sort,
+                    important: false
+                },
+                container
+            ]);
+        }
+    });
+    return cache;
+}
+/**
+ * @returns {ApplyCache}
+ */ function buildApplyCache(applyCandidates, context) {
+    for (let candidate of applyCandidates){
+        if (context.notClassCache.has(candidate) || context.applyClassCache.has(candidate)) {
+            continue;
+        }
+        if (context.classCache.has(candidate)) {
+            context.applyClassCache.set(candidate, context.classCache.get(candidate).map(([meta, rule])=>[
+                    meta,
+                    rule.clone()
+                ]));
+            continue;
+        }
+        let matches = Array.from((0, _generateRules.resolveMatches)(candidate, context));
+        if (matches.length === 0) {
+            context.notClassCache.add(candidate);
+            continue;
+        }
+        context.applyClassCache.set(candidate, matches);
+    }
+    return context.applyClassCache;
+}
+/**
+ * Build a cache only when it's first used
+ *
+ * @param {() => ApplyCache} buildCacheFn
+ * @returns {ApplyCache}
+ */ function lazyCache(buildCacheFn) {
+    let cache = null;
+    return {
+        get: (name)=>{
+            cache = cache || buildCacheFn();
+            return cache.get(name);
+        },
+        has: (name)=>{
+            cache = cache || buildCacheFn();
+            return cache.has(name);
+        }
+    };
+}
+/**
+ * Take a series of multiple caches and merge
+ * them so they act like one large cache
+ *
+ * @param {ApplyCache[]} caches
+ * @returns {ApplyCache}
+ */ function combineCaches(caches) {
+    return {
+        get: (name)=>caches.flatMap((cache)=>cache.get(name) || []),
+        has: (name)=>caches.some((cache)=>cache.has(name))
+    };
+}
+function extractApplyCandidates(params) {
+    let candidates = params.split(/[\s\t\n]+/g);
+    if (candidates[candidates.length - 1] === "!important") {
+        return [
+            candidates.slice(0, -1),
+            true
+        ];
+    }
+    return [
+        candidates,
+        false
+    ];
+}
+function processApply(root, context, localCache) {
+    let applyCandidates = new Set();
+    // Collect all @apply rules and candidates
+    let applies = [];
+    root.walkAtRules("apply", (rule)=>{
+        let [candidates] = extractApplyCandidates(rule.params);
+        for (let util of candidates){
+            applyCandidates.add(util);
+        }
+        applies.push(rule);
+    });
+    // Start the @apply process if we have rules with @apply in them
+    if (applies.length === 0) {
+        return;
+    }
+    // Fill up some caches!
+    let applyClassCache = combineCaches([
+        localCache,
+        buildApplyCache(applyCandidates, context)
+    ]);
+    /**
+   * When we have an apply like this:
+   *
+   * .abc {
+   *    @apply hover:font-bold;
+   * }
+   *
+   * What we essentially will do is resolve to this:
+   *
+   * .abc {
+   *    @apply .hover\:font-bold:hover {
+   *      font-weight: 500;
+   *    }
+   * }
+   *
+   * Notice that the to-be-applied class is `.hover\:font-bold:hover` and that the utility candidate was `hover:font-bold`.
+   * What happens in this function is that we prepend a `.` and escape the candidate.
+   * This will result in `.hover\:font-bold`
+   * Which means that we can replace `.hover\:font-bold` with `.abc` in `.hover\:font-bold:hover` resulting in `.abc:hover`
+   *
+   * @param {string} selector
+   * @param {string} utilitySelectors
+   * @param {string} candidate
+   */ function replaceSelector(selector, utilitySelectors, candidate) {
+        let selectorList = extractSelectors(selector);
+        let utilitySelectorsList = extractSelectors(utilitySelectors);
+        let candidateList = extractSelectors(`.${(0, _escapeClassName.default)(candidate)}`);
+        let candidateClass = candidateList.nodes[0].nodes[0];
+        selectorList.each((sel)=>{
+            /** @type {Set<import('postcss-selector-parser').Selector>} */ let replaced = new Set();
+            utilitySelectorsList.each((utilitySelector)=>{
+                let hasReplaced = false;
+                utilitySelector = utilitySelector.clone();
+                utilitySelector.walkClasses((node)=>{
+                    if (node.value !== candidateClass.value) {
+                        return;
+                    }
+                    // Don't replace multiple instances of the same class
+                    // This is theoretically correct but only partially
+                    // We'd need to generate every possible permutation of the replacement
+                    // For example with `.foo + .foo { … }` and `section { @apply foo; }`
+                    // We'd need to generate all of these:
+                    // - `.foo + .foo`
+                    // - `.foo + section`
+                    // - `section + .foo`
+                    // - `section + section`
+                    if (hasReplaced) {
+                        return;
+                    }
+                    // Since you can only `@apply` class names this is sufficient
+                    // We want to replace the matched class name with the selector the user is using
+                    // Ex: Replace `.text-blue-500` with `.foo.bar:is(.something-cool)`
+                    node.replaceWith(...sel.nodes.map((node)=>node.clone()));
+                    // Record that we did something and we want to use this new selector
+                    replaced.add(utilitySelector);
+                    hasReplaced = true;
+                });
+            });
+            // Sort tag names before class names (but only sort each group (separated by a combinator)
+            // separately and not in total)
+            // This happens when replacing `.bar` in `.foo.bar` with a tag like `section`
+            for (let sel of replaced){
+                let groups = [
+                    []
+                ];
+                for (let node of sel.nodes){
+                    if (node.type === "combinator") {
+                        groups.push(node);
+                        groups.push([]);
+                    } else {
+                        let last = groups[groups.length - 1];
+                        last.push(node);
+                    }
+                }
+                sel.nodes = [];
+                for (let group of groups){
+                    if (Array.isArray(group)) {
+                        group.sort((a, b)=>{
+                            if (a.type === "tag" && b.type === "class") {
+                                return -1;
+                            } else if (a.type === "class" && b.type === "tag") {
+                                return 1;
+                            } else if (a.type === "class" && b.type === "pseudo" && b.value.startsWith("::")) {
+                                return -1;
+                            } else if (a.type === "pseudo" && a.value.startsWith("::") && b.type === "class") {
+                                return 1;
+                            }
+                            return 0;
+                        });
+                    }
+                    sel.nodes = sel.nodes.concat(group);
+                }
+            }
+            sel.replaceWith(...replaced);
+        });
+        return selectorList.toString();
+    }
+    let perParentApplies = new Map();
+    // Collect all apply candidates and their rules
+    for (let apply of applies){
+        let [candidates] = perParentApplies.get(apply.parent) || [
+            [],
+            apply.source
+        ];
+        perParentApplies.set(apply.parent, [
+            candidates,
+            apply.source
+        ]);
+        let [applyCandidates, important] = extractApplyCandidates(apply.params);
+        if (apply.parent.type === "atrule") {
+            if (apply.parent.name === "screen") {
+                let screenType = apply.parent.params;
+                throw apply.error(`@apply is not supported within nested at-rules like @screen. We suggest you write this as @apply ${applyCandidates.map((c)=>`${screenType}:${c}`).join(" ")} instead.`);
+            }
+            throw apply.error(`@apply is not supported within nested at-rules like @${apply.parent.name}. You can fix this by un-nesting @${apply.parent.name}.`);
+        }
+        for (let applyCandidate of applyCandidates){
+            if ([
+                prefix(context, "group"),
+                prefix(context, "peer")
+            ].includes(applyCandidate)) {
+                // TODO: Link to specific documentation page with error code.
+                throw apply.error(`@apply should not be used with the '${applyCandidate}' utility`);
+            }
+            if (!applyClassCache.has(applyCandidate)) {
+                throw apply.error(`The \`${applyCandidate}\` class does not exist. If \`${applyCandidate}\` is a custom class, make sure it is defined within a \`@layer\` directive.`);
+            }
+            let rules = applyClassCache.get(applyCandidate);
+            // Verify that we can apply the class
+            for (let [, rule] of rules){
+                if (rule.type === "atrule") {
+                    continue;
+                }
+                rule.walkRules(()=>{
+                    throw apply.error([
+                        `The \`${applyCandidate}\` class cannot be used with \`@apply\` because \`@apply\` does not currently support nested CSS.`,
+                        "Rewrite the selector without nesting or configure the `tailwindcss/nesting` plugin:",
+                        "https://tailwindcss.com/docs/using-with-preprocessors#nesting"
+                    ].join("\n"));
+                });
+            }
+            candidates.push([
+                applyCandidate,
+                important,
+                rules
+            ]);
+        }
+    }
+    for (let [parent, [candidates, atApplySource]] of perParentApplies){
+        let siblings = [];
+        for (let [applyCandidate, important, rules] of candidates){
+            let potentialApplyCandidates = [
+                applyCandidate,
+                ...extractBaseCandidates([
+                    applyCandidate
+                ], context.tailwindConfig.separator)
+            ];
+            for (let [meta, node] of rules){
+                let parentClasses = extractClasses(parent);
+                let nodeClasses = extractClasses(node);
+                // When we encounter a rule like `.dark .a, .b { … }` we only want to be left with `[.dark, .a]` if the base applyCandidate is `.a` or with `[.b]` if the base applyCandidate is `.b`
+                // So we've split them into groups
+                nodeClasses = nodeClasses.groups.filter((classList)=>classList.some((className)=>potentialApplyCandidates.includes(className))).flat();
+                // Add base utility classes from the @apply node to the list of
+                // classes to check whether it intersects and therefore results in a
+                // circular dependency or not.
+                //
+                // E.g.:
+                // .foo {
+                //   @apply hover:a; // This applies "a" but with a modifier
+                // }
+                //
+                // We only have to do that with base classes of the `node`, not of the `parent`
+                // E.g.:
+                // .hover\:foo {
+                //   @apply bar;
+                // }
+                // .bar {
+                //   @apply foo;
+                // }
+                //
+                // This should not result in a circular dependency because we are
+                // just applying `.foo` and the rule above is `.hover\:foo` which is
+                // unrelated. However, if we were to apply `hover:foo` then we _did_
+                // have to include this one.
+                nodeClasses = nodeClasses.concat(extractBaseCandidates(nodeClasses, context.tailwindConfig.separator));
+                let intersects = parentClasses.some((selector)=>nodeClasses.includes(selector));
+                if (intersects) {
+                    throw node.error(`You cannot \`@apply\` the \`${applyCandidate}\` utility here because it creates a circular dependency.`);
+                }
+                let root = _postcss.default.root({
+                    nodes: [
+                        node.clone()
+                    ]
+                });
+                // Make sure every node in the entire tree points back at the @apply rule that generated it
+                root.walk((node)=>{
+                    node.source = atApplySource;
+                });
+                let canRewriteSelector = node.type !== "atrule" || node.type === "atrule" && node.name !== "keyframes";
+                if (canRewriteSelector) {
+                    root.walkRules((rule)=>{
+                        // Let's imagine you have the following structure:
+                        //
+                        // .foo {
+                        //   @apply bar;
+                        // }
+                        //
+                        // @supports (a: b) {
+                        //   .bar {
+                        //     color: blue
+                        //   }
+                        //
+                        //   .something-unrelated {}
+                        // }
+                        //
+                        // In this case we want to apply `.bar` but it happens to be in
+                        // an atrule node. We clone that node instead of the nested one
+                        // because we still want that @supports rule to be there once we
+                        // applied everything.
+                        //
+                        // However it happens to be that the `.something-unrelated` is
+                        // also in that same shared @supports atrule. This is not good,
+                        // and this should not be there. The good part is that this is
+                        // a clone already and it can be safely removed. The question is
+                        // how do we know we can remove it. Basically what we can do is
+                        // match it against the applyCandidate that you want to apply. If
+                        // it doesn't match the we can safely delete it.
+                        //
+                        // If we didn't do this, then the `replaceSelector` function
+                        // would have replaced this with something that didn't exist and
+                        // therefore it removed the selector altogether. In this specific
+                        // case it would result in `{}` instead of `.something-unrelated {}`
+                        if (!extractClasses(rule).some((candidate)=>candidate === applyCandidate)) {
+                            rule.remove();
+                            return;
+                        }
+                        // Strip the important selector from the parent selector if at the beginning
+                        let importantSelector = typeof context.tailwindConfig.important === "string" ? context.tailwindConfig.important : null;
+                        // We only want to move the "important" selector if this is a Tailwind-generated utility
+                        // We do *not* want to do this for user CSS that happens to be structured the same
+                        let isGenerated = parent.raws.tailwind !== undefined;
+                        let parentSelector = isGenerated && importantSelector && parent.selector.indexOf(importantSelector) === 0 ? parent.selector.slice(importantSelector.length) : parent.selector;
+                        // If the selector becomes empty after replacing the important selector
+                        // This means that it's the same as the parent selector and we don't want to replace it
+                        // Otherwise we'll crash
+                        if (parentSelector === "") {
+                            parentSelector = parent.selector;
+                        }
+                        rule.selector = replaceSelector(parentSelector, rule.selector, applyCandidate);
+                        // And then re-add it if it was removed
+                        if (importantSelector && parentSelector !== parent.selector) {
+                            rule.selector = (0, _applyImportantSelector.applyImportantSelector)(rule.selector, importantSelector);
+                        }
+                        rule.walkDecls((d)=>{
+                            d.important = meta.important || important;
+                        });
+                        // Move pseudo elements to the end of the selector (if necessary)
+                        let selector = (0, _postcssselectorparser.default)().astSync(rule.selector);
+                        selector.each((sel)=>(0, _pseudoElements.movePseudos)(sel));
+                        rule.selector = selector.toString();
+                    });
+                }
+                // It could be that the node we were inserted was removed because the class didn't match
+                // If that was the *only* rule in the parent, then we have nothing add so we skip it
+                if (!root.nodes[0]) {
+                    continue;
+                }
+                // Insert it
+                siblings.push([
+                    meta.sort,
+                    root.nodes[0]
+                ]);
+            }
+        }
+        // Inject the rules, sorted, correctly
+        let nodes = context.offsets.sort(siblings).map((s)=>s[1]);
+        // `parent` refers to the node at `.abc` in: .abc { @apply mt-2 }
+        parent.after(nodes);
+    }
+    for (let apply of applies){
+        // If there are left-over declarations, just remove the @apply
+        if (apply.parent.nodes.length > 1) {
+            apply.remove();
+        } else {
+            // The node is empty, drop the full node
+            apply.parent.remove();
+        }
+    }
+    // Do it again, in case we have other `@apply` rules
+    processApply(root, context, localCache);
+}
+function expandApplyAtRules(context) {
+    return (root)=>{
+        // Build a cache of the user's CSS so we can use it to resolve classes used by @apply
+        let localCache = lazyCache(()=>buildLocalApplyCache(root, context));
+        processApply(root, context, localCache);
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/lib/expandTailwindAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/expandTailwindAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/expandTailwindAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,279 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return expandTailwindAtRules;
+    }
+});
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _quicklru = /*#__PURE__*/ _interop_require_default(require("@alloc/quick-lru"));
+const _sharedState = /*#__PURE__*/ _interop_require_wildcard(require("./sharedState"));
+const _generateRules = require("./generateRules");
+const _log = /*#__PURE__*/ _interop_require_default(require("../util/log"));
+const _cloneNodes = /*#__PURE__*/ _interop_require_default(require("../util/cloneNodes"));
+const _defaultExtractor = require("./defaultExtractor");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function _getRequireWildcardCache(nodeInterop) {
+    if (typeof WeakMap !== "function") return null;
+    var cacheBabelInterop = new WeakMap();
+    var cacheNodeInterop = new WeakMap();
+    return (_getRequireWildcardCache = function(nodeInterop) {
+        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+    })(nodeInterop);
+}
+function _interop_require_wildcard(obj, nodeInterop) {
+    if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+    }
+    if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return {
+            default: obj
+        };
+    }
+    var cache = _getRequireWildcardCache(nodeInterop);
+    if (cache && cache.has(obj)) {
+        return cache.get(obj);
+    }
+    var newObj = {};
+    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+    for(var key in obj){
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+            if (desc && (desc.get || desc.set)) {
+                Object.defineProperty(newObj, key, desc);
+            } else {
+                newObj[key] = obj[key];
+            }
+        }
+    }
+    newObj.default = obj;
+    if (cache) {
+        cache.set(obj, newObj);
+    }
+    return newObj;
+}
+let env = _sharedState.env;
+const builtInExtractors = {
+    DEFAULT: _defaultExtractor.defaultExtractor
+};
+const builtInTransformers = {
+    DEFAULT: (content)=>content,
+    svelte: (content)=>content.replace(/(?:^|\s)class:/g, " ")
+};
+function getExtractor(context, fileExtension) {
+    let extractors = context.tailwindConfig.content.extract;
+    return extractors[fileExtension] || extractors.DEFAULT || builtInExtractors[fileExtension] || builtInExtractors.DEFAULT(context);
+}
+function getTransformer(tailwindConfig, fileExtension) {
+    let transformers = tailwindConfig.content.transform;
+    return transformers[fileExtension] || transformers.DEFAULT || builtInTransformers[fileExtension] || builtInTransformers.DEFAULT;
+}
+let extractorCache = new WeakMap();
+// Scans template contents for possible classes. This is a hot path on initial build but
+// not too important for subsequent builds. The faster the better though — if we can speed
+// up these regexes by 50% that could cut initial build time by like 20%.
+function getClassCandidates(content, extractor, candidates, seen) {
+    if (!extractorCache.has(extractor)) {
+        extractorCache.set(extractor, new _quicklru.default({
+            maxSize: 25000
+        }));
+    }
+    for (let line of content.split("\n")){
+        line = line.trim();
+        if (seen.has(line)) {
+            continue;
+        }
+        seen.add(line);
+        if (extractorCache.get(extractor).has(line)) {
+            for (let match of extractorCache.get(extractor).get(line)){
+                candidates.add(match);
+            }
+        } else {
+            let extractorMatches = extractor(line).filter((s)=>s !== "!*");
+            let lineMatchesSet = new Set(extractorMatches);
+            for (let match of lineMatchesSet){
+                candidates.add(match);
+            }
+            extractorCache.get(extractor).set(line, lineMatchesSet);
+        }
+    }
+}
+/**
+ *
+ * @param {[import('./offsets.js').RuleOffset, import('postcss').Node][]} rules
+ * @param {*} context
+ */ function buildStylesheet(rules, context) {
+    let sortedRules = context.offsets.sort(rules);
+    let returnValue = {
+        base: new Set(),
+        defaults: new Set(),
+        components: new Set(),
+        utilities: new Set(),
+        variants: new Set()
+    };
+    for (let [sort, rule] of sortedRules){
+        returnValue[sort.layer].add(rule);
+    }
+    return returnValue;
+}
+function expandTailwindAtRules(context) {
+    return async (root)=>{
+        let layerNodes = {
+            base: null,
+            components: null,
+            utilities: null,
+            variants: null
+        };
+        root.walkAtRules((rule)=>{
+            // Make sure this file contains Tailwind directives. If not, we can save
+            // a lot of work and bail early. Also we don't have to register our touch
+            // file as a dependency since the output of this CSS does not depend on
+            // the source of any templates. Think Vue <style> blocks for example.
+            if (rule.name === "tailwind") {
+                if (Object.keys(layerNodes).includes(rule.params)) {
+                    layerNodes[rule.params] = rule;
+                }
+            }
+        });
+        if (Object.values(layerNodes).every((n)=>n === null)) {
+            return root;
+        }
+        var _context_candidates;
+        // ---
+        // Find potential rules in changed files
+        let candidates = new Set([
+            ...(_context_candidates = context.candidates) !== null && _context_candidates !== void 0 ? _context_candidates : [],
+            _sharedState.NOT_ON_DEMAND
+        ]);
+        let seen = new Set();
+        env.DEBUG && console.time("Reading changed files");
+        /** @type {[item: {file?: string, content?: string}, meta: {transformer: any, extractor: any}][]} */ let regexParserContent = [];
+        for (let item of context.changedContent){
+            let transformer = getTransformer(context.tailwindConfig, item.extension);
+            let extractor = getExtractor(context, item.extension);
+            regexParserContent.push([
+                item,
+                {
+                    transformer,
+                    extractor
+                }
+            ]);
+        }
+        const BATCH_SIZE = 500;
+        for(let i = 0; i < regexParserContent.length; i += BATCH_SIZE){
+            let batch = regexParserContent.slice(i, i + BATCH_SIZE);
+            await Promise.all(batch.map(async ([{ file , content  }, { transformer , extractor  }])=>{
+                content = file ? await _fs.default.promises.readFile(file, "utf8") : content;
+                getClassCandidates(transformer(content), extractor, candidates, seen);
+            }));
+        }
+        env.DEBUG && console.timeEnd("Reading changed files");
+        // ---
+        // Generate the actual CSS
+        let classCacheCount = context.classCache.size;
+        env.DEBUG && console.time("Generate rules");
+        env.DEBUG && console.time("Sorting candidates");
+        let sortedCandidates = new Set([
+            ...candidates
+        ].sort((a, z)=>{
+            if (a === z) return 0;
+            if (a < z) return -1;
+            return 1;
+        }));
+        env.DEBUG && console.timeEnd("Sorting candidates");
+        (0, _generateRules.generateRules)(sortedCandidates, context);
+        env.DEBUG && console.timeEnd("Generate rules");
+        // We only ever add to the classCache, so if it didn't grow, there is nothing new.
+        env.DEBUG && console.time("Build stylesheet");
+        if (context.stylesheetCache === null || context.classCache.size !== classCacheCount) {
+            context.stylesheetCache = buildStylesheet([
+                ...context.ruleCache
+            ], context);
+        }
+        env.DEBUG && console.timeEnd("Build stylesheet");
+        let { defaults: defaultNodes , base: baseNodes , components: componentNodes , utilities: utilityNodes , variants: screenNodes  } = context.stylesheetCache;
+        // ---
+        // Replace any Tailwind directives with generated CSS
+        if (layerNodes.base) {
+            layerNodes.base.before((0, _cloneNodes.default)([
+                ...defaultNodes,
+                ...baseNodes
+            ], layerNodes.base.source, {
+                layer: "base"
+            }));
+            layerNodes.base.remove();
+        }
+        if (layerNodes.components) {
+            layerNodes.components.before((0, _cloneNodes.default)([
+                ...componentNodes
+            ], layerNodes.components.source, {
+                layer: "components"
+            }));
+            layerNodes.components.remove();
+        }
+        if (layerNodes.utilities) {
+            layerNodes.utilities.before((0, _cloneNodes.default)([
+                ...utilityNodes
+            ], layerNodes.utilities.source, {
+                layer: "utilities"
+            }));
+            layerNodes.utilities.remove();
+        }
+        // We do post-filtering to not alter the emitted order of the variants
+        const variantNodes = Array.from(screenNodes).filter((node)=>{
+            var _node_raws_tailwind;
+            const parentLayer = (_node_raws_tailwind = node.raws.tailwind) === null || _node_raws_tailwind === void 0 ? void 0 : _node_raws_tailwind.parentLayer;
+            if (parentLayer === "components") {
+                return layerNodes.components !== null;
+            }
+            if (parentLayer === "utilities") {
+                return layerNodes.utilities !== null;
+            }
+            return true;
+        });
+        if (layerNodes.variants) {
+            layerNodes.variants.before((0, _cloneNodes.default)(variantNodes, layerNodes.variants.source, {
+                layer: "variants"
+            }));
+            layerNodes.variants.remove();
+        } else if (variantNodes.length > 0) {
+            root.append((0, _cloneNodes.default)(variantNodes, root.source, {
+                layer: "variants"
+            }));
+        }
+        var _root_source_end;
+        // TODO: Why is the root node having no source location for `end` possible?
+        root.source.end = (_root_source_end = root.source.end) !== null && _root_source_end !== void 0 ? _root_source_end : root.source.start;
+        // If we've got a utility layer and no utilities are generated there's likely something wrong
+        const hasUtilityVariants = variantNodes.some((node)=>{
+            var _node_raws_tailwind;
+            return ((_node_raws_tailwind = node.raws.tailwind) === null || _node_raws_tailwind === void 0 ? void 0 : _node_raws_tailwind.parentLayer) === "utilities";
+        });
+        if (layerNodes.utilities && utilityNodes.size === 0 && !hasUtilityVariants) {
+            _log.default.warn("content-problems", [
+                "No utility classes were detected in your source files. If this is unexpected, double-check the `content` option in your Tailwind CSS configuration.",
+                "https://tailwindcss.com/docs/content-configuration"
+            ]);
+        }
+        // ---
+        if (env.DEBUG) {
+            console.log("Potential classes: ", candidates.size);
+            console.log("Active contexts: ", _sharedState.contextSourcesMap.size);
+        }
+        // Clear the cache for the changed files
+        context.changedContent = [];
+        // Cleanup any leftover @layer atrules
+        root.walkAtRules("layer", (rule)=>{
+            if (Object.keys(layerNodes).includes(rule.params)) {
+                rule.remove();
+            }
+        });
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/lib/findAtConfigPath.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/findAtConfigPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/findAtConfigPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,46 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "findAtConfigPath", {
+    enumerable: true,
+    get: function() {
+        return findAtConfigPath;
+    }
+});
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _path = /*#__PURE__*/ _interop_require_default(require("path"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function findAtConfigPath(root, result) {
+    let configPath = null;
+    let relativeTo = null;
+    root.walkAtRules("config", (rule)=>{
+        var _rule_source;
+        var _rule_source_input_file, _ref;
+        relativeTo = (_ref = (_rule_source_input_file = (_rule_source = rule.source) === null || _rule_source === void 0 ? void 0 : _rule_source.input.file) !== null && _rule_source_input_file !== void 0 ? _rule_source_input_file : result.opts.from) !== null && _ref !== void 0 ? _ref : null;
+        if (relativeTo === null) {
+            throw rule.error("The `@config` directive cannot be used without setting `from` in your PostCSS config.");
+        }
+        if (configPath) {
+            throw rule.error("Only one `@config` directive is allowed per file.");
+        }
+        let matches = rule.params.match(/(['"])(.*?)\1/);
+        if (!matches) {
+            throw rule.error("A path is required when using the `@config` directive.");
+        }
+        let inputPath = matches[2];
+        if (_path.default.isAbsolute(inputPath)) {
+            throw rule.error("The `@config` directive cannot be used with an absolute path.");
+        }
+        configPath = _path.default.resolve(_path.default.dirname(relativeTo), inputPath);
+        if (!_fs.default.existsSync(configPath)) {
+            throw rule.error(`The config file at "${inputPath}" does not exist. Make sure the path is correct and the file exists.`);
+        }
+        rule.remove();
+    });
+    return configPath ? configPath : null;
+}
Index: frontend/node_modules/tailwindcss/lib/lib/generateRules.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/generateRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/generateRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,912 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    getClassNameFromSelector: function() {
+        return getClassNameFromSelector;
+    },
+    resolveMatches: function() {
+        return resolveMatches;
+    },
+    generateRules: function() {
+        return generateRules;
+    }
+});
+const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
+const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
+const _parseObjectStyles = /*#__PURE__*/ _interop_require_default(require("../util/parseObjectStyles"));
+const _isPlainObject = /*#__PURE__*/ _interop_require_default(require("../util/isPlainObject"));
+const _prefixSelector = /*#__PURE__*/ _interop_require_default(require("../util/prefixSelector"));
+const _pluginUtils = require("../util/pluginUtils");
+const _log = /*#__PURE__*/ _interop_require_default(require("../util/log"));
+const _sharedState = /*#__PURE__*/ _interop_require_wildcard(require("./sharedState"));
+const _formatVariantSelector = require("../util/formatVariantSelector");
+const _nameClass = require("../util/nameClass");
+const _dataTypes = require("../util/dataTypes");
+const _setupContextUtils = require("./setupContextUtils");
+const _isSyntacticallyValidPropertyValue = /*#__PURE__*/ _interop_require_default(require("../util/isSyntacticallyValidPropertyValue"));
+const _splitAtTopLevelOnly = require("../util/splitAtTopLevelOnly.js");
+const _featureFlags = require("../featureFlags");
+const _applyImportantSelector = require("../util/applyImportantSelector");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function _getRequireWildcardCache(nodeInterop) {
+    if (typeof WeakMap !== "function") return null;
+    var cacheBabelInterop = new WeakMap();
+    var cacheNodeInterop = new WeakMap();
+    return (_getRequireWildcardCache = function(nodeInterop) {
+        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+    })(nodeInterop);
+}
+function _interop_require_wildcard(obj, nodeInterop) {
+    if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+    }
+    if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return {
+            default: obj
+        };
+    }
+    var cache = _getRequireWildcardCache(nodeInterop);
+    if (cache && cache.has(obj)) {
+        return cache.get(obj);
+    }
+    var newObj = {};
+    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+    for(var key in obj){
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+            if (desc && (desc.get || desc.set)) {
+                Object.defineProperty(newObj, key, desc);
+            } else {
+                newObj[key] = obj[key];
+            }
+        }
+    }
+    newObj.default = obj;
+    if (cache) {
+        cache.set(obj, newObj);
+    }
+    return newObj;
+}
+let classNameParser = (0, _postcssselectorparser.default)((selectors)=>{
+    return selectors.first.filter(({ type  })=>type === "class").pop().value;
+});
+function getClassNameFromSelector(selector) {
+    return classNameParser.transformSync(selector);
+}
+// Generate match permutations for a class candidate, like:
+// ['ring-offset-blue', '100']
+// ['ring-offset', 'blue-100']
+// ['ring', 'offset-blue-100']
+// Example with dynamic classes:
+// ['grid-cols', '[[linename],1fr,auto]']
+// ['grid', 'cols-[[linename],1fr,auto]']
+function* candidatePermutations(candidate) {
+    let lastIndex = Infinity;
+    while(lastIndex >= 0){
+        let dashIdx;
+        let wasSlash = false;
+        if (lastIndex === Infinity && candidate.endsWith("]")) {
+            let bracketIdx = candidate.indexOf("[");
+            // If character before `[` isn't a dash or a slash, this isn't a dynamic class
+            // eg. string[]
+            if (candidate[bracketIdx - 1] === "-") {
+                dashIdx = bracketIdx - 1;
+            } else if (candidate[bracketIdx - 1] === "/") {
+                dashIdx = bracketIdx - 1;
+                wasSlash = true;
+            } else {
+                dashIdx = -1;
+            }
+        } else if (lastIndex === Infinity && candidate.includes("/")) {
+            dashIdx = candidate.lastIndexOf("/");
+            wasSlash = true;
+        } else {
+            dashIdx = candidate.lastIndexOf("-", lastIndex);
+        }
+        if (dashIdx < 0) {
+            break;
+        }
+        let prefix = candidate.slice(0, dashIdx);
+        let modifier = candidate.slice(wasSlash ? dashIdx : dashIdx + 1);
+        lastIndex = dashIdx - 1;
+        // TODO: This feels a bit hacky
+        if (prefix === "" || modifier === "/") {
+            continue;
+        }
+        yield [
+            prefix,
+            modifier
+        ];
+    }
+}
+function applyPrefix(matches, context) {
+    if (matches.length === 0 || context.tailwindConfig.prefix === "") {
+        return matches;
+    }
+    for (let match of matches){
+        let [meta] = match;
+        if (meta.options.respectPrefix) {
+            let container = _postcss.default.root({
+                nodes: [
+                    match[1].clone()
+                ]
+            });
+            let classCandidate = match[1].raws.tailwind.classCandidate;
+            container.walkRules((r)=>{
+                // If this is a negative utility with a dash *before* the prefix we
+                // have to ensure that the generated selector matches the candidate
+                // Not doing this will cause `-tw-top-1` to generate the class `.tw--top-1`
+                // The disconnect between candidate <-> class can cause @apply to hard crash.
+                let shouldPrependNegative = classCandidate.startsWith("-");
+                r.selector = (0, _prefixSelector.default)(context.tailwindConfig.prefix, r.selector, shouldPrependNegative);
+            });
+            match[1] = container.nodes[0];
+        }
+    }
+    return matches;
+}
+function applyImportant(matches, classCandidate) {
+    if (matches.length === 0) {
+        return matches;
+    }
+    let result = [];
+    function isInKeyframes(rule) {
+        return rule.parent && rule.parent.type === "atrule" && rule.parent.name === "keyframes";
+    }
+    for (let [meta, rule] of matches){
+        let container = _postcss.default.root({
+            nodes: [
+                rule.clone()
+            ]
+        });
+        container.walkRules((r)=>{
+            // Declarations inside keyframes cannot be marked as important
+            // They will be ignored by the browser
+            if (isInKeyframes(r)) {
+                return;
+            }
+            let ast = (0, _postcssselectorparser.default)().astSync(r.selector);
+            // Remove extraneous selectors that do not include the base candidate
+            ast.each((sel)=>(0, _formatVariantSelector.eliminateIrrelevantSelectors)(sel, classCandidate));
+            // Update all instances of the base candidate to include the important marker
+            (0, _pluginUtils.updateAllClasses)(ast, (className)=>className === classCandidate ? `!${className}` : className);
+            let newSelector = ast.toString();
+            if (newSelector.trim() === "") {
+                r.remove();
+                return;
+            }
+            r.selector = newSelector;
+            r.walkDecls((d)=>d.important = true);
+        });
+        result.push([
+            {
+                ...meta,
+                important: true
+            },
+            container.nodes[0]
+        ]);
+    }
+    return result;
+}
+// Takes a list of rule tuples and applies a variant like `hover`, sm`,
+// whatever to it. We used to do some extra caching here to avoid generating
+// a variant of the same rule more than once, but this was never hit because
+// we cache at the entire selector level further up the tree.
+//
+// Technically you can get a cache hit if you have `hover:focus:text-center`
+// and `focus:hover:text-center` in the same project, but it doesn't feel
+// worth the complexity for that case.
+function applyVariant(variant, matches, context) {
+    if (matches.length === 0) {
+        return matches;
+    }
+    /** @type {{modifier: string | null, value: string | null}} */ let args = {
+        modifier: null,
+        value: _sharedState.NONE
+    };
+    // Retrieve "modifier"
+    {
+        let [baseVariant, ...modifiers] = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(variant, "/");
+        // This is a hack to support variants with `/` in them, like `ar-1/10/20:text-red-500`
+        // In this case 1/10 is a value but /20 is a modifier
+        if (modifiers.length > 1) {
+            baseVariant = baseVariant + "/" + modifiers.slice(0, -1).join("/");
+            modifiers = modifiers.slice(-1);
+        }
+        if (modifiers.length && !context.variantMap.has(variant)) {
+            variant = baseVariant;
+            args.modifier = modifiers[0];
+            if (!(0, _featureFlags.flagEnabled)(context.tailwindConfig, "generalizedModifiers")) {
+                return [];
+            }
+        }
+    }
+    // Retrieve "arbitrary value"
+    if (variant.endsWith("]") && !variant.startsWith("[")) {
+        // We either have:
+        //   @[200px]
+        //   group-[:hover]
+        //
+        // But we don't want:
+        //   @-[200px]        (`-` is incorrect)
+        //   group[:hover]    (`-` is missing)
+        let match = /(.)(-?)\[(.*)\]/g.exec(variant);
+        if (match) {
+            let [, char, separator, value] = match;
+            // @-[200px] case
+            if (char === "@" && separator === "-") return [];
+            // group[:hover] case
+            if (char !== "@" && separator === "") return [];
+            variant = variant.replace(`${separator}[${value}]`, "");
+            args.value = value;
+        }
+    }
+    // Register arbitrary variants
+    if (isArbitraryValue(variant) && !context.variantMap.has(variant)) {
+        let sort = context.offsets.recordVariant(variant);
+        let selector = (0, _dataTypes.normalize)(variant.slice(1, -1));
+        let selectors = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(selector, ",");
+        // We do not support multiple selectors for arbitrary variants
+        if (selectors.length > 1) {
+            return [];
+        }
+        if (!selectors.every(_setupContextUtils.isValidVariantFormatString)) {
+            return [];
+        }
+        let records = selectors.map((sel, idx)=>[
+                context.offsets.applyParallelOffset(sort, idx),
+                (0, _setupContextUtils.parseVariant)(sel.trim())
+            ]);
+        context.variantMap.set(variant, records);
+    }
+    if (context.variantMap.has(variant)) {
+        var _context_variantOptions_get;
+        let isArbitraryVariant = isArbitraryValue(variant);
+        var _context_variantOptions_get_INTERNAL_FEATURES;
+        let internalFeatures = (_context_variantOptions_get_INTERNAL_FEATURES = (_context_variantOptions_get = context.variantOptions.get(variant)) === null || _context_variantOptions_get === void 0 ? void 0 : _context_variantOptions_get[_setupContextUtils.INTERNAL_FEATURES]) !== null && _context_variantOptions_get_INTERNAL_FEATURES !== void 0 ? _context_variantOptions_get_INTERNAL_FEATURES : {};
+        let variantFunctionTuples = context.variantMap.get(variant).slice();
+        let result = [];
+        let respectPrefix = (()=>{
+            if (isArbitraryVariant) return false;
+            if (internalFeatures.respectPrefix === false) return false;
+            return true;
+        })();
+        for (let [meta, rule] of matches){
+            // Don't generate variants for user css
+            if (meta.layer === "user") {
+                continue;
+            }
+            let container = _postcss.default.root({
+                nodes: [
+                    rule.clone()
+                ]
+            });
+            for (let [variantSort, variantFunction, containerFromArray] of variantFunctionTuples){
+                let clone = (containerFromArray !== null && containerFromArray !== void 0 ? containerFromArray : container).clone();
+                let collectedFormats = [];
+                function prepareBackup() {
+                    // Already prepared, chicken out
+                    if (clone.raws.neededBackup) {
+                        return;
+                    }
+                    clone.raws.neededBackup = true;
+                    clone.walkRules((rule)=>rule.raws.originalSelector = rule.selector);
+                }
+                function modifySelectors(modifierFunction) {
+                    prepareBackup();
+                    clone.each((rule)=>{
+                        if (rule.type !== "rule") {
+                            return;
+                        }
+                        rule.selectors = rule.selectors.map((selector)=>{
+                            return modifierFunction({
+                                get className () {
+                                    return getClassNameFromSelector(selector);
+                                },
+                                selector
+                            });
+                        });
+                    });
+                    return clone;
+                }
+                let ruleWithVariant = variantFunction({
+                    // Public API
+                    get container () {
+                        prepareBackup();
+                        return clone;
+                    },
+                    separator: context.tailwindConfig.separator,
+                    modifySelectors,
+                    // Private API for now
+                    wrap (wrapper) {
+                        let nodes = clone.nodes;
+                        clone.removeAll();
+                        wrapper.append(nodes);
+                        clone.append(wrapper);
+                    },
+                    format (selectorFormat) {
+                        collectedFormats.push({
+                            format: selectorFormat,
+                            respectPrefix
+                        });
+                    },
+                    args
+                });
+                // It can happen that a list of format strings is returned from within the function. In that
+                // case, we have to process them as well. We can use the existing `variantSort`.
+                if (Array.isArray(ruleWithVariant)) {
+                    for (let [idx, variantFunction] of ruleWithVariant.entries()){
+                        // This is a little bit scary since we are pushing to an array of items that we are
+                        // currently looping over. However, you can also think of it like a processing queue
+                        // where you keep handling jobs until everything is done and each job can queue more
+                        // jobs if needed.
+                        variantFunctionTuples.push([
+                            context.offsets.applyParallelOffset(variantSort, idx),
+                            variantFunction,
+                            // If the clone has been modified we have to pass that back
+                            // though so each rule can use the modified container
+                            clone.clone()
+                        ]);
+                    }
+                    continue;
+                }
+                if (typeof ruleWithVariant === "string") {
+                    collectedFormats.push({
+                        format: ruleWithVariant,
+                        respectPrefix
+                    });
+                }
+                if (ruleWithVariant === null) {
+                    continue;
+                }
+                // We had to backup selectors, therefore we assume that somebody touched
+                // `container` or `modifySelectors`. Let's see if they did, so that we
+                // can restore the selectors, and collect the format strings.
+                if (clone.raws.neededBackup) {
+                    delete clone.raws.neededBackup;
+                    clone.walkRules((rule)=>{
+                        let before = rule.raws.originalSelector;
+                        if (!before) return;
+                        delete rule.raws.originalSelector;
+                        if (before === rule.selector) return; // No mutation happened
+                        let modified = rule.selector;
+                        // Rebuild the base selector, this is what plugin authors would do
+                        // as well. E.g.: `${variant}${separator}${className}`.
+                        // However, plugin authors probably also prepend or append certain
+                        // classes, pseudos, ids, ...
+                        let rebuiltBase = (0, _postcssselectorparser.default)((selectors)=>{
+                            selectors.walkClasses((classNode)=>{
+                                classNode.value = `${variant}${context.tailwindConfig.separator}${classNode.value}`;
+                            });
+                        }).processSync(before);
+                        // Now that we know the original selector, the new selector, and
+                        // the rebuild part in between, we can replace the part that plugin
+                        // authors need to rebuild with `&`, and eventually store it in the
+                        // collectedFormats. Similar to what `format('...')` would do.
+                        //
+                        // E.g.:
+                        //                   variant: foo
+                        //                  selector: .markdown > p
+                        //      modified (by plugin): .foo .foo\\:markdown > p
+                        //    rebuiltBase (internal): .foo\\:markdown > p
+                        //                    format: .foo &
+                        collectedFormats.push({
+                            format: modified.replace(rebuiltBase, "&"),
+                            respectPrefix
+                        });
+                        rule.selector = before;
+                    });
+                }
+                // This tracks the originating layer for the variant
+                // For example:
+                // .sm:underline {} is a variant of something in the utilities layer
+                // .sm:container {} is a variant of the container component
+                clone.nodes[0].raws.tailwind = {
+                    ...clone.nodes[0].raws.tailwind,
+                    parentLayer: meta.layer
+                };
+                var _meta_collectedFormats;
+                let withOffset = [
+                    {
+                        ...meta,
+                        sort: context.offsets.applyVariantOffset(meta.sort, variantSort, Object.assign(args, context.variantOptions.get(variant))),
+                        collectedFormats: ((_meta_collectedFormats = meta.collectedFormats) !== null && _meta_collectedFormats !== void 0 ? _meta_collectedFormats : []).concat(collectedFormats)
+                    },
+                    clone.nodes[0]
+                ];
+                result.push(withOffset);
+            }
+        }
+        return result;
+    }
+    return [];
+}
+function parseRules(rule, cache, options = {}) {
+    // PostCSS node
+    if (!(0, _isPlainObject.default)(rule) && !Array.isArray(rule)) {
+        return [
+            [
+                rule
+            ],
+            options
+        ];
+    }
+    // Tuple
+    if (Array.isArray(rule)) {
+        return parseRules(rule[0], cache, rule[1]);
+    }
+    // Simple object
+    if (!cache.has(rule)) {
+        cache.set(rule, (0, _parseObjectStyles.default)(rule));
+    }
+    return [
+        cache.get(rule),
+        options
+    ];
+}
+const IS_VALID_PROPERTY_NAME = /^[a-z_-]/;
+function isValidPropName(name) {
+    return IS_VALID_PROPERTY_NAME.test(name);
+}
+/**
+ * @param {string} declaration
+ * @returns {boolean}
+ */ function looksLikeUri(declaration) {
+    // Quick bailout for obvious non-urls
+    // This doesn't support schemes that don't use a leading // but that's unlikely to be a problem
+    if (!declaration.includes("://")) {
+        return false;
+    }
+    try {
+        const url = new URL(declaration);
+        return url.scheme !== "" && url.host !== "";
+    } catch (err) {
+        // Definitely not a valid url
+        return false;
+    }
+}
+function isParsableNode(node) {
+    let isParsable = true;
+    node.walkDecls((decl)=>{
+        if (!isParsableCssValue(decl.prop, decl.value)) {
+            isParsable = false;
+            return false;
+        }
+    });
+    return isParsable;
+}
+function isParsableCssValue(property, value) {
+    // We don't want to to treat [https://example.com] as a custom property
+    // Even though, according to the CSS grammar, it's a totally valid CSS declaration
+    // So we short-circuit here by checking if the custom property looks like a url
+    if (looksLikeUri(`${property}:${value}`)) {
+        return false;
+    }
+    try {
+        _postcss.default.parse(`a{${property}:${value}}`).toResult();
+        return true;
+    } catch (err) {
+        return false;
+    }
+}
+function extractArbitraryProperty(classCandidate, context) {
+    var _classCandidate_match;
+    let [, property, value] = (_classCandidate_match = classCandidate.match(/^\[([a-zA-Z0-9-_]+):(\S+)\]$/)) !== null && _classCandidate_match !== void 0 ? _classCandidate_match : [];
+    if (value === undefined) {
+        return null;
+    }
+    if (!isValidPropName(property)) {
+        return null;
+    }
+    if (!(0, _isSyntacticallyValidPropertyValue.default)(value)) {
+        return null;
+    }
+    let normalized = (0, _dataTypes.normalize)(value, {
+        property
+    });
+    if (!isParsableCssValue(property, normalized)) {
+        return null;
+    }
+    let sort = context.offsets.arbitraryProperty(classCandidate);
+    return [
+        [
+            {
+                sort,
+                layer: "utilities",
+                options: {
+                    respectImportant: true
+                }
+            },
+            ()=>({
+                    [(0, _nameClass.asClass)(classCandidate)]: {
+                        [property]: normalized
+                    }
+                })
+        ]
+    ];
+}
+function* resolveMatchedPlugins(classCandidate, context) {
+    if (context.candidateRuleMap.has(classCandidate)) {
+        yield [
+            context.candidateRuleMap.get(classCandidate),
+            "DEFAULT"
+        ];
+    }
+    yield* function*(arbitraryPropertyRule) {
+        if (arbitraryPropertyRule !== null) {
+            yield [
+                arbitraryPropertyRule,
+                "DEFAULT"
+            ];
+        }
+    }(extractArbitraryProperty(classCandidate, context));
+    let candidatePrefix = classCandidate;
+    let negative = false;
+    const twConfigPrefix = context.tailwindConfig.prefix;
+    const twConfigPrefixLen = twConfigPrefix.length;
+    const hasMatchingPrefix = candidatePrefix.startsWith(twConfigPrefix) || candidatePrefix.startsWith(`-${twConfigPrefix}`);
+    if (candidatePrefix[twConfigPrefixLen] === "-" && hasMatchingPrefix) {
+        negative = true;
+        candidatePrefix = twConfigPrefix + candidatePrefix.slice(twConfigPrefixLen + 1);
+    }
+    if (negative && context.candidateRuleMap.has(candidatePrefix)) {
+        yield [
+            context.candidateRuleMap.get(candidatePrefix),
+            "-DEFAULT"
+        ];
+    }
+    for (let [prefix, modifier] of candidatePermutations(candidatePrefix)){
+        if (context.candidateRuleMap.has(prefix)) {
+            yield [
+                context.candidateRuleMap.get(prefix),
+                negative ? `-${modifier}` : modifier
+            ];
+        }
+    }
+}
+function splitWithSeparator(input, separator) {
+    if (input === _sharedState.NOT_ON_DEMAND) {
+        return [
+            _sharedState.NOT_ON_DEMAND
+        ];
+    }
+    return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, separator);
+}
+function* recordCandidates(matches, classCandidate) {
+    for (const match of matches){
+        var _match__options;
+        var _match__options_preserveSource;
+        match[1].raws.tailwind = {
+            ...match[1].raws.tailwind,
+            classCandidate,
+            preserveSource: (_match__options_preserveSource = (_match__options = match[0].options) === null || _match__options === void 0 ? void 0 : _match__options.preserveSource) !== null && _match__options_preserveSource !== void 0 ? _match__options_preserveSource : false
+        };
+        yield match;
+    }
+}
+function* resolveMatches(candidate, context) {
+    let separator = context.tailwindConfig.separator;
+    let [classCandidate, ...variants] = splitWithSeparator(candidate, separator).reverse();
+    let important = false;
+    if (classCandidate.startsWith("!")) {
+        important = true;
+        classCandidate = classCandidate.slice(1);
+    }
+    // TODO: Reintroduce this in ways that doesn't break on false positives
+    // function sortAgainst(toSort, against) {
+    //   return toSort.slice().sort((a, z) => {
+    //     return bigSign(against.get(a)[0] - against.get(z)[0])
+    //   })
+    // }
+    // let sorted = sortAgainst(variants, context.variantMap)
+    // if (sorted.toString() !== variants.toString()) {
+    //   let corrected = sorted.reverse().concat(classCandidate).join(':')
+    //   throw new Error(`Class ${candidate} should be written as ${corrected}`)
+    // }
+    for (let matchedPlugins of resolveMatchedPlugins(classCandidate, context)){
+        let matches = [];
+        let typesByMatches = new Map();
+        let [plugins, modifier] = matchedPlugins;
+        let isOnlyPlugin = plugins.length === 1;
+        for (let [sort, plugin] of plugins){
+            let matchesPerPlugin = [];
+            if (typeof plugin === "function") {
+                for (let ruleSet of [].concat(plugin(modifier, {
+                    isOnlyPlugin
+                }))){
+                    let [rules, options] = parseRules(ruleSet, context.postCssNodeCache);
+                    for (let rule of rules){
+                        matchesPerPlugin.push([
+                            {
+                                ...sort,
+                                options: {
+                                    ...sort.options,
+                                    ...options
+                                }
+                            },
+                            rule
+                        ]);
+                    }
+                }
+            } else if (modifier === "DEFAULT" || modifier === "-DEFAULT") {
+                let ruleSet = plugin;
+                let [rules, options] = parseRules(ruleSet, context.postCssNodeCache);
+                for (let rule of rules){
+                    matchesPerPlugin.push([
+                        {
+                            ...sort,
+                            options: {
+                                ...sort.options,
+                                ...options
+                            }
+                        },
+                        rule
+                    ]);
+                }
+            }
+            if (matchesPerPlugin.length > 0) {
+                var _sort_options;
+                var _sort_options_types, _sort_options1;
+                let matchingTypes = Array.from((0, _pluginUtils.getMatchingTypes)((_sort_options_types = (_sort_options = sort.options) === null || _sort_options === void 0 ? void 0 : _sort_options.types) !== null && _sort_options_types !== void 0 ? _sort_options_types : [], modifier, (_sort_options1 = sort.options) !== null && _sort_options1 !== void 0 ? _sort_options1 : {}, context.tailwindConfig)).map(([_, type])=>type);
+                if (matchingTypes.length > 0) {
+                    typesByMatches.set(matchesPerPlugin, matchingTypes);
+                }
+                matches.push(matchesPerPlugin);
+            }
+        }
+        if (isArbitraryValue(modifier)) {
+            if (matches.length > 1) {
+                // Partition plugins in 2 categories so that we can start searching in the plugins that
+                // don't have `any` as a type first.
+                let [withAny, withoutAny] = matches.reduce((group, plugin)=>{
+                    let hasAnyType = plugin.some(([{ options  }])=>options.types.some(({ type  })=>type === "any"));
+                    if (hasAnyType) {
+                        group[0].push(plugin);
+                    } else {
+                        group[1].push(plugin);
+                    }
+                    return group;
+                }, [
+                    [],
+                    []
+                ]);
+                function findFallback(matches) {
+                    // If only a single plugin matches, let's take that one
+                    if (matches.length === 1) {
+                        return matches[0];
+                    }
+                    // Otherwise, find the plugin that creates a valid rule given the arbitrary value, and
+                    // also has the correct type which preferOnConflicts the plugin in case of clashes.
+                    return matches.find((rules)=>{
+                        let matchingTypes = typesByMatches.get(rules);
+                        return rules.some(([{ options  }, rule])=>{
+                            if (!isParsableNode(rule)) {
+                                return false;
+                            }
+                            return options.types.some(({ type , preferOnConflict  })=>matchingTypes.includes(type) && preferOnConflict);
+                        });
+                    });
+                }
+                var _findFallback;
+                // Try to find a fallback plugin, because we already know that multiple plugins matched for
+                // the given arbitrary value.
+                let fallback = (_findFallback = findFallback(withoutAny)) !== null && _findFallback !== void 0 ? _findFallback : findFallback(withAny);
+                if (fallback) {
+                    matches = [
+                        fallback
+                    ];
+                } else {
+                    var _typesByMatches_get;
+                    let typesPerPlugin = matches.map((match)=>new Set([
+                            ...(_typesByMatches_get = typesByMatches.get(match)) !== null && _typesByMatches_get !== void 0 ? _typesByMatches_get : []
+                        ]));
+                    // Remove duplicates, so that we can detect proper unique types for each plugin.
+                    for (let pluginTypes of typesPerPlugin){
+                        for (let type of pluginTypes){
+                            let removeFromOwnGroup = false;
+                            for (let otherGroup of typesPerPlugin){
+                                if (pluginTypes === otherGroup) continue;
+                                if (otherGroup.has(type)) {
+                                    otherGroup.delete(type);
+                                    removeFromOwnGroup = true;
+                                }
+                            }
+                            if (removeFromOwnGroup) pluginTypes.delete(type);
+                        }
+                    }
+                    let messages = [];
+                    for (let [idx, group] of typesPerPlugin.entries()){
+                        for (let type of group){
+                            let rules = matches[idx].map(([, rule])=>rule).flat().map((rule)=>rule.toString().split("\n").slice(1, -1) // Remove selector and closing '}'
+                                .map((line)=>line.trim()).map((x)=>`      ${x}`) // Re-indent
+                                .join("\n")).join("\n\n");
+                            messages.push(`  Use \`${candidate.replace("[", `[${type}:`)}\` for \`${rules.trim()}\``);
+                            break;
+                        }
+                    }
+                    _log.default.warn([
+                        `The class \`${candidate}\` is ambiguous and matches multiple utilities.`,
+                        ...messages,
+                        `If this is content and not a class, replace it with \`${candidate.replace("[", "&lsqb;").replace("]", "&rsqb;")}\` to silence this warning.`
+                    ]);
+                    continue;
+                }
+            }
+            matches = matches.map((list)=>list.filter((match)=>isParsableNode(match[1])));
+        }
+        matches = matches.flat();
+        matches = Array.from(recordCandidates(matches, classCandidate));
+        matches = applyPrefix(matches, context);
+        if (important) {
+            matches = applyImportant(matches, classCandidate);
+        }
+        for (let variant of variants){
+            matches = applyVariant(variant, matches, context);
+        }
+        for (let match of matches){
+            match[1].raws.tailwind = {
+                ...match[1].raws.tailwind,
+                candidate
+            };
+            // Apply final format selector
+            match = applyFinalFormat(match, {
+                context,
+                candidate
+            });
+            // Skip rules with invalid selectors
+            // This will cause the candidate to be added to the "not class"
+            // cache skipping it entirely for future builds
+            if (match === null) {
+                continue;
+            }
+            yield match;
+        }
+    }
+}
+function applyFinalFormat(match, { context , candidate  }) {
+    if (!match[0].collectedFormats) {
+        return match;
+    }
+    let isValid = true;
+    let finalFormat;
+    try {
+        finalFormat = (0, _formatVariantSelector.formatVariantSelector)(match[0].collectedFormats, {
+            context,
+            candidate
+        });
+    } catch  {
+        // The format selector we produced is invalid
+        // This could be because:
+        // - A bug exists
+        // - A plugin introduced an invalid variant selector (ex: `addVariant('foo', '&;foo')`)
+        // - The user used an invalid arbitrary variant (ex: `[&;foo]:underline`)
+        // Either way the build will fail because of this
+        // We would rather that the build pass "silently" given that this could
+        // happen because of picking up invalid things when scanning content
+        // So we'll throw out the candidate instead
+        return null;
+    }
+    let container = _postcss.default.root({
+        nodes: [
+            match[1].clone()
+        ]
+    });
+    container.walkRules((rule)=>{
+        if (inKeyframes(rule)) {
+            return;
+        }
+        try {
+            let selector = (0, _formatVariantSelector.finalizeSelector)(rule.selector, finalFormat, {
+                candidate,
+                context
+            });
+            // Finalize Selector determined that this candidate is irrelevant
+            // TODO: This elimination should happen earlier so this never happens
+            if (selector === null) {
+                rule.remove();
+                return;
+            }
+            rule.selector = selector;
+        } catch  {
+            // If this selector is invalid we also want to skip it
+            // But it's likely that being invalid here means there's a bug in a plugin rather than too loosely matching content
+            isValid = false;
+            return false;
+        }
+    });
+    if (!isValid) {
+        return null;
+    }
+    // If all rules have been eliminated we can skip this candidate entirely
+    if (container.nodes.length === 0) {
+        return null;
+    }
+    match[1] = container.nodes[0];
+    return match;
+}
+function inKeyframes(rule) {
+    return rule.parent && rule.parent.type === "atrule" && rule.parent.name === "keyframes";
+}
+function getImportantStrategy(important) {
+    if (important === true) {
+        return (rule)=>{
+            if (inKeyframes(rule)) {
+                return;
+            }
+            rule.walkDecls((d)=>{
+                if (d.parent.type === "rule" && !inKeyframes(d.parent)) {
+                    d.important = true;
+                }
+            });
+        };
+    }
+    if (typeof important === "string") {
+        return (rule)=>{
+            if (inKeyframes(rule)) {
+                return;
+            }
+            rule.selectors = rule.selectors.map((selector)=>{
+                return (0, _applyImportantSelector.applyImportantSelector)(selector, important);
+            });
+        };
+    }
+}
+function generateRules(candidates, context, isSorting = false) {
+    let allRules = [];
+    let strategy = getImportantStrategy(context.tailwindConfig.important);
+    for (let candidate of candidates){
+        if (context.notClassCache.has(candidate)) {
+            continue;
+        }
+        if (context.candidateRuleCache.has(candidate)) {
+            allRules = allRules.concat(Array.from(context.candidateRuleCache.get(candidate)));
+            continue;
+        }
+        let matches = Array.from(resolveMatches(candidate, context));
+        if (matches.length === 0) {
+            context.notClassCache.add(candidate);
+            continue;
+        }
+        context.classCache.set(candidate, matches);
+        var _context_candidateRuleCache_get;
+        let rules = (_context_candidateRuleCache_get = context.candidateRuleCache.get(candidate)) !== null && _context_candidateRuleCache_get !== void 0 ? _context_candidateRuleCache_get : new Set();
+        context.candidateRuleCache.set(candidate, rules);
+        for (const match of matches){
+            let [{ sort , options  }, rule] = match;
+            if (options.respectImportant && strategy) {
+                let container = _postcss.default.root({
+                    nodes: [
+                        rule.clone()
+                    ]
+                });
+                container.walkRules(strategy);
+                rule = container.nodes[0];
+            }
+            // Note: We have to clone rules during sorting
+            // so we eliminate some shared mutable state
+            let newEntry = [
+                sort,
+                isSorting ? rule.clone() : rule
+            ];
+            rules.add(newEntry);
+            context.ruleCache.add(newEntry);
+            allRules.push(newEntry);
+        }
+    }
+    return allRules;
+}
+function isArbitraryValue(input) {
+    return input.startsWith("[") && input.endsWith("]");
+}
Index: frontend/node_modules/tailwindcss/lib/lib/getModuleDependencies.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/getModuleDependencies.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/getModuleDependencies.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,99 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return getModuleDependencies;
+    }
+});
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _path = /*#__PURE__*/ _interop_require_default(require("path"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+let jsExtensions = [
+    ".js",
+    ".cjs",
+    ".mjs"
+];
+// Given the current file `a.ts`, we want to make sure that when importing `b` that we resolve
+// `b.ts` before `b.js`
+//
+// E.g.:
+//
+// a.ts
+//   b // .ts
+//   c // .ts
+// a.js
+//   b // .js or .ts
+let jsResolutionOrder = [
+    "",
+    ".js",
+    ".cjs",
+    ".mjs",
+    ".ts",
+    ".cts",
+    ".mts",
+    ".jsx",
+    ".tsx"
+];
+let tsResolutionOrder = [
+    "",
+    ".ts",
+    ".cts",
+    ".mts",
+    ".tsx",
+    ".js",
+    ".cjs",
+    ".mjs",
+    ".jsx"
+];
+function resolveWithExtension(file, extensions) {
+    // Try to find `./a.ts`, `./a.ts`, ... from `./a`
+    for (let ext of extensions){
+        let full = `${file}${ext}`;
+        if (_fs.default.existsSync(full) && _fs.default.statSync(full).isFile()) {
+            return full;
+        }
+    }
+    // Try to find `./a/index.js` from `./a`
+    for (let ext of extensions){
+        let full = `${file}/index${ext}`;
+        if (_fs.default.existsSync(full)) {
+            return full;
+        }
+    }
+    return null;
+}
+function* _getModuleDependencies(filename, base, seen, ext = _path.default.extname(filename)) {
+    // Try to find the file
+    let absoluteFile = resolveWithExtension(_path.default.resolve(base, filename), jsExtensions.includes(ext) ? jsResolutionOrder : tsResolutionOrder);
+    if (absoluteFile === null) return; // File doesn't exist
+    // Prevent infinite loops when there are circular dependencies
+    if (seen.has(absoluteFile)) return; // Already seen
+    seen.add(absoluteFile);
+    // Mark the file as a dependency
+    yield absoluteFile;
+    // Resolve new base for new imports/requires
+    base = _path.default.dirname(absoluteFile);
+    ext = _path.default.extname(absoluteFile);
+    let contents = _fs.default.readFileSync(absoluteFile, "utf-8");
+    // Find imports/requires
+    for (let match of [
+        ...contents.matchAll(/import[\s\S]*?['"](.{3,}?)['"]/gi),
+        ...contents.matchAll(/import[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi),
+        ...contents.matchAll(/require\(['"`](.+)['"`]\)/gi)
+    ]){
+        // Bail out if it's not a relative file
+        if (!match[1].startsWith(".")) continue;
+        yield* _getModuleDependencies(match[1], base, seen, ext);
+    }
+}
+function getModuleDependencies(absoluteFilePath) {
+    if (absoluteFilePath === null) return new Set();
+    return new Set(_getModuleDependencies(absoluteFilePath, _path.default.dirname(absoluteFilePath), new Set()));
+}
Index: frontend/node_modules/tailwindcss/lib/lib/load-config.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/load-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/load-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,58 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    useCustomJiti: function() {
+        return useCustomJiti;
+    },
+    loadConfig: function() {
+        return loadConfig;
+    }
+});
+const _jiti = /*#__PURE__*/ _interop_require_default(require("jiti"));
+const _sucrase = require("sucrase");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+let jiti = null;
+function useCustomJiti(_jiti) {
+    jiti = _jiti();
+}
+function lazyJiti() {
+    return jiti !== null && jiti !== void 0 ? jiti : jiti = (0, _jiti.default)(__filename, {
+        interopDefault: true,
+        transform: (opts)=>{
+            // Sucrase can't transform import.meta so we have to use Babel
+            if (opts.source.includes("import.meta")) {
+                return require("jiti/dist/babel.js")(opts);
+            }
+            return (0, _sucrase.transform)(opts.source, {
+                transforms: [
+                    "typescript",
+                    "imports"
+                ]
+            });
+        }
+    });
+}
+function loadConfig(path) {
+    let config = function() {
+        if (!path) return {};
+        try {
+            return require(path);
+        } catch  {
+            return lazyJiti()(path);
+        }
+    }();
+    var _config_default;
+    return (_config_default = config.default) !== null && _config_default !== void 0 ? _config_default : config;
+}
Index: frontend/node_modules/tailwindcss/lib/lib/normalizeTailwindDirectives.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/normalizeTailwindDirectives.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/normalizeTailwindDirectives.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,89 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return normalizeTailwindDirectives;
+    }
+});
+const _log = /*#__PURE__*/ _interop_require_default(require("../util/log"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function normalizeTailwindDirectives(root) {
+    let tailwindDirectives = new Set();
+    let layerDirectives = new Set();
+    let applyDirectives = new Set();
+    root.walkAtRules((atRule)=>{
+        if (atRule.name === "apply") {
+            applyDirectives.add(atRule);
+        }
+        if (atRule.name === "import") {
+            if (atRule.params === '"tailwindcss/base"' || atRule.params === "'tailwindcss/base'") {
+                atRule.name = "tailwind";
+                atRule.params = "base";
+            } else if (atRule.params === '"tailwindcss/components"' || atRule.params === "'tailwindcss/components'") {
+                atRule.name = "tailwind";
+                atRule.params = "components";
+            } else if (atRule.params === '"tailwindcss/utilities"' || atRule.params === "'tailwindcss/utilities'") {
+                atRule.name = "tailwind";
+                atRule.params = "utilities";
+            } else if (atRule.params === '"tailwindcss/screens"' || atRule.params === "'tailwindcss/screens'" || atRule.params === '"tailwindcss/variants"' || atRule.params === "'tailwindcss/variants'") {
+                atRule.name = "tailwind";
+                atRule.params = "variants";
+            }
+        }
+        if (atRule.name === "tailwind") {
+            if (atRule.params === "screens") {
+                atRule.params = "variants";
+            }
+            tailwindDirectives.add(atRule.params);
+        }
+        if ([
+            "layer",
+            "responsive",
+            "variants"
+        ].includes(atRule.name)) {
+            if ([
+                "responsive",
+                "variants"
+            ].includes(atRule.name)) {
+                _log.default.warn(`${atRule.name}-at-rule-deprecated`, [
+                    `The \`@${atRule.name}\` directive has been deprecated in Tailwind CSS v3.0.`,
+                    `Use \`@layer utilities\` or \`@layer components\` instead.`,
+                    "https://tailwindcss.com/docs/upgrade-guide#replace-variants-with-layer"
+                ]);
+            }
+            layerDirectives.add(atRule);
+        }
+    });
+    if (!tailwindDirectives.has("base") || !tailwindDirectives.has("components") || !tailwindDirectives.has("utilities")) {
+        for (let rule of layerDirectives){
+            if (rule.name === "layer" && [
+                "base",
+                "components",
+                "utilities"
+            ].includes(rule.params)) {
+                if (!tailwindDirectives.has(rule.params)) {
+                    throw rule.error(`\`@layer ${rule.params}\` is used but no matching \`@tailwind ${rule.params}\` directive is present.`);
+                }
+            } else if (rule.name === "responsive") {
+                if (!tailwindDirectives.has("utilities")) {
+                    throw rule.error("`@responsive` is used but `@tailwind utilities` is missing.");
+                }
+            } else if (rule.name === "variants") {
+                if (!tailwindDirectives.has("utilities")) {
+                    throw rule.error("`@variants` is used but `@tailwind utilities` is missing.");
+                }
+            }
+        }
+    }
+    return {
+        tailwindDirectives,
+        applyDirectives
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/lib/offsets.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/offsets.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/offsets.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,355 @@
+// @ts-check
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "Offsets", {
+    enumerable: true,
+    get: function() {
+        return Offsets;
+    }
+});
+const _bigSign = /*#__PURE__*/ _interop_require_default(require("../util/bigSign"));
+const _remapbitfield = require("./remap-bitfield.js");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+class Offsets {
+    constructor(){
+        /**
+     * Offsets for the next rule in a given layer
+     *
+     * @type {Record<Layer, bigint>}
+     */ this.offsets = {
+            defaults: 0n,
+            base: 0n,
+            components: 0n,
+            utilities: 0n,
+            variants: 0n,
+            user: 0n
+        };
+        /**
+     * Positions for a given layer
+     *
+     * @type {Record<Layer, bigint>}
+     */ this.layerPositions = {
+            defaults: 0n,
+            base: 1n,
+            components: 2n,
+            utilities: 3n,
+            // There isn't technically a "user" layer, but we need to give it a position
+            // Because it's used for ordering user-css from @apply
+            user: 4n,
+            variants: 5n
+        };
+        /**
+     * The total number of functions currently registered across all variants (including arbitrary variants)
+     *
+     * @type {bigint}
+     */ this.reservedVariantBits = 0n;
+        /**
+     * Positions for a given variant
+     *
+     * @type {Map<string, bigint>}
+     */ this.variantOffsets = new Map();
+    }
+    /**
+   * @param {Layer} layer
+   * @returns {RuleOffset}
+   */ create(layer) {
+        return {
+            layer,
+            parentLayer: layer,
+            arbitrary: 0n,
+            variants: 0n,
+            parallelIndex: 0n,
+            index: this.offsets[layer]++,
+            propertyOffset: 0n,
+            property: "",
+            options: []
+        };
+    }
+    /**
+   * @param {string} name
+   * @returns {RuleOffset}
+   */ arbitraryProperty(name) {
+        return {
+            ...this.create("utilities"),
+            arbitrary: 1n,
+            property: name
+        };
+    }
+    /**
+   * Get the offset for a variant
+   *
+   * @param {string} variant
+   * @param {number} index
+   * @returns {RuleOffset}
+   */ forVariant(variant, index = 0) {
+        let offset = this.variantOffsets.get(variant);
+        if (offset === undefined) {
+            throw new Error(`Cannot find offset for unknown variant ${variant}`);
+        }
+        return {
+            ...this.create("variants"),
+            variants: offset << BigInt(index)
+        };
+    }
+    /**
+   * @param {RuleOffset} rule
+   * @param {RuleOffset} variant
+   * @param {VariantOption} options
+   * @returns {RuleOffset}
+   */ applyVariantOffset(rule, variant, options) {
+        options.variant = variant.variants;
+        return {
+            ...rule,
+            layer: "variants",
+            parentLayer: rule.layer === "variants" ? rule.parentLayer : rule.layer,
+            variants: rule.variants | variant.variants,
+            options: options.sort ? [].concat(options, rule.options) : rule.options,
+            // TODO: Technically this is wrong. We should be handling parallel index on a per variant basis.
+            // We'll take the max of all the parallel indexes for now.
+            // @ts-ignore
+            parallelIndex: max([
+                rule.parallelIndex,
+                variant.parallelIndex
+            ])
+        };
+    }
+    /**
+   * @param {RuleOffset} offset
+   * @param {number} parallelIndex
+   * @returns {RuleOffset}
+   */ applyParallelOffset(offset, parallelIndex) {
+        return {
+            ...offset,
+            parallelIndex: BigInt(parallelIndex)
+        };
+    }
+    /**
+   * Each variant gets 1 bit per function / rule registered.
+   * This is because multiple variants can be applied to a single rule and we need to know which ones are present and which ones are not.
+   * Additionally, every unique group of variants is grouped together in the stylesheet.
+   *
+   * This grouping is order-independent. For instance, we do not differentiate between `hover:focus` and `focus:hover`.
+   *
+   * @param {string[]} variants
+   * @param {(name: string) => number} getLength
+   */ recordVariants(variants, getLength) {
+        for (let variant of variants){
+            this.recordVariant(variant, getLength(variant));
+        }
+    }
+    /**
+   * The same as `recordVariants` but for a single arbitrary variant at runtime.
+   * @param {string} variant
+   * @param {number} fnCount
+   *
+   * @returns {RuleOffset} The highest offset for this variant
+   */ recordVariant(variant, fnCount = 1) {
+        this.variantOffsets.set(variant, 1n << this.reservedVariantBits);
+        // Ensure space is reserved for each "function" in the parallel variant
+        // by offsetting the next variant by the number of parallel variants
+        // in the one we just added.
+        // Single functions that return parallel variants are NOT handled separately here
+        // They're offset by 1 (or the number of functions) as usual
+        // And each rule returned is tracked separately since the functions are evaluated lazily.
+        // @see `RuleOffset.parallelIndex`
+        this.reservedVariantBits += BigInt(fnCount);
+        return {
+            ...this.create("variants"),
+            variants: this.variantOffsets.get(variant)
+        };
+    }
+    /**
+   * @param {RuleOffset} a
+   * @param {RuleOffset} b
+   * @returns {bigint}
+   */ compare(a, b) {
+        // Sort layers together
+        if (a.layer !== b.layer) {
+            return this.layerPositions[a.layer] - this.layerPositions[b.layer];
+        }
+        // When sorting the `variants` layer, we need to sort based on the parent layer as well within
+        // this variants layer.
+        if (a.parentLayer !== b.parentLayer) {
+            return this.layerPositions[a.parentLayer] - this.layerPositions[b.parentLayer];
+        }
+        // Sort based on the sorting function
+        for (let aOptions of a.options){
+            for (let bOptions of b.options){
+                if (aOptions.id !== bOptions.id) continue;
+                if (!aOptions.sort || !bOptions.sort) continue;
+                var _max;
+                let maxFnVariant = (_max = max([
+                    aOptions.variant,
+                    bOptions.variant
+                ])) !== null && _max !== void 0 ? _max : 0n;
+                // Create a mask of 0s from bits 1..N where N represents the mask of the Nth bit
+                let mask = ~(maxFnVariant | maxFnVariant - 1n);
+                let aVariantsAfterFn = a.variants & mask;
+                let bVariantsAfterFn = b.variants & mask;
+                // If the variants the same, we _can_ sort them
+                if (aVariantsAfterFn !== bVariantsAfterFn) {
+                    continue;
+                }
+                let result = aOptions.sort({
+                    value: aOptions.value,
+                    modifier: aOptions.modifier
+                }, {
+                    value: bOptions.value,
+                    modifier: bOptions.modifier
+                });
+                if (result !== 0) return result;
+            }
+        }
+        // Sort variants in the order they were registered
+        if (a.variants !== b.variants) {
+            return a.variants - b.variants;
+        }
+        // Make sure each rule returned by a parallel variant is sorted in ascending order
+        if (a.parallelIndex !== b.parallelIndex) {
+            return a.parallelIndex - b.parallelIndex;
+        }
+        // Always sort arbitrary properties after other utilities
+        if (a.arbitrary !== b.arbitrary) {
+            return a.arbitrary - b.arbitrary;
+        }
+        // Always sort arbitrary properties alphabetically
+        if (a.propertyOffset !== b.propertyOffset) {
+            return a.propertyOffset - b.propertyOffset;
+        }
+        // Sort utilities, components, etc… in the order they were registered
+        return a.index - b.index;
+    }
+    /**
+   * Arbitrary variants are recorded in the order they're encountered.
+   * This means that the order is not stable between environments and sets of content files.
+   *
+   * In order to make the order stable, we need to remap the arbitrary variant offsets to
+   * be in alphabetical order starting from the offset of the first arbitrary variant.
+   */ recalculateVariantOffsets() {
+        // Sort the variants by their name
+        let variants = Array.from(this.variantOffsets.entries()).filter(([v])=>v.startsWith("[")).sort(([a], [z])=>fastCompare(a, z));
+        // Sort the list of offsets
+        // This is not necessarily a discrete range of numbers which is why
+        // we're using sort instead of creating a range from min/max
+        let newOffsets = variants.map(([, offset])=>offset).sort((a, z)=>(0, _bigSign.default)(a - z));
+        // Create a map from the old offsets to the new offsets in the new sort order
+        /** @type {[bigint, bigint][]} */ let mapping = variants.map(([, oldOffset], i)=>[
+                oldOffset,
+                newOffsets[i]
+            ]);
+        // Remove any variants that will not move letting us skip
+        // remapping if everything happens to be in order
+        return mapping.filter(([a, z])=>a !== z);
+    }
+    /**
+   * @template T
+   * @param {[RuleOffset, T][]} list
+   * @returns {[RuleOffset, T][]}
+   */ remapArbitraryVariantOffsets(list) {
+        let mapping = this.recalculateVariantOffsets();
+        // No arbitrary variants? Nothing to do.
+        // Everyhing already in order? Nothing to do.
+        if (mapping.length === 0) {
+            return list;
+        }
+        // Remap every variant offset in the list
+        return list.map((item)=>{
+            let [offset, rule] = item;
+            offset = {
+                ...offset,
+                variants: (0, _remapbitfield.remapBitfield)(offset.variants, mapping)
+            };
+            return [
+                offset,
+                rule
+            ];
+        });
+    }
+    /**
+   * @template T
+   * @param {[RuleOffset, T][]} list
+   * @returns {[RuleOffset, T][]}
+   */ sortArbitraryProperties(list) {
+        // Collect all known arbitrary properties
+        let known = new Set();
+        for (let [offset] of list){
+            if (offset.arbitrary === 1n) {
+                known.add(offset.property);
+            }
+        }
+        // No arbitrary properties? Nothing to do.
+        if (known.size === 0) {
+            return list;
+        }
+        // Sort the properties alphabetically
+        let properties = Array.from(known).sort();
+        // Create a map from the property name to its offset
+        let offsets = new Map();
+        let offset = 1n;
+        for (let property of properties){
+            offsets.set(property, offset++);
+        }
+        // Apply the sorted offsets to the list
+        return list.map((item)=>{
+            let [offset, rule] = item;
+            var _offsets_get;
+            offset = {
+                ...offset,
+                propertyOffset: (_offsets_get = offsets.get(offset.property)) !== null && _offsets_get !== void 0 ? _offsets_get : 0n
+            };
+            return [
+                offset,
+                rule
+            ];
+        });
+    }
+    /**
+   * @template T
+   * @param {[RuleOffset, T][]} list
+   * @returns {[RuleOffset, T][]}
+   */ sort(list) {
+        // Sort arbitrary variants so they're in alphabetical order
+        list = this.remapArbitraryVariantOffsets(list);
+        // Sort arbitrary properties so they're in alphabetical order
+        list = this.sortArbitraryProperties(list);
+        return list.sort(([a], [b])=>(0, _bigSign.default)(this.compare(a, b)));
+    }
+}
+/**
+ *
+ * @param {bigint[]} nums
+ * @returns {bigint|null}
+ */ function max(nums) {
+    let max = null;
+    for (const num of nums){
+        max = max !== null && max !== void 0 ? max : num;
+        max = max > num ? max : num;
+    }
+    return max;
+}
+/**
+ * A fast ASCII order string comparison function.
+ *
+ * Using `.sort()` without a custom compare function is faster
+ * But you can only use that if you're sorting an array of
+ * only strings. If you're sorting strings inside objects
+ * or arrays, you need must use a custom compare function.
+ *
+ * @param {string} a
+ * @param {string} b
+ */ function fastCompare(a, b) {
+    let aLen = a.length;
+    let bLen = b.length;
+    let minLen = aLen < bLen ? aLen : bLen;
+    for(let i = 0; i < minLen; i++){
+        let cmp = a.charCodeAt(i) - b.charCodeAt(i);
+        if (cmp !== 0) return cmp;
+    }
+    return aLen - bLen;
+}
Index: frontend/node_modules/tailwindcss/lib/lib/partitionApplyAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/partitionApplyAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/partitionApplyAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,58 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return expandApplyAtRules;
+    }
+});
+function partitionRules(root) {
+    if (!root.walkAtRules) return;
+    let applyParents = new Set();
+    root.walkAtRules("apply", (rule)=>{
+        applyParents.add(rule.parent);
+    });
+    if (applyParents.size === 0) {
+        return;
+    }
+    for (let rule of applyParents){
+        let nodeGroups = [];
+        let lastGroup = [];
+        for (let node of rule.nodes){
+            if (node.type === "atrule" && node.name === "apply") {
+                if (lastGroup.length > 0) {
+                    nodeGroups.push(lastGroup);
+                    lastGroup = [];
+                }
+                nodeGroups.push([
+                    node
+                ]);
+            } else {
+                lastGroup.push(node);
+            }
+        }
+        if (lastGroup.length > 0) {
+            nodeGroups.push(lastGroup);
+        }
+        if (nodeGroups.length === 1) {
+            continue;
+        }
+        for (let group of [
+            ...nodeGroups
+        ].reverse()){
+            let clone = rule.clone({
+                nodes: []
+            });
+            clone.append(group);
+            rule.after(clone);
+        }
+        rule.remove();
+    }
+}
+function expandApplyAtRules() {
+    return (root)=>{
+        partitionRules(root);
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/lib/regex.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/regex.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/regex.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,74 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    pattern: function() {
+        return pattern;
+    },
+    withoutCapturing: function() {
+        return withoutCapturing;
+    },
+    any: function() {
+        return any;
+    },
+    optional: function() {
+        return optional;
+    },
+    zeroOrMore: function() {
+        return zeroOrMore;
+    },
+    nestedBrackets: function() {
+        return nestedBrackets;
+    },
+    escape: function() {
+        return escape;
+    }
+});
+const REGEX_SPECIAL = /[\\^$.*+?()[\]{}|]/g;
+const REGEX_HAS_SPECIAL = RegExp(REGEX_SPECIAL.source);
+/**
+ * @param {string|RegExp|Array<string|RegExp>} source
+ */ function toSource(source) {
+    source = Array.isArray(source) ? source : [
+        source
+    ];
+    source = source.map((item)=>item instanceof RegExp ? item.source : item);
+    return source.join("");
+}
+function pattern(source) {
+    return new RegExp(toSource(source), "g");
+}
+function withoutCapturing(source) {
+    return new RegExp(`(?:${toSource(source)})`, "g");
+}
+function any(sources) {
+    return `(?:${sources.map(toSource).join("|")})`;
+}
+function optional(source) {
+    return `(?:${toSource(source)})?`;
+}
+function zeroOrMore(source) {
+    return `(?:${toSource(source)})*`;
+}
+function nestedBrackets(open, close, depth = 1) {
+    return withoutCapturing([
+        escape(open),
+        /[^\s]*/,
+        depth === 1 ? `[^${escape(open)}${escape(close)}\s]*` : any([
+            `[^${escape(open)}${escape(close)}\s]*`,
+            nestedBrackets(open, close, depth - 1)
+        ]),
+        /[^\s]*/,
+        escape(close)
+    ]);
+}
+function escape(string) {
+    return string && REGEX_HAS_SPECIAL.test(string) ? string.replace(REGEX_SPECIAL, "\\$&") : string || "";
+}
Index: frontend/node_modules/tailwindcss/lib/lib/remap-bitfield.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/remap-bitfield.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/remap-bitfield.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,89 @@
+// @ts-check
+/**
+ * We must remap all the old bits to new bits for each set variant
+ * Only arbitrary variants are considered as those are the only
+ * ones that need to be re-sorted at this time
+ *
+ * An iterated process that removes and sets individual bits simultaneously
+ * will not work because we may have a new bit that is also a later old bit
+ * This means that we would be removing a previously set bit which we don't
+ * want to do
+ *
+ * For example (assume `bN` = `1<<N`)
+ * Given the "total" mapping `[[b1, b3], [b2, b4], [b3, b1], [b4, b2]]`
+ * The mapping is "total" because:
+ * 1. Every input and output is accounted for
+ * 2. All combinations are unique
+ * 3. No one input maps to multiple outputs and vice versa
+ * And, given an offset with all bits set:
+ * V = b1 | b2 | b3 | b4
+ *
+ * Let's explore the issue with removing and setting bits simultaneously:
+ * V & ~b1 | b3 = b2 | b3 | b4
+ * V & ~b2 | b4 = b3 | b4
+ * V & ~b3 | b1 = b1 | b4
+ * V & ~b4 | b2 = b1 | b2
+ *
+ * As you can see, we end up with the wrong result.
+ * This is because we're removing a bit that was previously set.
+ * And, thus the final result is missing b3 and b4.
+ *
+ * Now, let's explore the issue with removing the bits first:
+ * V & ~b1 = b2 | b3 | b4
+ * V & ~b2 = b3 | b4
+ * V & ~b3 = b4
+ * V & ~b4 = 0
+ *
+ * And then setting the bits:
+ * V | b3 = b3
+ * V | b4 = b3 | b4
+ * V | b1 = b1 | b3 | b4
+ * V | b2 = b1 | b2 | b3 | b4
+ *
+ * We get the correct result because we're not removing any bits that were
+ * previously set thus properly remapping the bits to the new order
+ *
+ * To collect this into a single operation that can be done simultaneously
+ * we must first create a mask for the old bits that are set and a mask for
+ * the new bits that are set. Then we can remove the old bits and set the new
+ * bits simultaneously in a "single" operation like so:
+ * OldMask = b1 | b2 | b3 | b4
+ * NewMask = b3 | b4 | b1 | b2
+ *
+ * So this:
+ * V & ~oldMask | newMask
+ *
+ * Expands to this:
+ * V & ~b1 & ~b2 & ~b3 & ~b4 | b3 | b4 | b1 | b2
+ *
+ * Which becomes this:
+ * b1 | b2 | b3 | b4
+ *
+ * Which is the correct result!
+ *
+ * @param {bigint} num
+ * @param {[bigint, bigint][]} mapping
+ */ "use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "remapBitfield", {
+    enumerable: true,
+    get: function() {
+        return remapBitfield;
+    }
+});
+function remapBitfield(num, mapping) {
+    // Create masks for the old and new bits that are set
+    let oldMask = 0n;
+    let newMask = 0n;
+    for (let [oldBit, newBit] of mapping){
+        if (num & oldBit) {
+            oldMask = oldMask | oldBit;
+            newMask = newMask | newBit;
+        }
+    }
+    // Remove all old bits
+    // Set all new bits
+    return num & ~oldMask | newMask;
+}
Index: frontend/node_modules/tailwindcss/lib/lib/resolveDefaultsAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/resolveDefaultsAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/resolveDefaultsAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,165 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    elementSelectorParser: function() {
+        return elementSelectorParser;
+    },
+    default: function() {
+        return resolveDefaultsAtRules;
+    }
+});
+const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
+const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
+const _featureFlags = require("../featureFlags");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+let getNode = {
+    id (node) {
+        return _postcssselectorparser.default.attribute({
+            attribute: "id",
+            operator: "=",
+            value: node.value,
+            quoteMark: '"'
+        });
+    }
+};
+function minimumImpactSelector(nodes) {
+    let rest = nodes.filter((node)=>{
+        // Keep non-pseudo nodes
+        if (node.type !== "pseudo") return true;
+        // Keep pseudo nodes that have subnodes
+        // E.g.: `:not()` contains subnodes inside the parentheses
+        if (node.nodes.length > 0) return true;
+        // Keep pseudo `elements`
+        // This implicitly means that we ignore pseudo `classes`
+        return node.value.startsWith("::") || [
+            ":before",
+            ":after",
+            ":first-line",
+            ":first-letter"
+        ].includes(node.value);
+    }).reverse();
+    let searchFor = new Set([
+        "tag",
+        "class",
+        "id",
+        "attribute"
+    ]);
+    let splitPointIdx = rest.findIndex((n)=>searchFor.has(n.type));
+    if (splitPointIdx === -1) return rest.reverse().join("").trim();
+    let node = rest[splitPointIdx];
+    let bestNode = getNode[node.type] ? getNode[node.type](node) : node;
+    rest = rest.slice(0, splitPointIdx);
+    let combinatorIdx = rest.findIndex((n)=>n.type === "combinator" && n.value === ">");
+    if (combinatorIdx !== -1) {
+        rest.splice(0, combinatorIdx);
+        rest.unshift(_postcssselectorparser.default.universal());
+    }
+    return [
+        bestNode,
+        ...rest.reverse()
+    ].join("").trim();
+}
+let elementSelectorParser = (0, _postcssselectorparser.default)((selectors)=>{
+    return selectors.map((s)=>{
+        let nodes = s.split((n)=>n.type === "combinator" && n.value === " ").pop();
+        return minimumImpactSelector(nodes);
+    });
+});
+let cache = new Map();
+function extractElementSelector(selector) {
+    if (!cache.has(selector)) {
+        cache.set(selector, elementSelectorParser.transformSync(selector));
+    }
+    return cache.get(selector);
+}
+function resolveDefaultsAtRules({ tailwindConfig  }) {
+    return (root)=>{
+        let variableNodeMap = new Map();
+        /** @type {Set<import('postcss').AtRule>} */ let universals = new Set();
+        root.walkAtRules("defaults", (rule)=>{
+            if (rule.nodes && rule.nodes.length > 0) {
+                universals.add(rule);
+                return;
+            }
+            let variable = rule.params;
+            if (!variableNodeMap.has(variable)) {
+                variableNodeMap.set(variable, new Set());
+            }
+            variableNodeMap.get(variable).add(rule.parent);
+            rule.remove();
+        });
+        if ((0, _featureFlags.flagEnabled)(tailwindConfig, "optimizeUniversalDefaults")) {
+            for (let universal of universals){
+                /** @type {Map<string, Set<string>>} */ let selectorGroups = new Map();
+                var _variableNodeMap_get;
+                let rules = (_variableNodeMap_get = variableNodeMap.get(universal.params)) !== null && _variableNodeMap_get !== void 0 ? _variableNodeMap_get : [];
+                for (let rule of rules){
+                    for (let selector of extractElementSelector(rule.selector)){
+                        // If selector contains a vendor prefix after a pseudo element or class,
+                        // we consider them separately because merging the declarations into
+                        // a single rule will cause browsers that do not understand the
+                        // vendor prefix to throw out the whole rule
+                        // Additionally if a selector contains `:has` we also consider
+                        // it separately because FF only recently gained support for it
+                        let selectorGroupName = selector.includes(":-") || selector.includes("::-") || selector.includes(":has") ? selector : "__DEFAULT__";
+                        var _selectorGroups_get;
+                        let selectors = (_selectorGroups_get = selectorGroups.get(selectorGroupName)) !== null && _selectorGroups_get !== void 0 ? _selectorGroups_get : new Set();
+                        selectorGroups.set(selectorGroupName, selectors);
+                        selectors.add(selector);
+                    }
+                }
+                if (selectorGroups.size === 0) {
+                    universal.remove();
+                    continue;
+                }
+                for (let [, selectors] of selectorGroups){
+                    let universalRule = _postcss.default.rule({
+                        source: universal.source
+                    });
+                    universalRule.selectors = [
+                        ...selectors
+                    ];
+                    universalRule.append(universal.nodes.map((node)=>node.clone()));
+                    universal.before(universalRule);
+                }
+                universal.remove();
+            }
+        } else if (universals.size) {
+            let universalRule = _postcss.default.rule({
+                selectors: [
+                    "*",
+                    "::before",
+                    "::after"
+                ]
+            });
+            for (let universal of universals){
+                universalRule.append(universal.nodes);
+                if (!universalRule.parent) {
+                    universal.before(universalRule);
+                }
+                if (!universalRule.source) {
+                    universalRule.source = universal.source;
+                }
+                universal.remove();
+            }
+            let backdropRule = universalRule.clone({
+                selectors: [
+                    "::backdrop"
+                ]
+            });
+            universalRule.after(backdropRule);
+        }
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/lib/setupContextUtils.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/setupContextUtils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/setupContextUtils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1298 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    INTERNAL_FEATURES: function() {
+        return INTERNAL_FEATURES;
+    },
+    isValidVariantFormatString: function() {
+        return isValidVariantFormatString;
+    },
+    parseVariant: function() {
+        return parseVariant;
+    },
+    getFileModifiedMap: function() {
+        return getFileModifiedMap;
+    },
+    createContext: function() {
+        return createContext;
+    },
+    getContext: function() {
+        return getContext;
+    }
+});
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _url = /*#__PURE__*/ _interop_require_default(require("url"));
+const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
+const _dlv = /*#__PURE__*/ _interop_require_default(require("dlv"));
+const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
+const _transformThemeValue = /*#__PURE__*/ _interop_require_default(require("../util/transformThemeValue"));
+const _parseObjectStyles = /*#__PURE__*/ _interop_require_default(require("../util/parseObjectStyles"));
+const _prefixSelector = /*#__PURE__*/ _interop_require_default(require("../util/prefixSelector"));
+const _isPlainObject = /*#__PURE__*/ _interop_require_default(require("../util/isPlainObject"));
+const _escapeClassName = /*#__PURE__*/ _interop_require_default(require("../util/escapeClassName"));
+const _nameClass = /*#__PURE__*/ _interop_require_wildcard(require("../util/nameClass"));
+const _pluginUtils = require("../util/pluginUtils");
+const _corePlugins = require("../corePlugins");
+const _sharedState = /*#__PURE__*/ _interop_require_wildcard(require("./sharedState"));
+const _toPath = require("../util/toPath");
+const _log = /*#__PURE__*/ _interop_require_default(require("../util/log"));
+const _negateValue = /*#__PURE__*/ _interop_require_default(require("../util/negateValue"));
+const _isSyntacticallyValidPropertyValue = /*#__PURE__*/ _interop_require_default(require("../util/isSyntacticallyValidPropertyValue"));
+const _generateRules = require("./generateRules");
+const _cacheInvalidation = require("./cacheInvalidation.js");
+const _offsets = require("./offsets.js");
+const _featureFlags = require("../featureFlags.js");
+const _formatVariantSelector = require("../util/formatVariantSelector");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function _getRequireWildcardCache(nodeInterop) {
+    if (typeof WeakMap !== "function") return null;
+    var cacheBabelInterop = new WeakMap();
+    var cacheNodeInterop = new WeakMap();
+    return (_getRequireWildcardCache = function(nodeInterop) {
+        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+    })(nodeInterop);
+}
+function _interop_require_wildcard(obj, nodeInterop) {
+    if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+    }
+    if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return {
+            default: obj
+        };
+    }
+    var cache = _getRequireWildcardCache(nodeInterop);
+    if (cache && cache.has(obj)) {
+        return cache.get(obj);
+    }
+    var newObj = {};
+    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+    for(var key in obj){
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+            if (desc && (desc.get || desc.set)) {
+                Object.defineProperty(newObj, key, desc);
+            } else {
+                newObj[key] = obj[key];
+            }
+        }
+    }
+    newObj.default = obj;
+    if (cache) {
+        cache.set(obj, newObj);
+    }
+    return newObj;
+}
+const INTERNAL_FEATURES = Symbol();
+const VARIANT_TYPES = {
+    AddVariant: Symbol.for("ADD_VARIANT"),
+    MatchVariant: Symbol.for("MATCH_VARIANT")
+};
+const VARIANT_INFO = {
+    Base: 1 << 0,
+    Dynamic: 1 << 1
+};
+function prefix(context, selector) {
+    let prefix = context.tailwindConfig.prefix;
+    return typeof prefix === "function" ? prefix(selector) : prefix + selector;
+}
+function normalizeOptionTypes({ type ="any" , ...options }) {
+    let types = [].concat(type);
+    return {
+        ...options,
+        types: types.map((type)=>{
+            if (Array.isArray(type)) {
+                return {
+                    type: type[0],
+                    ...type[1]
+                };
+            }
+            return {
+                type,
+                preferOnConflict: false
+            };
+        })
+    };
+}
+function parseVariantFormatString(input) {
+    /** @type {string[]} */ let parts = [];
+    // When parsing whitespace around special characters are insignificant
+    // However, _inside_ of a variant they could be
+    // Because the selector could look like this
+    // @media { &[data-name="foo bar"] }
+    // This is why we do not skip whitespace
+    let current = "";
+    let depth = 0;
+    for(let idx = 0; idx < input.length; idx++){
+        let char = input[idx];
+        if (char === "\\") {
+            // Escaped characters are not special
+            current += "\\" + input[++idx];
+        } else if (char === "{") {
+            // Nested rule: start
+            ++depth;
+            parts.push(current.trim());
+            current = "";
+        } else if (char === "}") {
+            // Nested rule: end
+            if (--depth < 0) {
+                throw new Error(`Your { and } are unbalanced.`);
+            }
+            parts.push(current.trim());
+            current = "";
+        } else {
+            // Normal character
+            current += char;
+        }
+    }
+    if (current.length > 0) {
+        parts.push(current.trim());
+    }
+    parts = parts.filter((part)=>part !== "");
+    return parts;
+}
+function insertInto(list, value, { before =[]  } = {}) {
+    before = [].concat(before);
+    if (before.length <= 0) {
+        list.push(value);
+        return;
+    }
+    let idx = list.length - 1;
+    for (let other of before){
+        let iidx = list.indexOf(other);
+        if (iidx === -1) continue;
+        idx = Math.min(idx, iidx);
+    }
+    list.splice(idx, 0, value);
+}
+function parseStyles(styles) {
+    if (!Array.isArray(styles)) {
+        return parseStyles([
+            styles
+        ]);
+    }
+    return styles.flatMap((style)=>{
+        let isNode = !Array.isArray(style) && !(0, _isPlainObject.default)(style);
+        return isNode ? style : (0, _parseObjectStyles.default)(style);
+    });
+}
+function getClasses(selector, mutate) {
+    let parser = (0, _postcssselectorparser.default)((selectors)=>{
+        let allClasses = [];
+        if (mutate) {
+            mutate(selectors);
+        }
+        selectors.walkClasses((classNode)=>{
+            allClasses.push(classNode.value);
+        });
+        return allClasses;
+    });
+    return parser.transformSync(selector);
+}
+/**
+ * Ignore everything inside a :not(...). This allows you to write code like
+ * `div:not(.foo)`. If `.foo` is never found in your code, then we used to
+ * not generated it. But now we will ignore everything inside a `:not`, so
+ * that it still gets generated.
+ *
+ * @param {selectorParser.Root} selectors
+ */ function ignoreNot(selectors) {
+    selectors.walkPseudos((pseudo)=>{
+        if (pseudo.value === ":not") {
+            pseudo.remove();
+        }
+    });
+}
+function extractCandidates(node, state = {
+    containsNonOnDemandable: false
+}, depth = 0) {
+    let classes = [];
+    let selectors = [];
+    if (node.type === "rule") {
+        // Handle normal rules
+        selectors.push(...node.selectors);
+    } else if (node.type === "atrule") {
+        // Handle at-rules (which contains nested rules)
+        node.walkRules((rule)=>selectors.push(...rule.selectors));
+    }
+    for (let selector of selectors){
+        let classCandidates = getClasses(selector, ignoreNot);
+        // At least one of the selectors contains non-"on-demandable" candidates.
+        if (classCandidates.length === 0) {
+            state.containsNonOnDemandable = true;
+        }
+        for (let classCandidate of classCandidates){
+            classes.push(classCandidate);
+        }
+    }
+    if (depth === 0) {
+        return [
+            state.containsNonOnDemandable || classes.length === 0,
+            classes
+        ];
+    }
+    return classes;
+}
+function withIdentifiers(styles) {
+    return parseStyles(styles).flatMap((node)=>{
+        let nodeMap = new Map();
+        let [containsNonOnDemandableSelectors, candidates] = extractCandidates(node);
+        // If this isn't "on-demandable", assign it a universal candidate to always include it.
+        if (containsNonOnDemandableSelectors) {
+            candidates.unshift(_sharedState.NOT_ON_DEMAND);
+        }
+        // However, it could be that it also contains "on-demandable" candidates.
+        // E.g.: `span, .foo {}`, in that case it should still be possible to use
+        // `@apply foo` for example.
+        return candidates.map((c)=>{
+            if (!nodeMap.has(node)) {
+                nodeMap.set(node, node);
+            }
+            return [
+                c,
+                nodeMap.get(node)
+            ];
+        });
+    });
+}
+function isValidVariantFormatString(format) {
+    return format.startsWith("@") || format.includes("&");
+}
+function parseVariant(variant) {
+    variant = variant.replace(/\n+/g, "").replace(/\s{1,}/g, " ").trim();
+    let fns = parseVariantFormatString(variant).map((str)=>{
+        if (!str.startsWith("@")) {
+            return ({ format  })=>format(str);
+        }
+        let [, name, params] = /@(\S*)( .+|[({].*)?/g.exec(str);
+        var _params_trim;
+        return ({ wrap  })=>{
+            return wrap(_postcss.default.atRule({
+                name,
+                params: (_params_trim = params === null || params === void 0 ? void 0 : params.trim()) !== null && _params_trim !== void 0 ? _params_trim : ""
+            }));
+        };
+    }).reverse();
+    return (api)=>{
+        for (let fn of fns){
+            fn(api);
+        }
+    };
+}
+/**
+ *
+ * @param {any} tailwindConfig
+ * @param {any} context
+ * @param {object} param2
+ * @param {Offsets} param2.offsets
+ */ function buildPluginApi(tailwindConfig, context, { variantList , variantMap , offsets , classList  }) {
+    function getConfigValue(path, defaultValue) {
+        return path ? (0, _dlv.default)(tailwindConfig, path, defaultValue) : tailwindConfig;
+    }
+    function applyConfiguredPrefix(selector) {
+        return (0, _prefixSelector.default)(tailwindConfig.prefix, selector);
+    }
+    function prefixIdentifier(identifier, options) {
+        if (identifier === _sharedState.NOT_ON_DEMAND) {
+            return _sharedState.NOT_ON_DEMAND;
+        }
+        if (!options.respectPrefix) {
+            return identifier;
+        }
+        return context.tailwindConfig.prefix + identifier;
+    }
+    function resolveThemeValue(path, defaultValue, opts = {}) {
+        let parts = (0, _toPath.toPath)(path);
+        let value = getConfigValue([
+            "theme",
+            ...parts
+        ], defaultValue);
+        return (0, _transformThemeValue.default)(parts[0])(value, opts);
+    }
+    let variantIdentifier = 0;
+    let api = {
+        postcss: _postcss.default,
+        prefix: applyConfiguredPrefix,
+        e: _escapeClassName.default,
+        config: getConfigValue,
+        theme: resolveThemeValue,
+        corePlugins: (path)=>{
+            if (Array.isArray(tailwindConfig.corePlugins)) {
+                return tailwindConfig.corePlugins.includes(path);
+            }
+            return getConfigValue([
+                "corePlugins",
+                path
+            ], true);
+        },
+        variants: ()=>{
+            // Preserved for backwards compatibility but not used in v3.0+
+            return [];
+        },
+        addBase (base) {
+            for (let [identifier, rule] of withIdentifiers(base)){
+                let prefixedIdentifier = prefixIdentifier(identifier, {});
+                let offset = offsets.create("base");
+                if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+                    context.candidateRuleMap.set(prefixedIdentifier, []);
+                }
+                context.candidateRuleMap.get(prefixedIdentifier).push([
+                    {
+                        sort: offset,
+                        layer: "base"
+                    },
+                    rule
+                ]);
+            }
+        },
+        /**
+     * @param {string} group
+     * @param {Record<string, string | string[]>} declarations
+     */ addDefaults (group, declarations) {
+            const groups = {
+                [`@defaults ${group}`]: declarations
+            };
+            for (let [identifier, rule] of withIdentifiers(groups)){
+                let prefixedIdentifier = prefixIdentifier(identifier, {});
+                if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+                    context.candidateRuleMap.set(prefixedIdentifier, []);
+                }
+                context.candidateRuleMap.get(prefixedIdentifier).push([
+                    {
+                        sort: offsets.create("defaults"),
+                        layer: "defaults"
+                    },
+                    rule
+                ]);
+            }
+        },
+        addComponents (components, options) {
+            let defaultOptions = {
+                preserveSource: false,
+                respectPrefix: true,
+                respectImportant: false
+            };
+            options = Object.assign({}, defaultOptions, Array.isArray(options) ? {} : options);
+            for (let [identifier, rule] of withIdentifiers(components)){
+                let prefixedIdentifier = prefixIdentifier(identifier, options);
+                classList.add(prefixedIdentifier);
+                if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+                    context.candidateRuleMap.set(prefixedIdentifier, []);
+                }
+                context.candidateRuleMap.get(prefixedIdentifier).push([
+                    {
+                        sort: offsets.create("components"),
+                        layer: "components",
+                        options
+                    },
+                    rule
+                ]);
+            }
+        },
+        addUtilities (utilities, options) {
+            let defaultOptions = {
+                preserveSource: false,
+                respectPrefix: true,
+                respectImportant: true
+            };
+            options = Object.assign({}, defaultOptions, Array.isArray(options) ? {} : options);
+            for (let [identifier, rule] of withIdentifiers(utilities)){
+                let prefixedIdentifier = prefixIdentifier(identifier, options);
+                classList.add(prefixedIdentifier);
+                if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+                    context.candidateRuleMap.set(prefixedIdentifier, []);
+                }
+                context.candidateRuleMap.get(prefixedIdentifier).push([
+                    {
+                        sort: offsets.create("utilities"),
+                        layer: "utilities",
+                        options
+                    },
+                    rule
+                ]);
+            }
+        },
+        matchUtilities: function(utilities, options) {
+            let defaultOptions = {
+                respectPrefix: true,
+                respectImportant: true,
+                modifiers: false
+            };
+            options = normalizeOptionTypes({
+                ...defaultOptions,
+                ...options
+            });
+            let offset = offsets.create("utilities");
+            for(let identifier in utilities){
+                let prefixedIdentifier = prefixIdentifier(identifier, options);
+                let rule = utilities[identifier];
+                classList.add([
+                    prefixedIdentifier,
+                    options
+                ]);
+                function wrapped(modifier, { isOnlyPlugin  }) {
+                    let [value, coercedType, utilityModifier] = (0, _pluginUtils.coerceValue)(options.types, modifier, options, tailwindConfig);
+                    if (value === undefined) {
+                        return [];
+                    }
+                    if (!options.types.some(({ type  })=>type === coercedType)) {
+                        if (isOnlyPlugin) {
+                            _log.default.warn([
+                                `Unnecessary typehint \`${coercedType}\` in \`${identifier}-${modifier}\`.`,
+                                `You can safely update it to \`${identifier}-${modifier.replace(coercedType + ":", "")}\`.`
+                            ]);
+                        } else {
+                            return [];
+                        }
+                    }
+                    if (!(0, _isSyntacticallyValidPropertyValue.default)(value)) {
+                        return [];
+                    }
+                    let extras = {
+                        get modifier () {
+                            if (!options.modifiers) {
+                                _log.default.warn(`modifier-used-without-options-for-${identifier}`, [
+                                    "Your plugin must set `modifiers: true` in its options to support modifiers."
+                                ]);
+                            }
+                            return utilityModifier;
+                        }
+                    };
+                    let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, "generalizedModifiers");
+                    let ruleSets = [].concat(modifiersEnabled ? rule(value, extras) : rule(value)).filter(Boolean).map((declaration)=>({
+                            [(0, _nameClass.default)(identifier, modifier)]: declaration
+                        }));
+                    return ruleSets;
+                }
+                let withOffsets = [
+                    {
+                        sort: offset,
+                        layer: "utilities",
+                        options
+                    },
+                    wrapped
+                ];
+                if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+                    context.candidateRuleMap.set(prefixedIdentifier, []);
+                }
+                context.candidateRuleMap.get(prefixedIdentifier).push(withOffsets);
+            }
+        },
+        matchComponents: function(components, options) {
+            let defaultOptions = {
+                respectPrefix: true,
+                respectImportant: false,
+                modifiers: false
+            };
+            options = normalizeOptionTypes({
+                ...defaultOptions,
+                ...options
+            });
+            let offset = offsets.create("components");
+            for(let identifier in components){
+                let prefixedIdentifier = prefixIdentifier(identifier, options);
+                let rule = components[identifier];
+                classList.add([
+                    prefixedIdentifier,
+                    options
+                ]);
+                function wrapped(modifier, { isOnlyPlugin  }) {
+                    let [value, coercedType, utilityModifier] = (0, _pluginUtils.coerceValue)(options.types, modifier, options, tailwindConfig);
+                    if (value === undefined) {
+                        return [];
+                    }
+                    if (!options.types.some(({ type  })=>type === coercedType)) {
+                        if (isOnlyPlugin) {
+                            _log.default.warn([
+                                `Unnecessary typehint \`${coercedType}\` in \`${identifier}-${modifier}\`.`,
+                                `You can safely update it to \`${identifier}-${modifier.replace(coercedType + ":", "")}\`.`
+                            ]);
+                        } else {
+                            return [];
+                        }
+                    }
+                    if (!(0, _isSyntacticallyValidPropertyValue.default)(value)) {
+                        return [];
+                    }
+                    let extras = {
+                        get modifier () {
+                            if (!options.modifiers) {
+                                _log.default.warn(`modifier-used-without-options-for-${identifier}`, [
+                                    "Your plugin must set `modifiers: true` in its options to support modifiers."
+                                ]);
+                            }
+                            return utilityModifier;
+                        }
+                    };
+                    let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, "generalizedModifiers");
+                    let ruleSets = [].concat(modifiersEnabled ? rule(value, extras) : rule(value)).filter(Boolean).map((declaration)=>({
+                            [(0, _nameClass.default)(identifier, modifier)]: declaration
+                        }));
+                    return ruleSets;
+                }
+                let withOffsets = [
+                    {
+                        sort: offset,
+                        layer: "components",
+                        options
+                    },
+                    wrapped
+                ];
+                if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+                    context.candidateRuleMap.set(prefixedIdentifier, []);
+                }
+                context.candidateRuleMap.get(prefixedIdentifier).push(withOffsets);
+            }
+        },
+        addVariant (variantName, variantFunctions, options = {}) {
+            variantFunctions = [].concat(variantFunctions).map((variantFunction)=>{
+                if (typeof variantFunction !== "string") {
+                    // Safelist public API functions
+                    return (api = {})=>{
+                        let { args , modifySelectors , container , separator , wrap , format  } = api;
+                        let result = variantFunction(Object.assign({
+                            modifySelectors,
+                            container,
+                            separator
+                        }, options.type === VARIANT_TYPES.MatchVariant && {
+                            args,
+                            wrap,
+                            format
+                        }));
+                        if (typeof result === "string" && !isValidVariantFormatString(result)) {
+                            throw new Error(`Your custom variant \`${variantName}\` has an invalid format string. Make sure it's an at-rule or contains a \`&\` placeholder.`);
+                        }
+                        if (Array.isArray(result)) {
+                            return result.filter((variant)=>typeof variant === "string").map((variant)=>parseVariant(variant));
+                        }
+                        // result may be undefined with legacy variants that use APIs like `modifySelectors`
+                        // result may also be a postcss node if someone was returning the result from `modifySelectors`
+                        return result && typeof result === "string" && parseVariant(result)(api);
+                    };
+                }
+                if (!isValidVariantFormatString(variantFunction)) {
+                    throw new Error(`Your custom variant \`${variantName}\` has an invalid format string. Make sure it's an at-rule or contains a \`&\` placeholder.`);
+                }
+                return parseVariant(variantFunction);
+            });
+            insertInto(variantList, variantName, options);
+            variantMap.set(variantName, variantFunctions);
+            context.variantOptions.set(variantName, options);
+        },
+        matchVariant (variant, variantFn, options) {
+            var _options_id;
+            // A unique identifier that "groups" these variants together.
+            // This is for internal use only which is why it is not present in the types
+            let id = (_options_id = options === null || options === void 0 ? void 0 : options.id) !== null && _options_id !== void 0 ? _options_id : ++variantIdentifier;
+            let isSpecial = variant === "@";
+            let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, "generalizedModifiers");
+            var _options_values;
+            for (let [key, value] of Object.entries((_options_values = options === null || options === void 0 ? void 0 : options.values) !== null && _options_values !== void 0 ? _options_values : {})){
+                if (key === "DEFAULT") continue;
+                api.addVariant(isSpecial ? `${variant}${key}` : `${variant}-${key}`, ({ args , container  })=>{
+                    return variantFn(value, modifiersEnabled ? {
+                        modifier: args === null || args === void 0 ? void 0 : args.modifier,
+                        container
+                    } : {
+                        container
+                    });
+                }, {
+                    ...options,
+                    value,
+                    id,
+                    type: VARIANT_TYPES.MatchVariant,
+                    variantInfo: VARIANT_INFO.Base
+                });
+            }
+            var _options_values1;
+            let hasDefault = "DEFAULT" in ((_options_values1 = options === null || options === void 0 ? void 0 : options.values) !== null && _options_values1 !== void 0 ? _options_values1 : {});
+            api.addVariant(variant, ({ args , container  })=>{
+                if ((args === null || args === void 0 ? void 0 : args.value) === _sharedState.NONE && !hasDefault) {
+                    return null;
+                }
+                var // (JetBrains) plugins.
+                _args_value;
+                return variantFn((args === null || args === void 0 ? void 0 : args.value) === _sharedState.NONE ? options.values.DEFAULT : (_args_value = args === null || args === void 0 ? void 0 : args.value) !== null && _args_value !== void 0 ? _args_value : typeof args === "string" ? args : "", modifiersEnabled ? {
+                    modifier: args === null || args === void 0 ? void 0 : args.modifier,
+                    container
+                } : {
+                    container
+                });
+            }, {
+                ...options,
+                id,
+                type: VARIANT_TYPES.MatchVariant,
+                variantInfo: VARIANT_INFO.Dynamic
+            });
+        }
+    };
+    return api;
+}
+let fileModifiedMapCache = new WeakMap();
+function getFileModifiedMap(context) {
+    if (!fileModifiedMapCache.has(context)) {
+        fileModifiedMapCache.set(context, new Map());
+    }
+    return fileModifiedMapCache.get(context);
+}
+function trackModified(files, fileModifiedMap) {
+    let changed = false;
+    let mtimesToCommit = new Map();
+    for (let file of files){
+        var _fs_statSync;
+        if (!file) continue;
+        let parsed = _url.default.parse(file);
+        let pathname = parsed.hash ? parsed.href.replace(parsed.hash, "") : parsed.href;
+        pathname = parsed.search ? pathname.replace(parsed.search, "") : pathname;
+        let newModified = (_fs_statSync = _fs.default.statSync(decodeURIComponent(pathname), {
+            throwIfNoEntry: false
+        })) === null || _fs_statSync === void 0 ? void 0 : _fs_statSync.mtimeMs;
+        if (!newModified) {
+            continue;
+        }
+        if (!fileModifiedMap.has(file) || newModified > fileModifiedMap.get(file)) {
+            changed = true;
+        }
+        mtimesToCommit.set(file, newModified);
+    }
+    return [
+        changed,
+        mtimesToCommit
+    ];
+}
+function extractVariantAtRules(node) {
+    node.walkAtRules((atRule)=>{
+        if ([
+            "responsive",
+            "variants"
+        ].includes(atRule.name)) {
+            extractVariantAtRules(atRule);
+            atRule.before(atRule.nodes);
+            atRule.remove();
+        }
+    });
+}
+function collectLayerPlugins(root) {
+    let layerPlugins = [];
+    root.each((node)=>{
+        if (node.type === "atrule" && [
+            "responsive",
+            "variants"
+        ].includes(node.name)) {
+            node.name = "layer";
+            node.params = "utilities";
+        }
+    });
+    // Walk @layer rules and treat them like plugins
+    root.walkAtRules("layer", (layerRule)=>{
+        extractVariantAtRules(layerRule);
+        if (layerRule.params === "base") {
+            for (let node of layerRule.nodes){
+                layerPlugins.push(function({ addBase  }) {
+                    addBase(node, {
+                        respectPrefix: false
+                    });
+                });
+            }
+            layerRule.remove();
+        } else if (layerRule.params === "components") {
+            for (let node of layerRule.nodes){
+                layerPlugins.push(function({ addComponents  }) {
+                    addComponents(node, {
+                        respectPrefix: false,
+                        preserveSource: true
+                    });
+                });
+            }
+            layerRule.remove();
+        } else if (layerRule.params === "utilities") {
+            for (let node of layerRule.nodes){
+                layerPlugins.push(function({ addUtilities  }) {
+                    addUtilities(node, {
+                        respectPrefix: false,
+                        preserveSource: true
+                    });
+                });
+            }
+            layerRule.remove();
+        }
+    });
+    return layerPlugins;
+}
+function resolvePlugins(context, root) {
+    let corePluginList = Object.entries({
+        ..._corePlugins.variantPlugins,
+        ..._corePlugins.corePlugins
+    }).map(([name, plugin])=>{
+        if (!context.tailwindConfig.corePlugins.includes(name)) {
+            return null;
+        }
+        return plugin;
+    }).filter(Boolean);
+    let userPlugins = context.tailwindConfig.plugins.map((plugin)=>{
+        if (plugin.__isOptionsFunction) {
+            plugin = plugin();
+        }
+        return typeof plugin === "function" ? plugin : plugin.handler;
+    });
+    let layerPlugins = collectLayerPlugins(root);
+    // TODO: This is a workaround for backwards compatibility, since custom variants
+    // were historically sorted before screen/stackable variants.
+    let beforeVariants = [
+        _corePlugins.variantPlugins["childVariant"],
+        _corePlugins.variantPlugins["pseudoElementVariants"],
+        _corePlugins.variantPlugins["pseudoClassVariants"],
+        _corePlugins.variantPlugins["hasVariants"],
+        _corePlugins.variantPlugins["ariaVariants"],
+        _corePlugins.variantPlugins["dataVariants"]
+    ];
+    let afterVariants = [
+        _corePlugins.variantPlugins["supportsVariants"],
+        _corePlugins.variantPlugins["reducedMotionVariants"],
+        _corePlugins.variantPlugins["prefersContrastVariants"],
+        _corePlugins.variantPlugins["screenVariants"],
+        _corePlugins.variantPlugins["orientationVariants"],
+        _corePlugins.variantPlugins["directionVariants"],
+        _corePlugins.variantPlugins["darkVariants"],
+        _corePlugins.variantPlugins["forcedColorsVariants"],
+        _corePlugins.variantPlugins["printVariant"]
+    ];
+    // This is a compatibility fix for the pre 3.4 dark mode behavior
+    // `class` retains the old behavior, but `selector` keeps the new behavior
+    let isLegacyDarkMode = context.tailwindConfig.darkMode === "class" || Array.isArray(context.tailwindConfig.darkMode) && context.tailwindConfig.darkMode[0] === "class";
+    if (isLegacyDarkMode) {
+        afterVariants = [
+            _corePlugins.variantPlugins["supportsVariants"],
+            _corePlugins.variantPlugins["reducedMotionVariants"],
+            _corePlugins.variantPlugins["prefersContrastVariants"],
+            _corePlugins.variantPlugins["darkVariants"],
+            _corePlugins.variantPlugins["screenVariants"],
+            _corePlugins.variantPlugins["orientationVariants"],
+            _corePlugins.variantPlugins["directionVariants"],
+            _corePlugins.variantPlugins["forcedColorsVariants"],
+            _corePlugins.variantPlugins["printVariant"]
+        ];
+    }
+    return [
+        ...corePluginList,
+        ...beforeVariants,
+        ...userPlugins,
+        ...afterVariants,
+        ...layerPlugins
+    ];
+}
+function registerPlugins(plugins, context) {
+    let variantList = [];
+    let variantMap = new Map();
+    context.variantMap = variantMap;
+    let offsets = new _offsets.Offsets();
+    context.offsets = offsets;
+    let classList = new Set();
+    let pluginApi = buildPluginApi(context.tailwindConfig, context, {
+        variantList,
+        variantMap,
+        offsets,
+        classList
+    });
+    for (let plugin of plugins){
+        if (Array.isArray(plugin)) {
+            for (let pluginItem of plugin){
+                pluginItem(pluginApi);
+            }
+        } else {
+            plugin === null || plugin === void 0 ? void 0 : plugin(pluginApi);
+        }
+    }
+    // Make sure to record bit masks for every variant
+    offsets.recordVariants(variantList, (variant)=>variantMap.get(variant).length);
+    // Build variantMap
+    for (let [variantName, variantFunctions] of variantMap.entries()){
+        context.variantMap.set(variantName, variantFunctions.map((variantFunction, idx)=>[
+                offsets.forVariant(variantName, idx),
+                variantFunction
+            ]));
+    }
+    var _context_tailwindConfig_safelist;
+    let safelist = ((_context_tailwindConfig_safelist = context.tailwindConfig.safelist) !== null && _context_tailwindConfig_safelist !== void 0 ? _context_tailwindConfig_safelist : []).filter(Boolean);
+    if (safelist.length > 0) {
+        let checks = [];
+        for (let value of safelist){
+            if (typeof value === "string") {
+                context.changedContent.push({
+                    content: value,
+                    extension: "html"
+                });
+                continue;
+            }
+            if (value instanceof RegExp) {
+                _log.default.warn("root-regex", [
+                    "Regular expressions in `safelist` work differently in Tailwind CSS v3.0.",
+                    "Update your `safelist` configuration to eliminate this warning.",
+                    "https://tailwindcss.com/docs/content-configuration#safelisting-classes"
+                ]);
+                continue;
+            }
+            checks.push(value);
+        }
+        if (checks.length > 0) {
+            let patternMatchingCount = new Map();
+            let prefixLength = context.tailwindConfig.prefix.length;
+            let checkImportantUtils = checks.some((check)=>check.pattern.source.includes("!"));
+            for (let util of classList){
+                let utils = Array.isArray(util) ? (()=>{
+                    let [utilName, options] = util;
+                    var _options_values;
+                    let values = Object.keys((_options_values = options === null || options === void 0 ? void 0 : options.values) !== null && _options_values !== void 0 ? _options_values : {});
+                    let classes = values.map((value)=>(0, _nameClass.formatClass)(utilName, value));
+                    if (options === null || options === void 0 ? void 0 : options.supportsNegativeValues) {
+                        // This is the normal negated version
+                        // e.g. `-inset-1` or `-tw-inset-1`
+                        classes = [
+                            ...classes,
+                            ...classes.map((cls)=>"-" + cls)
+                        ];
+                        // This is the negated version *after* the prefix
+                        // e.g. `tw--inset-1`
+                        // The prefix is already attached to util name
+                        // So we add the negative after the prefix
+                        classes = [
+                            ...classes,
+                            ...classes.map((cls)=>cls.slice(0, prefixLength) + "-" + cls.slice(prefixLength))
+                        ];
+                    }
+                    if (options.types.some(({ type  })=>type === "color")) {
+                        classes = [
+                            ...classes,
+                            ...classes.flatMap((cls)=>Object.keys(context.tailwindConfig.theme.opacity).map((opacity)=>`${cls}/${opacity}`))
+                        ];
+                    }
+                    if (checkImportantUtils && (options === null || options === void 0 ? void 0 : options.respectImportant)) {
+                        classes = [
+                            ...classes,
+                            ...classes.map((cls)=>"!" + cls)
+                        ];
+                    }
+                    return classes;
+                })() : [
+                    util
+                ];
+                for (let util of utils){
+                    for (let { pattern , variants =[]  } of checks){
+                        // RegExp with the /g flag are stateful, so let's reset the last
+                        // index pointer to reset the state.
+                        pattern.lastIndex = 0;
+                        if (!patternMatchingCount.has(pattern)) {
+                            patternMatchingCount.set(pattern, 0);
+                        }
+                        if (!pattern.test(util)) continue;
+                        patternMatchingCount.set(pattern, patternMatchingCount.get(pattern) + 1);
+                        context.changedContent.push({
+                            content: util,
+                            extension: "html"
+                        });
+                        for (let variant of variants){
+                            context.changedContent.push({
+                                content: variant + context.tailwindConfig.separator + util,
+                                extension: "html"
+                            });
+                        }
+                    }
+                }
+            }
+            for (let [regex, count] of patternMatchingCount.entries()){
+                if (count !== 0) continue;
+                _log.default.warn([
+                    `The safelist pattern \`${regex}\` doesn't match any Tailwind CSS classes.`,
+                    "Fix this pattern or remove it from your `safelist` configuration.",
+                    "https://tailwindcss.com/docs/content-configuration#safelisting-classes"
+                ]);
+            }
+        }
+    }
+    var _context_tailwindConfig_darkMode, _concat_;
+    let darkClassName = (_concat_ = [].concat((_context_tailwindConfig_darkMode = context.tailwindConfig.darkMode) !== null && _context_tailwindConfig_darkMode !== void 0 ? _context_tailwindConfig_darkMode : "media")[1]) !== null && _concat_ !== void 0 ? _concat_ : "dark";
+    // A list of utilities that are used by certain Tailwind CSS utilities but
+    // that don't exist on their own. This will result in them "not existing" and
+    // sorting could be weird since you still require them in order to make the
+    // host utilities work properly. (Thanks Biology)
+    let parasiteUtilities = [
+        prefix(context, darkClassName),
+        prefix(context, "group"),
+        prefix(context, "peer")
+    ];
+    context.getClassOrder = function getClassOrder(classes) {
+        // Sort classes so they're ordered in a deterministic manner
+        let sorted = [
+            ...classes
+        ].sort((a, z)=>{
+            if (a === z) return 0;
+            if (a < z) return -1;
+            return 1;
+        });
+        // Non-util classes won't be generated, so we default them to null
+        let sortedClassNames = new Map(sorted.map((className)=>[
+                className,
+                null
+            ]));
+        // Sort all classes in order
+        // Non-tailwind classes won't be generated and will be left as `null`
+        let rules = (0, _generateRules.generateRules)(new Set(sorted), context, true);
+        rules = context.offsets.sort(rules);
+        let idx = BigInt(parasiteUtilities.length);
+        for (const [, rule] of rules){
+            let candidate = rule.raws.tailwind.candidate;
+            var _sortedClassNames_get;
+            // When multiple rules match a candidate
+            // always take the position of the first one
+            sortedClassNames.set(candidate, (_sortedClassNames_get = sortedClassNames.get(candidate)) !== null && _sortedClassNames_get !== void 0 ? _sortedClassNames_get : idx++);
+        }
+        return classes.map((className)=>{
+            var _sortedClassNames_get;
+            let order = (_sortedClassNames_get = sortedClassNames.get(className)) !== null && _sortedClassNames_get !== void 0 ? _sortedClassNames_get : null;
+            let parasiteIndex = parasiteUtilities.indexOf(className);
+            if (order === null && parasiteIndex !== -1) {
+                // This will make sure that it is at the very beginning of the
+                // `components` layer which technically means 'before any
+                // components'.
+                order = BigInt(parasiteIndex);
+            }
+            return [
+                className,
+                order
+            ];
+        });
+    };
+    // Generate a list of strings for autocompletion purposes, e.g.
+    // ['uppercase', 'lowercase', ...]
+    context.getClassList = function getClassList(options = {}) {
+        let output = [];
+        for (let util of classList){
+            if (Array.isArray(util)) {
+                var _utilOptions_types;
+                let [utilName, utilOptions] = util;
+                let negativeClasses = [];
+                var _utilOptions_modifiers;
+                let modifiers = Object.keys((_utilOptions_modifiers = utilOptions === null || utilOptions === void 0 ? void 0 : utilOptions.modifiers) !== null && _utilOptions_modifiers !== void 0 ? _utilOptions_modifiers : {});
+                if (utilOptions === null || utilOptions === void 0 ? void 0 : (_utilOptions_types = utilOptions.types) === null || _utilOptions_types === void 0 ? void 0 : _utilOptions_types.some(({ type  })=>type === "color")) {
+                    var _context_tailwindConfig_theme_opacity;
+                    modifiers.push(...Object.keys((_context_tailwindConfig_theme_opacity = context.tailwindConfig.theme.opacity) !== null && _context_tailwindConfig_theme_opacity !== void 0 ? _context_tailwindConfig_theme_opacity : {}));
+                }
+                let metadata = {
+                    modifiers
+                };
+                let includeMetadata = options.includeMetadata && modifiers.length > 0;
+                var _utilOptions_values;
+                for (let [key, value] of Object.entries((_utilOptions_values = utilOptions === null || utilOptions === void 0 ? void 0 : utilOptions.values) !== null && _utilOptions_values !== void 0 ? _utilOptions_values : {})){
+                    // Ignore undefined and null values
+                    if (value == null) {
+                        continue;
+                    }
+                    let cls = (0, _nameClass.formatClass)(utilName, key);
+                    output.push(includeMetadata ? [
+                        cls,
+                        metadata
+                    ] : cls);
+                    if ((utilOptions === null || utilOptions === void 0 ? void 0 : utilOptions.supportsNegativeValues) && (0, _negateValue.default)(value)) {
+                        let cls = (0, _nameClass.formatClass)(utilName, `-${key}`);
+                        negativeClasses.push(includeMetadata ? [
+                            cls,
+                            metadata
+                        ] : cls);
+                    }
+                }
+                output.push(...negativeClasses);
+            } else {
+                output.push(util);
+            }
+        }
+        return output;
+    };
+    // Generate a list of available variants with meta information of the type of variant.
+    context.getVariants = function getVariants() {
+        // We use a unique, random ID for candidate names to avoid conflicts
+        // We can't use characters like `_`, `:`, `@` or `.` because they might
+        // be used as a separator
+        let id = Math.random().toString(36).substring(7).toUpperCase();
+        let result = [];
+        for (let [name, options] of context.variantOptions.entries()){
+            if (options.variantInfo === VARIANT_INFO.Base) continue;
+            var _options_values;
+            result.push({
+                name,
+                isArbitrary: options.type === Symbol.for("MATCH_VARIANT"),
+                values: Object.keys((_options_values = options.values) !== null && _options_values !== void 0 ? _options_values : {}),
+                hasDash: name !== "@",
+                selectors ({ modifier , value  } = {}) {
+                    let candidate = `TAILWINDPLACEHOLDER${id}`;
+                    let rule = _postcss.default.rule({
+                        selector: `.${candidate}`
+                    });
+                    let container = _postcss.default.root({
+                        nodes: [
+                            rule.clone()
+                        ]
+                    });
+                    let before = container.toString();
+                    var _context_variantMap_get;
+                    let fns = ((_context_variantMap_get = context.variantMap.get(name)) !== null && _context_variantMap_get !== void 0 ? _context_variantMap_get : []).flatMap(([_, fn])=>fn);
+                    let formatStrings = [];
+                    for (let fn of fns){
+                        var _options_values;
+                        let localFormatStrings = [];
+                        var _options_values_value;
+                        let api = {
+                            args: {
+                                modifier,
+                                value: (_options_values_value = (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[value]) !== null && _options_values_value !== void 0 ? _options_values_value : value
+                            },
+                            separator: context.tailwindConfig.separator,
+                            modifySelectors (modifierFunction) {
+                                // Run the modifierFunction over each rule
+                                container.each((rule)=>{
+                                    if (rule.type !== "rule") {
+                                        return;
+                                    }
+                                    rule.selectors = rule.selectors.map((selector)=>{
+                                        return modifierFunction({
+                                            get className () {
+                                                return (0, _generateRules.getClassNameFromSelector)(selector);
+                                            },
+                                            selector
+                                        });
+                                    });
+                                });
+                                return container;
+                            },
+                            format (str) {
+                                localFormatStrings.push(str);
+                            },
+                            wrap (wrapper) {
+                                localFormatStrings.push(`@${wrapper.name} ${wrapper.params} { & }`);
+                            },
+                            container
+                        };
+                        let ruleWithVariant = fn(api);
+                        if (localFormatStrings.length > 0) {
+                            formatStrings.push(localFormatStrings);
+                        }
+                        if (Array.isArray(ruleWithVariant)) {
+                            for (let variantFunction of ruleWithVariant){
+                                localFormatStrings = [];
+                                variantFunction(api);
+                                formatStrings.push(localFormatStrings);
+                            }
+                        }
+                    }
+                    // Reverse engineer the result of the `container`
+                    let manualFormatStrings = [];
+                    let after = container.toString();
+                    if (before !== after) {
+                        // Figure out all selectors
+                        container.walkRules((rule)=>{
+                            let modified = rule.selector;
+                            // Rebuild the base selector, this is what plugin authors would do
+                            // as well. E.g.: `${variant}${separator}${className}`.
+                            // However, plugin authors probably also prepend or append certain
+                            // classes, pseudos, ids, ...
+                            let rebuiltBase = (0, _postcssselectorparser.default)((selectors)=>{
+                                selectors.walkClasses((classNode)=>{
+                                    classNode.value = `${name}${context.tailwindConfig.separator}${classNode.value}`;
+                                });
+                            }).processSync(modified);
+                            // Now that we know the original selector, the new selector, and
+                            // the rebuild part in between, we can replace the part that plugin
+                            // authors need to rebuild with `&`, and eventually store it in the
+                            // collectedFormats. Similar to what `format('...')` would do.
+                            //
+                            // E.g.:
+                            //                   variant: foo
+                            //                  selector: .markdown > p
+                            //      modified (by plugin): .foo .foo\\:markdown > p
+                            //    rebuiltBase (internal): .foo\\:markdown > p
+                            //                    format: .foo &
+                            manualFormatStrings.push(modified.replace(rebuiltBase, "&").replace(candidate, "&"));
+                        });
+                        // Figure out all atrules
+                        container.walkAtRules((atrule)=>{
+                            manualFormatStrings.push(`@${atrule.name} (${atrule.params}) { & }`);
+                        });
+                    }
+                    var _options_values1;
+                    let isArbitraryVariant = !(value in ((_options_values1 = options.values) !== null && _options_values1 !== void 0 ? _options_values1 : {}));
+                    var _options_INTERNAL_FEATURES;
+                    let internalFeatures = (_options_INTERNAL_FEATURES = options[INTERNAL_FEATURES]) !== null && _options_INTERNAL_FEATURES !== void 0 ? _options_INTERNAL_FEATURES : {};
+                    let respectPrefix = (()=>{
+                        if (isArbitraryVariant) return false;
+                        if (internalFeatures.respectPrefix === false) return false;
+                        return true;
+                    })();
+                    formatStrings = formatStrings.map((format)=>format.map((str)=>({
+                                format: str,
+                                respectPrefix
+                            })));
+                    manualFormatStrings = manualFormatStrings.map((format)=>({
+                            format,
+                            respectPrefix
+                        }));
+                    let opts = {
+                        candidate,
+                        context
+                    };
+                    let result = formatStrings.map((formats)=>(0, _formatVariantSelector.finalizeSelector)(`.${candidate}`, (0, _formatVariantSelector.formatVariantSelector)(formats, opts), opts).replace(`.${candidate}`, "&").replace("{ & }", "").trim());
+                    if (manualFormatStrings.length > 0) {
+                        result.push((0, _formatVariantSelector.formatVariantSelector)(manualFormatStrings, opts).toString().replace(`.${candidate}`, "&"));
+                    }
+                    return result;
+                }
+            });
+        }
+        return result;
+    };
+}
+/**
+ * Mark as class as retroactively invalid
+ *
+ *
+ * @param {string} candidate
+ */ function markInvalidUtilityCandidate(context, candidate) {
+    if (!context.classCache.has(candidate)) {
+        return;
+    }
+    // Mark this as not being a real utility
+    context.notClassCache.add(candidate);
+    // Remove it from any candidate-specific caches
+    context.classCache.delete(candidate);
+    context.applyClassCache.delete(candidate);
+    context.candidateRuleMap.delete(candidate);
+    context.candidateRuleCache.delete(candidate);
+    // Ensure the stylesheet gets rebuilt
+    context.stylesheetCache = null;
+}
+/**
+ * Mark as class as retroactively invalid
+ *
+ * @param {import('postcss').Node} node
+ */ function markInvalidUtilityNode(context, node) {
+    let candidate = node.raws.tailwind.candidate;
+    if (!candidate) {
+        return;
+    }
+    for (const entry of context.ruleCache){
+        if (entry[1].raws.tailwind.candidate === candidate) {
+            context.ruleCache.delete(entry);
+        // context.postCssNodeCache.delete(node)
+        }
+    }
+    markInvalidUtilityCandidate(context, candidate);
+}
+function createContext(tailwindConfig, changedContent = [], root = _postcss.default.root()) {
+    var _tailwindConfig_blocklist;
+    let context = {
+        disposables: [],
+        ruleCache: new Set(),
+        candidateRuleCache: new Map(),
+        classCache: new Map(),
+        applyClassCache: new Map(),
+        // Seed the not class cache with the blocklist (which is only strings)
+        notClassCache: new Set((_tailwindConfig_blocklist = tailwindConfig.blocklist) !== null && _tailwindConfig_blocklist !== void 0 ? _tailwindConfig_blocklist : []),
+        postCssNodeCache: new Map(),
+        candidateRuleMap: new Map(),
+        tailwindConfig,
+        changedContent: changedContent,
+        variantMap: new Map(),
+        stylesheetCache: null,
+        variantOptions: new Map(),
+        markInvalidUtilityCandidate: (candidate)=>markInvalidUtilityCandidate(context, candidate),
+        markInvalidUtilityNode: (node)=>markInvalidUtilityNode(context, node)
+    };
+    let resolvedPlugins = resolvePlugins(context, root);
+    registerPlugins(resolvedPlugins, context);
+    return context;
+}
+let contextMap = _sharedState.contextMap;
+let configContextMap = _sharedState.configContextMap;
+let contextSourcesMap = _sharedState.contextSourcesMap;
+function getContext(root, result, tailwindConfig, userConfigPath, tailwindConfigHash, contextDependencies) {
+    let sourcePath = result.opts.from;
+    let isConfigFile = userConfigPath !== null;
+    _sharedState.env.DEBUG && console.log("Source path:", sourcePath);
+    let existingContext;
+    if (isConfigFile && contextMap.has(sourcePath)) {
+        existingContext = contextMap.get(sourcePath);
+    } else if (configContextMap.has(tailwindConfigHash)) {
+        let context = configContextMap.get(tailwindConfigHash);
+        contextSourcesMap.get(context).add(sourcePath);
+        contextMap.set(sourcePath, context);
+        existingContext = context;
+    }
+    let cssDidChange = (0, _cacheInvalidation.hasContentChanged)(sourcePath, root);
+    // If there's already a context in the cache and we don't need to
+    // reset the context, return the cached context.
+    if (existingContext) {
+        let [contextDependenciesChanged, mtimesToCommit] = trackModified([
+            ...contextDependencies
+        ], getFileModifiedMap(existingContext));
+        if (!contextDependenciesChanged && !cssDidChange) {
+            return [
+                existingContext,
+                false,
+                mtimesToCommit
+            ];
+        }
+    }
+    // If this source is in the context map, get the old context.
+    // Remove this source from the context sources for the old context,
+    // and clean up that context if no one else is using it. This can be
+    // called by many processes in rapid succession, so we check for presence
+    // first because the first process to run this code will wipe it out first.
+    if (contextMap.has(sourcePath)) {
+        let oldContext = contextMap.get(sourcePath);
+        if (contextSourcesMap.has(oldContext)) {
+            contextSourcesMap.get(oldContext).delete(sourcePath);
+            if (contextSourcesMap.get(oldContext).size === 0) {
+                contextSourcesMap.delete(oldContext);
+                for (let [tailwindConfigHash, context] of configContextMap){
+                    if (context === oldContext) {
+                        configContextMap.delete(tailwindConfigHash);
+                    }
+                }
+                for (let disposable of oldContext.disposables.splice(0)){
+                    disposable(oldContext);
+                }
+            }
+        }
+    }
+    _sharedState.env.DEBUG && console.log("Setting up new context...");
+    let context = createContext(tailwindConfig, [], root);
+    Object.assign(context, {
+        userConfigPath
+    });
+    let [, mtimesToCommit] = trackModified([
+        ...contextDependencies
+    ], getFileModifiedMap(context));
+    // ---
+    // Update all context tracking state
+    configContextMap.set(tailwindConfigHash, context);
+    contextMap.set(sourcePath, context);
+    if (!contextSourcesMap.has(context)) {
+        contextSourcesMap.set(context, new Set());
+    }
+    contextSourcesMap.get(context).add(sourcePath);
+    return [
+        context,
+        true,
+        mtimesToCommit
+    ];
+}
Index: frontend/node_modules/tailwindcss/lib/lib/setupTrackingContext.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/setupTrackingContext.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/setupTrackingContext.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,169 @@
+// @ts-check
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, // DISABLE_TOUCH = TRUE
+// Retrieve an existing context from cache if possible (since contexts are unique per
+// source path), or set up a new one (including setting up watchers and registering
+// plugins) then return it
+"default", {
+    enumerable: true,
+    get: function() {
+        return setupTrackingContext;
+    }
+});
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _quicklru = /*#__PURE__*/ _interop_require_default(require("@alloc/quick-lru"));
+const _hashConfig = /*#__PURE__*/ _interop_require_default(require("../util/hashConfig"));
+const _resolveconfig = /*#__PURE__*/ _interop_require_default(require("../public/resolve-config"));
+const _resolveConfigPath = /*#__PURE__*/ _interop_require_default(require("../util/resolveConfigPath"));
+const _setupContextUtils = require("./setupContextUtils");
+const _parseDependency = /*#__PURE__*/ _interop_require_default(require("../util/parseDependency"));
+const _validateConfig = require("../util/validateConfig.js");
+const _content = require("./content.js");
+const _loadconfig = require("../lib/load-config");
+const _getModuleDependencies = /*#__PURE__*/ _interop_require_default(require("./getModuleDependencies"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+let configPathCache = new _quicklru.default({
+    maxSize: 100
+});
+let candidateFilesCache = new WeakMap();
+function getCandidateFiles(context, tailwindConfig) {
+    if (candidateFilesCache.has(context)) {
+        return candidateFilesCache.get(context);
+    }
+    let candidateFiles = (0, _content.parseCandidateFiles)(context, tailwindConfig);
+    return candidateFilesCache.set(context, candidateFiles).get(context);
+}
+// Get the config object based on a path
+function getTailwindConfig(configOrPath) {
+    let userConfigPath = (0, _resolveConfigPath.default)(configOrPath);
+    if (userConfigPath !== null) {
+        let [prevConfig, prevConfigHash, prevDeps, prevModified] = configPathCache.get(userConfigPath) || [];
+        let newDeps = (0, _getModuleDependencies.default)(userConfigPath);
+        let modified = false;
+        let newModified = new Map();
+        for (let file of newDeps){
+            let time = _fs.default.statSync(file).mtimeMs;
+            newModified.set(file, time);
+            if (!prevModified || !prevModified.has(file) || time > prevModified.get(file)) {
+                modified = true;
+            }
+        }
+        // It hasn't changed (based on timestamps)
+        if (!modified) {
+            return [
+                prevConfig,
+                userConfigPath,
+                prevConfigHash,
+                prevDeps
+            ];
+        }
+        // It has changed (based on timestamps), or first run
+        for (let file of newDeps){
+            // When loaded transitively through a TypeScript file `require.cache`
+            // may be undefined. Happens in Node 22.18+.
+            if (!require.cache) continue;
+            delete require.cache[file];
+        }
+        let newConfig = (0, _validateConfig.validateConfig)((0, _resolveconfig.default)((0, _loadconfig.loadConfig)(userConfigPath)));
+        let newHash = (0, _hashConfig.default)(newConfig);
+        configPathCache.set(userConfigPath, [
+            newConfig,
+            newHash,
+            newDeps,
+            newModified
+        ]);
+        return [
+            newConfig,
+            userConfigPath,
+            newHash,
+            newDeps
+        ];
+    }
+    var _configOrPath_config, _ref;
+    // It's a plain object, not a path
+    let newConfig = (0, _resolveconfig.default)((_ref = (_configOrPath_config = configOrPath === null || configOrPath === void 0 ? void 0 : configOrPath.config) !== null && _configOrPath_config !== void 0 ? _configOrPath_config : configOrPath) !== null && _ref !== void 0 ? _ref : {});
+    newConfig = (0, _validateConfig.validateConfig)(newConfig);
+    return [
+        newConfig,
+        null,
+        (0, _hashConfig.default)(newConfig),
+        []
+    ];
+}
+function setupTrackingContext(configOrPath) {
+    return ({ tailwindDirectives , registerDependency  })=>{
+        return (root, result)=>{
+            let [tailwindConfig, userConfigPath, tailwindConfigHash, configDependencies] = getTailwindConfig(configOrPath);
+            let contextDependencies = new Set(configDependencies);
+            // If there are no @tailwind or @apply rules, we don't consider this CSS
+            // file or its dependencies to be dependencies of the context. Can reuse
+            // the context even if they change. We may want to think about `@layer`
+            // being part of this trigger too, but it's tough because it's impossible
+            // for a layer in one file to end up in the actual @tailwind rule in
+            // another file since independent sources are effectively isolated.
+            if (tailwindDirectives.size > 0) {
+                // Add current css file as a context dependencies.
+                contextDependencies.add(result.opts.from);
+                // Add all css @import dependencies as context dependencies.
+                for (let message of result.messages){
+                    if (message.type === "dependency") {
+                        contextDependencies.add(message.file);
+                    }
+                }
+            }
+            let [context, , mTimesToCommit] = (0, _setupContextUtils.getContext)(root, result, tailwindConfig, userConfigPath, tailwindConfigHash, contextDependencies);
+            let fileModifiedMap = (0, _setupContextUtils.getFileModifiedMap)(context);
+            let candidateFiles = getCandidateFiles(context, tailwindConfig);
+            // If there are no @tailwind or @apply rules, we don't consider this CSS file or it's
+            // dependencies to be dependencies of the context. Can reuse the context even if they change.
+            // We may want to think about `@layer` being part of this trigger too, but it's tough
+            // because it's impossible for a layer in one file to end up in the actual @tailwind rule
+            // in another file since independent sources are effectively isolated.
+            if (tailwindDirectives.size > 0) {
+                // Add template paths as postcss dependencies.
+                for (let contentPath of candidateFiles){
+                    for (let dependency of (0, _parseDependency.default)(contentPath)){
+                        registerDependency(dependency);
+                    }
+                }
+                let [changedContent, contentMTimesToCommit] = (0, _content.resolvedChangedContent)(context, candidateFiles, fileModifiedMap);
+                for (let content of changedContent){
+                    context.changedContent.push(content);
+                }
+                // Add the mtimes of the content files to the commit list
+                // We can overwrite the existing values because unconditionally
+                // This is because:
+                // 1. Most of the files here won't be in the map yet
+                // 2. If they are that means it's a context dependency
+                // and we're reading this after the context. This means
+                // that the mtime we just read is strictly >= the context
+                // mtime. Unless the user / os is doing something weird
+                // in which the mtime would be going backwards. If that
+                // happens there's already going to be problems.
+                for (let [path, mtime] of contentMTimesToCommit.entries()){
+                    mTimesToCommit.set(path, mtime);
+                }
+            }
+            for (let file of configDependencies){
+                registerDependency({
+                    type: "dependency",
+                    file
+                });
+            }
+            // "commit" the new modified time for all context deps
+            // We do this here because we want content tracking to
+            // read the "old" mtime even when it's a context dependency.
+            for (let [path, mtime] of mTimesToCommit.entries()){
+                fileModifiedMap.set(path, mtime);
+            }
+            return context;
+        };
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/lib/sharedState.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/sharedState.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/sharedState.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,79 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    env: function() {
+        return env;
+    },
+    contextMap: function() {
+        return contextMap;
+    },
+    configContextMap: function() {
+        return configContextMap;
+    },
+    contextSourcesMap: function() {
+        return contextSourcesMap;
+    },
+    sourceHashMap: function() {
+        return sourceHashMap;
+    },
+    NOT_ON_DEMAND: function() {
+        return NOT_ON_DEMAND;
+    },
+    NONE: function() {
+        return NONE;
+    },
+    resolveDebug: function() {
+        return resolveDebug;
+    }
+});
+const env = typeof process !== "undefined" ? {
+    NODE_ENV: process.env.NODE_ENV,
+    DEBUG: resolveDebug(process.env.DEBUG)
+} : {
+    NODE_ENV: "production",
+    DEBUG: false
+};
+const contextMap = new Map();
+const configContextMap = new Map();
+const contextSourcesMap = new Map();
+const sourceHashMap = new Map();
+const NOT_ON_DEMAND = new String("*");
+const NONE = Symbol("__NONE__");
+function resolveDebug(debug) {
+    if (debug === undefined) {
+        return false;
+    }
+    // Environment variables are strings, so convert to boolean
+    if (debug === "true" || debug === "1") {
+        return true;
+    }
+    if (debug === "false" || debug === "0") {
+        return false;
+    }
+    // Keep the debug convention into account:
+    // DEBUG=* -> This enables all debug modes
+    // DEBUG=projectA,projectB,projectC -> This enables debug for projectA, projectB and projectC
+    // DEBUG=projectA:* -> This enables all debug modes for projectA (if you have sub-types)
+    // DEBUG=projectA,-projectB -> This enables debug for projectA and explicitly disables it for projectB
+    if (debug === "*") {
+        return true;
+    }
+    let debuggers = debug.split(",").map((d)=>d.split(":")[0]);
+    // Ignoring tailwindcss
+    if (debuggers.includes("-tailwindcss")) {
+        return false;
+    }
+    // Including tailwindcss
+    if (debuggers.includes("tailwindcss")) {
+        return true;
+    }
+    return false;
+}
Index: frontend/node_modules/tailwindcss/lib/lib/substituteScreenAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/lib/substituteScreenAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/lib/substituteScreenAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _normalizeScreens = require("../util/normalizeScreens");
+const _buildMediaQuery = /*#__PURE__*/ _interop_require_default(require("../util/buildMediaQuery"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function _default({ tailwindConfig: { theme  }  }) {
+    return function(css) {
+        css.walkAtRules("screen", (atRule)=>{
+            let screen = atRule.params;
+            let screens = (0, _normalizeScreens.normalizeScreens)(theme.screens);
+            let screenDefinition = screens.find(({ name  })=>name === screen);
+            if (!screenDefinition) {
+                throw atRule.error(`No \`${screen}\` screen found.`);
+            }
+            atRule.name = "media";
+            atRule.params = (0, _buildMediaQuery.default)(screenDefinition);
+        });
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/plugin.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,48 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+const _setupTrackingContext = /*#__PURE__*/ _interop_require_default(require("./lib/setupTrackingContext"));
+const _processTailwindFeatures = /*#__PURE__*/ _interop_require_default(require("./processTailwindFeatures"));
+const _sharedState = require("./lib/sharedState");
+const _findAtConfigPath = require("./lib/findAtConfigPath");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+module.exports = function tailwindcss(configOrPath) {
+    return {
+        postcssPlugin: "tailwindcss",
+        plugins: [
+            _sharedState.env.DEBUG && function(root) {
+                console.log("\n");
+                console.time("JIT TOTAL");
+                return root;
+            },
+            async function(root, result) {
+                var _findAtConfigPath1;
+                // Use the path for the `@config` directive if it exists, otherwise use the
+                // path for the file being processed
+                configOrPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : configOrPath;
+                let context = (0, _setupTrackingContext.default)(configOrPath);
+                if (root.type === "document") {
+                    let roots = root.nodes.filter((node)=>node.type === "root");
+                    for (const root of roots){
+                        if (root.type === "root") {
+                            await (0, _processTailwindFeatures.default)(context)(root, result);
+                        }
+                    }
+                    return;
+                }
+                await (0, _processTailwindFeatures.default)(context)(root, result);
+            },
+            _sharedState.env.DEBUG && function(root) {
+                console.timeEnd("JIT TOTAL");
+                console.log("\n");
+                return root;
+            }
+        ].filter(Boolean)
+    };
+};
+module.exports.postcss = true;
Index: frontend/node_modules/tailwindcss/lib/postcss-plugins/nesting/README.md
===================================================================
--- frontend/node_modules/tailwindcss/lib/postcss-plugins/nesting/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/postcss-plugins/nesting/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,42 @@
+# tailwindcss/nesting
+
+This is a PostCSS plugin that wraps [postcss-nested](https://github.com/postcss/postcss-nested) or [postcss-nesting](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting) and acts as a compatibility layer to make sure your nesting plugin of choice properly understands Tailwind's custom syntax like `@apply` and `@screen`.
+
+Add it to your PostCSS configuration, somewhere before Tailwind itself:
+
+```js
+// postcss.config.js
+module.exports = {
+  plugins: [
+    require('postcss-import'),
+    require('tailwindcss/nesting'),
+    require('tailwindcss'),
+    require('autoprefixer'),
+  ]
+}
+```
+
+By default, it uses the [postcss-nested](https://github.com/postcss/postcss-nested) plugin under the hood, which uses a Sass-like syntax and is the plugin that powers nesting support in the [Tailwind CSS plugin API](https://tailwindcss.com/docs/plugins#css-in-js-syntax).
+
+If you'd rather use [postcss-nesting](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting) (which is based on the work-in-progress [CSS Nesting](https://drafts.csswg.org/css-nesting-1/) specification), first install the plugin alongside:
+
+```shell
+npm install postcss-nesting
+```
+
+Then pass the plugin itself as an argument to `tailwindcss/nesting` in your PostCSS configuration:
+
+```js
+// postcss.config.js
+module.exports = {
+  plugins: [
+    require('postcss-import'),
+    require('tailwindcss/nesting')(require('postcss-nesting')),
+    require('tailwindcss'),
+    require('autoprefixer'),
+  ]
+}
+```
+
+This can also be helpful if for whatever reason you need to use a very specific version of `postcss-nested` and want to override the version we bundle with `tailwindcss/nesting` itself.
+
Index: frontend/node_modules/tailwindcss/lib/postcss-plugins/nesting/index.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/postcss-plugins/nesting/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/postcss-plugins/nesting/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _plugin = require("./plugin");
+const _default = Object.assign(function(opts) {
+    return {
+        postcssPlugin: "tailwindcss/nesting",
+        Once (root, { result  }) {
+            return (0, _plugin.nesting)(opts)(root, result);
+        }
+    };
+}, {
+    postcss: true
+});
Index: frontend/node_modules/tailwindcss/lib/postcss-plugins/nesting/plugin.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/postcss-plugins/nesting/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/postcss-plugins/nesting/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,89 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "nesting", {
+    enumerable: true,
+    get: function() {
+        return nesting;
+    }
+});
+const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
+const _postcssnested = /*#__PURE__*/ _interop_require_default(require("postcss-nested"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function nesting(opts = _postcssnested.default) {
+    return (root, result)=>{
+        root.walkAtRules("screen", (rule)=>{
+            rule.name = "media";
+            rule.params = `screen(${rule.params})`;
+        });
+        root.walkAtRules("apply", (rule)=>{
+            rule.before(_postcss.default.decl({
+                prop: "__apply",
+                value: rule.params,
+                source: rule.source
+            }));
+            rule.remove();
+        });
+        let plugin = (()=>{
+            var _opts_hasOwnProperty;
+            if (typeof opts === "function" || typeof opts === "object" && (opts === null || opts === void 0 ? void 0 : (_opts_hasOwnProperty = opts.hasOwnProperty) === null || _opts_hasOwnProperty === void 0 ? void 0 : _opts_hasOwnProperty.call(opts, "postcssPlugin"))) {
+                return opts;
+            }
+            if (typeof opts === "string") {
+                return require(opts);
+            }
+            if (Object.keys(opts).length <= 0) {
+                return _postcssnested.default;
+            }
+            throw new Error("tailwindcss/nesting should be loaded with a nesting plugin.");
+        })();
+        (0, _postcss.default)([
+            plugin
+        ]).process(root, result.opts).sync();
+        root.walkDecls("__apply", (decl)=>{
+            decl.before(_postcss.default.atRule({
+                name: "apply",
+                params: decl.value,
+                source: decl.source
+            }));
+            decl.remove();
+        });
+        /**
+     * Use a private PostCSS API to remove the "clean" flag from the entire AST.
+     * This is done because running process() on the AST will set the "clean"
+     * flag on all nodes, which we don't want.
+     *
+     * This causes downstream plugins using the visitor API to be skipped.
+     *
+     * This is guarded because the PostCSS API is not public
+     * and may change in future versions of PostCSS.
+     *
+     * See https://github.com/postcss/postcss/issues/1712 for more details
+     *
+     * @param {import('postcss').Node} node
+     */ function markDirty(node) {
+            if (!("markDirty" in node)) {
+                return;
+            }
+            // Traverse the tree down to the leaf nodes
+            if (node.nodes) {
+                node.nodes.forEach((n)=>markDirty(n));
+            }
+            // If it's a leaf node mark it as dirty
+            // We do this here because marking a node as dirty
+            // will walk up the tree and mark all parents as dirty
+            // resulting in a lot of unnecessary work if we did this
+            // for every single node
+            if (!node.nodes) {
+                node.markDirty();
+            }
+        }
+        markDirty(root);
+        return root;
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/processTailwindFeatures.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/processTailwindFeatures.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/processTailwindFeatures.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,62 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return processTailwindFeatures;
+    }
+});
+const _normalizeTailwindDirectives = /*#__PURE__*/ _interop_require_default(require("./lib/normalizeTailwindDirectives"));
+const _expandTailwindAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/expandTailwindAtRules"));
+const _expandApplyAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/expandApplyAtRules"));
+const _evaluateTailwindFunctions = /*#__PURE__*/ _interop_require_default(require("./lib/evaluateTailwindFunctions"));
+const _substituteScreenAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/substituteScreenAtRules"));
+const _resolveDefaultsAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/resolveDefaultsAtRules"));
+const _collapseAdjacentRules = /*#__PURE__*/ _interop_require_default(require("./lib/collapseAdjacentRules"));
+const _collapseDuplicateDeclarations = /*#__PURE__*/ _interop_require_default(require("./lib/collapseDuplicateDeclarations"));
+const _partitionApplyAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/partitionApplyAtRules"));
+const _setupContextUtils = require("./lib/setupContextUtils");
+const _featureFlags = require("./featureFlags");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function processTailwindFeatures(setupContext) {
+    return async function(root, result) {
+        let { tailwindDirectives , applyDirectives  } = (0, _normalizeTailwindDirectives.default)(root);
+        // Partition apply rules that are found in the css
+        // itself.
+        (0, _partitionApplyAtRules.default)()(root, result);
+        let context = setupContext({
+            tailwindDirectives,
+            applyDirectives,
+            registerDependency (dependency) {
+                result.messages.push({
+                    plugin: "tailwindcss",
+                    parent: result.opts.from,
+                    ...dependency
+                });
+            },
+            createContext (tailwindConfig, changedContent) {
+                return (0, _setupContextUtils.createContext)(tailwindConfig, changedContent, root);
+            }
+        })(root, result);
+        if (context.tailwindConfig.separator === "-") {
+            throw new Error("The '-' character cannot be used as a custom separator in JIT mode due to parsing ambiguity. Please use another character like '_' instead.");
+        }
+        (0, _featureFlags.issueFlagNotices)(context.tailwindConfig);
+        await (0, _expandTailwindAtRules.default)(context)(root, result);
+        // Partition apply rules that are generated by
+        // addComponents, addUtilities and so on.
+        (0, _partitionApplyAtRules.default)()(root, result);
+        (0, _expandApplyAtRules.default)(context)(root, result);
+        (0, _evaluateTailwindFunctions.default)(context)(root, result);
+        (0, _substituteScreenAtRules.default)(context)(root, result);
+        (0, _resolveDefaultsAtRules.default)(context)(root, result);
+        (0, _collapseAdjacentRules.default)(context)(root, result);
+        (0, _collapseDuplicateDeclarations.default)(context)(root, result);
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/public/colors.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/public/colors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/public/colors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,355 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _log = /*#__PURE__*/ _interop_require_default(require("../util/log"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function warn({ version , from , to  }) {
+    _log.default.warn(`${from}-color-renamed`, [
+        `As of Tailwind CSS ${version}, \`${from}\` has been renamed to \`${to}\`.`,
+        "Update your configuration file to silence this warning."
+    ]);
+}
+const _default = {
+    inherit: "inherit",
+    current: "currentColor",
+    transparent: "transparent",
+    black: "#000",
+    white: "#fff",
+    slate: {
+        50: "#f8fafc",
+        100: "#f1f5f9",
+        200: "#e2e8f0",
+        300: "#cbd5e1",
+        400: "#94a3b8",
+        500: "#64748b",
+        600: "#475569",
+        700: "#334155",
+        800: "#1e293b",
+        900: "#0f172a",
+        950: "#020617"
+    },
+    gray: {
+        50: "#f9fafb",
+        100: "#f3f4f6",
+        200: "#e5e7eb",
+        300: "#d1d5db",
+        400: "#9ca3af",
+        500: "#6b7280",
+        600: "#4b5563",
+        700: "#374151",
+        800: "#1f2937",
+        900: "#111827",
+        950: "#030712"
+    },
+    zinc: {
+        50: "#fafafa",
+        100: "#f4f4f5",
+        200: "#e4e4e7",
+        300: "#d4d4d8",
+        400: "#a1a1aa",
+        500: "#71717a",
+        600: "#52525b",
+        700: "#3f3f46",
+        800: "#27272a",
+        900: "#18181b",
+        950: "#09090b"
+    },
+    neutral: {
+        50: "#fafafa",
+        100: "#f5f5f5",
+        200: "#e5e5e5",
+        300: "#d4d4d4",
+        400: "#a3a3a3",
+        500: "#737373",
+        600: "#525252",
+        700: "#404040",
+        800: "#262626",
+        900: "#171717",
+        950: "#0a0a0a"
+    },
+    stone: {
+        50: "#fafaf9",
+        100: "#f5f5f4",
+        200: "#e7e5e4",
+        300: "#d6d3d1",
+        400: "#a8a29e",
+        500: "#78716c",
+        600: "#57534e",
+        700: "#44403c",
+        800: "#292524",
+        900: "#1c1917",
+        950: "#0c0a09"
+    },
+    red: {
+        50: "#fef2f2",
+        100: "#fee2e2",
+        200: "#fecaca",
+        300: "#fca5a5",
+        400: "#f87171",
+        500: "#ef4444",
+        600: "#dc2626",
+        700: "#b91c1c",
+        800: "#991b1b",
+        900: "#7f1d1d",
+        950: "#450a0a"
+    },
+    orange: {
+        50: "#fff7ed",
+        100: "#ffedd5",
+        200: "#fed7aa",
+        300: "#fdba74",
+        400: "#fb923c",
+        500: "#f97316",
+        600: "#ea580c",
+        700: "#c2410c",
+        800: "#9a3412",
+        900: "#7c2d12",
+        950: "#431407"
+    },
+    amber: {
+        50: "#fffbeb",
+        100: "#fef3c7",
+        200: "#fde68a",
+        300: "#fcd34d",
+        400: "#fbbf24",
+        500: "#f59e0b",
+        600: "#d97706",
+        700: "#b45309",
+        800: "#92400e",
+        900: "#78350f",
+        950: "#451a03"
+    },
+    yellow: {
+        50: "#fefce8",
+        100: "#fef9c3",
+        200: "#fef08a",
+        300: "#fde047",
+        400: "#facc15",
+        500: "#eab308",
+        600: "#ca8a04",
+        700: "#a16207",
+        800: "#854d0e",
+        900: "#713f12",
+        950: "#422006"
+    },
+    lime: {
+        50: "#f7fee7",
+        100: "#ecfccb",
+        200: "#d9f99d",
+        300: "#bef264",
+        400: "#a3e635",
+        500: "#84cc16",
+        600: "#65a30d",
+        700: "#4d7c0f",
+        800: "#3f6212",
+        900: "#365314",
+        950: "#1a2e05"
+    },
+    green: {
+        50: "#f0fdf4",
+        100: "#dcfce7",
+        200: "#bbf7d0",
+        300: "#86efac",
+        400: "#4ade80",
+        500: "#22c55e",
+        600: "#16a34a",
+        700: "#15803d",
+        800: "#166534",
+        900: "#14532d",
+        950: "#052e16"
+    },
+    emerald: {
+        50: "#ecfdf5",
+        100: "#d1fae5",
+        200: "#a7f3d0",
+        300: "#6ee7b7",
+        400: "#34d399",
+        500: "#10b981",
+        600: "#059669",
+        700: "#047857",
+        800: "#065f46",
+        900: "#064e3b",
+        950: "#022c22"
+    },
+    teal: {
+        50: "#f0fdfa",
+        100: "#ccfbf1",
+        200: "#99f6e4",
+        300: "#5eead4",
+        400: "#2dd4bf",
+        500: "#14b8a6",
+        600: "#0d9488",
+        700: "#0f766e",
+        800: "#115e59",
+        900: "#134e4a",
+        950: "#042f2e"
+    },
+    cyan: {
+        50: "#ecfeff",
+        100: "#cffafe",
+        200: "#a5f3fc",
+        300: "#67e8f9",
+        400: "#22d3ee",
+        500: "#06b6d4",
+        600: "#0891b2",
+        700: "#0e7490",
+        800: "#155e75",
+        900: "#164e63",
+        950: "#083344"
+    },
+    sky: {
+        50: "#f0f9ff",
+        100: "#e0f2fe",
+        200: "#bae6fd",
+        300: "#7dd3fc",
+        400: "#38bdf8",
+        500: "#0ea5e9",
+        600: "#0284c7",
+        700: "#0369a1",
+        800: "#075985",
+        900: "#0c4a6e",
+        950: "#082f49"
+    },
+    blue: {
+        50: "#eff6ff",
+        100: "#dbeafe",
+        200: "#bfdbfe",
+        300: "#93c5fd",
+        400: "#60a5fa",
+        500: "#3b82f6",
+        600: "#2563eb",
+        700: "#1d4ed8",
+        800: "#1e40af",
+        900: "#1e3a8a",
+        950: "#172554"
+    },
+    indigo: {
+        50: "#eef2ff",
+        100: "#e0e7ff",
+        200: "#c7d2fe",
+        300: "#a5b4fc",
+        400: "#818cf8",
+        500: "#6366f1",
+        600: "#4f46e5",
+        700: "#4338ca",
+        800: "#3730a3",
+        900: "#312e81",
+        950: "#1e1b4b"
+    },
+    violet: {
+        50: "#f5f3ff",
+        100: "#ede9fe",
+        200: "#ddd6fe",
+        300: "#c4b5fd",
+        400: "#a78bfa",
+        500: "#8b5cf6",
+        600: "#7c3aed",
+        700: "#6d28d9",
+        800: "#5b21b6",
+        900: "#4c1d95",
+        950: "#2e1065"
+    },
+    purple: {
+        50: "#faf5ff",
+        100: "#f3e8ff",
+        200: "#e9d5ff",
+        300: "#d8b4fe",
+        400: "#c084fc",
+        500: "#a855f7",
+        600: "#9333ea",
+        700: "#7e22ce",
+        800: "#6b21a8",
+        900: "#581c87",
+        950: "#3b0764"
+    },
+    fuchsia: {
+        50: "#fdf4ff",
+        100: "#fae8ff",
+        200: "#f5d0fe",
+        300: "#f0abfc",
+        400: "#e879f9",
+        500: "#d946ef",
+        600: "#c026d3",
+        700: "#a21caf",
+        800: "#86198f",
+        900: "#701a75",
+        950: "#4a044e"
+    },
+    pink: {
+        50: "#fdf2f8",
+        100: "#fce7f3",
+        200: "#fbcfe8",
+        300: "#f9a8d4",
+        400: "#f472b6",
+        500: "#ec4899",
+        600: "#db2777",
+        700: "#be185d",
+        800: "#9d174d",
+        900: "#831843",
+        950: "#500724"
+    },
+    rose: {
+        50: "#fff1f2",
+        100: "#ffe4e6",
+        200: "#fecdd3",
+        300: "#fda4af",
+        400: "#fb7185",
+        500: "#f43f5e",
+        600: "#e11d48",
+        700: "#be123c",
+        800: "#9f1239",
+        900: "#881337",
+        950: "#4c0519"
+    },
+    get lightBlue () {
+        warn({
+            version: "v2.2",
+            from: "lightBlue",
+            to: "sky"
+        });
+        return this.sky;
+    },
+    get warmGray () {
+        warn({
+            version: "v3.0",
+            from: "warmGray",
+            to: "stone"
+        });
+        return this.stone;
+    },
+    get trueGray () {
+        warn({
+            version: "v3.0",
+            from: "trueGray",
+            to: "neutral"
+        });
+        return this.neutral;
+    },
+    get coolGray () {
+        warn({
+            version: "v3.0",
+            from: "coolGray",
+            to: "gray"
+        });
+        return this.gray;
+    },
+    get blueGray () {
+        warn({
+            version: "v3.0",
+            from: "blueGray",
+            to: "slate"
+        });
+        return this.slate;
+    }
+};
Index: frontend/node_modules/tailwindcss/lib/public/create-plugin.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/public/create-plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/public/create-plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _createPlugin = /*#__PURE__*/ _interop_require_default(require("../util/createPlugin"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+const _default = _createPlugin.default;
Index: frontend/node_modules/tailwindcss/lib/public/default-config.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/public/default-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/public/default-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _cloneDeep = require("../util/cloneDeep");
+const _configfull = /*#__PURE__*/ _interop_require_default(require("../../stubs/config.full"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+const _default = (0, _cloneDeep.cloneDeep)(_configfull.default);
Index: frontend/node_modules/tailwindcss/lib/public/default-theme.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/public/default-theme.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/public/default-theme.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _cloneDeep = require("../util/cloneDeep");
+const _configfull = /*#__PURE__*/ _interop_require_default(require("../../stubs/config.full"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+const _default = (0, _cloneDeep.cloneDeep)(_configfull.default.theme);
Index: frontend/node_modules/tailwindcss/lib/public/load-config.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/public/load-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/public/load-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _loadconfig = require("../lib/load-config");
+const _default = _loadconfig.loadConfig;
Index: frontend/node_modules/tailwindcss/lib/public/resolve-config.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/public/resolve-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/public/resolve-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return resolveConfig;
+    }
+});
+const _resolveConfig = /*#__PURE__*/ _interop_require_default(require("../util/resolveConfig"));
+const _getAllConfigs = /*#__PURE__*/ _interop_require_default(require("../util/getAllConfigs"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function resolveConfig(...configs) {
+    let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);
+    return (0, _resolveConfig.default)([
+        ...configs,
+        ...defaultConfigs
+    ]);
+}
Index: frontend/node_modules/tailwindcss/lib/util/applyImportantSelector.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/applyImportantSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/applyImportantSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,38 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "applyImportantSelector", {
+    enumerable: true,
+    get: function() {
+        return applyImportantSelector;
+    }
+});
+const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
+const _pseudoElements = require("./pseudoElements");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function applyImportantSelector(selector, important) {
+    let sel = (0, _postcssselectorparser.default)().astSync(selector);
+    sel.each((sel)=>{
+        // For nesting, we only need to wrap a selector with :is() if it has a top-level combinator,
+        // e.g. `.dark .text-white`, to be independent of DOM order. Any other selector, including
+        // combinators inside of pseudos like `:where()`, are ok to nest.
+        let shouldWrap = sel.nodes.some((node)=>node.type === "combinator");
+        if (shouldWrap) {
+            sel.nodes = [
+                _postcssselectorparser.default.pseudo({
+                    value: ":is",
+                    nodes: [
+                        sel.clone()
+                    ]
+                })
+            ];
+        }
+        (0, _pseudoElements.movePseudos)(sel);
+    });
+    return `${important} ${sel.toString()}`;
+}
Index: frontend/node_modules/tailwindcss/lib/util/bigSign.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/bigSign.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/bigSign.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return bigSign;
+    }
+});
+function bigSign(bigIntValue) {
+    return (bigIntValue > 0n) - (bigIntValue < 0n);
+}
Index: frontend/node_modules/tailwindcss/lib/util/buildMediaQuery.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/buildMediaQuery.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/buildMediaQuery.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,27 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return buildMediaQuery;
+    }
+});
+function buildMediaQuery(screens) {
+    screens = Array.isArray(screens) ? screens : [
+        screens
+    ];
+    return screens.map((screen)=>{
+        let values = screen.values.map((screen)=>{
+            if (screen.raw !== undefined) {
+                return screen.raw;
+            }
+            return [
+                screen.min && `(min-width: ${screen.min})`,
+                screen.max && `(max-width: ${screen.max})`
+            ].filter(Boolean).join(" and ");
+        });
+        return screen.not ? `not all and ${values}` : values;
+    }).join(", ");
+}
Index: frontend/node_modules/tailwindcss/lib/util/cloneDeep.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/cloneDeep.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/cloneDeep.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "cloneDeep", {
+    enumerable: true,
+    get: function() {
+        return cloneDeep;
+    }
+});
+function cloneDeep(value) {
+    if (Array.isArray(value)) {
+        return value.map((child)=>cloneDeep(child));
+    }
+    if (typeof value === "object" && value !== null) {
+        return Object.fromEntries(Object.entries(value).map(([k, v])=>[
+                k,
+                cloneDeep(v)
+            ]));
+    }
+    return value;
+}
Index: frontend/node_modules/tailwindcss/lib/util/cloneNodes.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/cloneNodes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/cloneNodes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,54 @@
+/**
+ * @param {import('postcss').Container[]} nodes
+ * @param {any} source
+ * @param {any} raws
+ * @returns {import('postcss').Container[]}
+ */ "use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return cloneNodes;
+    }
+});
+function cloneNodes(nodes, source = undefined, raws = undefined) {
+    return nodes.map((node)=>{
+        let cloned = node.clone();
+        if (raws !== undefined) {
+            cloned.raws.tailwind = {
+                ...cloned.raws.tailwind,
+                ...raws
+            };
+        }
+        if (source !== undefined) {
+            traverse(cloned, (node)=>{
+                var _node_raws_tailwind;
+                // Do not traverse nodes that have opted
+                // to preserve their original source
+                let shouldPreserveSource = ((_node_raws_tailwind = node.raws.tailwind) === null || _node_raws_tailwind === void 0 ? void 0 : _node_raws_tailwind.preserveSource) === true && node.source;
+                if (shouldPreserveSource) {
+                    return false;
+                }
+                // Otherwise we can safely replace the source
+                // And continue traversing
+                node.source = source;
+            });
+        }
+        return cloned;
+    });
+}
+/**
+ * Traverse a tree of nodes and don't traverse children if the callback
+ * returns false. Ideally we'd use Container#walk instead of this
+ * function but it stops traversing siblings too.
+ *
+ * @param {import('postcss').Container} node
+ * @param {(node: import('postcss').Container) => boolean} onNode
+ */ function traverse(node, onNode) {
+    if (onNode(node) !== false) {
+        var _node_each;
+        (_node_each = node.each) === null || _node_each === void 0 ? void 0 : _node_each.call(node, (child)=>traverse(child, onNode));
+    }
+}
Index: frontend/node_modules/tailwindcss/lib/util/color.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/color.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/color.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,116 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    parseColor: function() {
+        return parseColor;
+    },
+    formatColor: function() {
+        return formatColor;
+    }
+});
+const _colorNames = /*#__PURE__*/ _interop_require_default(require("./colorNames"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+let HEX = /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i;
+let SHORT_HEX = /^#([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i;
+let VALUE = /(?:\d+|\d*\.\d+)%?/;
+let SEP = /(?:\s*,\s*|\s+)/;
+let ALPHA_SEP = /\s*[,/]\s*/;
+let CUSTOM_PROPERTY = /var\(--(?:[^ )]*?)(?:,(?:[^ )]*?|var\(--[^ )]*?\)))?\)/;
+let RGB = new RegExp(`^(rgba?)\\(\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`);
+let HSL = new RegExp(`^(hsla?)\\(\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`);
+function parseColor(value, { loose =false  } = {}) {
+    var _match_, _match__toString;
+    if (typeof value !== "string") {
+        return null;
+    }
+    value = value.trim();
+    if (value === "transparent") {
+        return {
+            mode: "rgb",
+            color: [
+                "0",
+                "0",
+                "0"
+            ],
+            alpha: "0"
+        };
+    }
+    if (value in _colorNames.default) {
+        return {
+            mode: "rgb",
+            color: _colorNames.default[value].map((v)=>v.toString())
+        };
+    }
+    let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[
+            "#",
+            r,
+            r,
+            g,
+            g,
+            b,
+            b,
+            a ? a + a : ""
+        ].join("")).match(HEX);
+    if (hex !== null) {
+        return {
+            mode: "rgb",
+            color: [
+                parseInt(hex[1], 16),
+                parseInt(hex[2], 16),
+                parseInt(hex[3], 16)
+            ].map((v)=>v.toString()),
+            alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined
+        };
+    }
+    var _value_match;
+    let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL);
+    if (match === null) {
+        return null;
+    }
+    let color = [
+        match[2],
+        match[3],
+        match[4]
+    ].filter(Boolean).map((v)=>v.toString());
+    // rgba(var(--my-color), 0.1)
+    // hsla(var(--my-color), 0.1)
+    if (color.length === 2 && color[0].startsWith("var(")) {
+        return {
+            mode: match[1],
+            color: [
+                color[0]
+            ],
+            alpha: color[1]
+        };
+    }
+    if (!loose && color.length !== 3) {
+        return null;
+    }
+    if (color.length < 3 && !color.some((part)=>/^var\(.*?\)$/.test(part))) {
+        return null;
+    }
+    return {
+        mode: match[1],
+        color,
+        alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_)
+    };
+}
+function formatColor({ mode , color , alpha  }) {
+    let hasAlpha = alpha !== undefined;
+    if (mode === "rgba" || mode === "hsla") {
+        return `${mode}(${color.join(", ")}${hasAlpha ? `, ${alpha}` : ""})`;
+    }
+    return `${mode}(${color.join(" ")}${hasAlpha ? ` / ${alpha}` : ""})`;
+}
Index: frontend/node_modules/tailwindcss/lib/util/colorNames.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/colorNames.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/colorNames.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,752 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _default = {
+    aliceblue: [
+        240,
+        248,
+        255
+    ],
+    antiquewhite: [
+        250,
+        235,
+        215
+    ],
+    aqua: [
+        0,
+        255,
+        255
+    ],
+    aquamarine: [
+        127,
+        255,
+        212
+    ],
+    azure: [
+        240,
+        255,
+        255
+    ],
+    beige: [
+        245,
+        245,
+        220
+    ],
+    bisque: [
+        255,
+        228,
+        196
+    ],
+    black: [
+        0,
+        0,
+        0
+    ],
+    blanchedalmond: [
+        255,
+        235,
+        205
+    ],
+    blue: [
+        0,
+        0,
+        255
+    ],
+    blueviolet: [
+        138,
+        43,
+        226
+    ],
+    brown: [
+        165,
+        42,
+        42
+    ],
+    burlywood: [
+        222,
+        184,
+        135
+    ],
+    cadetblue: [
+        95,
+        158,
+        160
+    ],
+    chartreuse: [
+        127,
+        255,
+        0
+    ],
+    chocolate: [
+        210,
+        105,
+        30
+    ],
+    coral: [
+        255,
+        127,
+        80
+    ],
+    cornflowerblue: [
+        100,
+        149,
+        237
+    ],
+    cornsilk: [
+        255,
+        248,
+        220
+    ],
+    crimson: [
+        220,
+        20,
+        60
+    ],
+    cyan: [
+        0,
+        255,
+        255
+    ],
+    darkblue: [
+        0,
+        0,
+        139
+    ],
+    darkcyan: [
+        0,
+        139,
+        139
+    ],
+    darkgoldenrod: [
+        184,
+        134,
+        11
+    ],
+    darkgray: [
+        169,
+        169,
+        169
+    ],
+    darkgreen: [
+        0,
+        100,
+        0
+    ],
+    darkgrey: [
+        169,
+        169,
+        169
+    ],
+    darkkhaki: [
+        189,
+        183,
+        107
+    ],
+    darkmagenta: [
+        139,
+        0,
+        139
+    ],
+    darkolivegreen: [
+        85,
+        107,
+        47
+    ],
+    darkorange: [
+        255,
+        140,
+        0
+    ],
+    darkorchid: [
+        153,
+        50,
+        204
+    ],
+    darkred: [
+        139,
+        0,
+        0
+    ],
+    darksalmon: [
+        233,
+        150,
+        122
+    ],
+    darkseagreen: [
+        143,
+        188,
+        143
+    ],
+    darkslateblue: [
+        72,
+        61,
+        139
+    ],
+    darkslategray: [
+        47,
+        79,
+        79
+    ],
+    darkslategrey: [
+        47,
+        79,
+        79
+    ],
+    darkturquoise: [
+        0,
+        206,
+        209
+    ],
+    darkviolet: [
+        148,
+        0,
+        211
+    ],
+    deeppink: [
+        255,
+        20,
+        147
+    ],
+    deepskyblue: [
+        0,
+        191,
+        255
+    ],
+    dimgray: [
+        105,
+        105,
+        105
+    ],
+    dimgrey: [
+        105,
+        105,
+        105
+    ],
+    dodgerblue: [
+        30,
+        144,
+        255
+    ],
+    firebrick: [
+        178,
+        34,
+        34
+    ],
+    floralwhite: [
+        255,
+        250,
+        240
+    ],
+    forestgreen: [
+        34,
+        139,
+        34
+    ],
+    fuchsia: [
+        255,
+        0,
+        255
+    ],
+    gainsboro: [
+        220,
+        220,
+        220
+    ],
+    ghostwhite: [
+        248,
+        248,
+        255
+    ],
+    gold: [
+        255,
+        215,
+        0
+    ],
+    goldenrod: [
+        218,
+        165,
+        32
+    ],
+    gray: [
+        128,
+        128,
+        128
+    ],
+    green: [
+        0,
+        128,
+        0
+    ],
+    greenyellow: [
+        173,
+        255,
+        47
+    ],
+    grey: [
+        128,
+        128,
+        128
+    ],
+    honeydew: [
+        240,
+        255,
+        240
+    ],
+    hotpink: [
+        255,
+        105,
+        180
+    ],
+    indianred: [
+        205,
+        92,
+        92
+    ],
+    indigo: [
+        75,
+        0,
+        130
+    ],
+    ivory: [
+        255,
+        255,
+        240
+    ],
+    khaki: [
+        240,
+        230,
+        140
+    ],
+    lavender: [
+        230,
+        230,
+        250
+    ],
+    lavenderblush: [
+        255,
+        240,
+        245
+    ],
+    lawngreen: [
+        124,
+        252,
+        0
+    ],
+    lemonchiffon: [
+        255,
+        250,
+        205
+    ],
+    lightblue: [
+        173,
+        216,
+        230
+    ],
+    lightcoral: [
+        240,
+        128,
+        128
+    ],
+    lightcyan: [
+        224,
+        255,
+        255
+    ],
+    lightgoldenrodyellow: [
+        250,
+        250,
+        210
+    ],
+    lightgray: [
+        211,
+        211,
+        211
+    ],
+    lightgreen: [
+        144,
+        238,
+        144
+    ],
+    lightgrey: [
+        211,
+        211,
+        211
+    ],
+    lightpink: [
+        255,
+        182,
+        193
+    ],
+    lightsalmon: [
+        255,
+        160,
+        122
+    ],
+    lightseagreen: [
+        32,
+        178,
+        170
+    ],
+    lightskyblue: [
+        135,
+        206,
+        250
+    ],
+    lightslategray: [
+        119,
+        136,
+        153
+    ],
+    lightslategrey: [
+        119,
+        136,
+        153
+    ],
+    lightsteelblue: [
+        176,
+        196,
+        222
+    ],
+    lightyellow: [
+        255,
+        255,
+        224
+    ],
+    lime: [
+        0,
+        255,
+        0
+    ],
+    limegreen: [
+        50,
+        205,
+        50
+    ],
+    linen: [
+        250,
+        240,
+        230
+    ],
+    magenta: [
+        255,
+        0,
+        255
+    ],
+    maroon: [
+        128,
+        0,
+        0
+    ],
+    mediumaquamarine: [
+        102,
+        205,
+        170
+    ],
+    mediumblue: [
+        0,
+        0,
+        205
+    ],
+    mediumorchid: [
+        186,
+        85,
+        211
+    ],
+    mediumpurple: [
+        147,
+        112,
+        219
+    ],
+    mediumseagreen: [
+        60,
+        179,
+        113
+    ],
+    mediumslateblue: [
+        123,
+        104,
+        238
+    ],
+    mediumspringgreen: [
+        0,
+        250,
+        154
+    ],
+    mediumturquoise: [
+        72,
+        209,
+        204
+    ],
+    mediumvioletred: [
+        199,
+        21,
+        133
+    ],
+    midnightblue: [
+        25,
+        25,
+        112
+    ],
+    mintcream: [
+        245,
+        255,
+        250
+    ],
+    mistyrose: [
+        255,
+        228,
+        225
+    ],
+    moccasin: [
+        255,
+        228,
+        181
+    ],
+    navajowhite: [
+        255,
+        222,
+        173
+    ],
+    navy: [
+        0,
+        0,
+        128
+    ],
+    oldlace: [
+        253,
+        245,
+        230
+    ],
+    olive: [
+        128,
+        128,
+        0
+    ],
+    olivedrab: [
+        107,
+        142,
+        35
+    ],
+    orange: [
+        255,
+        165,
+        0
+    ],
+    orangered: [
+        255,
+        69,
+        0
+    ],
+    orchid: [
+        218,
+        112,
+        214
+    ],
+    palegoldenrod: [
+        238,
+        232,
+        170
+    ],
+    palegreen: [
+        152,
+        251,
+        152
+    ],
+    paleturquoise: [
+        175,
+        238,
+        238
+    ],
+    palevioletred: [
+        219,
+        112,
+        147
+    ],
+    papayawhip: [
+        255,
+        239,
+        213
+    ],
+    peachpuff: [
+        255,
+        218,
+        185
+    ],
+    peru: [
+        205,
+        133,
+        63
+    ],
+    pink: [
+        255,
+        192,
+        203
+    ],
+    plum: [
+        221,
+        160,
+        221
+    ],
+    powderblue: [
+        176,
+        224,
+        230
+    ],
+    purple: [
+        128,
+        0,
+        128
+    ],
+    rebeccapurple: [
+        102,
+        51,
+        153
+    ],
+    red: [
+        255,
+        0,
+        0
+    ],
+    rosybrown: [
+        188,
+        143,
+        143
+    ],
+    royalblue: [
+        65,
+        105,
+        225
+    ],
+    saddlebrown: [
+        139,
+        69,
+        19
+    ],
+    salmon: [
+        250,
+        128,
+        114
+    ],
+    sandybrown: [
+        244,
+        164,
+        96
+    ],
+    seagreen: [
+        46,
+        139,
+        87
+    ],
+    seashell: [
+        255,
+        245,
+        238
+    ],
+    sienna: [
+        160,
+        82,
+        45
+    ],
+    silver: [
+        192,
+        192,
+        192
+    ],
+    skyblue: [
+        135,
+        206,
+        235
+    ],
+    slateblue: [
+        106,
+        90,
+        205
+    ],
+    slategray: [
+        112,
+        128,
+        144
+    ],
+    slategrey: [
+        112,
+        128,
+        144
+    ],
+    snow: [
+        255,
+        250,
+        250
+    ],
+    springgreen: [
+        0,
+        255,
+        127
+    ],
+    steelblue: [
+        70,
+        130,
+        180
+    ],
+    tan: [
+        210,
+        180,
+        140
+    ],
+    teal: [
+        0,
+        128,
+        128
+    ],
+    thistle: [
+        216,
+        191,
+        216
+    ],
+    tomato: [
+        255,
+        99,
+        71
+    ],
+    turquoise: [
+        64,
+        224,
+        208
+    ],
+    violet: [
+        238,
+        130,
+        238
+    ],
+    wheat: [
+        245,
+        222,
+        179
+    ],
+    white: [
+        255,
+        255,
+        255
+    ],
+    whitesmoke: [
+        245,
+        245,
+        245
+    ],
+    yellow: [
+        255,
+        255,
+        0
+    ],
+    yellowgreen: [
+        154,
+        205,
+        50
+    ]
+};
Index: frontend/node_modules/tailwindcss/lib/util/configurePlugins.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/configurePlugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/configurePlugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,23 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+function _default(pluginConfig, plugins) {
+    if (pluginConfig === undefined) {
+        return plugins;
+    }
+    const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [
+        ...new Set(plugins.filter((pluginName)=>{
+            return pluginConfig !== false && pluginConfig[pluginName] !== false;
+        }).concat(Object.keys(pluginConfig).filter((pluginName)=>{
+            return pluginConfig[pluginName] !== false;
+        })))
+    ];
+    return pluginNames;
+}
Index: frontend/node_modules/tailwindcss/lib/util/createPlugin.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/createPlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/createPlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,32 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+function createPlugin(plugin, config) {
+    return {
+        handler: plugin,
+        config
+    };
+}
+createPlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {
+    const optionsFunction = function(options) {
+        return {
+            __options: options,
+            handler: pluginFunction(options),
+            config: configFunction(options)
+        };
+    };
+    optionsFunction.__isOptionsFunction = true;
+    // Expose plugin dependencies so that `object-hash` returns a different
+    // value if anything here changes, to ensure a rebuild is triggered.
+    optionsFunction.__pluginFunction = pluginFunction;
+    optionsFunction.__configFunction = configFunction;
+    return optionsFunction;
+};
+const _default = createPlugin;
Index: frontend/node_modules/tailwindcss/lib/util/createUtilityPlugin.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/createUtilityPlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/createUtilityPlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,53 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return createUtilityPlugin;
+    }
+});
+const _transformThemeValue = /*#__PURE__*/ _interop_require_default(require("./transformThemeValue"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function createUtilityPlugin(themeKey, utilityVariations = [
+    [
+        themeKey,
+        [
+            themeKey
+        ]
+    ]
+], { filterDefault =false , ...options } = {}) {
+    let transformValue = (0, _transformThemeValue.default)(themeKey);
+    return function({ matchUtilities , theme  }) {
+        for (let utilityVariation of utilityVariations){
+            let group = Array.isArray(utilityVariation[0]) ? utilityVariation : [
+                utilityVariation
+            ];
+            var _theme;
+            matchUtilities(group.reduce((obj, [classPrefix, properties])=>{
+                return Object.assign(obj, {
+                    [classPrefix]: (value)=>{
+                        return properties.reduce((obj, name)=>{
+                            if (Array.isArray(name)) {
+                                return Object.assign(obj, {
+                                    [name[0]]: name[1]
+                                });
+                            }
+                            return Object.assign(obj, {
+                                [name]: transformValue(value)
+                            });
+                        }, {});
+                    }
+                });
+            }, {}), {
+                ...options,
+                values: filterDefault ? Object.fromEntries(Object.entries((_theme = theme(themeKey)) !== null && _theme !== void 0 ? _theme : {}).filter(([modifier])=>modifier !== "DEFAULT")) : theme(themeKey)
+            });
+        }
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/util/dataTypes.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/dataTypes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/dataTypes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,338 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    normalize: function() {
+        return normalize;
+    },
+    normalizeAttributeSelectors: function() {
+        return normalizeAttributeSelectors;
+    },
+    url: function() {
+        return url;
+    },
+    number: function() {
+        return number;
+    },
+    percentage: function() {
+        return percentage;
+    },
+    length: function() {
+        return length;
+    },
+    lineWidth: function() {
+        return lineWidth;
+    },
+    shadow: function() {
+        return shadow;
+    },
+    color: function() {
+        return color;
+    },
+    image: function() {
+        return image;
+    },
+    gradient: function() {
+        return gradient;
+    },
+    position: function() {
+        return position;
+    },
+    familyName: function() {
+        return familyName;
+    },
+    genericName: function() {
+        return genericName;
+    },
+    absoluteSize: function() {
+        return absoluteSize;
+    },
+    relativeSize: function() {
+        return relativeSize;
+    }
+});
+const _color = require("./color");
+const _mathoperators = require("./math-operators");
+const _parseBoxShadowValue = require("./parseBoxShadowValue");
+const _splitAtTopLevelOnly = require("./splitAtTopLevelOnly");
+let cssFunctions = [
+    "min",
+    "max",
+    "clamp",
+    "calc"
+];
+// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types
+function isCSSFunction(value) {
+    return cssFunctions.some((fn)=>new RegExp(`^${fn}\\(.*\\)`).test(value));
+}
+// These properties accept a `<dashed-ident>` as one of the values. This means that you can use them
+// as: `timeline-scope: --tl;`
+//
+// Without the `var(--tl)`, in these cases we don't want to normalize the value, and you should add
+// the `var()` yourself.
+//
+// More info:
+// - https://drafts.csswg.org/scroll-animations/#propdef-timeline-scope
+// - https://developer.mozilla.org/en-US/docs/Web/CSS/timeline-scope#dashed-ident
+// - https://www.w3.org/TR/css-anchor-position-1
+//
+const AUTO_VAR_INJECTION_EXCEPTIONS = new Set([
+    // Concrete properties
+    "scroll-timeline-name",
+    "timeline-scope",
+    "view-timeline-name",
+    "font-palette",
+    "anchor-name",
+    "anchor-scope",
+    "position-anchor",
+    "position-try-options",
+    // Shorthand properties
+    "scroll-timeline",
+    "animation-timeline",
+    "view-timeline",
+    "position-try"
+]);
+function normalize(value, context = null, isRoot = true) {
+    let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property);
+    if (value.startsWith("--") && !isVarException) {
+        return `var(${value})`;
+    }
+    // Keep raw strings if it starts with `url(`
+    if (value.includes("url(")) {
+        return value.split(/(url\(.*?\))/g).filter(Boolean).map((part)=>{
+            if (/^url\(.*?\)$/.test(part)) {
+                return part;
+            }
+            return normalize(part, context, false);
+        }).join("");
+    }
+    // Convert `_` to ` `, except for escaped underscores `\_`
+    value = value.replace(/([^\\])_+/g, (fullMatch, characterBefore)=>characterBefore + " ".repeat(fullMatch.length - 1)).replace(/^_/g, " ").replace(/\\_/g, "_");
+    // Remove leftover whitespace
+    if (isRoot) {
+        value = value.trim();
+    }
+    value = (0, _mathoperators.addWhitespaceAroundMathOperators)(value);
+    return value;
+}
+function normalizeAttributeSelectors(value) {
+    // Wrap values in attribute selectors with quotes
+    if (value.includes("=")) {
+        value = value.replace(/(=.*)/g, (_fullMatch, match)=>{
+            if (match[1] === "'" || match[1] === '"') {
+                return match;
+            }
+            // Handle regex flags on unescaped values
+            if (match.length > 2) {
+                let trailingCharacter = match[match.length - 1];
+                if (match[match.length - 2] === " " && (trailingCharacter === "i" || trailingCharacter === "I" || trailingCharacter === "s" || trailingCharacter === "S")) {
+                    return `="${match.slice(1, -2)}" ${match[match.length - 1]}`;
+                }
+            }
+            return `="${match.slice(1)}"`;
+        });
+    }
+    return value;
+}
+function url(value) {
+    return value.startsWith("url(");
+}
+function number(value) {
+    return !isNaN(Number(value)) || isCSSFunction(value);
+}
+function percentage(value) {
+    return value.endsWith("%") && number(value.slice(0, -1)) || isCSSFunction(value);
+}
+// Please refer to MDN when updating this list:
+// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units
+// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units
+let lengthUnits = [
+    "cm",
+    "mm",
+    "Q",
+    "in",
+    "pc",
+    "pt",
+    "px",
+    "em",
+    "ex",
+    "ch",
+    "rem",
+    "lh",
+    "rlh",
+    "vw",
+    "vh",
+    "vmin",
+    "vmax",
+    "vb",
+    "vi",
+    "svw",
+    "svh",
+    "lvw",
+    "lvh",
+    "dvw",
+    "dvh",
+    "cqw",
+    "cqh",
+    "cqi",
+    "cqb",
+    "cqmin",
+    "cqmax"
+];
+let lengthUnitsPattern = `(?:${lengthUnits.join("|")})`;
+function length(value) {
+    return value === "0" || new RegExp(`^[+-]?[0-9]*\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value);
+}
+let lineWidths = new Set([
+    "thin",
+    "medium",
+    "thick"
+]);
+function lineWidth(value) {
+    return lineWidths.has(value);
+}
+function shadow(value) {
+    let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));
+    for (let parsedShadow of parsedShadows){
+        if (!parsedShadow.valid) {
+            return false;
+        }
+    }
+    return true;
+}
+function color(value) {
+    let colors = 0;
+    let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, "_").every((part)=>{
+        part = normalize(part);
+        if (part.startsWith("var(")) return true;
+        if ((0, _color.parseColor)(part, {
+            loose: true
+        }) !== null) return colors++, true;
+        return false;
+    });
+    if (!result) return false;
+    return colors > 0;
+}
+function image(value) {
+    let images = 0;
+    let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part)=>{
+        part = normalize(part);
+        if (part.startsWith("var(")) return true;
+        if (url(part) || gradient(part) || [
+            "element(",
+            "image(",
+            "cross-fade(",
+            "image-set("
+        ].some((fn)=>part.startsWith(fn))) {
+            images++;
+            return true;
+        }
+        return false;
+    });
+    if (!result) return false;
+    return images > 0;
+}
+let gradientTypes = new Set([
+    "conic-gradient",
+    "linear-gradient",
+    "radial-gradient",
+    "repeating-conic-gradient",
+    "repeating-linear-gradient",
+    "repeating-radial-gradient"
+]);
+function gradient(value) {
+    value = normalize(value);
+    for (let type of gradientTypes){
+        if (value.startsWith(`${type}(`)) {
+            return true;
+        }
+    }
+    return false;
+}
+let validPositions = new Set([
+    "center",
+    "top",
+    "right",
+    "bottom",
+    "left"
+]);
+function position(value) {
+    let positions = 0;
+    let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, "_").every((part)=>{
+        part = normalize(part);
+        if (part.startsWith("var(")) return true;
+        if (validPositions.has(part) || length(part) || percentage(part)) {
+            positions++;
+            return true;
+        }
+        return false;
+    });
+    if (!result) return false;
+    return positions > 0;
+}
+function familyName(value) {
+    let fonts = 0;
+    let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part)=>{
+        part = normalize(part);
+        if (part.startsWith("var(")) return true;
+        // If it contains spaces, then it should be quoted
+        if (part.includes(" ")) {
+            if (!/(['"])([^"']+)\1/g.test(part)) {
+                return false;
+            }
+        }
+        // If it starts with a number, it's invalid
+        if (/^\d/g.test(part)) {
+            return false;
+        }
+        fonts++;
+        return true;
+    });
+    if (!result) return false;
+    return fonts > 0;
+}
+let genericNames = new Set([
+    "serif",
+    "sans-serif",
+    "monospace",
+    "cursive",
+    "fantasy",
+    "system-ui",
+    "ui-serif",
+    "ui-sans-serif",
+    "ui-monospace",
+    "ui-rounded",
+    "math",
+    "emoji",
+    "fangsong"
+]);
+function genericName(value) {
+    return genericNames.has(value);
+}
+let absoluteSizes = new Set([
+    "xx-small",
+    "x-small",
+    "small",
+    "medium",
+    "large",
+    "x-large",
+    "xx-large",
+    "xxx-large"
+]);
+function absoluteSize(value) {
+    return absoluteSizes.has(value);
+}
+let relativeSizes = new Set([
+    "larger",
+    "smaller"
+]);
+function relativeSize(value) {
+    return relativeSizes.has(value);
+}
Index: frontend/node_modules/tailwindcss/lib/util/defaults.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/defaults.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/defaults.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,27 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "defaults", {
+    enumerable: true,
+    get: function() {
+        return defaults;
+    }
+});
+function defaults(target, ...sources) {
+    for (let source of sources){
+        for(let k in source){
+            var _target_hasOwnProperty;
+            if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty = target.hasOwnProperty) === null || _target_hasOwnProperty === void 0 ? void 0 : _target_hasOwnProperty.call(target, k))) {
+                target[k] = source[k];
+            }
+        }
+        for (let k of Object.getOwnPropertySymbols(source)){
+            var _target_hasOwnProperty1;
+            if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty1 = target.hasOwnProperty) === null || _target_hasOwnProperty1 === void 0 ? void 0 : _target_hasOwnProperty1.call(target, k))) {
+                target[k] = source[k];
+            }
+        }
+    }
+    return target;
+}
Index: frontend/node_modules/tailwindcss/lib/util/escapeClassName.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/escapeClassName.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/escapeClassName.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return escapeClassName;
+    }
+});
+const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
+const _escapeCommas = /*#__PURE__*/ _interop_require_default(require("./escapeCommas"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function escapeClassName(className) {
+    var _node_raws;
+    let node = _postcssselectorparser.default.className();
+    node.value = className;
+    var _node_raws_value;
+    return (0, _escapeCommas.default)((_node_raws_value = node === null || node === void 0 ? void 0 : (_node_raws = node.raws) === null || _node_raws === void 0 ? void 0 : _node_raws.value) !== null && _node_raws_value !== void 0 ? _node_raws_value : node.value);
+}
Index: frontend/node_modules/tailwindcss/lib/util/escapeCommas.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/escapeCommas.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/escapeCommas.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return escapeCommas;
+    }
+});
+function escapeCommas(className) {
+    return className.replace(/\\,/g, "\\2c ");
+}
Index: frontend/node_modules/tailwindcss/lib/util/flattenColorPalette.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/flattenColorPalette.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/flattenColorPalette.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const flattenColorPalette = (colors)=>Object.assign({}, ...Object.entries(colors !== null && colors !== void 0 ? colors : {}).flatMap(([color, values])=>typeof values == "object" ? Object.entries(flattenColorPalette(values)).map(([number, hex])=>({
+                [color + (number === "DEFAULT" ? "" : `-${number}`)]: hex
+            })) : [
+            {
+                [`${color}`]: values
+            }
+        ]));
+const _default = flattenColorPalette;
Index: frontend/node_modules/tailwindcss/lib/util/formatVariantSelector.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/formatVariantSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/formatVariantSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,270 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    formatVariantSelector: function() {
+        return formatVariantSelector;
+    },
+    eliminateIrrelevantSelectors: function() {
+        return eliminateIrrelevantSelectors;
+    },
+    finalizeSelector: function() {
+        return finalizeSelector;
+    },
+    handleMergePseudo: function() {
+        return handleMergePseudo;
+    }
+});
+const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
+const _unesc = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser/dist/util/unesc"));
+const _escapeClassName = /*#__PURE__*/ _interop_require_default(require("../util/escapeClassName"));
+const _prefixSelector = /*#__PURE__*/ _interop_require_default(require("../util/prefixSelector"));
+const _pseudoElements = require("./pseudoElements");
+const _splitAtTopLevelOnly = require("./splitAtTopLevelOnly");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+/** @typedef {import('postcss-selector-parser').Root} Root */ /** @typedef {import('postcss-selector-parser').Selector} Selector */ /** @typedef {import('postcss-selector-parser').Pseudo} Pseudo */ /** @typedef {import('postcss-selector-parser').Node} Node */ /** @typedef {{format: string, respectPrefix: boolean}[]} RawFormats */ /** @typedef {import('postcss-selector-parser').Root} ParsedFormats */ /** @typedef {RawFormats | ParsedFormats} AcceptedFormats */ let MERGE = ":merge";
+function formatVariantSelector(formats, { context , candidate  }) {
+    var _context_tailwindConfig_prefix;
+    let prefix = (_context_tailwindConfig_prefix = context === null || context === void 0 ? void 0 : context.tailwindConfig.prefix) !== null && _context_tailwindConfig_prefix !== void 0 ? _context_tailwindConfig_prefix : "";
+    // Parse the format selector into an AST
+    let parsedFormats = formats.map((format)=>{
+        let ast = (0, _postcssselectorparser.default)().astSync(format.format);
+        return {
+            ...format,
+            ast: format.respectPrefix ? (0, _prefixSelector.default)(prefix, ast) : ast
+        };
+    });
+    // We start with the candidate selector
+    let formatAst = _postcssselectorparser.default.root({
+        nodes: [
+            _postcssselectorparser.default.selector({
+                nodes: [
+                    _postcssselectorparser.default.className({
+                        value: (0, _escapeClassName.default)(candidate)
+                    })
+                ]
+            })
+        ]
+    });
+    // And iteratively merge each format selector into the candidate selector
+    for (let { ast  } of parsedFormats){
+        [formatAst, ast] = handleMergePseudo(formatAst, ast);
+        // 2. Merge the format selector into the current selector AST
+        ast.walkNesting((nesting)=>nesting.replaceWith(...formatAst.nodes[0].nodes));
+        // 3. Keep going!
+        formatAst = ast;
+    }
+    return formatAst;
+}
+/**
+ * Given any node in a selector this gets the "simple" selector it's a part of
+ * A simple selector is just a list of nodes without any combinators
+ * Technically :is(), :not(), :has(), etc… can have combinators but those are nested
+ * inside the relevant node and won't be picked up so they're fine to ignore
+ *
+ * @param {Node} node
+ * @returns {Node[]}
+ **/ function simpleSelectorForNode(node) {
+    /** @type {Node[]} */ let nodes = [];
+    // Walk backwards until we hit a combinator node (or the start)
+    while(node.prev() && node.prev().type !== "combinator"){
+        node = node.prev();
+    }
+    // Now record all non-combinator nodes until we hit one (or the end)
+    while(node && node.type !== "combinator"){
+        nodes.push(node);
+        node = node.next();
+    }
+    return nodes;
+}
+/**
+ * Resorts the nodes in a selector to ensure they're in the correct order
+ * Tags go before classes, and pseudo classes go after classes
+ *
+ * @param {Selector} sel
+ * @returns {Selector}
+ **/ function resortSelector(sel) {
+    sel.sort((a, b)=>{
+        if (a.type === "tag" && b.type === "class") {
+            return -1;
+        } else if (a.type === "class" && b.type === "tag") {
+            return 1;
+        } else if (a.type === "class" && b.type === "pseudo" && b.value.startsWith("::")) {
+            return -1;
+        } else if (a.type === "pseudo" && a.value.startsWith("::") && b.type === "class") {
+            return 1;
+        }
+        return sel.index(a) - sel.index(b);
+    });
+    return sel;
+}
+function eliminateIrrelevantSelectors(sel, base) {
+    let hasClassesMatchingCandidate = false;
+    sel.walk((child)=>{
+        if (child.type === "class" && child.value === base) {
+            hasClassesMatchingCandidate = true;
+            return false // Stop walking
+            ;
+        }
+    });
+    if (!hasClassesMatchingCandidate) {
+        sel.remove();
+    }
+// We do NOT recursively eliminate sub selectors that don't have the base class
+// as this is NOT a safe operation. For example, if we have:
+// `.space-x-2 > :not([hidden]) ~ :not([hidden])`
+// We cannot remove the [hidden] from the :not() because it would change the
+// meaning of the selector.
+// TODO: Can we do this for :matches, :is, and :where?
+}
+function finalizeSelector(current, formats, { context , candidate , base  }) {
+    var _context_tailwindConfig;
+    var _context_tailwindConfig_separator;
+    let separator = (_context_tailwindConfig_separator = context === null || context === void 0 ? void 0 : (_context_tailwindConfig = context.tailwindConfig) === null || _context_tailwindConfig === void 0 ? void 0 : _context_tailwindConfig.separator) !== null && _context_tailwindConfig_separator !== void 0 ? _context_tailwindConfig_separator : ":";
+    // Split by the separator, but ignore the separator inside square brackets:
+    //
+    // E.g.: dark:lg:hover:[paint-order:markers]
+    //           ┬  ┬     ┬            ┬
+    //           │  │     │            ╰── We will not split here
+    //           ╰──┴─────┴─────────────── We will split here
+    //
+    base = base !== null && base !== void 0 ? base : (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(candidate, separator).pop();
+    // Parse the selector into an AST
+    let selector = (0, _postcssselectorparser.default)().astSync(current);
+    // Normalize escaped classes, e.g.:
+    //
+    // The idea would be to replace the escaped `base` in the selector with the
+    // `format`. However, in css you can escape the same selector in a few
+    // different ways. This would result in different strings and therefore we
+    // can't replace it properly.
+    //
+    //               base: bg-[rgb(255,0,0)]
+    //   base in selector: bg-\\[rgb\\(255\\,0\\,0\\)\\]
+    //       escaped base: bg-\\[rgb\\(255\\2c 0\\2c 0\\)\\]
+    //
+    selector.walkClasses((node)=>{
+        if (node.raws && node.value.includes(base)) {
+            node.raws.value = (0, _escapeClassName.default)((0, _unesc.default)(node.raws.value));
+        }
+    });
+    // Remove extraneous selectors that do not include the base candidate
+    selector.each((sel)=>eliminateIrrelevantSelectors(sel, base));
+    // If ffter eliminating irrelevant selectors, we end up with nothing
+    // Then the whole "rule" this is associated with does not need to exist
+    // We use `null` as a marker value for that case
+    if (selector.length === 0) {
+        return null;
+    }
+    // If there are no formats that means there were no variants added to the candidate
+    // so we can just return the selector as-is
+    let formatAst = Array.isArray(formats) ? formatVariantSelector(formats, {
+        context,
+        candidate
+    }) : formats;
+    if (formatAst === null) {
+        return selector.toString();
+    }
+    let simpleStart = _postcssselectorparser.default.comment({
+        value: "/*__simple__*/"
+    });
+    let simpleEnd = _postcssselectorparser.default.comment({
+        value: "/*__simple__*/"
+    });
+    // We can safely replace the escaped base now, since the `base` section is
+    // now in a normalized escaped value.
+    selector.walkClasses((node)=>{
+        if (node.value !== base) {
+            return;
+        }
+        let parent = node.parent;
+        let formatNodes = formatAst.nodes[0].nodes;
+        // Perf optimization: if the parent is a single class we can just replace it and be done
+        if (parent.nodes.length === 1) {
+            node.replaceWith(...formatNodes);
+            return;
+        }
+        let simpleSelector = simpleSelectorForNode(node);
+        parent.insertBefore(simpleSelector[0], simpleStart);
+        parent.insertAfter(simpleSelector[simpleSelector.length - 1], simpleEnd);
+        for (let child of formatNodes){
+            parent.insertBefore(simpleSelector[0], child.clone());
+        }
+        node.remove();
+        // Re-sort the simple selector to ensure it's in the correct order
+        simpleSelector = simpleSelectorForNode(simpleStart);
+        let firstNode = parent.index(simpleStart);
+        parent.nodes.splice(firstNode, simpleSelector.length, ...resortSelector(_postcssselectorparser.default.selector({
+            nodes: simpleSelector
+        })).nodes);
+        simpleStart.remove();
+        simpleEnd.remove();
+    });
+    // Remove unnecessary pseudo selectors that we used as placeholders
+    selector.walkPseudos((p)=>{
+        if (p.value === MERGE) {
+            p.replaceWith(p.nodes);
+        }
+    });
+    // Move pseudo elements to the end of the selector (if necessary)
+    selector.each((sel)=>(0, _pseudoElements.movePseudos)(sel));
+    return selector.toString();
+}
+function handleMergePseudo(selector, format) {
+    /** @type {{pseudo: Pseudo, value: string}[]} */ let merges = [];
+    // Find all :merge() pseudo-classes in `selector`
+    selector.walkPseudos((pseudo)=>{
+        if (pseudo.value === MERGE) {
+            merges.push({
+                pseudo,
+                value: pseudo.nodes[0].toString()
+            });
+        }
+    });
+    // Find all :merge() "attachments" in `format` and attach them to the matching selector in `selector`
+    format.walkPseudos((pseudo)=>{
+        if (pseudo.value !== MERGE) {
+            return;
+        }
+        let value = pseudo.nodes[0].toString();
+        // Does `selector` contain a :merge() pseudo-class with the same value?
+        let existing = merges.find((merge)=>merge.value === value);
+        // Nope so there's nothing to do
+        if (!existing) {
+            return;
+        }
+        // Everything after `:merge()` up to the next combinator is what is attached to the merged selector
+        let attachments = [];
+        let next = pseudo.next();
+        while(next && next.type !== "combinator"){
+            attachments.push(next);
+            next = next.next();
+        }
+        let combinator = next;
+        existing.pseudo.parent.insertAfter(existing.pseudo, _postcssselectorparser.default.selector({
+            nodes: attachments.map((node)=>node.clone())
+        }));
+        pseudo.remove();
+        attachments.forEach((node)=>node.remove());
+        // What about this case:
+        // :merge(.group):focus > &
+        // :merge(.group):hover &
+        if (combinator && combinator.type === "combinator") {
+            combinator.remove();
+        }
+    });
+    return [
+        selector,
+        format
+    ];
+}
Index: frontend/node_modules/tailwindcss/lib/util/getAllConfigs.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/getAllConfigs.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/getAllConfigs.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,50 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return getAllConfigs;
+    }
+});
+const _configfull = /*#__PURE__*/ _interop_require_default(require("../../stubs/config.full.js"));
+const _featureFlags = require("../featureFlags");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function getAllConfigs(config) {
+    var _config_presets;
+    const configs = ((_config_presets = config === null || config === void 0 ? void 0 : config.presets) !== null && _config_presets !== void 0 ? _config_presets : [
+        _configfull.default
+    ]).slice().reverse().flatMap((preset)=>getAllConfigs(preset instanceof Function ? preset() : preset));
+    const features = {
+        // Add experimental configs here...
+        respectDefaultRingColorOpacity: {
+            theme: {
+                ringColor: ({ theme  })=>({
+                        DEFAULT: "#3b82f67f",
+                        ...theme("colors")
+                    })
+            }
+        },
+        disableColorOpacityUtilitiesByDefault: {
+            corePlugins: {
+                backgroundOpacity: false,
+                borderOpacity: false,
+                divideOpacity: false,
+                placeholderOpacity: false,
+                ringOpacity: false,
+                textOpacity: false
+            }
+        }
+    };
+    const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);
+    return [
+        config,
+        ...experimentals,
+        ...configs
+    ];
+}
Index: frontend/node_modules/tailwindcss/lib/util/hashConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/hashConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/hashConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return hashConfig;
+    }
+});
+const _objecthash = /*#__PURE__*/ _interop_require_default(require("object-hash"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function hashConfig(config) {
+    return (0, _objecthash.default)(config, {
+        ignoreUnknown: true
+    });
+}
Index: frontend/node_modules/tailwindcss/lib/util/isKeyframeRule.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/isKeyframeRule.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/isKeyframeRule.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return isKeyframeRule;
+    }
+});
+function isKeyframeRule(rule) {
+    return rule.parent && rule.parent.type === "atrule" && /keyframes$/.test(rule.parent.name);
+}
Index: frontend/node_modules/tailwindcss/lib/util/isPlainObject.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/isPlainObject.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/isPlainObject.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return isPlainObject;
+    }
+});
+function isPlainObject(value) {
+    if (Object.prototype.toString.call(value) !== "[object Object]") {
+        return false;
+    }
+    const prototype = Object.getPrototypeOf(value);
+    return prototype === null || Object.getPrototypeOf(prototype) === null;
+}
Index: frontend/node_modules/tailwindcss/lib/util/isSyntacticallyValidPropertyValue.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/isSyntacticallyValidPropertyValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/isSyntacticallyValidPropertyValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,74 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, // Arbitrary values must contain balanced brackets (), [] and {}. Escaped
+// values don't count, and brackets inside quotes also don't count.
+//
+// E.g.: w-[this-is]w-[weird-and-invalid]
+// E.g.: w-[this-is\\]w-\\[weird-but-valid]
+// E.g.: content-['this-is-also-valid]-weirdly-enough']
+"default", {
+    enumerable: true,
+    get: function() {
+        return isSyntacticallyValidPropertyValue;
+    }
+});
+let matchingBrackets = new Map([
+    [
+        "{",
+        "}"
+    ],
+    [
+        "[",
+        "]"
+    ],
+    [
+        "(",
+        ")"
+    ]
+]);
+let inverseMatchingBrackets = new Map(Array.from(matchingBrackets.entries()).map(([k, v])=>[
+        v,
+        k
+    ]));
+let quotes = new Set([
+    '"',
+    "'",
+    "`"
+]);
+function isSyntacticallyValidPropertyValue(value) {
+    let stack = [];
+    let inQuotes = false;
+    for(let i = 0; i < value.length; i++){
+        let char = value[i];
+        if (char === ":" && !inQuotes && stack.length === 0) {
+            return false;
+        }
+        // Non-escaped quotes allow us to "allow" anything in between
+        if (quotes.has(char) && value[i - 1] !== "\\") {
+            inQuotes = !inQuotes;
+        }
+        if (inQuotes) continue;
+        if (value[i - 1] === "\\") continue; // Escaped
+        if (matchingBrackets.has(char)) {
+            stack.push(char);
+        } else if (inverseMatchingBrackets.has(char)) {
+            let inverse = inverseMatchingBrackets.get(char);
+            // Nothing to pop from, therefore it is unbalanced
+            if (stack.length <= 0) {
+                return false;
+            }
+            // Popped value must match the inverse value, otherwise it is unbalanced
+            if (stack.pop() !== inverse) {
+                return false;
+            }
+        }
+    }
+    // If there is still something on the stack, it is also unbalanced
+    if (stack.length > 0) {
+        return false;
+    }
+    // All good, totally balanced!
+    return true;
+}
Index: frontend/node_modules/tailwindcss/lib/util/log.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/log.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/log.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,61 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    dim: function() {
+        return dim;
+    },
+    default: function() {
+        return _default;
+    }
+});
+const _picocolors = /*#__PURE__*/ _interop_require_default(require("picocolors"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+let alreadyShown = new Set();
+function log(type, messages, key) {
+    if (typeof process !== "undefined" && process.env.JEST_WORKER_ID) return;
+    if (key && alreadyShown.has(key)) return;
+    if (key) alreadyShown.add(key);
+    console.warn("");
+    messages.forEach((message)=>console.warn(type, "-", message));
+}
+function dim(input) {
+    return _picocolors.default.dim(input);
+}
+const _default = {
+    info (key, messages) {
+        log(_picocolors.default.bold(_picocolors.default.cyan("info")), ...Array.isArray(key) ? [
+            key
+        ] : [
+            messages,
+            key
+        ]);
+    },
+    warn (key, messages) {
+        log(_picocolors.default.bold(_picocolors.default.yellow("warn")), ...Array.isArray(key) ? [
+            key
+        ] : [
+            messages,
+            key
+        ]);
+    },
+    risk (key, messages) {
+        log(_picocolors.default.bold(_picocolors.default.magenta("risk")), ...Array.isArray(key) ? [
+            key
+        ] : [
+            messages,
+            key
+        ]);
+    }
+};
Index: frontend/node_modules/tailwindcss/lib/util/math-operators.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/math-operators.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/math-operators.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,152 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    hasMathFn: function() {
+        return hasMathFn;
+    },
+    addWhitespaceAroundMathOperators: function() {
+        return addWhitespaceAroundMathOperators;
+    }
+});
+const LOWER_A = 0x61;
+const LOWER_Z = 0x7a;
+const UPPER_A = 0x41;
+const UPPER_Z = 0x5a;
+const LOWER_E = 0x65;
+const UPPER_E = 0x45;
+const ZERO = 0x30;
+const NINE = 0x39;
+const ADD = 0x2b;
+const SUB = 0x2d;
+const MUL = 0x2a;
+const DIV = 0x2f;
+const OPEN_PAREN = 0x28;
+const CLOSE_PAREN = 0x29;
+const COMMA = 0x2c;
+const SPACE = 0x20;
+const PERCENT = 0x25;
+const MATH_FUNCTIONS = [
+    "calc",
+    "min",
+    "max",
+    "clamp",
+    "mod",
+    "rem",
+    "sin",
+    "cos",
+    "tan",
+    "asin",
+    "acos",
+    "atan",
+    "atan2",
+    "pow",
+    "sqrt",
+    "hypot",
+    "log",
+    "exp",
+    "round"
+];
+function hasMathFn(input) {
+    return input.indexOf("(") !== -1 && MATH_FUNCTIONS.some((fn)=>input.includes(`${fn}(`));
+}
+function addWhitespaceAroundMathOperators(input) {
+    // Bail early if there are no math functions in the input
+    if (!MATH_FUNCTIONS.some((fn)=>input.includes(fn))) {
+        return input;
+    }
+    let result = "";
+    let formattable = [];
+    let valuePos = null;
+    let lastValuePos = null;
+    for(let i = 0; i < input.length; i++){
+        let char = input.charCodeAt(i);
+        // Track if we see a number followed by a unit, then we know for sure that
+        // this is not a function call.
+        if (char >= ZERO && char <= NINE) {
+            valuePos = i;
+        } else if (valuePos !== null && (char === PERCENT || char >= LOWER_A && char <= LOWER_Z || char >= UPPER_A && char <= UPPER_Z)) {
+            valuePos = i;
+        } else {
+            lastValuePos = valuePos;
+            valuePos = null;
+        }
+        // Determine if we're inside a math function
+        if (char === OPEN_PAREN) {
+            result += input[i];
+            // Scan backwards to determine the function name. This assumes math
+            // functions are named with lowercase alphanumeric characters.
+            let start = i;
+            for(let j = i - 1; j >= 0; j--){
+                let inner = input.charCodeAt(j);
+                if (inner >= ZERO && inner <= NINE) {
+                    start = j // 0-9
+                    ;
+                } else if (inner >= LOWER_A && inner <= LOWER_Z) {
+                    start = j // a-z
+                    ;
+                } else {
+                    break;
+                }
+            }
+            let fn = input.slice(start, i);
+            // This is a known math function so start formatting
+            if (MATH_FUNCTIONS.includes(fn)) {
+                formattable.unshift(true);
+                continue;
+            } else if (formattable[0] && fn === "") {
+                formattable.unshift(true);
+                continue;
+            }
+            // This is not a known math function so don't format it
+            formattable.unshift(false);
+            continue;
+        } else if (char === CLOSE_PAREN) {
+            result += input[i];
+            formattable.shift();
+        } else if (char === COMMA && formattable[0]) {
+            result += `, `;
+            continue;
+        } else if (char === SPACE && formattable[0] && result.charCodeAt(result.length - 1) === SPACE) {
+            continue;
+        } else if ((char === ADD || char === MUL || char === DIV || char === SUB) && formattable[0]) {
+            let trimmed = result.trimEnd();
+            let prev = trimmed.charCodeAt(trimmed.length - 1);
+            let prevPrev = trimmed.charCodeAt(trimmed.length - 2);
+            let next = input.charCodeAt(i + 1);
+            // Do not add spaces for scientific notation, e.g.: `-3.4e-2`
+            if ((prev === LOWER_E || prev === UPPER_E) && prevPrev >= ZERO && prevPrev <= NINE) {
+                result += input[i];
+                continue;
+            } else if (prev === ADD || prev === MUL || prev === DIV || prev === SUB) {
+                result += input[i];
+                continue;
+            } else if (prev === OPEN_PAREN || prev === COMMA) {
+                result += input[i];
+                continue;
+            } else if (input.charCodeAt(i - 1) === SPACE) {
+                result += `${input[i]} `;
+            } else if (// Previous is a digit
+            prev >= ZERO && prev <= NINE || // Next is a digit
+            next >= ZERO && next <= NINE || // Previous is end of a function call (or parenthesized expression)
+            prev === CLOSE_PAREN || // Next is start of a parenthesized expression
+            next === OPEN_PAREN || // Next is an operator
+            next === ADD || next === MUL || next === DIV || next === SUB || // Previous position was a value (+ unit)
+            lastValuePos !== null && lastValuePos === i - 1) {
+                result += ` ${input[i]} `;
+            } else {
+                result += input[i];
+            }
+        } else {
+            result += input[i];
+        }
+    }
+    return result;
+}
Index: frontend/node_modules/tailwindcss/lib/util/nameClass.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/nameClass.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/nameClass.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,49 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    asClass: function() {
+        return asClass;
+    },
+    default: function() {
+        return nameClass;
+    },
+    formatClass: function() {
+        return formatClass;
+    }
+});
+const _escapeClassName = /*#__PURE__*/ _interop_require_default(require("./escapeClassName"));
+const _escapeCommas = /*#__PURE__*/ _interop_require_default(require("./escapeCommas"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function asClass(name) {
+    return (0, _escapeCommas.default)(`.${(0, _escapeClassName.default)(name)}`);
+}
+function nameClass(classPrefix, key) {
+    return asClass(formatClass(classPrefix, key));
+}
+function formatClass(classPrefix, key) {
+    if (key === "DEFAULT") {
+        return classPrefix;
+    }
+    if (key === "-" || key === "-DEFAULT") {
+        return `-${classPrefix}`;
+    }
+    if (key.startsWith("-")) {
+        return `-${classPrefix}${key}`;
+    }
+    if (key.startsWith("/")) {
+        return `${classPrefix}${key}`;
+    }
+    return `${classPrefix}-${key}`;
+}
Index: frontend/node_modules/tailwindcss/lib/util/negateValue.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/negateValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/negateValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,36 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return negateValue;
+    }
+});
+function negateValue(value) {
+    value = `${value}`;
+    if (value === "0") {
+        return "0";
+    }
+    // Flip sign of numbers
+    if (/^[+-]?(\d+|\d*\.\d+)(e[+-]?\d+)?(%|\w+)?$/.test(value)) {
+        return value.replace(/^[+-]?/, (sign)=>sign === "-" ? "" : "-");
+    }
+    // What functions we support negating numeric values for
+    // var() isn't inherently a numeric function but we support it anyway
+    // The trigonometric functions are omitted because you'll need to use calc(…) with them _anyway_
+    // to produce generally useful results and that will be covered already
+    let numericFunctions = [
+        "var",
+        "calc",
+        "min",
+        "max",
+        "clamp"
+    ];
+    for (const fn of numericFunctions){
+        if (value.includes(`${fn}(`)) {
+            return `calc(${value} * -1)`;
+        }
+    }
+}
Index: frontend/node_modules/tailwindcss/lib/util/normalizeConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/normalizeConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/normalizeConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,281 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "normalizeConfig", {
+    enumerable: true,
+    get: function() {
+        return normalizeConfig;
+    }
+});
+const _featureFlags = require("../featureFlags");
+const _log = /*#__PURE__*/ _interop_require_wildcard(require("./log"));
+function _getRequireWildcardCache(nodeInterop) {
+    if (typeof WeakMap !== "function") return null;
+    var cacheBabelInterop = new WeakMap();
+    var cacheNodeInterop = new WeakMap();
+    return (_getRequireWildcardCache = function(nodeInterop) {
+        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+    })(nodeInterop);
+}
+function _interop_require_wildcard(obj, nodeInterop) {
+    if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+    }
+    if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return {
+            default: obj
+        };
+    }
+    var cache = _getRequireWildcardCache(nodeInterop);
+    if (cache && cache.has(obj)) {
+        return cache.get(obj);
+    }
+    var newObj = {};
+    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+    for(var key in obj){
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+            if (desc && (desc.get || desc.set)) {
+                Object.defineProperty(newObj, key, desc);
+            } else {
+                newObj[key] = obj[key];
+            }
+        }
+    }
+    newObj.default = obj;
+    if (cache) {
+        cache.set(obj, newObj);
+    }
+    return newObj;
+}
+function normalizeConfig(config) {
+    // Quick structure validation
+    /**
+   * type FilePath = string
+   * type RawFile = { raw: string, extension?: string }
+   * type ExtractorFn = (content: string) => Array<string>
+   * type TransformerFn = (content: string) => string
+   *
+   * type Content =
+   *   | Array<FilePath | RawFile>
+   *   | {
+   *       files: Array<FilePath | RawFile>,
+   *       extract?: ExtractorFn | { [extension: string]: ExtractorFn }
+   *       transform?: TransformerFn | { [extension: string]: TransformerFn }
+   *   }
+   */ let valid = (()=>{
+        // `config.purge` should not exist anymore
+        if (config.purge) {
+            return false;
+        }
+        // `config.content` should exist
+        if (!config.content) {
+            return false;
+        }
+        // `config.content` should be an object or an array
+        if (!Array.isArray(config.content) && !(typeof config.content === "object" && config.content !== null)) {
+            return false;
+        }
+        // When `config.content` is an array, it should consist of FilePaths or RawFiles
+        if (Array.isArray(config.content)) {
+            return config.content.every((path)=>{
+                // `path` can be a string
+                if (typeof path === "string") return true;
+                // `path` can be an object { raw: string, extension?: string }
+                // `raw` must be a string
+                if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== "string") return false;
+                // `extension` (if provided) should also be a string
+                if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== "string") {
+                    return false;
+                }
+                return true;
+            });
+        }
+        // When `config.content` is an object
+        if (typeof config.content === "object" && config.content !== null) {
+            // Only `files`, `relative`, `extract`, and `transform` can exist in `config.content`
+            if (Object.keys(config.content).some((key)=>![
+                    "files",
+                    "relative",
+                    "extract",
+                    "transform"
+                ].includes(key))) {
+                return false;
+            }
+            // `config.content.files` should exist of FilePaths or RawFiles
+            if (Array.isArray(config.content.files)) {
+                if (!config.content.files.every((path)=>{
+                    // `path` can be a string
+                    if (typeof path === "string") return true;
+                    // `path` can be an object { raw: string, extension?: string }
+                    // `raw` must be a string
+                    if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== "string") return false;
+                    // `extension` (if provided) should also be a string
+                    if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== "string") {
+                        return false;
+                    }
+                    return true;
+                })) {
+                    return false;
+                }
+                // `config.content.extract` is optional, and can be a Function or a Record<String, Function>
+                if (typeof config.content.extract === "object") {
+                    for (let value of Object.values(config.content.extract)){
+                        if (typeof value !== "function") {
+                            return false;
+                        }
+                    }
+                } else if (!(config.content.extract === undefined || typeof config.content.extract === "function")) {
+                    return false;
+                }
+                // `config.content.transform` is optional, and can be a Function or a Record<String, Function>
+                if (typeof config.content.transform === "object") {
+                    for (let value of Object.values(config.content.transform)){
+                        if (typeof value !== "function") {
+                            return false;
+                        }
+                    }
+                } else if (!(config.content.transform === undefined || typeof config.content.transform === "function")) {
+                    return false;
+                }
+                // `config.content.relative` is optional and can be a boolean
+                if (typeof config.content.relative !== "boolean" && typeof config.content.relative !== "undefined") {
+                    return false;
+                }
+            }
+            return true;
+        }
+        return false;
+    })();
+    if (!valid) {
+        _log.default.warn("purge-deprecation", [
+            "The `purge`/`content` options have changed in Tailwind CSS v3.0.",
+            "Update your configuration file to eliminate this warning.",
+            "https://tailwindcss.com/docs/upgrade-guide#configure-content-sources"
+        ]);
+    }
+    // Normalize the `safelist`
+    config.safelist = (()=>{
+        var _purge_options;
+        let { content , purge , safelist  } = config;
+        if (Array.isArray(safelist)) return safelist;
+        if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;
+        if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;
+        if (Array.isArray(purge === null || purge === void 0 ? void 0 : (_purge_options = purge.options) === null || _purge_options === void 0 ? void 0 : _purge_options.safelist)) return purge.options.safelist;
+        return [];
+    })();
+    // Normalize the `blocklist`
+    config.blocklist = (()=>{
+        let { blocklist  } = config;
+        if (Array.isArray(blocklist)) {
+            if (blocklist.every((item)=>typeof item === "string")) {
+                return blocklist;
+            }
+            _log.default.warn("blocklist-invalid", [
+                "The `blocklist` option must be an array of strings.",
+                "https://tailwindcss.com/docs/content-configuration#discarding-classes"
+            ]);
+        }
+        return [];
+    })();
+    // Normalize prefix option
+    if (typeof config.prefix === "function") {
+        _log.default.warn("prefix-function", [
+            "As of Tailwind CSS v3.0, `prefix` cannot be a function.",
+            "Update `prefix` in your configuration to be a string to eliminate this warning.",
+            "https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function"
+        ]);
+        config.prefix = "";
+    } else {
+        var _config_prefix;
+        config.prefix = (_config_prefix = config.prefix) !== null && _config_prefix !== void 0 ? _config_prefix : "";
+    }
+    // Normalize the `content`
+    config.content = {
+        relative: (()=>{
+            let { content  } = config;
+            if (content === null || content === void 0 ? void 0 : content.relative) {
+                return content.relative;
+            }
+            return (0, _featureFlags.flagEnabled)(config, "relativeContentPathsByDefault");
+        })(),
+        files: (()=>{
+            let { content , purge  } = config;
+            if (Array.isArray(purge)) return purge;
+            if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;
+            if (Array.isArray(content)) return content;
+            if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;
+            if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;
+            return [];
+        })(),
+        extract: (()=>{
+            let extract = (()=>{
+                var _config_purge, _config_content, _config_purge1, _config_purge_extract, _config_content1, _config_content_extract, _config_purge2, _config_purge_options, _config_content2, _config_content_options;
+                if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.extract) return config.purge.extract;
+                if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.extract) return config.content.extract;
+                if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_extract = _config_purge1.extract) === null || _config_purge_extract === void 0 ? void 0 : _config_purge_extract.DEFAULT) return config.purge.extract.DEFAULT;
+                if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_extract = _config_content1.extract) === null || _config_content_extract === void 0 ? void 0 : _config_content_extract.DEFAULT) return config.content.extract.DEFAULT;
+                if ((_config_purge2 = config.purge) === null || _config_purge2 === void 0 ? void 0 : (_config_purge_options = _config_purge2.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.extractors) return config.purge.options.extractors;
+                if ((_config_content2 = config.content) === null || _config_content2 === void 0 ? void 0 : (_config_content_options = _config_content2.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.extractors) return config.content.options.extractors;
+                return {};
+            })();
+            let extractors = {};
+            let defaultExtractor = (()=>{
+                var _config_purge, _config_purge_options, _config_content, _config_content_options;
+                if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : (_config_purge_options = _config_purge.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.defaultExtractor) {
+                    return config.purge.options.defaultExtractor;
+                }
+                if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : (_config_content_options = _config_content.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.defaultExtractor) {
+                    return config.content.options.defaultExtractor;
+                }
+                return undefined;
+            })();
+            if (defaultExtractor !== undefined) {
+                extractors.DEFAULT = defaultExtractor;
+            }
+            // Functions
+            if (typeof extract === "function") {
+                extractors.DEFAULT = extract;
+            } else if (Array.isArray(extract)) {
+                for (let { extensions , extractor  } of extract !== null && extract !== void 0 ? extract : []){
+                    for (let extension of extensions){
+                        extractors[extension] = extractor;
+                    }
+                }
+            } else if (typeof extract === "object" && extract !== null) {
+                Object.assign(extractors, extract);
+            }
+            return extractors;
+        })(),
+        transform: (()=>{
+            let transform = (()=>{
+                var _config_purge, _config_content, _config_purge1, _config_purge_transform, _config_content1, _config_content_transform;
+                if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.transform) return config.purge.transform;
+                if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.transform) return config.content.transform;
+                if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_transform = _config_purge1.transform) === null || _config_purge_transform === void 0 ? void 0 : _config_purge_transform.DEFAULT) return config.purge.transform.DEFAULT;
+                if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_transform = _config_content1.transform) === null || _config_content_transform === void 0 ? void 0 : _config_content_transform.DEFAULT) return config.content.transform.DEFAULT;
+                return {};
+            })();
+            let transformers = {};
+            if (typeof transform === "function") {
+                transformers.DEFAULT = transform;
+            } else if (typeof transform === "object" && transform !== null) {
+                Object.assign(transformers, transform);
+            }
+            return transformers;
+        })()
+    };
+    // Validate globs to prevent bogus globs.
+    // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`
+    for (let file of config.content.files){
+        if (typeof file === "string" && /{([^,]*?)}/g.test(file)) {
+            _log.default.warn("invalid-glob-braces", [
+                `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,
+                `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, "$1"))} to silence this warning.`
+            ]);
+            break;
+        }
+    }
+    return config;
+}
Index: frontend/node_modules/tailwindcss/lib/util/normalizeScreens.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/normalizeScreens.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/normalizeScreens.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,178 @@
+/**
+ * @typedef {object} ScreenValue
+ * @property {number|undefined} min
+ * @property {number|undefined} max
+ * @property {string|undefined} raw
+ */ /**
+ * @typedef {object} Screen
+ * @property {string} name
+ * @property {boolean} not
+ * @property {ScreenValue[]} values
+ */ /**
+ * A function that normalizes the various forms that the screens object can be
+ * provided in.
+ *
+ * Input(s):
+ *   - ['100px', '200px'] // Raw strings
+ *   - { sm: '100px', md: '200px' } // Object with string values
+ *   - { sm: { min: '100px' }, md: { max: '100px' } } // Object with object values
+ *   - { sm: [{ min: '100px' }, { max: '200px' }] } // Object with object array (multiple values)
+ *
+ * Output(s):
+ *   - [{ name: 'sm', values: [{ min: '100px', max: '200px' }] }] // List of objects, that contains multiple values
+ *
+ * @returns {Screen[]}
+ */ "use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    normalizeScreens: function() {
+        return normalizeScreens;
+    },
+    isScreenSortable: function() {
+        return isScreenSortable;
+    },
+    compareScreens: function() {
+        return compareScreens;
+    },
+    toScreen: function() {
+        return toScreen;
+    }
+});
+function normalizeScreens(screens, root = true) {
+    if (Array.isArray(screens)) {
+        return screens.map((screen)=>{
+            if (root && Array.isArray(screen)) {
+                throw new Error("The tuple syntax is not supported for `screens`.");
+            }
+            if (typeof screen === "string") {
+                return {
+                    name: screen.toString(),
+                    not: false,
+                    values: [
+                        {
+                            min: screen,
+                            max: undefined
+                        }
+                    ]
+                };
+            }
+            let [name, options] = screen;
+            name = name.toString();
+            if (typeof options === "string") {
+                return {
+                    name,
+                    not: false,
+                    values: [
+                        {
+                            min: options,
+                            max: undefined
+                        }
+                    ]
+                };
+            }
+            if (Array.isArray(options)) {
+                return {
+                    name,
+                    not: false,
+                    values: options.map((option)=>resolveValue(option))
+                };
+            }
+            return {
+                name,
+                not: false,
+                values: [
+                    resolveValue(options)
+                ]
+            };
+        });
+    }
+    return normalizeScreens(Object.entries(screens !== null && screens !== void 0 ? screens : {}), false);
+}
+function isScreenSortable(screen) {
+    if (screen.values.length !== 1) {
+        return {
+            result: false,
+            reason: "multiple-values"
+        };
+    } else if (screen.values[0].raw !== undefined) {
+        return {
+            result: false,
+            reason: "raw-values"
+        };
+    } else if (screen.values[0].min !== undefined && screen.values[0].max !== undefined) {
+        return {
+            result: false,
+            reason: "min-and-max"
+        };
+    }
+    return {
+        result: true,
+        reason: null
+    };
+}
+function compareScreens(type, a, z) {
+    let aScreen = toScreen(a, type);
+    let zScreen = toScreen(z, type);
+    let aSorting = isScreenSortable(aScreen);
+    let bSorting = isScreenSortable(zScreen);
+    // These cases should never happen and indicate a bug in Tailwind CSS itself
+    if (aSorting.reason === "multiple-values" || bSorting.reason === "multiple-values") {
+        throw new Error("Attempted to sort a screen with multiple values. This should never happen. Please open a bug report.");
+    } else if (aSorting.reason === "raw-values" || bSorting.reason === "raw-values") {
+        throw new Error("Attempted to sort a screen with raw values. This should never happen. Please open a bug report.");
+    } else if (aSorting.reason === "min-and-max" || bSorting.reason === "min-and-max") {
+        throw new Error("Attempted to sort a screen with both min and max values. This should never happen. Please open a bug report.");
+    }
+    // Let the sorting begin
+    let { min: aMin , max: aMax  } = aScreen.values[0];
+    let { min: zMin , max: zMax  } = zScreen.values[0];
+    // Negating screens flip their behavior. Basically `not min-width` is `max-width`
+    if (a.not) [aMin, aMax] = [
+        aMax,
+        aMin
+    ];
+    if (z.not) [zMin, zMax] = [
+        zMax,
+        zMin
+    ];
+    aMin = aMin === undefined ? aMin : parseFloat(aMin);
+    aMax = aMax === undefined ? aMax : parseFloat(aMax);
+    zMin = zMin === undefined ? zMin : parseFloat(zMin);
+    zMax = zMax === undefined ? zMax : parseFloat(zMax);
+    let [aValue, zValue] = type === "min" ? [
+        aMin,
+        zMin
+    ] : [
+        zMax,
+        aMax
+    ];
+    return aValue - zValue;
+}
+function toScreen(value, type) {
+    if (typeof value === "object") {
+        return value;
+    }
+    return {
+        name: "arbitrary-screen",
+        values: [
+            {
+                [type]: value
+            }
+        ]
+    };
+}
+function resolveValue({ "min-width": _minWidth , min =_minWidth , max , raw  } = {}) {
+    return {
+        min,
+        max,
+        raw
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/util/parseAnimationValue.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/parseAnimationValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/parseAnimationValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,93 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return parseAnimationValue;
+    }
+});
+const DIRECTIONS = new Set([
+    "normal",
+    "reverse",
+    "alternate",
+    "alternate-reverse"
+]);
+const PLAY_STATES = new Set([
+    "running",
+    "paused"
+]);
+const FILL_MODES = new Set([
+    "none",
+    "forwards",
+    "backwards",
+    "both"
+]);
+const ITERATION_COUNTS = new Set([
+    "infinite"
+]);
+const TIMINGS = new Set([
+    "linear",
+    "ease",
+    "ease-in",
+    "ease-out",
+    "ease-in-out",
+    "step-start",
+    "step-end"
+]);
+const TIMING_FNS = [
+    "cubic-bezier",
+    "steps"
+];
+const COMMA = /\,(?![^(]*\))/g // Comma separator that is not located between brackets. E.g.: `cubic-bezier(a, b, c)` these don't count.
+;
+const SPACE = /\ +(?![^(]*\))/g // Similar to the one above, but with spaces instead.
+;
+const TIME = /^(-?[\d.]+m?s)$/;
+const DIGIT = /^(\d+)$/;
+function parseAnimationValue(input) {
+    let animations = input.split(COMMA);
+    return animations.map((animation)=>{
+        let value = animation.trim();
+        let result = {
+            value
+        };
+        let parts = value.split(SPACE);
+        let seen = new Set();
+        for (let part of parts){
+            if (!seen.has("DIRECTIONS") && DIRECTIONS.has(part)) {
+                result.direction = part;
+                seen.add("DIRECTIONS");
+            } else if (!seen.has("PLAY_STATES") && PLAY_STATES.has(part)) {
+                result.playState = part;
+                seen.add("PLAY_STATES");
+            } else if (!seen.has("FILL_MODES") && FILL_MODES.has(part)) {
+                result.fillMode = part;
+                seen.add("FILL_MODES");
+            } else if (!seen.has("ITERATION_COUNTS") && (ITERATION_COUNTS.has(part) || DIGIT.test(part))) {
+                result.iterationCount = part;
+                seen.add("ITERATION_COUNTS");
+            } else if (!seen.has("TIMING_FUNCTION") && TIMINGS.has(part)) {
+                result.timingFunction = part;
+                seen.add("TIMING_FUNCTION");
+            } else if (!seen.has("TIMING_FUNCTION") && TIMING_FNS.some((f)=>part.startsWith(`${f}(`))) {
+                result.timingFunction = part;
+                seen.add("TIMING_FUNCTION");
+            } else if (!seen.has("DURATION") && TIME.test(part)) {
+                result.duration = part;
+                seen.add("DURATION");
+            } else if (!seen.has("DELAY") && TIME.test(part)) {
+                result.delay = part;
+                seen.add("DELAY");
+            } else if (!seen.has("NAME")) {
+                result.name = part;
+                seen.add("NAME");
+            } else {
+                if (!result.unknown) result.unknown = [];
+                result.unknown.push(part);
+            }
+        }
+        return result;
+    });
+}
Index: frontend/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,88 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    parseBoxShadowValue: function() {
+        return parseBoxShadowValue;
+    },
+    formatBoxShadowValue: function() {
+        return formatBoxShadowValue;
+    }
+});
+const _splitAtTopLevelOnly = require("./splitAtTopLevelOnly");
+let KEYWORDS = new Set([
+    "inset",
+    "inherit",
+    "initial",
+    "revert",
+    "unset"
+]);
+let SPACE = /\ +(?![^(]*\))/g // Similar to the one above, but with spaces instead.
+;
+let LENGTH = /^-?(\d+|\.\d+)(.*?)$/g;
+function parseBoxShadowValue(input) {
+    let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, ",");
+    return shadows.map((shadow)=>{
+        let value = shadow.trim();
+        let result = {
+            raw: value
+        };
+        let parts = value.split(SPACE);
+        let seen = new Set();
+        for (let part of parts){
+            // Reset index, since the regex is stateful.
+            LENGTH.lastIndex = 0;
+            // Keyword
+            if (!seen.has("KEYWORD") && KEYWORDS.has(part)) {
+                result.keyword = part;
+                seen.add("KEYWORD");
+            } else if (LENGTH.test(part)) {
+                if (!seen.has("X")) {
+                    result.x = part;
+                    seen.add("X");
+                } else if (!seen.has("Y")) {
+                    result.y = part;
+                    seen.add("Y");
+                } else if (!seen.has("BLUR")) {
+                    result.blur = part;
+                    seen.add("BLUR");
+                } else if (!seen.has("SPREAD")) {
+                    result.spread = part;
+                    seen.add("SPREAD");
+                }
+            } else {
+                if (!result.color) {
+                    result.color = part;
+                } else {
+                    if (!result.unknown) result.unknown = [];
+                    result.unknown.push(part);
+                }
+            }
+        }
+        // Check if valid
+        result.valid = result.x !== undefined && result.y !== undefined;
+        return result;
+    });
+}
+function formatBoxShadowValue(shadows) {
+    return shadows.map((shadow)=>{
+        if (!shadow.valid) {
+            return shadow.raw;
+        }
+        return [
+            shadow.keyword,
+            shadow.x,
+            shadow.y,
+            shadow.blur,
+            shadow.spread,
+            shadow.color
+        ].filter(Boolean).join(" ");
+    }).join(", ");
+}
Index: frontend/node_modules/tailwindcss/lib/util/parseDependency.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/parseDependency.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/parseDependency.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,47 @@
+// @ts-check
+/**
+ * @typedef {{type: 'dependency', file: string} | {type: 'dir-dependency', dir: string, glob: string}} Dependency
+ */ /**
+ *
+ * @param {import('../lib/content.js').ContentPath} contentPath
+ * @returns {Dependency[]}
+ */ "use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return parseDependency;
+    }
+});
+function parseDependency(contentPath) {
+    if (contentPath.ignore) {
+        return [];
+    }
+    if (!contentPath.glob) {
+        return [
+            {
+                type: "dependency",
+                file: contentPath.base
+            }
+        ];
+    }
+    if (process.env.ROLLUP_WATCH === "true") {
+        // rollup-plugin-postcss does not support dir-dependency messages
+        // but directories can be watched in the same way as files
+        return [
+            {
+                type: "dependency",
+                file: contentPath.base
+            }
+        ];
+    }
+    return [
+        {
+            type: "dir-dependency",
+            dir: contentPath.base,
+            glob: contentPath.glob
+        }
+    ];
+}
Index: frontend/node_modules/tailwindcss/lib/util/parseGlob.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/parseGlob.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/parseGlob.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,35 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "parseGlob", {
+    enumerable: true,
+    get: function() {
+        return parseGlob;
+    }
+});
+const _globparent = /*#__PURE__*/ _interop_require_default(require("glob-parent"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function parseGlob(pattern) {
+    let glob = pattern;
+    let base = (0, _globparent.default)(pattern);
+    if (base !== ".") {
+        glob = pattern.substr(base.length);
+        if (glob.charAt(0) === "/") {
+            glob = glob.substr(1);
+        }
+    }
+    if (glob.substr(0, 2) === "./") {
+        glob = glob.substr(2);
+    } else if (glob.charAt(0) === "/") {
+        glob = glob.substr(1);
+    }
+    return {
+        base,
+        glob
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/util/parseObjectStyles.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/parseObjectStyles.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/parseObjectStyles.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,36 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return parseObjectStyles;
+    }
+});
+const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
+const _postcssnested = /*#__PURE__*/ _interop_require_default(require("postcss-nested"));
+const _postcssjs = /*#__PURE__*/ _interop_require_default(require("postcss-js"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function parseObjectStyles(styles) {
+    if (!Array.isArray(styles)) {
+        return parseObjectStyles([
+            styles
+        ]);
+    }
+    return styles.flatMap((style)=>{
+        return (0, _postcss.default)([
+            (0, _postcssnested.default)({
+                bubble: [
+                    "screen"
+                ]
+            })
+        ]).process(style, {
+            parser: _postcssjs.default
+        }).root.nodes;
+    });
+}
Index: frontend/node_modules/tailwindcss/lib/util/pluginUtils.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/pluginUtils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/pluginUtils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,289 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    updateAllClasses: function() {
+        return updateAllClasses;
+    },
+    asValue: function() {
+        return asValue;
+    },
+    parseColorFormat: function() {
+        return parseColorFormat;
+    },
+    asColor: function() {
+        return asColor;
+    },
+    asLookupValue: function() {
+        return asLookupValue;
+    },
+    typeMap: function() {
+        return typeMap;
+    },
+    coerceValue: function() {
+        return coerceValue;
+    },
+    getMatchingTypes: function() {
+        return getMatchingTypes;
+    }
+});
+const _escapeCommas = /*#__PURE__*/ _interop_require_default(require("./escapeCommas"));
+const _withAlphaVariable = require("./withAlphaVariable");
+const _dataTypes = require("./dataTypes");
+const _negateValue = /*#__PURE__*/ _interop_require_default(require("./negateValue"));
+const _validateFormalSyntax = require("./validateFormalSyntax");
+const _featureFlags = require("../featureFlags.js");
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function updateAllClasses(selectors, updateClass) {
+    selectors.walkClasses((sel)=>{
+        sel.value = updateClass(sel.value);
+        if (sel.raws && sel.raws.value) {
+            sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);
+        }
+    });
+}
+function resolveArbitraryValue(modifier, validate) {
+    if (!isArbitraryValue(modifier)) {
+        return undefined;
+    }
+    let value = modifier.slice(1, -1);
+    if (!validate(value)) {
+        return undefined;
+    }
+    return (0, _dataTypes.normalize)(value);
+}
+function asNegativeValue(modifier, lookup = {}, validate) {
+    let positiveValue = lookup[modifier];
+    if (positiveValue !== undefined) {
+        return (0, _negateValue.default)(positiveValue);
+    }
+    if (isArbitraryValue(modifier)) {
+        let resolved = resolveArbitraryValue(modifier, validate);
+        if (resolved === undefined) {
+            return undefined;
+        }
+        return (0, _negateValue.default)(resolved);
+    }
+}
+function asValue(modifier, options = {}, { validate =()=>true  } = {}) {
+    var _options_values;
+    let value = (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];
+    if (value !== undefined) {
+        return value;
+    }
+    if (options.supportsNegativeValues && modifier.startsWith("-")) {
+        return asNegativeValue(modifier.slice(1), options.values, validate);
+    }
+    return resolveArbitraryValue(modifier, validate);
+}
+function isArbitraryValue(input) {
+    return input.startsWith("[") && input.endsWith("]");
+}
+function splitUtilityModifier(modifier) {
+    let slashIdx = modifier.lastIndexOf("/");
+    // If the `/` is inside an arbitrary, we want to find the previous one if any
+    // This logic probably isn't perfect but it should work for most cases
+    let arbitraryStartIdx = modifier.lastIndexOf("[", slashIdx);
+    let arbitraryEndIdx = modifier.indexOf("]", slashIdx);
+    let isNextToArbitrary = modifier[slashIdx - 1] === "]" || modifier[slashIdx + 1] === "[";
+    // Backtrack to the previous `/` if the one we found was inside an arbitrary
+    if (!isNextToArbitrary) {
+        if (arbitraryStartIdx !== -1 && arbitraryEndIdx !== -1) {
+            if (arbitraryStartIdx < slashIdx && slashIdx < arbitraryEndIdx) {
+                slashIdx = modifier.lastIndexOf("/", arbitraryStartIdx);
+            }
+        }
+    }
+    if (slashIdx === -1 || slashIdx === modifier.length - 1) {
+        return [
+            modifier,
+            undefined
+        ];
+    }
+    let arbitrary = isArbitraryValue(modifier);
+    // The modifier could be of the form `[foo]/[bar]`
+    // We want to handle this case properly
+    // without affecting `[foo/bar]`
+    if (arbitrary && !modifier.includes("]/[")) {
+        return [
+            modifier,
+            undefined
+        ];
+    }
+    return [
+        modifier.slice(0, slashIdx),
+        modifier.slice(slashIdx + 1)
+    ];
+}
+function parseColorFormat(value) {
+    if (typeof value === "string" && value.includes("<alpha-value>")) {
+        let oldValue = value;
+        return ({ opacityValue =1  })=>oldValue.replace(/<alpha-value>/g, opacityValue);
+    }
+    return value;
+}
+function unwrapArbitraryModifier(modifier) {
+    return (0, _dataTypes.normalize)(modifier.slice(1, -1));
+}
+function asColor(modifier, options = {}, { tailwindConfig ={}  } = {}) {
+    var _options_values;
+    if (((_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]) !== undefined) {
+        var _options_values1;
+        return parseColorFormat((_options_values1 = options.values) === null || _options_values1 === void 0 ? void 0 : _options_values1[modifier]);
+    }
+    // TODO: Hoist this up to getMatchingTypes or something
+    // We do this here because we need the alpha value (if any)
+    let [color, alpha] = splitUtilityModifier(modifier);
+    if (alpha !== undefined) {
+        var _options_values2, _tailwindConfig_theme, _tailwindConfig_theme_opacity;
+        var _options_values_color;
+        let normalizedColor = (_options_values_color = (_options_values2 = options.values) === null || _options_values2 === void 0 ? void 0 : _options_values2[color]) !== null && _options_values_color !== void 0 ? _options_values_color : isArbitraryValue(color) ? color.slice(1, -1) : undefined;
+        if (normalizedColor === undefined) {
+            return undefined;
+        }
+        normalizedColor = parseColorFormat(normalizedColor);
+        if (isArbitraryValue(alpha)) {
+            return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, unwrapArbitraryModifier(alpha));
+        }
+        if (((_tailwindConfig_theme = tailwindConfig.theme) === null || _tailwindConfig_theme === void 0 ? void 0 : (_tailwindConfig_theme_opacity = _tailwindConfig_theme.opacity) === null || _tailwindConfig_theme_opacity === void 0 ? void 0 : _tailwindConfig_theme_opacity[alpha]) === undefined) {
+            return undefined;
+        }
+        return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);
+    }
+    return asValue(modifier, options, {
+        validate: _dataTypes.color
+    });
+}
+function asLookupValue(modifier, options = {}) {
+    var _options_values;
+    return (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];
+}
+function guess(validate) {
+    return (modifier, options)=>{
+        return asValue(modifier, options, {
+            validate
+        });
+    };
+}
+let typeMap = {
+    any: asValue,
+    color: asColor,
+    url: guess(_dataTypes.url),
+    image: guess(_dataTypes.image),
+    length: guess(_dataTypes.length),
+    percentage: guess(_dataTypes.percentage),
+    position: guess(_dataTypes.position),
+    lookup: asLookupValue,
+    "generic-name": guess(_dataTypes.genericName),
+    "family-name": guess(_dataTypes.familyName),
+    number: guess(_dataTypes.number),
+    "line-width": guess(_dataTypes.lineWidth),
+    "absolute-size": guess(_dataTypes.absoluteSize),
+    "relative-size": guess(_dataTypes.relativeSize),
+    shadow: guess(_dataTypes.shadow),
+    size: guess(_validateFormalSyntax.backgroundSize)
+};
+let supportedTypes = Object.keys(typeMap);
+function splitAtFirst(input, delim) {
+    let idx = input.indexOf(delim);
+    if (idx === -1) return [
+        undefined,
+        input
+    ];
+    return [
+        input.slice(0, idx),
+        input.slice(idx + 1)
+    ];
+}
+function coerceValue(types, modifier, options, tailwindConfig) {
+    if (options.values && modifier in options.values) {
+        for (let { type  } of types !== null && types !== void 0 ? types : []){
+            let result = typeMap[type](modifier, options, {
+                tailwindConfig
+            });
+            if (result === undefined) {
+                continue;
+            }
+            return [
+                result,
+                type,
+                null
+            ];
+        }
+    }
+    if (isArbitraryValue(modifier)) {
+        let arbitraryValue = modifier.slice(1, -1);
+        let [explicitType, value] = splitAtFirst(arbitraryValue, ":");
+        // It could be that this resolves to `url(https` which is not a valid
+        // identifier. We currently only support "simple" words with dashes or
+        // underscores. E.g.: family-name
+        if (!/^[\w-_]+$/g.test(explicitType)) {
+            value = arbitraryValue;
+        } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {
+            return [];
+        }
+        if (value.length > 0 && supportedTypes.includes(explicitType)) {
+            return [
+                asValue(`[${value}]`, options),
+                explicitType,
+                null
+            ];
+        }
+    }
+    let matches = getMatchingTypes(types, modifier, options, tailwindConfig);
+    // Find first matching type
+    for (let match of matches){
+        return match;
+    }
+    return [];
+}
+function* getMatchingTypes(types, rawModifier, options, tailwindConfig) {
+    let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, "generalizedModifiers");
+    let [modifier, utilityModifier] = splitUtilityModifier(rawModifier);
+    let canUseUtilityModifier = modifiersEnabled && options.modifiers != null && (options.modifiers === "any" || typeof options.modifiers === "object" && (utilityModifier && isArbitraryValue(utilityModifier) || utilityModifier in options.modifiers));
+    if (!canUseUtilityModifier) {
+        modifier = rawModifier;
+        utilityModifier = undefined;
+    }
+    if (utilityModifier !== undefined && modifier === "") {
+        modifier = "DEFAULT";
+    }
+    // Check the full value first
+    // TODO: Move to asValue… somehow
+    if (utilityModifier !== undefined) {
+        if (typeof options.modifiers === "object") {
+            var _options_modifiers;
+            var _options_modifiers_utilityModifier;
+            let configValue = (_options_modifiers_utilityModifier = (_options_modifiers = options.modifiers) === null || _options_modifiers === void 0 ? void 0 : _options_modifiers[utilityModifier]) !== null && _options_modifiers_utilityModifier !== void 0 ? _options_modifiers_utilityModifier : null;
+            if (configValue !== null) {
+                utilityModifier = configValue;
+            } else if (isArbitraryValue(utilityModifier)) {
+                utilityModifier = unwrapArbitraryModifier(utilityModifier);
+            }
+        }
+    }
+    for (let { type  } of types !== null && types !== void 0 ? types : []){
+        let result = typeMap[type](modifier, options, {
+            tailwindConfig
+        });
+        if (result === undefined) {
+            continue;
+        }
+        yield [
+            result,
+            type,
+            utilityModifier !== null && utilityModifier !== void 0 ? utilityModifier : null
+        ];
+    }
+}
Index: frontend/node_modules/tailwindcss/lib/util/prefixSelector.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/prefixSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/prefixSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,39 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, /**
+ * @template {string | import('postcss-selector-parser').Root} T
+ *
+ * Prefix all classes in the selector with the given prefix
+ *
+ * It can take either a string or a selector AST and will return the same type
+ *
+ * @param {string} prefix
+ * @param {T} selector
+ * @param {boolean} prependNegative
+ * @returns {T}
+ */ "default", {
+    enumerable: true,
+    get: function() {
+        return _default;
+    }
+});
+const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function _default(prefix, selector, prependNegative = false) {
+    if (prefix === "") {
+        return selector;
+    }
+    /** @type {import('postcss-selector-parser').Root} */ let ast = typeof selector === "string" ? (0, _postcssselectorparser.default)().astSync(selector) : selector;
+    ast.walkClasses((classSelector)=>{
+        let baseClass = classSelector.value;
+        let shouldPlaceNegativeBeforePrefix = prependNegative && baseClass.startsWith("-");
+        classSelector.value = shouldPlaceNegativeBeforePrefix ? `-${prefix}${baseClass.slice(1)}` : `${prefix}${baseClass}`;
+    });
+    return typeof selector === "string" ? ast.toString() : ast;
+}
Index: frontend/node_modules/tailwindcss/lib/util/pseudoElements.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/pseudoElements.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/pseudoElements.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,212 @@
+/** @typedef {import('postcss-selector-parser').Root} Root */ /** @typedef {import('postcss-selector-parser').Selector} Selector */ /** @typedef {import('postcss-selector-parser').Pseudo} Pseudo */ /** @typedef {import('postcss-selector-parser').Node} Node */ // There are some pseudo-elements that may or may not be:
+// **Actionable**
+// Zero or more user-action pseudo-classes may be attached to the pseudo-element itself
+// structural-pseudo-classes are NOT allowed but we don't make
+// The spec is not clear on whether this is allowed or not — but in practice it is.
+// **Terminal**
+// It MUST be placed at the end of a selector
+//
+// This is the required in the spec. However, some pseudo elements are not "terminal" because
+// they represent a "boundary piercing" that is compiled out by a build step.
+// **Jumpable**
+// Any terminal element may "jump" over combinators when moving to the end of the selector
+//
+// This is a backwards-compat quirk of pseudo element variants from earlier versions of Tailwind CSS.
+/** @typedef {'terminal' | 'actionable' | 'jumpable'} PseudoProperty */ /** @type {Record<string, PseudoProperty[]>} */ "use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "movePseudos", {
+    enumerable: true,
+    get: function() {
+        return movePseudos;
+    }
+});
+let elementProperties = {
+    // Pseudo elements from the spec
+    "::after": [
+        "terminal",
+        "jumpable"
+    ],
+    "::backdrop": [
+        "terminal",
+        "jumpable"
+    ],
+    "::before": [
+        "terminal",
+        "jumpable"
+    ],
+    "::cue": [
+        "terminal"
+    ],
+    "::cue-region": [
+        "terminal"
+    ],
+    "::first-letter": [
+        "terminal",
+        "jumpable"
+    ],
+    "::first-line": [
+        "terminal",
+        "jumpable"
+    ],
+    "::grammar-error": [
+        "terminal"
+    ],
+    "::marker": [
+        "terminal",
+        "jumpable"
+    ],
+    "::part": [
+        "terminal",
+        "actionable"
+    ],
+    "::placeholder": [
+        "terminal",
+        "jumpable"
+    ],
+    "::selection": [
+        "terminal",
+        "jumpable"
+    ],
+    "::slotted": [
+        "terminal"
+    ],
+    "::spelling-error": [
+        "terminal"
+    ],
+    "::target-text": [
+        "terminal"
+    ],
+    // Pseudo elements from the spec with special rules
+    "::file-selector-button": [
+        "terminal",
+        "actionable"
+    ],
+    // Library-specific pseudo elements used by component libraries
+    // These are Shadow DOM-like
+    "::deep": [
+        "actionable"
+    ],
+    "::v-deep": [
+        "actionable"
+    ],
+    "::ng-deep": [
+        "actionable"
+    ],
+    // Note: As a rule, double colons (::) should be used instead of a single colon
+    // (:). This distinguishes pseudo-classes from pseudo-elements. However, since
+    // this distinction was not present in older versions of the W3C spec, most
+    // browsers support both syntaxes for the original pseudo-elements.
+    ":after": [
+        "terminal",
+        "jumpable"
+    ],
+    ":before": [
+        "terminal",
+        "jumpable"
+    ],
+    ":first-letter": [
+        "terminal",
+        "jumpable"
+    ],
+    ":first-line": [
+        "terminal",
+        "jumpable"
+    ],
+    ":where": [],
+    ":is": [],
+    ":has": [],
+    // The default value is used when the pseudo-element is not recognized
+    // Because it's not recognized, we don't know if it's terminal or not
+    // So we assume it can be moved AND can have user-action pseudo classes attached to it
+    __default__: [
+        "terminal",
+        "actionable"
+    ]
+};
+function movePseudos(sel) {
+    let [pseudos] = movablePseudos(sel);
+    // Remove all pseudo elements from their respective selectors
+    pseudos.forEach(([sel, pseudo])=>sel.removeChild(pseudo));
+    // Re-add them to the end of the selector in the correct order.
+    // This moves terminal pseudo elements to the end of the
+    // selector otherwise the selector will not be valid.
+    //
+    // Examples:
+    //  - `before:hover:text-center` would result in `.before\:hover\:text-center:hover::before`
+    //  - `hover:before:text-center` would result in `.hover\:before\:text-center:hover::before`
+    //
+    // The selector `::before:hover` does not work but we
+    // can make it work for you by flipping the order.
+    sel.nodes.push(...pseudos.map(([, pseudo])=>pseudo));
+    return sel;
+}
+/** @typedef {[sel: Selector, pseudo: Pseudo, attachedTo: Pseudo | null]} MovablePseudo */ /** @typedef {[pseudos: MovablePseudo[], lastSeenElement: Pseudo | null]} MovablePseudosResult */ /**
+ * @param {Selector} sel
+ * @returns {MovablePseudosResult}
+ */ function movablePseudos(sel) {
+    /** @type {MovablePseudo[]} */ let buffer = [];
+    /** @type {Pseudo | null} */ let lastSeenElement = null;
+    for (let node of sel.nodes){
+        if (node.type === "combinator") {
+            buffer = buffer.filter(([, node])=>propertiesForPseudo(node).includes("jumpable"));
+            lastSeenElement = null;
+        } else if (node.type === "pseudo") {
+            if (isMovablePseudoElement(node)) {
+                lastSeenElement = node;
+                buffer.push([
+                    sel,
+                    node,
+                    null
+                ]);
+            } else if (lastSeenElement && isAttachablePseudoClass(node, lastSeenElement)) {
+                buffer.push([
+                    sel,
+                    node,
+                    lastSeenElement
+                ]);
+            } else {
+                lastSeenElement = null;
+            }
+            var _node_nodes;
+            for (let sub of (_node_nodes = node.nodes) !== null && _node_nodes !== void 0 ? _node_nodes : []){
+                let [movable, lastSeenElementInSub] = movablePseudos(sub);
+                lastSeenElement = lastSeenElementInSub || lastSeenElement;
+                buffer.push(...movable);
+            }
+        }
+    }
+    return [
+        buffer,
+        lastSeenElement
+    ];
+}
+/**
+ * @param {Node} node
+ * @returns {boolean}
+ */ function isPseudoElement(node) {
+    return node.value.startsWith("::") || elementProperties[node.value] !== undefined;
+}
+/**
+ * @param {Node} node
+ * @returns {boolean}
+ */ function isMovablePseudoElement(node) {
+    return isPseudoElement(node) && propertiesForPseudo(node).includes("terminal");
+}
+/**
+ * @param {Node} node
+ * @param {Pseudo} pseudo
+ * @returns {boolean}
+ */ function isAttachablePseudoClass(node, pseudo) {
+    if (node.type !== "pseudo") return false;
+    if (isPseudoElement(node)) return false;
+    return propertiesForPseudo(pseudo).includes("actionable");
+}
+/**
+ * @param {Pseudo} pseudo
+ * @returns {PseudoProperty[]}
+ */ function propertiesForPseudo(pseudo) {
+    var _elementProperties_pseudo_value;
+    return (_elementProperties_pseudo_value = elementProperties[pseudo.value]) !== null && _elementProperties_pseudo_value !== void 0 ? _elementProperties_pseudo_value : elementProperties.__default__;
+}
Index: frontend/node_modules/tailwindcss/lib/util/removeAlphaVariables.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/removeAlphaVariables.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/removeAlphaVariables.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,33 @@
+/**
+ * This function removes any uses of CSS variables used as an alpha channel
+ *
+ * This is required for selectors like `:visited` which do not allow
+ * changes in opacity or external control using CSS variables.
+ *
+ * @param {import('postcss').Container} container
+ * @param {string[]} toRemove
+ */ "use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "removeAlphaVariables", {
+    enumerable: true,
+    get: function() {
+        return removeAlphaVariables;
+    }
+});
+function removeAlphaVariables(container, toRemove) {
+    container.walkDecls((decl)=>{
+        if (toRemove.includes(decl.prop)) {
+            decl.remove();
+            return;
+        }
+        for (let varName of toRemove){
+            if (decl.value.includes(`/ var(${varName})`)) {
+                decl.value = decl.value.replace(`/ var(${varName})`, "");
+            } else if (decl.value.includes(`/ var(${varName}, 1)`)) {
+                decl.value = decl.value.replace(`/ var(${varName}, 1)`, "");
+            }
+        }
+    });
+}
Index: frontend/node_modules/tailwindcss/lib/util/resolveConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/resolveConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/resolveConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,256 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return resolveConfig;
+    }
+});
+const _negateValue = /*#__PURE__*/ _interop_require_default(require("./negateValue"));
+const _corePluginList = /*#__PURE__*/ _interop_require_default(require("../corePluginList"));
+const _configurePlugins = /*#__PURE__*/ _interop_require_default(require("./configurePlugins"));
+const _colors = /*#__PURE__*/ _interop_require_default(require("../public/colors"));
+const _defaults = require("./defaults");
+const _toPath = require("./toPath");
+const _normalizeConfig = require("./normalizeConfig");
+const _isPlainObject = /*#__PURE__*/ _interop_require_default(require("./isPlainObject"));
+const _cloneDeep = require("./cloneDeep");
+const _pluginUtils = require("./pluginUtils");
+const _withAlphaVariable = require("./withAlphaVariable");
+const _toColorValue = /*#__PURE__*/ _interop_require_default(require("./toColorValue"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function isFunction(input) {
+    return typeof input === "function";
+}
+function mergeWith(target, ...sources) {
+    let customizer = sources.pop();
+    for (let source of sources){
+        for(let k in source){
+            let merged = customizer(target[k], source[k]);
+            if (merged === undefined) {
+                if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) {
+                    target[k] = mergeWith({}, target[k], source[k], customizer);
+                } else {
+                    target[k] = source[k];
+                }
+            } else {
+                target[k] = merged;
+            }
+        }
+    }
+    return target;
+}
+const configUtils = {
+    colors: _colors.default,
+    negative (scale) {
+        // TODO: Log that this function isn't really needed anymore?
+        return Object.keys(scale).filter((key)=>scale[key] !== "0").reduce((negativeScale, key)=>{
+            let negativeValue = (0, _negateValue.default)(scale[key]);
+            if (negativeValue !== undefined) {
+                negativeScale[`-${key}`] = negativeValue;
+            }
+            return negativeScale;
+        }, {});
+    },
+    breakpoints (screens) {
+        return Object.keys(screens).filter((key)=>typeof screens[key] === "string").reduce((breakpoints, key)=>({
+                ...breakpoints,
+                [`screen-${key}`]: screens[key]
+            }), {});
+    }
+};
+function value(valueToResolve, ...args) {
+    return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;
+}
+function collectExtends(items) {
+    return items.reduce((merged, { extend  })=>{
+        return mergeWith(merged, extend, (mergedValue, extendValue)=>{
+            if (mergedValue === undefined) {
+                return [
+                    extendValue
+                ];
+            }
+            if (Array.isArray(mergedValue)) {
+                return [
+                    extendValue,
+                    ...mergedValue
+                ];
+            }
+            return [
+                extendValue,
+                mergedValue
+            ];
+        });
+    }, {});
+}
+function mergeThemes(themes) {
+    return {
+        ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),
+        // In order to resolve n config objects, we combine all of their `extend` properties
+        // into arrays instead of objects so they aren't overridden.
+        extend: collectExtends(themes)
+    };
+}
+function mergeExtensionCustomizer(merged, value) {
+    // When we have an array of objects, we do want to merge it
+    if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) {
+        return merged.concat(value);
+    }
+    // When the incoming value is an array, and the existing config is an object, prepend the existing object
+    if (Array.isArray(value) && (0, _isPlainObject.default)(value[0]) && (0, _isPlainObject.default)(merged)) {
+        return [
+            merged,
+            ...value
+        ];
+    }
+    // Override arrays (for example for font-families, box-shadows, ...)
+    if (Array.isArray(value)) {
+        return value;
+    }
+    // Execute default behaviour
+    return undefined;
+}
+function mergeExtensions({ extend , ...theme }) {
+    return mergeWith(theme, extend, (themeValue, extensions)=>{
+        // The `extend` property is an array, so we need to check if it contains any functions
+        if (!isFunction(themeValue) && !extensions.some(isFunction)) {
+            return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);
+        }
+        return (resolveThemePath, utils)=>mergeWith({}, ...[
+                themeValue,
+                ...extensions
+            ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);
+    });
+}
+/**
+ *
+ * @param {string} key
+ * @return {Iterable<string[] & {alpha: string | undefined}>}
+ */ function* toPaths(key) {
+    let path = (0, _toPath.toPath)(key);
+    if (path.length === 0) {
+        return;
+    }
+    yield path;
+    if (Array.isArray(key)) {
+        return;
+    }
+    let pattern = /^(.*?)\s*\/\s*([^/]+)$/;
+    let matches = key.match(pattern);
+    if (matches !== null) {
+        let [, prefix, alpha] = matches;
+        let newPath = (0, _toPath.toPath)(prefix);
+        newPath.alpha = alpha;
+        yield newPath;
+    }
+}
+function resolveFunctionKeys(object) {
+    // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]
+    const resolvePath = (key, defaultValue)=>{
+        for (const path of toPaths(key)){
+            let index = 0;
+            let val = object;
+            while(val !== undefined && val !== null && index < path.length){
+                val = val[path[index++]];
+                let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);
+                val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;
+            }
+            if (val !== undefined) {
+                if (path.alpha !== undefined) {
+                    let normalized = (0, _pluginUtils.parseColorFormat)(val);
+                    return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));
+                }
+                if ((0, _isPlainObject.default)(val)) {
+                    return (0, _cloneDeep.cloneDeep)(val);
+                }
+                return val;
+            }
+        }
+        return defaultValue;
+    };
+    Object.assign(resolvePath, {
+        theme: resolvePath,
+        ...configUtils
+    });
+    return Object.keys(object).reduce((resolved, key)=>{
+        resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];
+        return resolved;
+    }, {});
+}
+function extractPluginConfigs(configs) {
+    let allConfigs = [];
+    configs.forEach((config)=>{
+        allConfigs = [
+            ...allConfigs,
+            config
+        ];
+        var _config_plugins;
+        const plugins = (_config_plugins = config === null || config === void 0 ? void 0 : config.plugins) !== null && _config_plugins !== void 0 ? _config_plugins : [];
+        if (plugins.length === 0) {
+            return;
+        }
+        plugins.forEach((plugin)=>{
+            if (plugin.__isOptionsFunction) {
+                plugin = plugin();
+            }
+            var _plugin_config;
+            allConfigs = [
+                ...allConfigs,
+                ...extractPluginConfigs([
+                    (_plugin_config = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && _plugin_config !== void 0 ? _plugin_config : {}
+                ])
+            ];
+        });
+    });
+    return allConfigs;
+}
+function resolveCorePlugins(corePluginConfigs) {
+    const result = [
+        ...corePluginConfigs
+    ].reduceRight((resolved, corePluginConfig)=>{
+        if (isFunction(corePluginConfig)) {
+            return corePluginConfig({
+                corePlugins: resolved
+            });
+        }
+        return (0, _configurePlugins.default)(corePluginConfig, resolved);
+    }, _corePluginList.default);
+    return result;
+}
+function resolvePluginLists(pluginLists) {
+    const result = [
+        ...pluginLists
+    ].reduceRight((resolved, pluginList)=>{
+        return [
+            ...resolved,
+            ...pluginList
+        ];
+    }, []);
+    return result;
+}
+function resolveConfig(configs) {
+    let allConfigs = [
+        ...extractPluginConfigs(configs),
+        {
+            prefix: "",
+            important: false,
+            separator: ":"
+        }
+    ];
+    var _t_theme, _c_plugins;
+    return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({
+        theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{
+            return (_t_theme = t === null || t === void 0 ? void 0 : t.theme) !== null && _t_theme !== void 0 ? _t_theme : {};
+        })))),
+        corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),
+        plugins: resolvePluginLists(configs.map((c)=>{
+            return (_c_plugins = c === null || c === void 0 ? void 0 : c.plugins) !== null && _c_plugins !== void 0 ? _c_plugins : [];
+        }))
+    }, ...allConfigs));
+}
Index: frontend/node_modules/tailwindcss/lib/util/resolveConfigPath.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/resolveConfigPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/resolveConfigPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,72 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    default: function() {
+        return resolveConfigPath;
+    },
+    resolveDefaultConfigPath: function() {
+        return resolveDefaultConfigPath;
+    }
+});
+const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
+const _path = /*#__PURE__*/ _interop_require_default(require("path"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+const defaultConfigFiles = [
+    "./tailwind.config.js",
+    "./tailwind.config.cjs",
+    "./tailwind.config.mjs",
+    "./tailwind.config.ts",
+    "./tailwind.config.cts",
+    "./tailwind.config.mts"
+];
+function isObject(value) {
+    return typeof value === "object" && value !== null;
+}
+function isEmpty(obj) {
+    return Object.keys(obj).length === 0;
+}
+function isString(value) {
+    return typeof value === "string" || value instanceof String;
+}
+function resolveConfigPath(pathOrConfig) {
+    // require('tailwindcss')({ theme: ..., variants: ... })
+    if (isObject(pathOrConfig) && pathOrConfig.config === undefined && !isEmpty(pathOrConfig)) {
+        return null;
+    }
+    // require('tailwindcss')({ config: 'custom-config.js' })
+    if (isObject(pathOrConfig) && pathOrConfig.config !== undefined && isString(pathOrConfig.config)) {
+        return _path.default.resolve(pathOrConfig.config);
+    }
+    // require('tailwindcss')({ config: { theme: ..., variants: ... } })
+    if (isObject(pathOrConfig) && pathOrConfig.config !== undefined && isObject(pathOrConfig.config)) {
+        return null;
+    }
+    // require('tailwindcss')('custom-config.js')
+    if (isString(pathOrConfig)) {
+        return _path.default.resolve(pathOrConfig);
+    }
+    // require('tailwindcss')
+    return resolveDefaultConfigPath();
+}
+function resolveDefaultConfigPath() {
+    for (const configFile of defaultConfigFiles){
+        try {
+            const configPath = _path.default.resolve(configFile);
+            _fs.default.accessSync(configPath);
+            return configPath;
+        } catch (err) {}
+    }
+    return null;
+}
Index: frontend/node_modules/tailwindcss/lib/util/responsive.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/responsive.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/responsive.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return responsive;
+    }
+});
+const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
+const _cloneNodes = /*#__PURE__*/ _interop_require_default(require("./cloneNodes"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function responsive(rules) {
+    return _postcss.default.atRule({
+        name: "responsive"
+    }).append((0, _cloneNodes.default)(Array.isArray(rules) ? rules : [
+        rules
+    ]));
+}
Index: frontend/node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,47 @@
+/**
+ * This splits a string on a top-level character.
+ *
+ * Regex doesn't support recursion (at least not the JS-flavored version).
+ * So we have to use a tiny state machine to keep track of paren placement.
+ *
+ * Expected behavior using commas:
+ * var(--a, 0 0 1px rgb(0, 0, 0)), 0 0 1px rgb(0, 0, 0)
+ *       ─┬─             ┬  ┬    ┬
+ *        x              x  x    ╰──────── Split because top-level
+ *        ╰──────────────┴──┴───────────── Ignored b/c inside >= 1 levels of parens
+ *
+ * @param {string} input
+ * @param {string} separator
+ */ "use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "splitAtTopLevelOnly", {
+    enumerable: true,
+    get: function() {
+        return splitAtTopLevelOnly;
+    }
+});
+function splitAtTopLevelOnly(input, separator) {
+    let stack = [];
+    let parts = [];
+    let lastPos = 0;
+    let isEscaped = false;
+    for(let idx = 0; idx < input.length; idx++){
+        let char = input[idx];
+        if (stack.length === 0 && char === separator[0] && !isEscaped) {
+            if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {
+                parts.push(input.slice(lastPos, idx));
+                lastPos = idx + separator.length;
+            }
+        }
+        isEscaped = isEscaped ? false : char === "\\";
+        if (char === "(" || char === "[" || char === "{") {
+            stack.push(char);
+        } else if (char === ")" && stack[stack.length - 1] === "(" || char === "]" && stack[stack.length - 1] === "[" || char === "}" && stack[stack.length - 1] === "{") {
+            stack.pop();
+        }
+    }
+    parts.push(input.slice(lastPos));
+    return parts;
+}
Index: frontend/node_modules/tailwindcss/lib/util/tap.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/tap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/tap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "tap", {
+    enumerable: true,
+    get: function() {
+        return tap;
+    }
+});
+function tap(value, mutator) {
+    mutator(value);
+    return value;
+}
Index: frontend/node_modules/tailwindcss/lib/util/toColorValue.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/toColorValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/toColorValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return toColorValue;
+    }
+});
+function toColorValue(maybeFunction) {
+    return typeof maybeFunction === "function" ? maybeFunction({}) : maybeFunction;
+}
Index: frontend/node_modules/tailwindcss/lib/util/toPath.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/toPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/toPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,32 @@
+/**
+ * Parse a path string into an array of path segments.
+ *
+ * Square bracket notation `a[b]` may be used to "escape" dots that would otherwise be interpreted as path separators.
+ *
+ * Example:
+ * a -> ['a']
+ * a.b.c -> ['a', 'b', 'c']
+ * a[b].c -> ['a', 'b', 'c']
+ * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']
+ * a[b][c][d] -> ['a', 'b', 'c', 'd']
+ *
+ * @param {string|string[]} path
+ **/ "use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "toPath", {
+    enumerable: true,
+    get: function() {
+        return toPath;
+    }
+});
+function toPath(path) {
+    if (Array.isArray(path)) return path;
+    let openBrackets = path.split("[").length - 1;
+    let closedBrackets = path.split("]").length - 1;
+    if (openBrackets !== closedBrackets) {
+        throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);
+    }
+    return path.split(/\.(?![^\[]*\])|[\[\]]/g).filter(Boolean);
+}
Index: frontend/node_modules/tailwindcss/lib/util/transformThemeValue.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/transformThemeValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/transformThemeValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,73 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "default", {
+    enumerable: true,
+    get: function() {
+        return transformThemeValue;
+    }
+});
+const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
+const _isPlainObject = /*#__PURE__*/ _interop_require_default(require("./isPlainObject"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function transformThemeValue(themeSection) {
+    if ([
+        "fontSize",
+        "outline"
+    ].includes(themeSection)) {
+        return (value)=>{
+            if (typeof value === "function") value = value({});
+            if (Array.isArray(value)) value = value[0];
+            return value;
+        };
+    }
+    if (themeSection === "fontFamily") {
+        return (value)=>{
+            if (typeof value === "function") value = value({});
+            let families = Array.isArray(value) && (0, _isPlainObject.default)(value[1]) ? value[0] : value;
+            return Array.isArray(families) ? families.join(", ") : families;
+        };
+    }
+    if ([
+        "boxShadow",
+        "transitionProperty",
+        "transitionDuration",
+        "transitionDelay",
+        "transitionTimingFunction",
+        "backgroundImage",
+        "backgroundSize",
+        "backgroundColor",
+        "cursor",
+        "animation"
+    ].includes(themeSection)) {
+        return (value)=>{
+            if (typeof value === "function") value = value({});
+            if (Array.isArray(value)) value = value.join(", ");
+            return value;
+        };
+    }
+    // For backwards compatibility reasons, before we switched to underscores
+    // instead of commas for arbitrary values.
+    if ([
+        "gridTemplateColumns",
+        "gridTemplateRows",
+        "objectPosition"
+    ].includes(themeSection)) {
+        return (value)=>{
+            if (typeof value === "function") value = value({});
+            if (typeof value === "string") value = _postcss.default.list.comma(value).join(" ");
+            return value;
+        };
+    }
+    return (value, opts = {})=>{
+        if (typeof value === "function") {
+            value = value(opts);
+        }
+        return value;
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/util/validateConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/validateConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/validateConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,37 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "validateConfig", {
+    enumerable: true,
+    get: function() {
+        return validateConfig;
+    }
+});
+const _log = /*#__PURE__*/ _interop_require_default(require("./log"));
+function _interop_require_default(obj) {
+    return obj && obj.__esModule ? obj : {
+        default: obj
+    };
+}
+function validateConfig(config) {
+    if (config.content.files.length === 0) {
+        _log.default.warn("content-problems", [
+            "The `content` option in your Tailwind CSS configuration is missing or empty.",
+            "Configure your content sources or your generated CSS will be missing styles.",
+            "https://tailwindcss.com/docs/content-configuration"
+        ]);
+    }
+    // Warn if the line-clamp plugin is installed
+    try {
+        let plugin = require("@tailwindcss/line-clamp");
+        if (config.plugins.includes(plugin)) {
+            _log.default.warn("line-clamp-in-core", [
+                "As of Tailwind CSS v3.3, the `@tailwindcss/line-clamp` plugin is now included by default.",
+                "Remove it from the `plugins` array in your configuration to eliminate this warning."
+            ]);
+            config.plugins = config.plugins.filter((p)=>p !== plugin);
+        }
+    } catch  {}
+    return config;
+}
Index: frontend/node_modules/tailwindcss/lib/util/validateFormalSyntax.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/validateFormalSyntax.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/validateFormalSyntax.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,26 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+Object.defineProperty(exports, "backgroundSize", {
+    enumerable: true,
+    get: function() {
+        return backgroundSize;
+    }
+});
+const _dataTypes = require("./dataTypes");
+const _splitAtTopLevelOnly = require("./splitAtTopLevelOnly");
+function backgroundSize(value) {
+    let keywordValues = [
+        "cover",
+        "contain"
+    ];
+    // the <length-percentage> type will probably be a css function
+    // so we have to use `splitAtTopLevelOnly`
+    return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part)=>{
+        let sizes = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(part, "_").filter(Boolean);
+        if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true;
+        if (sizes.length !== 1 && sizes.length !== 2) return false;
+        return sizes.every((size)=>(0, _dataTypes.length)(size) || (0, _dataTypes.percentage)(size) || size === "auto");
+    });
+}
Index: frontend/node_modules/tailwindcss/lib/util/withAlphaVariable.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/util/withAlphaVariable.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/util/withAlphaVariable.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,79 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", {
+    value: true
+});
+function _export(target, all) {
+    for(var name in all)Object.defineProperty(target, name, {
+        enumerable: true,
+        get: all[name]
+    });
+}
+_export(exports, {
+    withAlphaValue: function() {
+        return withAlphaValue;
+    },
+    default: function() {
+        return withAlphaVariable;
+    }
+});
+const _color = require("./color");
+function withAlphaValue(color, alphaValue, defaultValue) {
+    if (typeof color === "function") {
+        return color({
+            opacityValue: alphaValue
+        });
+    }
+    let parsed = (0, _color.parseColor)(color, {
+        loose: true
+    });
+    if (parsed === null) {
+        return defaultValue;
+    }
+    return (0, _color.formatColor)({
+        ...parsed,
+        alpha: alphaValue
+    });
+}
+function withAlphaVariable({ color , property , variable  }) {
+    let properties = [].concat(property);
+    if (typeof color === "function") {
+        return {
+            [variable]: "1",
+            ...Object.fromEntries(properties.map((p)=>{
+                return [
+                    p,
+                    color({
+                        opacityVariable: variable,
+                        opacityValue: `var(${variable}, 1)`
+                    })
+                ];
+            }))
+        };
+    }
+    const parsed = (0, _color.parseColor)(color);
+    if (parsed === null) {
+        return Object.fromEntries(properties.map((p)=>[
+                p,
+                color
+            ]));
+    }
+    if (parsed.alpha !== undefined) {
+        // Has an alpha value, return color as-is
+        return Object.fromEntries(properties.map((p)=>[
+                p,
+                color
+            ]));
+    }
+    return {
+        [variable]: "1",
+        ...Object.fromEntries(properties.map((p)=>{
+            return [
+                p,
+                (0, _color.formatColor)({
+                    ...parsed,
+                    alpha: `var(${variable}, 1)`
+                })
+            ];
+        }))
+    };
+}
Index: frontend/node_modules/tailwindcss/lib/value-parser/LICENSE
===================================================================
--- frontend/node_modules/tailwindcss/lib/value-parser/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/value-parser/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,22 @@
+Copyright (c) Bogdan Chadkin <trysound@yandex.ru>
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
Index: frontend/node_modules/tailwindcss/lib/value-parser/README.md
===================================================================
--- frontend/node_modules/tailwindcss/lib/value-parser/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/value-parser/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+# postcss-value-parser (forked + inlined)
+
+This is a customized version of of [PostCSS Value Parser](https://github.com/TrySound/postcss-value-parser) to fix some bugs around parsing CSS functions.
Index: frontend/node_modules/tailwindcss/lib/value-parser/index.d.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/value-parser/index.d.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/value-parser/index.d.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+"use strict";
+module.exports = postcssValueParser;
Index: frontend/node_modules/tailwindcss/lib/value-parser/index.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/value-parser/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/value-parser/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,22 @@
+"use strict";
+var parse = require("./parse");
+var walk = require("./walk");
+var stringify = require("./stringify");
+function ValueParser(value) {
+    if (this instanceof ValueParser) {
+        this.nodes = parse(value);
+        return this;
+    }
+    return new ValueParser(value);
+}
+ValueParser.prototype.toString = function() {
+    return Array.isArray(this.nodes) ? stringify(this.nodes) : "";
+};
+ValueParser.prototype.walk = function(cb, bubble) {
+    walk(this.nodes, cb, bubble);
+    return this;
+};
+ValueParser.unit = require("./unit");
+ValueParser.walk = walk;
+ValueParser.stringify = stringify;
+module.exports = ValueParser;
Index: frontend/node_modules/tailwindcss/lib/value-parser/parse.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/value-parser/parse.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/value-parser/parse.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,259 @@
+"use strict";
+var openParentheses = "(".charCodeAt(0);
+var closeParentheses = ")".charCodeAt(0);
+var singleQuote = "'".charCodeAt(0);
+var doubleQuote = '"'.charCodeAt(0);
+var backslash = "\\".charCodeAt(0);
+var slash = "/".charCodeAt(0);
+var comma = ",".charCodeAt(0);
+var colon = ":".charCodeAt(0);
+var star = "*".charCodeAt(0);
+var uLower = "u".charCodeAt(0);
+var uUpper = "U".charCodeAt(0);
+var plus = "+".charCodeAt(0);
+var isUnicodeRange = /^[a-f0-9?-]+$/i;
+module.exports = function(input) {
+    var tokens = [];
+    var value = input;
+    var next, quote, prev, token, escape, escapePos, whitespacePos, parenthesesOpenPos;
+    var pos = 0;
+    var code = value.charCodeAt(pos);
+    var max = value.length;
+    var stack = [
+        {
+            nodes: tokens
+        }
+    ];
+    var balanced = 0;
+    var parent;
+    var name = "";
+    var before = "";
+    var after = "";
+    while(pos < max){
+        // Whitespaces
+        if (code <= 32) {
+            next = pos;
+            do {
+                next += 1;
+                code = value.charCodeAt(next);
+            }while (code <= 32);
+            token = value.slice(pos, next);
+            prev = tokens[tokens.length - 1];
+            if (code === closeParentheses && balanced) {
+                after = token;
+            } else if (prev && prev.type === "div") {
+                prev.after = token;
+                prev.sourceEndIndex += token.length;
+            } else if (code === comma || code === colon || code === slash && value.charCodeAt(next + 1) !== star && (!parent || parent && parent.type === "function" && false)) {
+                before = token;
+            } else {
+                tokens.push({
+                    type: "space",
+                    sourceIndex: pos,
+                    sourceEndIndex: next,
+                    value: token
+                });
+            }
+            pos = next;
+        // Quotes
+        } else if (code === singleQuote || code === doubleQuote) {
+            next = pos;
+            quote = code === singleQuote ? "'" : '"';
+            token = {
+                type: "string",
+                sourceIndex: pos,
+                quote: quote
+            };
+            do {
+                escape = false;
+                next = value.indexOf(quote, next + 1);
+                if (~next) {
+                    escapePos = next;
+                    while(value.charCodeAt(escapePos - 1) === backslash){
+                        escapePos -= 1;
+                        escape = !escape;
+                    }
+                } else {
+                    value += quote;
+                    next = value.length - 1;
+                    token.unclosed = true;
+                }
+            }while (escape);
+            token.value = value.slice(pos + 1, next);
+            token.sourceEndIndex = token.unclosed ? next : next + 1;
+            tokens.push(token);
+            pos = next + 1;
+            code = value.charCodeAt(pos);
+        // Comments
+        } else if (code === slash && value.charCodeAt(pos + 1) === star) {
+            next = value.indexOf("*/", pos);
+            token = {
+                type: "comment",
+                sourceIndex: pos,
+                sourceEndIndex: next + 2
+            };
+            if (next === -1) {
+                token.unclosed = true;
+                next = value.length;
+                token.sourceEndIndex = next;
+            }
+            token.value = value.slice(pos + 2, next);
+            tokens.push(token);
+            pos = next + 2;
+            code = value.charCodeAt(pos);
+        // Operation within calc
+        } else if ((code === slash || code === star) && parent && parent.type === "function" && true) {
+            token = value[pos];
+            tokens.push({
+                type: "word",
+                sourceIndex: pos - before.length,
+                sourceEndIndex: pos + token.length,
+                value: token
+            });
+            pos += 1;
+            code = value.charCodeAt(pos);
+        // Dividers
+        } else if (code === slash || code === comma || code === colon) {
+            token = value[pos];
+            tokens.push({
+                type: "div",
+                sourceIndex: pos - before.length,
+                sourceEndIndex: pos + token.length,
+                value: token,
+                before: before,
+                after: ""
+            });
+            before = "";
+            pos += 1;
+            code = value.charCodeAt(pos);
+        // Open parentheses
+        } else if (openParentheses === code) {
+            // Whitespaces after open parentheses
+            next = pos;
+            do {
+                next += 1;
+                code = value.charCodeAt(next);
+            }while (code <= 32);
+            parenthesesOpenPos = pos;
+            token = {
+                type: "function",
+                sourceIndex: pos - name.length,
+                value: name,
+                before: value.slice(parenthesesOpenPos + 1, next)
+            };
+            pos = next;
+            if (name === "url" && code !== singleQuote && code !== doubleQuote) {
+                next -= 1;
+                do {
+                    escape = false;
+                    next = value.indexOf(")", next + 1);
+                    if (~next) {
+                        escapePos = next;
+                        while(value.charCodeAt(escapePos - 1) === backslash){
+                            escapePos -= 1;
+                            escape = !escape;
+                        }
+                    } else {
+                        value += ")";
+                        next = value.length - 1;
+                        token.unclosed = true;
+                    }
+                }while (escape);
+                // Whitespaces before closed
+                whitespacePos = next;
+                do {
+                    whitespacePos -= 1;
+                    code = value.charCodeAt(whitespacePos);
+                }while (code <= 32);
+                if (parenthesesOpenPos < whitespacePos) {
+                    if (pos !== whitespacePos + 1) {
+                        token.nodes = [
+                            {
+                                type: "word",
+                                sourceIndex: pos,
+                                sourceEndIndex: whitespacePos + 1,
+                                value: value.slice(pos, whitespacePos + 1)
+                            }
+                        ];
+                    } else {
+                        token.nodes = [];
+                    }
+                    if (token.unclosed && whitespacePos + 1 !== next) {
+                        token.after = "";
+                        token.nodes.push({
+                            type: "space",
+                            sourceIndex: whitespacePos + 1,
+                            sourceEndIndex: next,
+                            value: value.slice(whitespacePos + 1, next)
+                        });
+                    } else {
+                        token.after = value.slice(whitespacePos + 1, next);
+                        token.sourceEndIndex = next;
+                    }
+                } else {
+                    token.after = "";
+                    token.nodes = [];
+                }
+                pos = next + 1;
+                token.sourceEndIndex = token.unclosed ? next : pos;
+                code = value.charCodeAt(pos);
+                tokens.push(token);
+            } else {
+                balanced += 1;
+                token.after = "";
+                token.sourceEndIndex = pos + 1;
+                tokens.push(token);
+                stack.push(token);
+                tokens = token.nodes = [];
+                parent = token;
+            }
+            name = "";
+        // Close parentheses
+        } else if (closeParentheses === code && balanced) {
+            pos += 1;
+            code = value.charCodeAt(pos);
+            parent.after = after;
+            parent.sourceEndIndex += after.length;
+            after = "";
+            balanced -= 1;
+            stack[stack.length - 1].sourceEndIndex = pos;
+            stack.pop();
+            parent = stack[balanced];
+            tokens = parent.nodes;
+        // Words
+        } else {
+            next = pos;
+            do {
+                if (code === backslash) {
+                    next += 1;
+                }
+                next += 1;
+                code = value.charCodeAt(next);
+            }while (next < max && !(code <= 32 || code === singleQuote || code === doubleQuote || code === comma || code === colon || code === slash || code === openParentheses || code === star && parent && parent.type === "function" && true || code === slash && parent.type === "function" && true || code === closeParentheses && balanced));
+            token = value.slice(pos, next);
+            if (openParentheses === code) {
+                name = token;
+            } else if ((uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) && plus === token.charCodeAt(1) && isUnicodeRange.test(token.slice(2))) {
+                tokens.push({
+                    type: "unicode-range",
+                    sourceIndex: pos,
+                    sourceEndIndex: next,
+                    value: token
+                });
+            } else {
+                tokens.push({
+                    type: "word",
+                    sourceIndex: pos,
+                    sourceEndIndex: next,
+                    value: token
+                });
+            }
+            pos = next;
+        }
+    }
+    for(pos = stack.length - 1; pos; pos -= 1){
+        stack[pos].unclosed = true;
+        stack[pos].sourceEndIndex = value.length;
+    }
+    return stack[0].nodes;
+};
Index: frontend/node_modules/tailwindcss/lib/value-parser/stringify.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/value-parser/stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/value-parser/stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,38 @@
+"use strict";
+function stringifyNode(node, custom) {
+    var type = node.type;
+    var value = node.value;
+    var buf;
+    var customResult;
+    if (custom && (customResult = custom(node)) !== undefined) {
+        return customResult;
+    } else if (type === "word" || type === "space") {
+        return value;
+    } else if (type === "string") {
+        buf = node.quote || "";
+        return buf + value + (node.unclosed ? "" : buf);
+    } else if (type === "comment") {
+        return "/*" + value + (node.unclosed ? "" : "*/");
+    } else if (type === "div") {
+        return (node.before || "") + value + (node.after || "");
+    } else if (Array.isArray(node.nodes)) {
+        buf = stringify(node.nodes, custom);
+        if (type !== "function") {
+            return buf;
+        }
+        return value + "(" + (node.before || "") + buf + (node.after || "") + (node.unclosed ? "" : ")");
+    }
+    return value;
+}
+function stringify(nodes, custom) {
+    var result, i;
+    if (Array.isArray(nodes)) {
+        result = "";
+        for(i = nodes.length - 1; ~i; i -= 1){
+            result = stringifyNode(nodes[i], custom) + result;
+        }
+        return result;
+    }
+    return stringifyNode(nodes, custom);
+}
+module.exports = stringify;
Index: frontend/node_modules/tailwindcss/lib/value-parser/unit.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/value-parser/unit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/value-parser/unit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,86 @@
+"use strict";
+var minus = "-".charCodeAt(0);
+var plus = "+".charCodeAt(0);
+var dot = ".".charCodeAt(0);
+var exp = "e".charCodeAt(0);
+var EXP = "E".charCodeAt(0);
+// Check if three code points would start a number
+// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number
+function likeNumber(value) {
+    var code = value.charCodeAt(0);
+    var nextCode;
+    if (code === plus || code === minus) {
+        nextCode = value.charCodeAt(1);
+        if (nextCode >= 48 && nextCode <= 57) {
+            return true;
+        }
+        var nextNextCode = value.charCodeAt(2);
+        if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {
+            return true;
+        }
+        return false;
+    }
+    if (code === dot) {
+        nextCode = value.charCodeAt(1);
+        if (nextCode >= 48 && nextCode <= 57) {
+            return true;
+        }
+        return false;
+    }
+    if (code >= 48 && code <= 57) {
+        return true;
+    }
+    return false;
+}
+// Consume a number
+// https://www.w3.org/TR/css-syntax-3/#consume-number
+module.exports = function(value) {
+    var pos = 0;
+    var length = value.length;
+    var code;
+    var nextCode;
+    var nextNextCode;
+    if (length === 0 || !likeNumber(value)) {
+        return false;
+    }
+    code = value.charCodeAt(pos);
+    if (code === plus || code === minus) {
+        pos++;
+    }
+    while(pos < length){
+        code = value.charCodeAt(pos);
+        if (code < 48 || code > 57) {
+            break;
+        }
+        pos += 1;
+    }
+    code = value.charCodeAt(pos);
+    nextCode = value.charCodeAt(pos + 1);
+    if (code === dot && nextCode >= 48 && nextCode <= 57) {
+        pos += 2;
+        while(pos < length){
+            code = value.charCodeAt(pos);
+            if (code < 48 || code > 57) {
+                break;
+            }
+            pos += 1;
+        }
+    }
+    code = value.charCodeAt(pos);
+    nextCode = value.charCodeAt(pos + 1);
+    nextNextCode = value.charCodeAt(pos + 2);
+    if ((code === exp || code === EXP) && (nextCode >= 48 && nextCode <= 57 || (nextCode === plus || nextCode === minus) && nextNextCode >= 48 && nextNextCode <= 57)) {
+        pos += nextCode === plus || nextCode === minus ? 3 : 2;
+        while(pos < length){
+            code = value.charCodeAt(pos);
+            if (code < 48 || code > 57) {
+                break;
+            }
+            pos += 1;
+        }
+    }
+    return {
+        number: value.slice(0, pos),
+        unit: value.slice(pos)
+    };
+};
Index: frontend/node_modules/tailwindcss/lib/value-parser/walk.js
===================================================================
--- frontend/node_modules/tailwindcss/lib/value-parser/walk.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/lib/value-parser/walk.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,16 @@
+"use strict";
+module.exports = function walk(nodes, cb, bubble) {
+    var i, max, node, result;
+    for(i = 0, max = nodes.length; i < max; i += 1){
+        node = nodes[i];
+        if (!bubble) {
+            result = cb(node, i, nodes);
+        }
+        if (result !== false && node.type === "function" && Array.isArray(node.nodes)) {
+            walk(node.nodes, cb, bubble);
+        }
+        if (bubble) {
+            cb(node, i, nodes);
+        }
+    }
+};
Index: frontend/node_modules/tailwindcss/loadConfig.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/loadConfig.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/loadConfig.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { Config } from './types/config'
+
+declare function loadConfig(path: string): Config
+export = loadConfig
Index: frontend/node_modules/tailwindcss/loadConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/loadConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/loadConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+let loadConfig = require('./lib/public/load-config')
+module.exports = (loadConfig.__esModule ? loadConfig : { default: loadConfig }).default
Index: frontend/node_modules/tailwindcss/nesting/index.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/nesting/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/nesting/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { AcceptedPlugin, PluginCreator } from 'postcss'
+
+declare const plugin: PluginCreator<AcceptedPlugin | string | void>
+export = plugin
Index: frontend/node_modules/tailwindcss/nesting/index.js
===================================================================
--- frontend/node_modules/tailwindcss/nesting/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/nesting/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+let nesting = require('../lib/postcss-plugins/nesting')
+module.exports = (nesting.__esModule ? nesting : { default: nesting }).default
Index: frontend/node_modules/tailwindcss/node_modules/.bin/yaml
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/.bin/yaml	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/.bin/yaml	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,16 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*)
+        if command -v cygpath > /dev/null 2>&1; then
+            basedir=`cygpath -w "$basedir"`
+        fi
+    ;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  exec "$basedir/node"  "$basedir/../yaml/bin.mjs" "$@"
+else 
+  exec node  "$basedir/../yaml/bin.mjs" "$@"
+fi
Index: frontend/node_modules/tailwindcss/node_modules/.bin/yaml.cmd
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/.bin/yaml.cmd	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/.bin/yaml.cmd	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\yaml\bin.mjs" %*
Index: frontend/node_modules/tailwindcss/node_modules/.bin/yaml.ps1
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/.bin/yaml.ps1	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/.bin/yaml.ps1	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "$basedir/node$exe"  "$basedir/../yaml/bin.mjs" $args
+  } else {
+    & "$basedir/node$exe"  "$basedir/../yaml/bin.mjs" $args
+  }
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "node$exe"  "$basedir/../yaml/bin.mjs" $args
+  } else {
+    & "node$exe"  "$basedir/../yaml/bin.mjs" $args
+  }
+  $ret=$LASTEXITCODE
+}
+exit $ret
Index: frontend/node_modules/tailwindcss/node_modules/lilconfig/LICENSE
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/lilconfig/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/lilconfig/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Anton Kastritskiy
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Index: frontend/node_modules/tailwindcss/node_modules/lilconfig/package.json
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/lilconfig/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/lilconfig/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,42 @@
+{
+  "name": "lilconfig",
+  "version": "3.1.3",
+  "description": "A zero-dependency alternative to cosmiconfig",
+  "main": "src/index.js",
+  "types": "src/index.d.ts",
+  "scripts": {
+    "test": "NODE_OPTIONS=--experimental-vm-modules ./node_modules/.bin/jest --coverage",
+    "lint": "biome ci ./src",
+    "types": "tsc"
+  },
+  "keywords": [
+    "cosmiconfig",
+    "config",
+    "configuration",
+    "search"
+  ],
+  "files": [
+    "src/index.*"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/antonk52/lilconfig"
+  },
+  "bugs": "https://github.com/antonk52/lilconfig/issues",
+  "author": "antonk52",
+  "license": "MIT",
+  "devDependencies": {
+    "@biomejs/biome": "^1.6.0",
+    "@types/jest": "^29.5.12",
+    "@types/node": "^14.18.63",
+    "@types/webpack-env": "^1.18.5",
+    "cosmiconfig": "^8.3.6",
+    "jest": "^29.7.0",
+    "typescript": "^5.3.3",
+    "uvu": "^0.5.6"
+  },
+  "funding": "https://github.com/sponsors/antonk52",
+  "engines": {
+    "node": ">=14"
+  }
+}
Index: frontend/node_modules/tailwindcss/node_modules/lilconfig/readme.md
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/lilconfig/readme.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/lilconfig/readme.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,98 @@
+# Lilconfig ⚙️
+[![npm version](https://badge.fury.io/js/lilconfig.svg)](https://badge.fury.io/js/lilconfig)
+[![install size](https://packagephobia.now.sh/badge?p=lilconfig)](https://packagephobia.now.sh/result?p=lilconfig)
+[![Coverage Status](https://coveralls.io/repos/github/antonk52/lilconfig/badge.svg)](https://coveralls.io/github/antonk52/lilconfig)
+
+A zero-dependency alternative to [cosmiconfig](https://www.npmjs.com/package/cosmiconfig) with the same API.
+
+## Installation
+
+```sh
+npm install lilconfig
+```
+
+## Usage
+
+```js
+import {lilconfig, lilconfigSync} from 'lilconfig';
+
+// all keys are optional
+const options = {
+    stopDir: '/Users/you/some/dir',
+    searchPlaces: ['package.json', 'myapp.conf.js'],
+    ignoreEmptySearchPlaces: false
+}
+
+lilconfig(
+    'myapp',
+    options // optional
+).search() // Promise<LilconfigResult>
+
+lilconfigSync(
+    'myapp',
+    options // optional
+).load(pathToConfig) // LilconfigResult
+
+/**
+ * LilconfigResult
+ * {
+ *   config: any; // your config
+ *   filepath: string;
+ * }
+ */
+```
+
+## ESM
+
+ESM configs can be loaded with **async API only**. Specifically `js` files in projects with `"type": "module"` in `package.json` or `mjs` files.
+
+## Difference to `cosmiconfig`
+Lilconfig does not intend to be 100% compatible with `cosmiconfig` but tries to mimic it where possible. The key difference is **no** support for yaml files out of the box(`lilconfig` attempts to parse files with no extension as JSON instead of YAML). You can still add the support for YAML files by providing a loader, see an [example](#yaml-loader) below.
+
+### Options difference between the two.
+
+|cosmiconfig option      | lilconfig |
+|------------------------|-----------|
+|cache                   | ✅        |
+|loaders                 | ✅        |
+|ignoreEmptySearchPlaces | ✅        |
+|packageProp             | ✅        |
+|searchPlaces            | ✅        |
+|stopDir                 | ✅        |
+|transform               | ✅        |
+
+## Loaders examples
+
+### Yaml loader
+
+If you need the YAML support you can provide your own loader
+
+```js
+import {lilconfig} from 'lilconfig';
+import yaml from 'yaml';
+
+function loadYaml(filepath, content) {
+    return yaml.parse(content);
+}
+
+const options = {
+    loaders: {
+        '.yaml': loadYaml,
+        '.yml': loadYaml,
+        // loader for files with no extension
+        noExt: loadYaml
+    }
+};
+
+lilconfig('myapp', options)
+    .search()
+    .then(result => {
+        result // {config, filepath}
+    });
+```
+
+## Version correlation
+
+- lilconig v1 → cosmiconfig v6
+- lilconig v2 → cosmiconfig v7
+- lilconig v3 → cosmiconfig v8
Index: frontend/node_modules/tailwindcss/node_modules/lilconfig/src/index.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/lilconfig/src/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/lilconfig/src/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,54 @@
+export type LilconfigResult = null | {
+	filepath: string;
+	config: any;
+	isEmpty?: boolean;
+};
+interface OptionsBase {
+	cache?: boolean;
+	stopDir?: string;
+	searchPlaces?: string[];
+	ignoreEmptySearchPlaces?: boolean;
+	packageProp?: string | string[];
+}
+export type Transform =
+	| TransformSync
+	| ((result: LilconfigResult) => Promise<LilconfigResult>);
+export type TransformSync = (result: LilconfigResult) => LilconfigResult;
+type LoaderResult = any;
+export type LoaderSync = (filepath: string, content: string) => LoaderResult;
+export type Loader =
+	| LoaderSync
+	| ((filepath: string, content: string) => Promise<LoaderResult>);
+export type Loaders = Record<string, Loader>;
+export type LoadersSync = Record<string, LoaderSync>;
+export interface Options extends OptionsBase {
+	loaders?: Loaders;
+	transform?: Transform;
+}
+export interface OptionsSync extends OptionsBase {
+	loaders?: LoadersSync;
+	transform?: TransformSync;
+}
+export declare const defaultLoadersSync: LoadersSync;
+export declare const defaultLoaders: Loaders;
+type ClearCaches = {
+	clearLoadCache: () => void;
+	clearSearchCache: () => void;
+	clearCaches: () => void;
+};
+type AsyncSearcher = {
+	search(searchFrom?: string): Promise<LilconfigResult>;
+	load(filepath: string): Promise<LilconfigResult>;
+} & ClearCaches;
+export declare function lilconfig(
+	name: string,
+	options?: Partial<Options>,
+): AsyncSearcher;
+type SyncSearcher = {
+	search(searchFrom?: string): LilconfigResult;
+	load(filepath: string): LilconfigResult;
+} & ClearCaches;
+export declare function lilconfigSync(
+	name: string,
+	options?: OptionsSync,
+): SyncSearcher;
Index: frontend/node_modules/tailwindcss/node_modules/lilconfig/src/index.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/lilconfig/src/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/lilconfig/src/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,460 @@
+// @ts-check
+const path = require('path');
+const fs = require('fs');
+const os = require('os');
+const url = require('url');
+
+const fsReadFileAsync = fs.promises.readFile;
+
+/** @type {(name: string, sync: boolean) => string[]} */
+function getDefaultSearchPlaces(name, sync) {
+	return [
+		'package.json',
+		`.${name}rc.json`,
+		`.${name}rc.js`,
+		`.${name}rc.cjs`,
+		...(sync ? [] : [`.${name}rc.mjs`]),
+		`.config/${name}rc`,
+		`.config/${name}rc.json`,
+		`.config/${name}rc.js`,
+		`.config/${name}rc.cjs`,
+		...(sync ? [] : [`.config/${name}rc.mjs`]),
+		`${name}.config.js`,
+		`${name}.config.cjs`,
+		...(sync ? [] : [`${name}.config.mjs`]),
+	];
+}
+
+/**
+ * @type {(p: string) => string}
+ *
+ * see #17
+ * On *nix, if cwd is not under homedir,
+ * the last path will be '', ('/build' -> '')
+ * but it should be '/' actually.
+ * And on Windows, this will never happen. ('C:\build' -> 'C:')
+ */
+function parentDir(p) {
+	return path.dirname(p) || path.sep;
+}
+
+/** @type {import('./index').LoaderSync} */
+const jsonLoader = (_, content) => JSON.parse(content);
+// Use plain require in webpack context for dynamic import
+const requireFunc =
+	typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require;
+/** @type {import('./index').LoadersSync} */
+const defaultLoadersSync = Object.freeze({
+	'.js': requireFunc,
+	'.json': requireFunc,
+	'.cjs': requireFunc,
+	noExt: jsonLoader,
+});
+module.exports.defaultLoadersSync = defaultLoadersSync;
+
+/** @type {import('./index').Loader} */
+const dynamicImport = async id => {
+	try {
+		const fileUrl = url.pathToFileURL(id).href;
+		const mod = await import(/* webpackIgnore: true */ fileUrl);
+
+		return mod.default;
+	} catch (e) {
+		try {
+			return requireFunc(id);
+		} catch (/** @type {any} */ requireE) {
+			if (
+				requireE.code === 'ERR_REQUIRE_ESM' ||
+				(requireE instanceof SyntaxError &&
+					requireE
+						.toString()
+						.includes('Cannot use import statement outside a module'))
+			) {
+				throw e;
+			}
+			throw requireE;
+		}
+	}
+};
+
+/** @type {import('./index').Loaders} */
+const defaultLoaders = Object.freeze({
+	'.js': dynamicImport,
+	'.mjs': dynamicImport,
+	'.cjs': dynamicImport,
+	'.json': jsonLoader,
+	noExt: jsonLoader,
+});
+module.exports.defaultLoaders = defaultLoaders;
+
+/**
+ * @param {string} name
+ * @param {import('./index').Options | import('./index').OptionsSync} options
+ * @param {boolean} sync
+ * @returns {Required<import('./index').Options | import('./index').OptionsSync>}
+ */
+function getOptions(name, options, sync) {
+	/** @type {Required<import('./index').Options>} */
+	const conf = {
+		stopDir: os.homedir(),
+		searchPlaces: getDefaultSearchPlaces(name, sync),
+		ignoreEmptySearchPlaces: true,
+		cache: true,
+		transform: x => x,
+		packageProp: [name],
+		...options,
+		loaders: {
+			...(sync ? defaultLoadersSync : defaultLoaders),
+			...options.loaders,
+		},
+	};
+	conf.searchPlaces.forEach(place => {
+		const key = path.extname(place) || 'noExt';
+		const loader = conf.loaders[key];
+		if (!loader) {
+			throw new Error(`Missing loader for extension "${place}"`);
+		}
+
+		if (typeof loader !== 'function') {
+			throw new Error(
+				`Loader for extension "${place}" is not a function: Received ${typeof loader}.`,
+			);
+		}
+	});
+
+	return conf;
+}
+
+/** @type {(props: string | string[], obj: Record<string, any>) => unknown} */
+function getPackageProp(props, obj) {
+	if (typeof props === 'string' && props in obj) return obj[props];
+	return (
+		(Array.isArray(props) ? props : props.split('.')).reduce(
+			(acc, prop) => (acc === undefined ? acc : acc[prop]),
+			obj,
+		) || null
+	);
+}
+
+/** @param {string} filepath */
+function validateFilePath(filepath) {
+	if (!filepath) throw new Error('load must pass a non-empty string');
+}
+
+/** @type {(loader: import('./index').Loader, ext: string) => void} */
+function validateLoader(loader, ext) {
+	if (!loader) throw new Error(`No loader specified for extension "${ext}"`);
+	if (typeof loader !== 'function') throw new Error('loader is not a function');
+}
+
+/** @type {(enableCache: boolean) => <T>(c: Map<string, T>, filepath: string, res: T) => T} */
+const makeEmplace = enableCache => (c, filepath, res) => {
+	if (enableCache) c.set(filepath, res);
+	return res;
+};
+
+/** @type {import('./index').lilconfig} */
+module.exports.lilconfig = function lilconfig(name, options) {
+	const {
+		ignoreEmptySearchPlaces,
+		loaders,
+		packageProp,
+		searchPlaces,
+		stopDir,
+		transform,
+		cache,
+	} = getOptions(name, options ?? {}, false);
+	const searchCache = new Map();
+	const loadCache = new Map();
+	const emplace = makeEmplace(cache);
+
+	return {
+		async search(searchFrom = process.cwd()) {
+			/** @type {import('./index').LilconfigResult} */
+			const result = {
+				config: null,
+				filepath: '',
+			};
+
+			/** @type {Set<string>} */
+			const visited = new Set();
+			let dir = searchFrom;
+			dirLoop: while (true) {
+				if (cache) {
+					const r = searchCache.get(dir);
+					if (r !== undefined) {
+						for (const p of visited) searchCache.set(p, r);
+						return r;
+					}
+					visited.add(dir);
+				}
+
+				for (const searchPlace of searchPlaces) {
+					const filepath = path.join(dir, searchPlace);
+					try {
+						await fs.promises.access(filepath);
+					} catch {
+						continue;
+					}
+					const content = String(await fsReadFileAsync(filepath));
+					const loaderKey = path.extname(searchPlace) || 'noExt';
+					const loader = loaders[loaderKey];
+
+					// handle package.json
+					if (searchPlace === 'package.json') {
+						const pkg = await loader(filepath, content);
+						const maybeConfig = getPackageProp(packageProp, pkg);
+						if (maybeConfig != null) {
+							result.config = maybeConfig;
+							result.filepath = filepath;
+							break dirLoop;
+						}
+
+						continue;
+					}
+
+					// handle other type of configs
+					const isEmpty = content.trim() === '';
+					if (isEmpty && ignoreEmptySearchPlaces) continue;
+
+					if (isEmpty) {
+						result.isEmpty = true;
+						result.config = undefined;
+					} else {
+						validateLoader(loader, loaderKey);
+						result.config = await loader(filepath, content);
+					}
+					result.filepath = filepath;
+					break dirLoop;
+				}
+				if (dir === stopDir || dir === parentDir(dir)) break dirLoop;
+				dir = parentDir(dir);
+			}
+
+			const transformed =
+				// not found
+				result.filepath === '' && result.config === null
+					? transform(null)
+					: transform(result);
+
+			if (cache) {
+				for (const p of visited) searchCache.set(p, transformed);
+			}
+
+			return transformed;
+		},
+		async load(filepath) {
+			validateFilePath(filepath);
+			const absPath = path.resolve(process.cwd(), filepath);
+			if (cache && loadCache.has(absPath)) {
+				return loadCache.get(absPath);
+			}
+			const {base, ext} = path.parse(absPath);
+			const loaderKey = ext || 'noExt';
+			const loader = loaders[loaderKey];
+			validateLoader(loader, loaderKey);
+			const content = String(await fsReadFileAsync(absPath));
+
+			if (base === 'package.json') {
+				const pkg = await loader(absPath, content);
+				return emplace(
+					loadCache,
+					absPath,
+					transform({
+						config: getPackageProp(packageProp, pkg),
+						filepath: absPath,
+					}),
+				);
+			}
+			/** @type {import('./index').LilconfigResult} */
+			const result = {
+				config: null,
+				filepath: absPath,
+			};
+			// handle other type of configs
+			const isEmpty = content.trim() === '';
+			if (isEmpty && ignoreEmptySearchPlaces)
+				return emplace(
+					loadCache,
+					absPath,
+					transform({
+						config: undefined,
+						filepath: absPath,
+						isEmpty: true,
+					}),
+				);
+
+			// cosmiconfig returns undefined for empty files
+			result.config = isEmpty ? undefined : await loader(absPath, content);
+
+			return emplace(
+				loadCache,
+				absPath,
+				transform(isEmpty ? {...result, isEmpty, config: undefined} : result),
+			);
+		},
+		clearLoadCache() {
+			if (cache) loadCache.clear();
+		},
+		clearSearchCache() {
+			if (cache) searchCache.clear();
+		},
+		clearCaches() {
+			if (cache) {
+				loadCache.clear();
+				searchCache.clear();
+			}
+		},
+	};
+};
+
+/** @type {import('./index').lilconfigSync} */
+module.exports.lilconfigSync = function lilconfigSync(name, options) {
+	const {
+		ignoreEmptySearchPlaces,
+		loaders,
+		packageProp,
+		searchPlaces,
+		stopDir,
+		transform,
+		cache,
+	} = getOptions(name, options ?? {}, true);
+	const searchCache = new Map();
+	const loadCache = new Map();
+	const emplace = makeEmplace(cache);
+
+	return {
+		search(searchFrom = process.cwd()) {
+			/** @type {import('./index').LilconfigResult} */
+			const result = {
+				config: null,
+				filepath: '',
+			};
+
+			/** @type {Set<string>} */
+			const visited = new Set();
+			let dir = searchFrom;
+			dirLoop: while (true) {
+				if (cache) {
+					const r = searchCache.get(dir);
+					if (r !== undefined) {
+						for (const p of visited) searchCache.set(p, r);
+						return r;
+					}
+					visited.add(dir);
+				}
+
+				for (const searchPlace of searchPlaces) {
+					const filepath = path.join(dir, searchPlace);
+					try {
+						fs.accessSync(filepath);
+					} catch {
+						continue;
+					}
+					const loaderKey = path.extname(searchPlace) || 'noExt';
+					const loader = loaders[loaderKey];
+					const content = String(fs.readFileSync(filepath));
+
+					// handle package.json
+					if (searchPlace === 'package.json') {
+						const pkg = loader(filepath, content);
+						const maybeConfig = getPackageProp(packageProp, pkg);
+						if (maybeConfig != null) {
+							result.config = maybeConfig;
+							result.filepath = filepath;
+							break dirLoop;
+						}
+
+						continue;
+					}
+
+					// handle other type of configs
+					const isEmpty = content.trim() === '';
+					if (isEmpty && ignoreEmptySearchPlaces) continue;
+
+					if (isEmpty) {
+						result.isEmpty = true;
+						result.config = undefined;
+					} else {
+						validateLoader(loader, loaderKey);
+						result.config = loader(filepath, content);
+					}
+					result.filepath = filepath;
+					break dirLoop;
+				}
+				if (dir === stopDir || dir === parentDir(dir)) break dirLoop;
+				dir = parentDir(dir);
+			}
+
+			const transformed =
+				// not found
+				result.filepath === '' && result.config === null
+					? transform(null)
+					: transform(result);
+
+			if (cache) {
+				for (const p of visited) searchCache.set(p, transformed);
+			}
+
+			return transformed;
+		},
+		load(filepath) {
+			validateFilePath(filepath);
+			const absPath = path.resolve(process.cwd(), filepath);
+			if (cache && loadCache.has(absPath)) {
+				return loadCache.get(absPath);
+			}
+			const {base, ext} = path.parse(absPath);
+			const loaderKey = ext || 'noExt';
+			const loader = loaders[loaderKey];
+			validateLoader(loader, loaderKey);
+
+			const content = String(fs.readFileSync(absPath));
+
+			if (base === 'package.json') {
+				const pkg = loader(absPath, content);
+				return transform({
+					config: getPackageProp(packageProp, pkg),
+					filepath: absPath,
+				});
+			}
+			const result = {
+				config: null,
+				filepath: absPath,
+			};
+			// handle other type of configs
+			const isEmpty = content.trim() === '';
+			if (isEmpty && ignoreEmptySearchPlaces)
+				return emplace(
+					loadCache,
+					absPath,
+					transform({
+						filepath: absPath,
+						config: undefined,
+						isEmpty: true,
+					}),
+				);
+
+			// cosmiconfig returns undefined for empty files
+			result.config = isEmpty ? undefined : loader(absPath, content);
+
+			return emplace(
+				loadCache,
+				absPath,
+				transform(isEmpty ? {...result, isEmpty, config: undefined} : result),
+			);
+		},
+		clearLoadCache() {
+			if (cache) loadCache.clear();
+		},
+		clearSearchCache() {
+			if (cache) searchCache.clear();
+		},
+		clearCaches() {
+			if (cache) {
+				loadCache.clear();
+				searchCache.clear();
+			}
+		},
+	};
+};
Index: frontend/node_modules/tailwindcss/node_modules/postcss-load-config/LICENSE
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/postcss-load-config/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/postcss-load-config/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright Michael Ciniawsky <michael.ciniawsky@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: frontend/node_modules/tailwindcss/node_modules/postcss-load-config/README.md
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/postcss-load-config/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/postcss-load-config/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,474 @@
+
+
+<div align="center">
+  <img width="100" height="100" title="Load Options" src="http://michael-ciniawsky.github.io/postcss-load-options/logo.svg">
+  <a href="https://github.com/postcss/postcss">
+    <img width="110" height="110" title="PostCSS"           src="http://postcss.github.io/postcss/logo.svg" hspace="10">
+  </a>
+  <img width="100" height="100" title="Load Plugins" src="http://michael-ciniawsky.github.io/postcss-load-plugins/logo.svg">
+  <h1>Load Config</h1>
+</div>
+
+<h2 align="center">Install</h2>
+
+```bash
+npm i -D postcss-load-config
+```
+
+<h2 align="center">Usage</h2>
+
+```bash
+npm i -S|-D postcss-plugin
+```
+
+Install all required PostCSS plugins and save them to your **package.json** `dependencies`/`devDependencies`
+
+Then create a PostCSS config file by choosing one of the following formats
+
+### `package.json`
+
+Create a **`postcss`** section in your project's **`package.json`**
+
+```
+Project (Root)
+  |– client
+  |– public
+  |
+  |- package.json
+```
+
+```json
+{
+  "postcss": {
+    "parser": "sugarss",
+    "map": false,
+    "plugins": {
+      "postcss-plugin": {}
+    }
+  }
+}
+```
+
+### `.postcssrc`
+
+Create a **`.postcssrc`** file in JSON or YAML format
+
+> ℹ️ It's recommended to use an extension (e.g **`.postcssrc.json`** or **`.postcssrc.yml`**) instead of `.postcssrc`
+
+```
+Project (Root)
+  |– client
+  |– public
+  |
+  |- (.postcssrc|.postcssrc.json|.postcssrc.yml)
+  |- package.json
+```
+
+**`.postcssrc.json`**
+```json
+{
+  "parser": "sugarss",
+  "map": false,
+  "plugins": {
+    "postcss-plugin": {}
+  }
+}
+```
+
+**`.postcssrc.yml`**
+```yaml
+parser: sugarss
+map: false
+plugins:
+  postcss-plugin: {}
+```
+
+> [!NOTE]
+> For YAML configs, you must have [yaml](https://www.npmjs.com/package/yaml) installed as a peer dependency.
+
+### `.postcssrc.js` or `postcss.config.js`
+
+You may need some logic within your config.
+In this case create JS/TS file named:
+- `.postcssrc.js`
+- `.postcssrc.mjs`
+- `.postcssrc.cjs`
+- `.postcssrc.ts`
+- `.postcssrc.mts`
+- `.postcssrc.cts`
+- `postcss.config.js`
+- `postcss.config.mjs`
+- `postcss.config.cjs`
+- `postcss.config.ts`
+- `postcss.config.mts`
+- `postcss.config.cts`
+
+> [!NOTE]
+> For TypeScript configs, you must have [tsx](https://www.npmjs.com/package/tsx) or [jiti](https://www.npmjs.com/package/jiti) installed as a peer dependency.
+
+```
+Project (Root)
+  |– client
+  |– public
+  |- (.postcssrc|postcss.config).(js|mjs|cjs|ts|mts|cts)
+  |- package.json
+```
+
+You can export the config as an `{Object}`
+
+**.postcssrc.js**
+```js
+module.exports = {
+  parser: 'sugarss',
+  map: false,
+  plugins: {
+    'postcss-plugin': {}
+  }
+}
+```
+
+Or export a `{Function}` that returns the config (more about the `ctx` param below)
+
+**.postcssrc.js**
+```js
+module.exports = (ctx) => ({
+  parser: ctx.parser ? 'sugarss' : false,
+  map: ctx.env === 'development' ? ctx.map : false,
+  plugins: {
+    'postcss-plugin': ctx.options.plugin
+  }
+})
+```
+
+Plugins can be loaded either using an `{Object}` or an `{Array}`
+
+#### `{Object}`
+
+**.postcssrc.js**
+```js
+module.exports = ({ env }) => ({
+  ...options,
+  plugins: {
+    'postcss-plugin': env === 'production' ? {} : false
+  }
+})
+```
+
+> ℹ️ When using an `{Object}`, the key can be a Node.js module name, a path to a JavaScript file that is relative to the directory of the PostCSS config file, or an absolute path to a JavaScript file.
+
+#### `{Array}`
+
+**.postcssrc.js**
+```js
+module.exports = ({ env }) => ({
+  ...options,
+  plugins: [
+    env === 'production' ? require('postcss-plugin')() : false
+  ]
+})
+```
+> :warning: When using an `{Array}`, make sure to `require()` each plugin
+
+<h2 align="center">Options</h2>
+
+|Name|Type|Default|Description|
+|:--:|:--:|:-----:|:----------|
+|[**`to`**](#to)|`{String}`|`undefined`|Destination File Path|
+|[**`map`**](#map)|`{String\|Object}`|`false`|Enable/Disable Source Maps|
+|[**`from`**](#from)|`{String}`|`undefined`|Source File Path|
+|[**`parser`**](#parser)|`{String\|Function}`|`false`|Custom PostCSS Parser|
+|[**`syntax`**](#syntax)|`{String\|Function}`|`false`|Custom PostCSS Syntax|
+|[**`stringifier`**](#stringifier)|`{String\|Function}`|`false`|Custom PostCSS Stringifier|
+
+### `parser`
+
+**.postcssrc.js**
+```js
+module.exports = {
+  parser: 'sugarss'
+}
+```
+
+### `syntax`
+
+**.postcssrc.js**
+```js
+module.exports = {
+  syntax: 'postcss-scss'
+}
+```
+
+### `stringifier`
+
+**.postcssrc.js**
+```js
+module.exports = {
+  stringifier: 'midas'
+}
+```
+
+### [**`map`**](https://github.com/postcss/postcss/blob/master/docs/source-maps.md)
+
+**.postcssrc.js**
+```js
+module.exports = {
+  map: 'inline'
+}
+```
+
+> :warning: In most cases `options.from` && `options.to` are set by the third-party which integrates this package (CLI, gulp, webpack). It's unlikely one needs to set/use `options.from` && `options.to` within a config file. Unless you're a third-party plugin author using this module and its Node API directly **dont't set `options.from` && `options.to` yourself**
+
+### `to`
+
+```js
+module.exports = {
+  to: 'path/to/dest.css'
+}
+```
+
+### `from`
+
+```js
+module.exports = {
+  from: 'path/to/src.css'
+}
+```
+
+<h2 align="center">Plugins</h2>
+
+### `{} || null`
+
+The plugin will be loaded with defaults
+
+```js
+'postcss-plugin': {} || null
+```
+
+**.postcssrc.js**
+```js
+module.exports = {
+  plugins: {
+    'postcss-plugin': {} || null
+  }
+}
+```
+
+> :warning: `{}` must be an **empty** `{Object}` literal
+
+### `{Object}`
+
+The plugin will be loaded with given options
+
+```js
+'postcss-plugin': { option: '', option: '' }
+```
+
+**.postcssrc.js**
+```js
+module.exports = {
+  plugins: {
+    'postcss-plugin': { option: '', option: '' }
+  }
+}
+```
+
+### `false`
+
+The plugin will not be loaded
+
+```js
+'postcss-plugin': false
+```
+
+**.postcssrc.js**
+```js
+module.exports = {
+  plugins: {
+    'postcss-plugin': false
+  }
+}
+```
+
+### `Ordering`
+
+Plugin **execution order** is determined by declaration in the plugins section (**top-down**)
+
+```js
+{
+  plugins: {
+    'postcss-plugin': {}, // [0]
+    'postcss-plugin': {}, // [1]
+    'postcss-plugin': {}  // [2]
+  }
+}
+```
+
+<h2 align="center">Context</h2>
+
+When using a `{Function}` (`postcss.config.js` or `.postcssrc.js`), it's possible to pass context to `postcss-load-config`, which will be evaluated while loading your config. By default `ctx.env (process.env.NODE_ENV)` and `ctx.cwd (process.cwd())` are available on the `ctx` `{Object}`
+
+> ℹ️ Most third-party integrations add additional properties to the `ctx` (e.g `postcss-loader`). Check the specific module's README for more information about what is available on the respective `ctx`
+
+<h2 align="center">Examples</h2>
+
+**postcss.config.js**
+
+```js
+module.exports = (ctx) => ({
+  parser: ctx.parser ? 'sugarss' : false,
+  map: ctx.env === 'development' ? ctx.map : false,
+  plugins: {
+    'postcss-import': {},
+    'postcss-nested': {},
+    cssnano: ctx.env === 'production' ? {} : false
+  }
+})
+```
+
+<div align="center">
+  <img width="80" height="80" src="https://worldvectorlogo.com/logos/nodejs-icon.svg">
+</div>
+
+```json
+"scripts": {
+  "build": "NODE_ENV=production node postcss",
+  "start": "NODE_ENV=development node postcss"
+}
+```
+
+```js
+const { readFileSync } = require('fs')
+
+const postcss = require('postcss')
+const postcssrc = require('postcss-load-config')
+
+const css = readFileSync('index.css', 'utf8')
+
+const ctx = { parser: true, map: 'inline' }
+
+postcssrc(ctx).then(({ plugins, options }) => {
+  postcss(plugins)
+    .process(css, options)
+    .then((result) => console.log(result.css))
+})
+```
+
+<div align="center">
+  <img width="80" height="80" halign="10" src="https://worldvectorlogo.com/logos/gulp.svg">
+</div>
+
+```json
+"scripts": {
+  "build": "NODE_ENV=production gulp",
+  "start": "NODE_ENV=development gulp"
+}
+```
+
+```js
+const { task, src, dest, series, watch } = require('gulp')
+
+const postcss = require('gulp-postcssrc')
+
+const css = () => {
+  src('src/*.css')
+    .pipe(postcss())
+    .pipe(dest('dest'))
+})
+
+task('watch', () => {
+  watch(['src/*.css', 'postcss.config.js'], css)
+})
+
+task('default', series(css, 'watch'))
+```
+
+<div align="center">
+  <img width="80" height="80" src="https://cdn.rawgit.com/webpack/media/e7485eb2/logo/icon.svg">
+</div>
+
+```json
+"scripts": {
+  "build": "NODE_ENV=production webpack",
+  "start": "NODE_ENV=development webpack-dev-server"
+}
+```
+
+**webpack.config.js**
+```js
+module.exports = (env) => ({
+  module: {
+    rules: [
+      {
+        test: /\.css$/,
+        use: [
+          'style-loader',
+          'css-loader',
+          'postcss-loader'
+        ]
+      }
+    ]
+  }
+})
+```
+
+<h2 align="center">Maintainers</h2>
+
+<table>
+  <tbody>
+   <tr>
+    <td align="center">
+      <img width="150" height="150"
+        src="https://github.com/michael-ciniawsky.png?v=3&s=150">
+      <br />
+      <a href="https://github.com/michael-ciniawsky">Michael Ciniawsky</a>
+    </td>
+    <td align="center">
+      <img width="150" height="150"
+        src="https://github.com/ertrzyiks.png?v=3&s=150">
+      <br />
+      <a href="https://github.com/ertrzyiks">Mateusz Derks</a>
+    </td>
+  </tr>
+  <tbody>
+</table>
+
+<h2 align="center">Contributors</h2>
+
+<table>
+  <tbody>
+   <tr>
+    <td align="center">
+      <img width="150" height="150"
+        src="https://github.com/sparty02.png?v=3&s=150">
+      <br />
+      <a href="https://github.com/sparty02">Ryan Dunckel</a>
+    </td>
+    <td align="center">
+      <img width="150" height="150"
+        src="https://github.com/pcgilday.png?v=3&s=150">
+      <br />
+      <a href="https://github.com/pcgilday">Patrick Gilday</a>
+    </td>
+    <td align="center">
+      <img width="150" height="150"
+        src="https://github.com/daltones.png?v=3&s=150">
+      <br />
+      <a href="https://github.com/daltones">Dalton Santos</a>
+    </td>
+    <td align="center">
+      <img width="150" height="150"
+        src="https://github.com/fwouts.png?v=3&s=150">
+      <br />
+      <a href="https://github.com/fwouts">François Wouts</a>
+    </td>
+  </tr>
+  <tbody>
+</table
+
+
+## Security Contact
+
+To report a security vulnerability, please use the [Tidelift security contact].
+Tidelift will coordinate the fix and disclosure.
+
+[Tidelift security contact]: https://tidelift.com/security
Index: frontend/node_modules/tailwindcss/node_modules/postcss-load-config/package.json
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/postcss-load-config/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/postcss-load-config/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,61 @@
+{
+  "name": "postcss-load-config",
+  "version": "6.0.1",
+  "description": "Autoload Config for PostCSS",
+  "main": "src/index.js",
+  "types": "src/index.d.ts",
+  "files": [
+    "src"
+  ],
+  "engines": {
+    "node": ">= 18"
+  },
+  "funding": [
+    {
+      "type": "opencollective",
+      "url": "https://opencollective.com/postcss/"
+    },
+    {
+      "type": "github",
+      "url": "https://github.com/sponsors/ai"
+    }
+  ],
+  "dependencies": {
+    "lilconfig": "^3.1.1"
+  },
+  "peerDependencies": {
+    "jiti": ">=1.21.0",
+    "postcss": ">=8.0.9",
+    "tsx": "^4.8.1",
+    "yaml": "^2.4.2"
+  },
+  "peerDependenciesMeta": {
+    "jiti": {
+      "optional": true
+    },
+    "postcss": {
+      "optional": true
+    },
+    "tsx": {
+      "optional": true
+    },
+    "yaml": {
+      "optional": true
+    }
+  },
+  "keywords": [
+    "postcss",
+    "postcssrc",
+    "postcss.config.js"
+  ],
+  "author": "Michael Ciniawky <michael.ciniawsky@gmail.com>",
+  "contributors": [
+    "Ryan Dunckel",
+    "Mateusz Derks",
+    "Dalton Santos",
+    "Patrick Gilday",
+    "François Wouts"
+  ],
+  "repository": "postcss/postcss-load-config",
+  "license": "MIT"
+}
Index: frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/index.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,65 @@
+// based on @types/postcss-load-config@2.0.1
+// Type definitions for postcss-load-config 2.1
+import Processor from 'postcss/lib/processor'
+import { Plugin, ProcessOptions, Transformer } from 'postcss'
+import { Options as ConfigOptions } from 'lilconfig'
+
+declare function postcssrc(
+  ctx?: postcssrc.ConfigContext,
+  path?: string,
+  options?: ConfigOptions
+): Promise<postcssrc.Result>
+
+declare namespace postcssrc {
+  // In the ConfigContext, these three options can be instances of the
+  // appropriate class, or strings. If they are strings, postcss-load-config will
+  // require() them and pass the instances along.
+  export interface ProcessOptionsPreload {
+    parser?: string | ProcessOptions['parser']
+    stringifier?: string | ProcessOptions['stringifier']
+    syntax?: string | ProcessOptions['syntax']
+  }
+
+  // The remaining ProcessOptions, sans the three above.
+  export type RemainingProcessOptions = Pick<
+    ProcessOptions,
+    Exclude<keyof ProcessOptions, keyof ProcessOptionsPreload>
+  >
+
+  // Additional context options that postcss-load-config understands.
+  export interface Context {
+    cwd?: string
+    env?: string
+  }
+
+  // The full shape of the ConfigContext.
+  export type ConfigContext = Context &
+    ProcessOptionsPreload &
+    RemainingProcessOptions
+
+  // Result of postcssrc is a Promise containing the filename plus the options
+  // and plugins that are ready to pass on to postcss.
+  export type ResultPlugin = Plugin | Transformer | Processor
+
+  export interface Result {
+    file: string
+    options: ProcessOptions
+    plugins: ResultPlugin[]
+  }
+
+  export type ConfigPlugin = Transformer | Plugin | Processor
+
+  export interface Config {
+    parser?: string | ProcessOptions['parser'] | false
+    stringifier?: string | ProcessOptions['stringifier'] | false
+    syntax?: string | ProcessOptions['syntax'] | false
+    map?: string | false
+    from?: string
+    to?: string
+    plugins?: Array<ConfigPlugin | false> | Record<string, object | false>
+  }
+
+  export type ConfigFn = (ctx: ConfigContext) => Config | Promise<Config>
+}
+
+export = postcssrc
Index: frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/index.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,178 @@
+// @ts-check
+const { resolve } = require('node:path')
+
+const config = require('lilconfig')
+
+const loadOptions = require('./options.js')
+const loadPlugins = require('./plugins.js')
+const req = require('./req.js')
+
+const interopRequireDefault = obj =>
+  obj && obj.__esModule ? obj : { default: obj }
+
+/**
+ * Process the result from cosmiconfig
+ *
+ * @param  {Object} ctx Config Context
+ * @param  {Object} result Cosmiconfig result
+ *
+ * @return {Promise<Object>} PostCSS Config
+ */
+async function processResult(ctx, result) {
+  let file = result.filepath || ''
+  let projectConfig = interopRequireDefault(result.config).default || {}
+
+  if (typeof projectConfig === 'function') {
+    projectConfig = projectConfig(ctx)
+  } else {
+    projectConfig = Object.assign({}, projectConfig, ctx)
+  }
+
+  if (!projectConfig.plugins) {
+    projectConfig.plugins = []
+  }
+
+  let res = {
+    file,
+    options: await loadOptions(projectConfig, file),
+    plugins: await loadPlugins(projectConfig, file)
+  }
+  delete projectConfig.plugins
+  return res
+}
+
+/**
+ * Builds the Config Context
+ *
+ * @param  {Object} ctx Config Context
+ *
+ * @return {Object} Config Context
+ */
+function createContext(ctx) {
+  /**
+   * @type {Object}
+   *
+   * @prop {String} cwd=process.cwd() Config search start location
+   * @prop {String} env=process.env.NODE_ENV Config Enviroment, will be set to `development` by `postcss-load-config` if `process.env.NODE_ENV` is `undefined`
+   */
+  ctx = Object.assign(
+    {
+      cwd: process.cwd(),
+      env: process.env.NODE_ENV
+    },
+    ctx
+  )
+
+  if (!ctx.env) {
+    process.env.NODE_ENV = 'development'
+  }
+
+  return ctx
+}
+
+async function loader(filepath) {
+  return req(filepath)
+}
+
+let yaml
+async function yamlLoader(_, content) {
+  if (!yaml) {
+    try {
+      yaml = await import('yaml')
+    } catch (e) {
+      /* c8 ignore start */
+      throw new Error(
+        `'yaml' is required for the YAML configuration files. Make sure it is installed\nError: ${e.message}`
+      )
+    }
+  }
+  return yaml.parse(content);
+}
+
+/** @return {import('lilconfig').Options} */
+const withLoaders = (options = {}) => {
+  let moduleName = 'postcss'
+
+  return {
+    ...options,
+    loaders: {
+      ...options.loaders,
+      '.cjs': loader,
+      '.cts': loader,
+      '.js': loader,
+      '.mjs': loader,
+      '.mts': loader,
+      '.ts': loader,
+      '.yaml': yamlLoader,
+      '.yml': yamlLoader
+    },
+    searchPlaces: [
+      ...(options.searchPlaces || []),
+      'package.json',
+      `.${moduleName}rc`,
+      `.${moduleName}rc.json`,
+      `.${moduleName}rc.yaml`,
+      `.${moduleName}rc.yml`,
+      `.${moduleName}rc.ts`,
+      `.${moduleName}rc.cts`,
+      `.${moduleName}rc.mts`,
+      `.${moduleName}rc.js`,
+      `.${moduleName}rc.cjs`,
+      `.${moduleName}rc.mjs`,
+      `${moduleName}.config.ts`,
+      `${moduleName}.config.cts`,
+      `${moduleName}.config.mts`,
+      `${moduleName}.config.js`,
+      `${moduleName}.config.cjs`,
+      `${moduleName}.config.mjs`
+    ]
+  }
+}
+
+/**
+ * Load Config
+ *
+ * @method rc
+ *
+ * @param  {Object} ctx Config Context
+ * @param  {String} path Config Path
+ * @param  {Object} options Config Options
+ *
+ * @return {Promise} config PostCSS Config
+ */
+function rc(ctx, path, options) {
+  /**
+   * @type {Object} The full Config Context
+   */
+  ctx = createContext(ctx)
+
+  /**
+   * @type {String} `process.cwd()`
+   */
+  path = path ? resolve(path) : process.cwd()
+
+  return config
+    .lilconfig('postcss', withLoaders(options))
+    .search(path)
+    .then(result => {
+      if (!result) {
+        throw new Error(`No PostCSS Config found in: ${path}`)
+      }
+      return processResult(ctx, result)
+    })
+}
+
+/**
+ * Autoload Config for PostCSS
+ *
+ * @author Michael Ciniawsky @michael-ciniawsky <michael.ciniawsky@gmail.com>
+ * @license MIT
+ *
+ * @module postcss-load-config
+ * @version 2.1.0
+ *
+ * @requires comsiconfig
+ * @requires ./options
+ * @requires ./plugins
+ */
+module.exports = rc
Index: frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/options.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/options.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/options.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,48 @@
+// @ts-check
+const req = require('./req.js')
+
+/**
+ * Load Options
+ *
+ * @private
+ * @method options
+ *
+ * @param  {Object} config  PostCSS Config
+ *
+ * @return {Promise<Object>} options PostCSS Options
+ */
+async function options(config, file) {
+  if (config.parser && typeof config.parser === 'string') {
+    try {
+      config.parser = await req(config.parser, file)
+    } catch (err) {
+      throw new Error(
+        `Loading PostCSS Parser failed: ${err.message}\n\n(@${file})`
+      )
+    }
+  }
+
+  if (config.syntax && typeof config.syntax === 'string') {
+    try {
+      config.syntax = await req(config.syntax, file)
+    } catch (err) {
+      throw new Error(
+        `Loading PostCSS Syntax failed: ${err.message}\n\n(@${file})`
+      )
+    }
+  }
+
+  if (config.stringifier && typeof config.stringifier === 'string') {
+    try {
+      config.stringifier = await req(config.stringifier, file)
+    } catch (err) {
+      throw new Error(
+        `Loading PostCSS Stringifier failed: ${err.message}\n\n(@${file})`
+      )
+    }
+  }
+
+  return config
+}
+
+module.exports = options
Index: frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/plugins.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/plugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/plugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,89 @@
+// @ts-check
+const req = require('./req.js')
+
+/**
+ * Plugin Loader
+ *
+ * @private
+ * @method load
+ *
+ * @param  {String} plugin PostCSS Plugin Name
+ * @param  {Object} options PostCSS Plugin Options
+ *
+ * @return {Promise<Function>} PostCSS Plugin
+ */
+async function load(plugin, options, file) {
+  try {
+    if (
+      options === null ||
+      options === undefined ||
+      Object.keys(options).length === 0
+    ) {
+      return await req(plugin, file)
+    } else {
+      return (await req(plugin, file))(options)
+      /* c8 ignore next */
+    }
+  } catch (err) {
+    throw new Error(
+      `Loading PostCSS Plugin failed: ${err.message}\n\n(@${file})`
+    )
+  }
+}
+
+/**
+ * Load Plugins
+ *
+ * @private
+ * @method plugins
+ *
+ * @param {Object} config PostCSS Config Plugins
+ *
+ * @return {Promise<Array>} plugins PostCSS Plugins
+ */
+async function plugins(config, file) {
+  let list = []
+
+  if (Array.isArray(config.plugins)) {
+    list = config.plugins.filter(Boolean)
+  } else {
+    list = Object.entries(config.plugins)
+      .filter(([, options]) => {
+        return options !== false
+      })
+      .map(([plugin, options]) => {
+        return load(plugin, options, file)
+      })
+    list = await Promise.all(list)
+  }
+
+  if (list.length && list.length > 0) {
+    list.forEach((plugin, i) => {
+      if (plugin.default) {
+        plugin = plugin.default
+      }
+
+      if (plugin.postcss === true) {
+        plugin = plugin()
+      } else if (plugin.postcss) {
+        plugin = plugin.postcss
+      }
+
+      if (
+        !(
+          (typeof plugin === 'object' && Array.isArray(plugin.plugins)) ||
+          (typeof plugin === 'object' && plugin.postcssPlugin) ||
+          typeof plugin === 'function'
+        )
+      ) {
+        throw new TypeError(
+          `Invalid PostCSS Plugin found at: plugins[${i}]\n\n(@${file})`
+        )
+      }
+    })
+  }
+
+  return list
+}
+
+module.exports = plugins
Index: frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/req.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/req.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/postcss-load-config/src/req.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,62 @@
+// @ts-check
+const { createRequire } = require('node:module')
+const { pathToFileURL } = require('node:url')
+
+const TS_EXT_RE = /\.[mc]?ts$/
+
+let tsx
+
+let jiti
+
+let importError = []
+
+/**
+ * @param {string} name
+ * @param {string} rootFile
+ * @returns {Promise<any>}
+ */
+async function req(name, rootFile = __filename) {
+  let url = createRequire(rootFile).resolve(name)
+
+  try {
+    return (await import(`${pathToFileURL(url)}?t=${Date.now()}`)).default
+  } catch (err) {
+    if (!TS_EXT_RE.test(url)) {
+      /* c8 ignore start */
+      throw err
+    }
+  }
+
+  if (tsx === undefined) {
+    try {
+      tsx = await import('tsx/cjs/api')
+    } catch (error) {
+      importError.push(error)
+    }
+  }
+
+  if (tsx) {
+    let loaded = tsx.require(name, rootFile)
+    return loaded && '__esModule' in loaded ? loaded.default : loaded
+  }
+
+  if (jiti === undefined) {
+    try {
+      jiti = (await import('jiti')).default
+    } catch (error) {
+      importError.push(error)
+    }
+  }
+
+  if (jiti) {
+    return jiti(rootFile, { interopDefault: true })(name)
+  }
+
+  throw new Error(
+    `'tsx' or 'jiti' is required for the TypeScript configuration files. Make sure it is installed\nError: ${importError
+      .map(error => error.message)
+      .join('\n')}`
+  )
+}
+
+module.exports = req
Index: frontend/node_modules/tailwindcss/node_modules/yaml/LICENSE
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,13 @@
+Copyright Eemeli Aro <eemeli@gmail.com>
+
+Permission to use, copy, modify, and/or distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright notice
+and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
Index: frontend/node_modules/tailwindcss/node_modules/yaml/README.md
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,172 @@
+# YAML <a href="https://www.npmjs.com/package/yaml"><img align="right" src="https://badge.fury.io/js/yaml.svg" title="npm package" /></a>
+
+`yaml` is a definitive library for [YAML](https://yaml.org/), the human friendly data serialization standard.
+This library:
+
+- Supports both YAML 1.1 and YAML 1.2 and all common data schemas,
+- Passes all of the [yaml-test-suite](https://github.com/yaml/yaml-test-suite) tests,
+- Can accept any string as input without throwing, parsing as much YAML out of it as it can, and
+- Supports parsing, modifying, and writing YAML comments and blank lines.
+
+The library is released under the ISC open source license, and the code is [available on GitHub](https://github.com/eemeli/yaml/).
+It has no external dependencies and runs on Node.js as well as modern browsers.
+
+For the purposes of versioning, any changes that break any of the documented endpoints or APIs will be considered semver-major breaking changes.
+Undocumented library internals may change between minor versions, and previous APIs may be deprecated (but not removed).
+
+The minimum supported TypeScript version of the included typings is 3.9;
+for use in earlier versions you may need to set `skipLibCheck: true` in your config.
+This requirement may be updated between minor versions of the library.
+
+For more information, see the project's documentation site: [**eemeli.org/yaml**](https://eemeli.org/yaml/)
+
+For build instructions and contribution guidelines, see [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md).
+
+To install:
+
+```sh
+npm install yaml
+# or
+deno add jsr:@eemeli/yaml
+```
+
+**Note:** These docs are for `yaml@2`. For v1, see the [v1.10.0 tag](https://github.com/eemeli/yaml/tree/v1.10.0) for the source and [eemeli.org/yaml/v1](https://eemeli.org/yaml/v1/) for the documentation.
+
+## API Overview
+
+The API provided by `yaml` has three layers, depending on how deep you need to go: [Parse & Stringify](https://eemeli.org/yaml/#parse-amp-stringify), [Documents](https://eemeli.org/yaml/#documents), and the underlying [Lexer/Parser/Composer](https://eemeli.org/yaml/#parsing-yaml).
+The first has the simplest API and "just works", the second gets you all the bells and whistles supported by the library along with a decent [AST](https://eemeli.org/yaml/#content-nodes), and the third lets you get progressively closer to YAML source, if that's your thing.
+
+A [command-line tool](https://eemeli.org/yaml/#command-line-tool) is also included.
+
+### Parse & Stringify
+
+```js
+import { parse, stringify } from 'yaml'
+```
+
+- [`parse(str, reviver?, options?): value`](https://eemeli.org/yaml/#yaml-parse)
+- [`stringify(value, replacer?, options?): string`](https://eemeli.org/yaml/#yaml-stringify)
+
+### Documents
+
+<!-- prettier-ignore -->
+```js
+import {
+  Document,
+  isDocument,
+  parseAllDocuments,
+  parseDocument
+} from 'yaml'
+```
+
+- [`Document`](https://eemeli.org/yaml/#documents)
+  - [`constructor(value, replacer?, options?)`](https://eemeli.org/yaml/#creating-documents)
+  - [`#contents`](https://eemeli.org/yaml/#content-nodes)
+  - [`#directives`](https://eemeli.org/yaml/#stream-directives)
+  - [`#errors`](https://eemeli.org/yaml/#errors)
+  - [`#warnings`](https://eemeli.org/yaml/#errors)
+- [`isDocument(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
+- [`parseAllDocuments(str, options?): Document[]`](https://eemeli.org/yaml/#parsing-documents)
+- [`parseDocument(str, options?): Document`](https://eemeli.org/yaml/#parsing-documents)
+
+### Content Nodes
+
+<!-- prettier-ignore -->
+```js
+import {
+  isAlias, isCollection, isMap, isNode,
+  isPair, isScalar, isSeq, Scalar,
+  visit, visitAsync, YAMLMap, YAMLSeq
+} from 'yaml'
+```
+
+- [`isAlias(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
+- [`isCollection(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
+- [`isMap(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
+- [`isNode(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
+- [`isPair(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
+- [`isScalar(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
+- [`isSeq(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
+- [`new Scalar(value)`](https://eemeli.org/yaml/#scalar-values)
+- [`new YAMLMap()`](https://eemeli.org/yaml/#collections)
+- [`new YAMLSeq()`](https://eemeli.org/yaml/#collections)
+- [`doc.createAlias(node, name?): Alias`](https://eemeli.org/yaml/#creating-nodes)
+- [`doc.createNode(value, options?): Node`](https://eemeli.org/yaml/#creating-nodes)
+- [`doc.createPair(key, value): Pair`](https://eemeli.org/yaml/#creating-nodes)
+- [`visit(node, visitor)`](https://eemeli.org/yaml/#finding-and-modifying-nodes)
+- [`visitAsync(node, visitor)`](https://eemeli.org/yaml/#finding-and-modifying-nodes)
+
+### Parsing YAML
+
+```js
+import { Composer, Lexer, Parser } from 'yaml'
+```
+
+- [`new Lexer().lex(src)`](https://eemeli.org/yaml/#lexer)
+- [`new Parser(onNewLine?).parse(src)`](https://eemeli.org/yaml/#parser)
+- [`new Composer(options?).compose(tokens)`](https://eemeli.org/yaml/#composer)
+
+## YAML.parse
+
+```yaml
+# file.yml
+YAML:
+  - A human-readable data serialization language
+  - https://en.wikipedia.org/wiki/YAML
+yaml:
+  - A complete JavaScript implementation
+  - https://www.npmjs.com/package/yaml
+```
+
+```js
+import fs from 'fs'
+import YAML from 'yaml'
+
+YAML.parse('3.14159')
+// 3.14159
+
+YAML.parse('[ true, false, maybe, null ]\n')
+// [ true, false, 'maybe', null ]
+
+const file = fs.readFileSync('./file.yml', 'utf8')
+YAML.parse(file)
+// { YAML:
+//   [ 'A human-readable data serialization language',
+//     'https://en.wikipedia.org/wiki/YAML' ],
+//   yaml:
+//   [ 'A complete JavaScript implementation',
+//     'https://www.npmjs.com/package/yaml' ] }
+```
+
+## YAML.stringify
+
+```js
+import YAML from 'yaml'
+
+YAML.stringify(3.14159)
+// '3.14159\n'
+
+YAML.stringify([true, false, 'maybe', null])
+// `- true
+// - false
+// - maybe
+// - null
+// `
+
+YAML.stringify({ number: 3, plain: 'string', block: 'two\nlines\n' })
+// `number: 3
+// plain: string
+// block: |
+//   two
+//   lines
+// `
+```
+
+---
+
+Browser testing provided by:
+
+<a href="https://www.browserstack.com/open-source">
+<img width=200 src="https://eemeli.org/yaml/images/browserstack.svg" alt="BrowserStack" />
+</a>
Index: frontend/node_modules/tailwindcss/node_modules/yaml/bin.mjs
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/bin.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/bin.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,11 @@
+#!/usr/bin/env node
+
+import { UserError, cli, help } from './dist/cli.mjs'
+
+cli(process.stdin, error => {
+  if (error instanceof UserError) {
+    if (error.code === UserError.ARGS) console.error(`${help}\n`)
+    console.error(error.message)
+    process.exitCode = error.code
+  } else if (error) throw error
+})
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-collection.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,88 @@
+import { isNode } from '../nodes/identity.js';
+import { Scalar } from '../nodes/Scalar.js';
+import { YAMLMap } from '../nodes/YAMLMap.js';
+import { YAMLSeq } from '../nodes/YAMLSeq.js';
+import { resolveBlockMap } from './resolve-block-map.js';
+import { resolveBlockSeq } from './resolve-block-seq.js';
+import { resolveFlowCollection } from './resolve-flow-collection.js';
+
+function resolveCollection(CN, ctx, token, onError, tagName, tag) {
+    const coll = token.type === 'block-map'
+        ? resolveBlockMap(CN, ctx, token, onError, tag)
+        : token.type === 'block-seq'
+            ? resolveBlockSeq(CN, ctx, token, onError, tag)
+            : resolveFlowCollection(CN, ctx, token, onError, tag);
+    const Coll = coll.constructor;
+    // If we got a tagName matching the class, or the tag name is '!',
+    // then use the tagName from the node class used to create it.
+    if (tagName === '!' || tagName === Coll.tagName) {
+        coll.tag = Coll.tagName;
+        return coll;
+    }
+    if (tagName)
+        coll.tag = tagName;
+    return coll;
+}
+function composeCollection(CN, ctx, token, props, onError) {
+    const tagToken = props.tag;
+    const tagName = !tagToken
+        ? null
+        : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));
+    if (token.type === 'block-seq') {
+        const { anchor, newlineAfterProp: nl } = props;
+        const lastProp = anchor && tagToken
+            ? anchor.offset > tagToken.offset
+                ? anchor
+                : tagToken
+            : (anchor ?? tagToken);
+        if (lastProp && (!nl || nl.offset < lastProp.offset)) {
+            const message = 'Missing newline after block sequence props';
+            onError(lastProp, 'MISSING_CHAR', message);
+        }
+    }
+    const expType = token.type === 'block-map'
+        ? 'map'
+        : token.type === 'block-seq'
+            ? 'seq'
+            : token.start.source === '{'
+                ? 'map'
+                : 'seq';
+    // shortcut: check if it's a generic YAMLMap or YAMLSeq
+    // before jumping into the custom tag logic.
+    if (!tagToken ||
+        !tagName ||
+        tagName === '!' ||
+        (tagName === YAMLMap.tagName && expType === 'map') ||
+        (tagName === YAMLSeq.tagName && expType === 'seq')) {
+        return resolveCollection(CN, ctx, token, onError, tagName);
+    }
+    let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);
+    if (!tag) {
+        const kt = ctx.schema.knownTags[tagName];
+        if (kt?.collection === expType) {
+            ctx.schema.tags.push(Object.assign({}, kt, { default: false }));
+            tag = kt;
+        }
+        else {
+            if (kt) {
+                onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);
+            }
+            else {
+                onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);
+            }
+            return resolveCollection(CN, ctx, token, onError, tagName);
+        }
+    }
+    const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);
+    const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;
+    const node = isNode(res)
+        ? res
+        : new Scalar(res);
+    node.range = coll.range;
+    node.tag = tagName;
+    if (tag?.format)
+        node.format = tag.format;
+    return node;
+}
+
+export { composeCollection };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-doc.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-doc.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-doc.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,43 @@
+import { Document } from '../doc/Document.js';
+import { composeNode, composeEmptyNode } from './compose-node.js';
+import { resolveEnd } from './resolve-end.js';
+import { resolveProps } from './resolve-props.js';
+
+function composeDoc(options, directives, { offset, start, value, end }, onError) {
+    const opts = Object.assign({ _directives: directives }, options);
+    const doc = new Document(undefined, opts);
+    const ctx = {
+        atKey: false,
+        atRoot: true,
+        directives: doc.directives,
+        options: doc.options,
+        schema: doc.schema
+    };
+    const props = resolveProps(start, {
+        indicator: 'doc-start',
+        next: value ?? end?.[0],
+        offset,
+        onError,
+        parentIndent: 0,
+        startOnNewline: true
+    });
+    if (props.found) {
+        doc.directives.docStart = true;
+        if (value &&
+            (value.type === 'block-map' || value.type === 'block-seq') &&
+            !props.hasNewline)
+            onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');
+    }
+    // @ts-expect-error If Contents is set, let's trust the user
+    doc.contents = value
+        ? composeNode(ctx, value, props, onError)
+        : composeEmptyNode(ctx, props.end, start, null, props, onError);
+    const contentEnd = doc.contents.range[2];
+    const re = resolveEnd(end, contentEnd, false, onError);
+    if (re.comment)
+        doc.comment = re.comment;
+    doc.range = [offset, contentEnd, re.offset];
+    return doc;
+}
+
+export { composeDoc };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-node.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-node.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-node.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,109 @@
+import { Alias } from '../nodes/Alias.js';
+import { isScalar } from '../nodes/identity.js';
+import { composeCollection } from './compose-collection.js';
+import { composeScalar } from './compose-scalar.js';
+import { resolveEnd } from './resolve-end.js';
+import { emptyScalarPosition } from './util-empty-scalar-position.js';
+
+const CN = { composeNode, composeEmptyNode };
+function composeNode(ctx, token, props, onError) {
+    const atKey = ctx.atKey;
+    const { spaceBefore, comment, anchor, tag } = props;
+    let node;
+    let isSrcToken = true;
+    switch (token.type) {
+        case 'alias':
+            node = composeAlias(ctx, token, onError);
+            if (anchor || tag)
+                onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');
+            break;
+        case 'scalar':
+        case 'single-quoted-scalar':
+        case 'double-quoted-scalar':
+        case 'block-scalar':
+            node = composeScalar(ctx, token, tag, onError);
+            if (anchor)
+                node.anchor = anchor.source.substring(1);
+            break;
+        case 'block-map':
+        case 'block-seq':
+        case 'flow-collection':
+            try {
+                node = composeCollection(CN, ctx, token, props, onError);
+                if (anchor)
+                    node.anchor = anchor.source.substring(1);
+            }
+            catch (error) {
+                // Almost certainly here due to a stack overflow
+                const message = error instanceof Error ? error.message : String(error);
+                onError(token, 'RESOURCE_EXHAUSTION', message);
+            }
+            break;
+        default: {
+            const message = token.type === 'error'
+                ? token.message
+                : `Unsupported token (type: ${token.type})`;
+            onError(token, 'UNEXPECTED_TOKEN', message);
+            isSrcToken = false;
+        }
+    }
+    node ?? (node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError));
+    if (anchor && node.anchor === '')
+        onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');
+    if (atKey &&
+        ctx.options.stringKeys &&
+        (!isScalar(node) ||
+            typeof node.value !== 'string' ||
+            (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {
+        const msg = 'With stringKeys, all keys must be strings';
+        onError(tag ?? token, 'NON_STRING_KEY', msg);
+    }
+    if (spaceBefore)
+        node.spaceBefore = true;
+    if (comment) {
+        if (token.type === 'scalar' && token.source === '')
+            node.comment = comment;
+        else
+            node.commentBefore = comment;
+    }
+    // @ts-expect-error Type checking misses meaning of isSrcToken
+    if (ctx.options.keepSourceTokens && isSrcToken)
+        node.srcToken = token;
+    return node;
+}
+function composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {
+    const token = {
+        type: 'scalar',
+        offset: emptyScalarPosition(offset, before, pos),
+        indent: -1,
+        source: ''
+    };
+    const node = composeScalar(ctx, token, tag, onError);
+    if (anchor) {
+        node.anchor = anchor.source.substring(1);
+        if (node.anchor === '')
+            onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');
+    }
+    if (spaceBefore)
+        node.spaceBefore = true;
+    if (comment) {
+        node.comment = comment;
+        node.range[2] = end;
+    }
+    return node;
+}
+function composeAlias({ options }, { offset, source, end }, onError) {
+    const alias = new Alias(source.substring(1));
+    if (alias.source === '')
+        onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');
+    if (alias.source.endsWith(':'))
+        onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);
+    const valueEnd = offset + source.length;
+    const re = resolveEnd(end, valueEnd, options.strict, onError);
+    alias.range = [offset, valueEnd, re.offset];
+    if (re.comment)
+        alias.comment = re.comment;
+    return alias;
+}
+
+export { composeEmptyNode, composeNode };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/compose-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,86 @@
+import { isScalar, SCALAR } from '../nodes/identity.js';
+import { Scalar } from '../nodes/Scalar.js';
+import { resolveBlockScalar } from './resolve-block-scalar.js';
+import { resolveFlowScalar } from './resolve-flow-scalar.js';
+
+function composeScalar(ctx, token, tagToken, onError) {
+    const { value, type, comment, range } = token.type === 'block-scalar'
+        ? resolveBlockScalar(ctx, token, onError)
+        : resolveFlowScalar(token, ctx.options.strict, onError);
+    const tagName = tagToken
+        ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))
+        : null;
+    let tag;
+    if (ctx.options.stringKeys && ctx.atKey) {
+        tag = ctx.schema[SCALAR];
+    }
+    else if (tagName)
+        tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);
+    else if (token.type === 'scalar')
+        tag = findScalarTagByTest(ctx, value, token, onError);
+    else
+        tag = ctx.schema[SCALAR];
+    let scalar;
+    try {
+        const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);
+        scalar = isScalar(res) ? res : new Scalar(res);
+    }
+    catch (error) {
+        const msg = error instanceof Error ? error.message : String(error);
+        onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);
+        scalar = new Scalar(value);
+    }
+    scalar.range = range;
+    scalar.source = value;
+    if (type)
+        scalar.type = type;
+    if (tagName)
+        scalar.tag = tagName;
+    if (tag.format)
+        scalar.format = tag.format;
+    if (comment)
+        scalar.comment = comment;
+    return scalar;
+}
+function findScalarTagByName(schema, value, tagName, tagToken, onError) {
+    if (tagName === '!')
+        return schema[SCALAR]; // non-specific tag
+    const matchWithTest = [];
+    for (const tag of schema.tags) {
+        if (!tag.collection && tag.tag === tagName) {
+            if (tag.default && tag.test)
+                matchWithTest.push(tag);
+            else
+                return tag;
+        }
+    }
+    for (const tag of matchWithTest)
+        if (tag.test?.test(value))
+            return tag;
+    const kt = schema.knownTags[tagName];
+    if (kt && !kt.collection) {
+        // Ensure that the known tag is available for stringifying,
+        // but does not get used by default.
+        schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));
+        return kt;
+    }
+    onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');
+    return schema[SCALAR];
+}
+function findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {
+    const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&
+        tag.test?.test(value)) || schema[SCALAR];
+    if (schema.compat) {
+        const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??
+            schema[SCALAR];
+        if (tag.tag !== compat.tag) {
+            const ts = directives.tagString(tag.tag);
+            const cs = directives.tagString(compat.tag);
+            const msg = `Value may be parsed as either ${ts} or ${cs}`;
+            onError(token, 'TAG_RESOLVE_FAILED', msg, true);
+        }
+    }
+    return tag;
+}
+
+export { composeScalar };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/composer.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/composer.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/composer.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,219 @@
+import { Directives } from '../doc/directives.js';
+import { Document } from '../doc/Document.js';
+import { YAMLWarning, YAMLParseError } from '../errors.js';
+import { isCollection, isPair } from '../nodes/identity.js';
+import { composeDoc } from './compose-doc.js';
+import { resolveEnd } from './resolve-end.js';
+
+function getErrorPos(src) {
+    if (typeof src === 'number')
+        return [src, src + 1];
+    if (Array.isArray(src))
+        return src.length === 2 ? src : [src[0], src[1]];
+    const { offset, source } = src;
+    return [offset, offset + (typeof source === 'string' ? source.length : 1)];
+}
+function parsePrelude(prelude) {
+    let comment = '';
+    let atComment = false;
+    let afterEmptyLine = false;
+    for (let i = 0; i < prelude.length; ++i) {
+        const source = prelude[i];
+        switch (source[0]) {
+            case '#':
+                comment +=
+                    (comment === '' ? '' : afterEmptyLine ? '\n\n' : '\n') +
+                        (source.substring(1) || ' ');
+                atComment = true;
+                afterEmptyLine = false;
+                break;
+            case '%':
+                if (prelude[i + 1]?.[0] !== '#')
+                    i += 1;
+                atComment = false;
+                break;
+            default:
+                // This may be wrong after doc-end, but in that case it doesn't matter
+                if (!atComment)
+                    afterEmptyLine = true;
+                atComment = false;
+        }
+    }
+    return { comment, afterEmptyLine };
+}
+/**
+ * Compose a stream of CST nodes into a stream of YAML Documents.
+ *
+ * ```ts
+ * import { Composer, Parser } from 'yaml'
+ *
+ * const src: string = ...
+ * const tokens = new Parser().parse(src)
+ * const docs = new Composer().compose(tokens)
+ * ```
+ */
+class Composer {
+    constructor(options = {}) {
+        this.doc = null;
+        this.atDirectives = false;
+        this.prelude = [];
+        this.errors = [];
+        this.warnings = [];
+        this.onError = (source, code, message, warning) => {
+            const pos = getErrorPos(source);
+            if (warning)
+                this.warnings.push(new YAMLWarning(pos, code, message));
+            else
+                this.errors.push(new YAMLParseError(pos, code, message));
+        };
+        // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
+        this.directives = new Directives({ version: options.version || '1.2' });
+        this.options = options;
+    }
+    decorate(doc, afterDoc) {
+        const { comment, afterEmptyLine } = parsePrelude(this.prelude);
+        //console.log({ dc: doc.comment, prelude, comment })
+        if (comment) {
+            const dc = doc.contents;
+            if (afterDoc) {
+                doc.comment = doc.comment ? `${doc.comment}\n${comment}` : comment;
+            }
+            else if (afterEmptyLine || doc.directives.docStart || !dc) {
+                doc.commentBefore = comment;
+            }
+            else if (isCollection(dc) && !dc.flow && dc.items.length > 0) {
+                let it = dc.items[0];
+                if (isPair(it))
+                    it = it.key;
+                const cb = it.commentBefore;
+                it.commentBefore = cb ? `${comment}\n${cb}` : comment;
+            }
+            else {
+                const cb = dc.commentBefore;
+                dc.commentBefore = cb ? `${comment}\n${cb}` : comment;
+            }
+        }
+        if (afterDoc) {
+            for (let i = 0; i < this.errors.length; ++i)
+                doc.errors.push(this.errors[i]);
+            for (let i = 0; i < this.warnings.length; ++i)
+                doc.warnings.push(this.warnings[i]);
+        }
+        else {
+            doc.errors = this.errors;
+            doc.warnings = this.warnings;
+        }
+        this.prelude = [];
+        this.errors = [];
+        this.warnings = [];
+    }
+    /**
+     * Current stream status information.
+     *
+     * Mostly useful at the end of input for an empty stream.
+     */
+    streamInfo() {
+        return {
+            comment: parsePrelude(this.prelude).comment,
+            directives: this.directives,
+            errors: this.errors,
+            warnings: this.warnings
+        };
+    }
+    /**
+     * Compose tokens into documents.
+     *
+     * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.
+     * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.
+     */
+    *compose(tokens, forceDoc = false, endOffset = -1) {
+        for (const token of tokens)
+            yield* this.next(token);
+        yield* this.end(forceDoc, endOffset);
+    }
+    /** Advance the composer by one CST token. */
+    *next(token) {
+        switch (token.type) {
+            case 'directive':
+                this.directives.add(token.source, (offset, message, warning) => {
+                    const pos = getErrorPos(token);
+                    pos[0] += offset;
+                    this.onError(pos, 'BAD_DIRECTIVE', message, warning);
+                });
+                this.prelude.push(token.source);
+                this.atDirectives = true;
+                break;
+            case 'document': {
+                const doc = composeDoc(this.options, this.directives, token, this.onError);
+                if (this.atDirectives && !doc.directives.docStart)
+                    this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');
+                this.decorate(doc, false);
+                if (this.doc)
+                    yield this.doc;
+                this.doc = doc;
+                this.atDirectives = false;
+                break;
+            }
+            case 'byte-order-mark':
+            case 'space':
+                break;
+            case 'comment':
+            case 'newline':
+                this.prelude.push(token.source);
+                break;
+            case 'error': {
+                const msg = token.source
+                    ? `${token.message}: ${JSON.stringify(token.source)}`
+                    : token.message;
+                const error = new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);
+                if (this.atDirectives || !this.doc)
+                    this.errors.push(error);
+                else
+                    this.doc.errors.push(error);
+                break;
+            }
+            case 'doc-end': {
+                if (!this.doc) {
+                    const msg = 'Unexpected doc-end without preceding document';
+                    this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));
+                    break;
+                }
+                this.doc.directives.docEnd = true;
+                const end = resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);
+                this.decorate(this.doc, true);
+                if (end.comment) {
+                    const dc = this.doc.comment;
+                    this.doc.comment = dc ? `${dc}\n${end.comment}` : end.comment;
+                }
+                this.doc.range[2] = end.offset;
+                break;
+            }
+            default:
+                this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));
+        }
+    }
+    /**
+     * Call at end of input to yield any remaining document.
+     *
+     * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.
+     * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.
+     */
+    *end(forceDoc = false, endOffset = -1) {
+        if (this.doc) {
+            this.decorate(this.doc, true);
+            yield this.doc;
+            this.doc = null;
+        }
+        else if (forceDoc) {
+            const opts = Object.assign({ _directives: this.directives }, this.options);
+            const doc = new Document(undefined, opts);
+            if (this.atDirectives)
+                this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');
+            doc.range = [0, endOffset, endOffset];
+            this.decorate(doc, false);
+            yield doc;
+        }
+    }
+}
+
+export { Composer };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-block-map.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-block-map.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-block-map.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,115 @@
+import { Pair } from '../nodes/Pair.js';
+import { YAMLMap } from '../nodes/YAMLMap.js';
+import { resolveProps } from './resolve-props.js';
+import { containsNewline } from './util-contains-newline.js';
+import { flowIndentCheck } from './util-flow-indent-check.js';
+import { mapIncludes } from './util-map-includes.js';
+
+const startColMsg = 'All mapping items must start at the same column';
+function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {
+    const NodeClass = tag?.nodeClass ?? YAMLMap;
+    const map = new NodeClass(ctx.schema);
+    if (ctx.atRoot)
+        ctx.atRoot = false;
+    let offset = bm.offset;
+    let commentEnd = null;
+    for (const collItem of bm.items) {
+        const { start, key, sep, value } = collItem;
+        // key properties
+        const keyProps = resolveProps(start, {
+            indicator: 'explicit-key-ind',
+            next: key ?? sep?.[0],
+            offset,
+            onError,
+            parentIndent: bm.indent,
+            startOnNewline: true
+        });
+        const implicitKey = !keyProps.found;
+        if (implicitKey) {
+            if (key) {
+                if (key.type === 'block-seq')
+                    onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');
+                else if ('indent' in key && key.indent !== bm.indent)
+                    onError(offset, 'BAD_INDENT', startColMsg);
+            }
+            if (!keyProps.anchor && !keyProps.tag && !sep) {
+                commentEnd = keyProps.end;
+                if (keyProps.comment) {
+                    if (map.comment)
+                        map.comment += '\n' + keyProps.comment;
+                    else
+                        map.comment = keyProps.comment;
+                }
+                continue;
+            }
+            if (keyProps.newlineAfterProp || containsNewline(key)) {
+                onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');
+            }
+        }
+        else if (keyProps.found?.indent !== bm.indent) {
+            onError(offset, 'BAD_INDENT', startColMsg);
+        }
+        // key value
+        ctx.atKey = true;
+        const keyStart = keyProps.end;
+        const keyNode = key
+            ? composeNode(ctx, key, keyProps, onError)
+            : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);
+        if (ctx.schema.compat)
+            flowIndentCheck(bm.indent, key, onError);
+        ctx.atKey = false;
+        if (mapIncludes(ctx, map.items, keyNode))
+            onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');
+        // value properties
+        const valueProps = resolveProps(sep ?? [], {
+            indicator: 'map-value-ind',
+            next: value,
+            offset: keyNode.range[2],
+            onError,
+            parentIndent: bm.indent,
+            startOnNewline: !key || key.type === 'block-scalar'
+        });
+        offset = valueProps.end;
+        if (valueProps.found) {
+            if (implicitKey) {
+                if (value?.type === 'block-map' && !valueProps.hasNewline)
+                    onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');
+                if (ctx.options.strict &&
+                    keyProps.start < valueProps.found.offset - 1024)
+                    onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');
+            }
+            // value value
+            const valueNode = value
+                ? composeNode(ctx, value, valueProps, onError)
+                : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);
+            if (ctx.schema.compat)
+                flowIndentCheck(bm.indent, value, onError);
+            offset = valueNode.range[2];
+            const pair = new Pair(keyNode, valueNode);
+            if (ctx.options.keepSourceTokens)
+                pair.srcToken = collItem;
+            map.items.push(pair);
+        }
+        else {
+            // key with no value
+            if (implicitKey)
+                onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');
+            if (valueProps.comment) {
+                if (keyNode.comment)
+                    keyNode.comment += '\n' + valueProps.comment;
+                else
+                    keyNode.comment = valueProps.comment;
+            }
+            const pair = new Pair(keyNode);
+            if (ctx.options.keepSourceTokens)
+                pair.srcToken = collItem;
+            map.items.push(pair);
+        }
+    }
+    if (commentEnd && commentEnd < offset)
+        onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');
+    map.range = [bm.offset, offset, commentEnd ?? offset];
+    return map;
+}
+
+export { resolveBlockMap };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,198 @@
+import { Scalar } from '../nodes/Scalar.js';
+
+function resolveBlockScalar(ctx, scalar, onError) {
+    const start = scalar.offset;
+    const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);
+    if (!header)
+        return { value: '', type: null, comment: '', range: [start, start, start] };
+    const type = header.mode === '>' ? Scalar.BLOCK_FOLDED : Scalar.BLOCK_LITERAL;
+    const lines = scalar.source ? splitLines(scalar.source) : [];
+    // determine the end of content & start of chomping
+    let chompStart = lines.length;
+    for (let i = lines.length - 1; i >= 0; --i) {
+        const content = lines[i][1];
+        if (content === '' || content === '\r')
+            chompStart = i;
+        else
+            break;
+    }
+    // shortcut for empty contents
+    if (chompStart === 0) {
+        const value = header.chomp === '+' && lines.length > 0
+            ? '\n'.repeat(Math.max(1, lines.length - 1))
+            : '';
+        let end = start + header.length;
+        if (scalar.source)
+            end += scalar.source.length;
+        return { value, type, comment: header.comment, range: [start, end, end] };
+    }
+    // find the indentation level to trim from start
+    let trimIndent = scalar.indent + header.indent;
+    let offset = scalar.offset + header.length;
+    let contentStart = 0;
+    for (let i = 0; i < chompStart; ++i) {
+        const [indent, content] = lines[i];
+        if (content === '' || content === '\r') {
+            if (header.indent === 0 && indent.length > trimIndent)
+                trimIndent = indent.length;
+        }
+        else {
+            if (indent.length < trimIndent) {
+                const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';
+                onError(offset + indent.length, 'MISSING_CHAR', message);
+            }
+            if (header.indent === 0)
+                trimIndent = indent.length;
+            contentStart = i;
+            if (trimIndent === 0 && !ctx.atRoot) {
+                const message = 'Block scalar values in collections must be indented';
+                onError(offset, 'BAD_INDENT', message);
+            }
+            break;
+        }
+        offset += indent.length + content.length + 1;
+    }
+    // include trailing more-indented empty lines in content
+    for (let i = lines.length - 1; i >= chompStart; --i) {
+        if (lines[i][0].length > trimIndent)
+            chompStart = i + 1;
+    }
+    let value = '';
+    let sep = '';
+    let prevMoreIndented = false;
+    // leading whitespace is kept intact
+    for (let i = 0; i < contentStart; ++i)
+        value += lines[i][0].slice(trimIndent) + '\n';
+    for (let i = contentStart; i < chompStart; ++i) {
+        let [indent, content] = lines[i];
+        offset += indent.length + content.length + 1;
+        const crlf = content[content.length - 1] === '\r';
+        if (crlf)
+            content = content.slice(0, -1);
+        /* istanbul ignore if already caught in lexer */
+        if (content && indent.length < trimIndent) {
+            const src = header.indent
+                ? 'explicit indentation indicator'
+                : 'first line';
+            const message = `Block scalar lines must not be less indented than their ${src}`;
+            onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);
+            indent = '';
+        }
+        if (type === Scalar.BLOCK_LITERAL) {
+            value += sep + indent.slice(trimIndent) + content;
+            sep = '\n';
+        }
+        else if (indent.length > trimIndent || content[0] === '\t') {
+            // more-indented content within a folded block
+            if (sep === ' ')
+                sep = '\n';
+            else if (!prevMoreIndented && sep === '\n')
+                sep = '\n\n';
+            value += sep + indent.slice(trimIndent) + content;
+            sep = '\n';
+            prevMoreIndented = true;
+        }
+        else if (content === '') {
+            // empty line
+            if (sep === '\n')
+                value += '\n';
+            else
+                sep = '\n';
+        }
+        else {
+            value += sep + content;
+            sep = ' ';
+            prevMoreIndented = false;
+        }
+    }
+    switch (header.chomp) {
+        case '-':
+            break;
+        case '+':
+            for (let i = chompStart; i < lines.length; ++i)
+                value += '\n' + lines[i][0].slice(trimIndent);
+            if (value[value.length - 1] !== '\n')
+                value += '\n';
+            break;
+        default:
+            value += '\n';
+    }
+    const end = start + header.length + scalar.source.length;
+    return { value, type, comment: header.comment, range: [start, end, end] };
+}
+function parseBlockScalarHeader({ offset, props }, strict, onError) {
+    /* istanbul ignore if should not happen */
+    if (props[0].type !== 'block-scalar-header') {
+        onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');
+        return null;
+    }
+    const { source } = props[0];
+    const mode = source[0];
+    let indent = 0;
+    let chomp = '';
+    let error = -1;
+    for (let i = 1; i < source.length; ++i) {
+        const ch = source[i];
+        if (!chomp && (ch === '-' || ch === '+'))
+            chomp = ch;
+        else {
+            const n = Number(ch);
+            if (!indent && n)
+                indent = n;
+            else if (error === -1)
+                error = offset + i;
+        }
+    }
+    if (error !== -1)
+        onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);
+    let hasSpace = false;
+    let comment = '';
+    let length = source.length;
+    for (let i = 1; i < props.length; ++i) {
+        const token = props[i];
+        switch (token.type) {
+            case 'space':
+                hasSpace = true;
+            // fallthrough
+            case 'newline':
+                length += token.source.length;
+                break;
+            case 'comment':
+                if (strict && !hasSpace) {
+                    const message = 'Comments must be separated from other tokens by white space characters';
+                    onError(token, 'MISSING_CHAR', message);
+                }
+                length += token.source.length;
+                comment = token.source.substring(1);
+                break;
+            case 'error':
+                onError(token, 'UNEXPECTED_TOKEN', token.message);
+                length += token.source.length;
+                break;
+            /* istanbul ignore next should not happen */
+            default: {
+                const message = `Unexpected token in block scalar header: ${token.type}`;
+                onError(token, 'UNEXPECTED_TOKEN', message);
+                const ts = token.source;
+                if (ts && typeof ts === 'string')
+                    length += ts.length;
+            }
+        }
+    }
+    return { mode, indent, chomp, comment, length };
+}
+/** @returns Array of lines split up as `[indent, content]` */
+function splitLines(source) {
+    const split = source.split(/\n( *)/);
+    const first = split[0];
+    const m = first.match(/^( *)/);
+    const line0 = m?.[1]
+        ? [m[1], first.slice(m[1].length)]
+        : ['', first];
+    const lines = [line0];
+    for (let i = 1; i < split.length; i += 2)
+        lines.push([split[i], split[i + 1]]);
+    return lines;
+}
+
+export { resolveBlockScalar };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-block-seq.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-block-seq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-block-seq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,49 @@
+import { YAMLSeq } from '../nodes/YAMLSeq.js';
+import { resolveProps } from './resolve-props.js';
+import { flowIndentCheck } from './util-flow-indent-check.js';
+
+function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {
+    const NodeClass = tag?.nodeClass ?? YAMLSeq;
+    const seq = new NodeClass(ctx.schema);
+    if (ctx.atRoot)
+        ctx.atRoot = false;
+    if (ctx.atKey)
+        ctx.atKey = false;
+    let offset = bs.offset;
+    let commentEnd = null;
+    for (const { start, value } of bs.items) {
+        const props = resolveProps(start, {
+            indicator: 'seq-item-ind',
+            next: value,
+            offset,
+            onError,
+            parentIndent: bs.indent,
+            startOnNewline: true
+        });
+        if (!props.found) {
+            if (props.anchor || props.tag || value) {
+                if (value?.type === 'block-seq')
+                    onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');
+                else
+                    onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');
+            }
+            else {
+                commentEnd = props.end;
+                if (props.comment)
+                    seq.comment = props.comment;
+                continue;
+            }
+        }
+        const node = value
+            ? composeNode(ctx, value, props, onError)
+            : composeEmptyNode(ctx, props.end, start, null, props, onError);
+        if (ctx.schema.compat)
+            flowIndentCheck(bs.indent, value, onError);
+        offset = node.range[2];
+        seq.items.push(node);
+    }
+    seq.range = [bs.offset, offset, commentEnd ?? offset];
+    return seq;
+}
+
+export { resolveBlockSeq };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-end.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-end.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-end.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,37 @@
+function resolveEnd(end, offset, reqSpace, onError) {
+    let comment = '';
+    if (end) {
+        let hasSpace = false;
+        let sep = '';
+        for (const token of end) {
+            const { source, type } = token;
+            switch (type) {
+                case 'space':
+                    hasSpace = true;
+                    break;
+                case 'comment': {
+                    if (reqSpace && !hasSpace)
+                        onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');
+                    const cb = source.substring(1) || ' ';
+                    if (!comment)
+                        comment = cb;
+                    else
+                        comment += sep + cb;
+                    sep = '';
+                    break;
+                }
+                case 'newline':
+                    if (comment)
+                        sep += source;
+                    hasSpace = true;
+                    break;
+                default:
+                    onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);
+            }
+            offset += source.length;
+        }
+    }
+    return { comment, offset };
+}
+
+export { resolveEnd };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,207 @@
+import { isPair } from '../nodes/identity.js';
+import { Pair } from '../nodes/Pair.js';
+import { YAMLMap } from '../nodes/YAMLMap.js';
+import { YAMLSeq } from '../nodes/YAMLSeq.js';
+import { resolveEnd } from './resolve-end.js';
+import { resolveProps } from './resolve-props.js';
+import { containsNewline } from './util-contains-newline.js';
+import { mapIncludes } from './util-map-includes.js';
+
+const blockMsg = 'Block collections are not allowed within flow collections';
+const isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');
+function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {
+    const isMap = fc.start.source === '{';
+    const fcName = isMap ? 'flow map' : 'flow sequence';
+    const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap : YAMLSeq));
+    const coll = new NodeClass(ctx.schema);
+    coll.flow = true;
+    const atRoot = ctx.atRoot;
+    if (atRoot)
+        ctx.atRoot = false;
+    if (ctx.atKey)
+        ctx.atKey = false;
+    let offset = fc.offset + fc.start.source.length;
+    for (let i = 0; i < fc.items.length; ++i) {
+        const collItem = fc.items[i];
+        const { start, key, sep, value } = collItem;
+        const props = resolveProps(start, {
+            flow: fcName,
+            indicator: 'explicit-key-ind',
+            next: key ?? sep?.[0],
+            offset,
+            onError,
+            parentIndent: fc.indent,
+            startOnNewline: false
+        });
+        if (!props.found) {
+            if (!props.anchor && !props.tag && !sep && !value) {
+                if (i === 0 && props.comma)
+                    onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);
+                else if (i < fc.items.length - 1)
+                    onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);
+                if (props.comment) {
+                    if (coll.comment)
+                        coll.comment += '\n' + props.comment;
+                    else
+                        coll.comment = props.comment;
+                }
+                offset = props.end;
+                continue;
+            }
+            if (!isMap && ctx.options.strict && containsNewline(key))
+                onError(key, // checked by containsNewline()
+                'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');
+        }
+        if (i === 0) {
+            if (props.comma)
+                onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);
+        }
+        else {
+            if (!props.comma)
+                onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);
+            if (props.comment) {
+                let prevItemComment = '';
+                loop: for (const st of start) {
+                    switch (st.type) {
+                        case 'comma':
+                        case 'space':
+                            break;
+                        case 'comment':
+                            prevItemComment = st.source.substring(1);
+                            break loop;
+                        default:
+                            break loop;
+                    }
+                }
+                if (prevItemComment) {
+                    let prev = coll.items[coll.items.length - 1];
+                    if (isPair(prev))
+                        prev = prev.value ?? prev.key;
+                    if (prev.comment)
+                        prev.comment += '\n' + prevItemComment;
+                    else
+                        prev.comment = prevItemComment;
+                    props.comment = props.comment.substring(prevItemComment.length + 1);
+                }
+            }
+        }
+        if (!isMap && !sep && !props.found) {
+            // item is a value in a seq
+            // → key & sep are empty, start does not include ? or :
+            const valueNode = value
+                ? composeNode(ctx, value, props, onError)
+                : composeEmptyNode(ctx, props.end, sep, null, props, onError);
+            coll.items.push(valueNode);
+            offset = valueNode.range[2];
+            if (isBlock(value))
+                onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);
+        }
+        else {
+            // item is a key+value pair
+            // key value
+            ctx.atKey = true;
+            const keyStart = props.end;
+            const keyNode = key
+                ? composeNode(ctx, key, props, onError)
+                : composeEmptyNode(ctx, keyStart, start, null, props, onError);
+            if (isBlock(key))
+                onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);
+            ctx.atKey = false;
+            // value properties
+            const valueProps = resolveProps(sep ?? [], {
+                flow: fcName,
+                indicator: 'map-value-ind',
+                next: value,
+                offset: keyNode.range[2],
+                onError,
+                parentIndent: fc.indent,
+                startOnNewline: false
+            });
+            if (valueProps.found) {
+                if (!isMap && !props.found && ctx.options.strict) {
+                    if (sep)
+                        for (const st of sep) {
+                            if (st === valueProps.found)
+                                break;
+                            if (st.type === 'newline') {
+                                onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');
+                                break;
+                            }
+                        }
+                    if (props.start < valueProps.found.offset - 1024)
+                        onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');
+                }
+            }
+            else if (value) {
+                if ('source' in value && value.source?.[0] === ':')
+                    onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);
+                else
+                    onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);
+            }
+            // value value
+            const valueNode = value
+                ? composeNode(ctx, value, valueProps, onError)
+                : valueProps.found
+                    ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)
+                    : null;
+            if (valueNode) {
+                if (isBlock(value))
+                    onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);
+            }
+            else if (valueProps.comment) {
+                if (keyNode.comment)
+                    keyNode.comment += '\n' + valueProps.comment;
+                else
+                    keyNode.comment = valueProps.comment;
+            }
+            const pair = new Pair(keyNode, valueNode);
+            if (ctx.options.keepSourceTokens)
+                pair.srcToken = collItem;
+            if (isMap) {
+                const map = coll;
+                if (mapIncludes(ctx, map.items, keyNode))
+                    onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');
+                map.items.push(pair);
+            }
+            else {
+                const map = new YAMLMap(ctx.schema);
+                map.flow = true;
+                map.items.push(pair);
+                const endRange = (valueNode ?? keyNode).range;
+                map.range = [keyNode.range[0], endRange[1], endRange[2]];
+                coll.items.push(map);
+            }
+            offset = valueNode ? valueNode.range[2] : valueProps.end;
+        }
+    }
+    const expectedEnd = isMap ? '}' : ']';
+    const [ce, ...ee] = fc.end;
+    let cePos = offset;
+    if (ce?.source === expectedEnd)
+        cePos = ce.offset + ce.source.length;
+    else {
+        const name = fcName[0].toUpperCase() + fcName.substring(1);
+        const msg = atRoot
+            ? `${name} must end with a ${expectedEnd}`
+            : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;
+        onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);
+        if (ce && ce.source.length !== 1)
+            ee.unshift(ce);
+    }
+    if (ee.length > 0) {
+        const end = resolveEnd(ee, cePos, ctx.options.strict, onError);
+        if (end.comment) {
+            if (coll.comment)
+                coll.comment += '\n' + end.comment;
+            else
+                coll.comment = end.comment;
+        }
+        coll.range = [fc.offset, cePos, end.offset];
+    }
+    else {
+        coll.range = [fc.offset, cePos, cePos];
+    }
+    return coll;
+}
+
+export { resolveFlowCollection };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,225 @@
+import { Scalar } from '../nodes/Scalar.js';
+import { resolveEnd } from './resolve-end.js';
+
+function resolveFlowScalar(scalar, strict, onError) {
+    const { offset, type, source, end } = scalar;
+    let _type;
+    let value;
+    const _onError = (rel, code, msg) => onError(offset + rel, code, msg);
+    switch (type) {
+        case 'scalar':
+            _type = Scalar.PLAIN;
+            value = plainValue(source, _onError);
+            break;
+        case 'single-quoted-scalar':
+            _type = Scalar.QUOTE_SINGLE;
+            value = singleQuotedValue(source, _onError);
+            break;
+        case 'double-quoted-scalar':
+            _type = Scalar.QUOTE_DOUBLE;
+            value = doubleQuotedValue(source, _onError);
+            break;
+        /* istanbul ignore next should not happen */
+        default:
+            onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);
+            return {
+                value: '',
+                type: null,
+                comment: '',
+                range: [offset, offset + source.length, offset + source.length]
+            };
+    }
+    const valueEnd = offset + source.length;
+    const re = resolveEnd(end, valueEnd, strict, onError);
+    return {
+        value,
+        type: _type,
+        comment: re.comment,
+        range: [offset, valueEnd, re.offset]
+    };
+}
+function plainValue(source, onError) {
+    let badChar = '';
+    switch (source[0]) {
+        /* istanbul ignore next should not happen */
+        case '\t':
+            badChar = 'a tab character';
+            break;
+        case ',':
+            badChar = 'flow indicator character ,';
+            break;
+        case '%':
+            badChar = 'directive indicator character %';
+            break;
+        case '|':
+        case '>': {
+            badChar = `block scalar indicator ${source[0]}`;
+            break;
+        }
+        case '@':
+        case '`': {
+            badChar = `reserved character ${source[0]}`;
+            break;
+        }
+    }
+    if (badChar)
+        onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);
+    return foldLines(source);
+}
+function singleQuotedValue(source, onError) {
+    if (source[source.length - 1] !== "'" || source.length === 1)
+        onError(source.length, 'MISSING_CHAR', "Missing closing 'quote");
+    return foldLines(source.slice(1, -1)).replace(/''/g, "'");
+}
+function foldLines(source) {
+    /**
+     * The negative lookbehind here and in the `re` RegExp is to
+     * prevent causing a polynomial search time in certain cases.
+     *
+     * The try-catch is for Safari, which doesn't support this yet:
+     * https://caniuse.com/js-regexp-lookbehind
+     */
+    let first, line;
+    try {
+        first = new RegExp('(.*?)(?<![ \t])[ \t]*\r?\n', 'sy');
+        line = new RegExp('[ \t]*(.*?)(?:(?<![ \t])[ \t]*)?\r?\n', 'sy');
+    }
+    catch {
+        first = /(.*?)[ \t]*\r?\n/sy;
+        line = /[ \t]*(.*?)[ \t]*\r?\n/sy;
+    }
+    let match = first.exec(source);
+    if (!match)
+        return source;
+    let res = match[1];
+    let sep = ' ';
+    let pos = first.lastIndex;
+    line.lastIndex = pos;
+    while ((match = line.exec(source))) {
+        if (match[1] === '') {
+            if (sep === '\n')
+                res += sep;
+            else
+                sep = '\n';
+        }
+        else {
+            res += sep + match[1];
+            sep = ' ';
+        }
+        pos = line.lastIndex;
+    }
+    const last = /[ \t]*(.*)/sy;
+    last.lastIndex = pos;
+    match = last.exec(source);
+    return res + sep + (match?.[1] ?? '');
+}
+function doubleQuotedValue(source, onError) {
+    let res = '';
+    for (let i = 1; i < source.length - 1; ++i) {
+        const ch = source[i];
+        if (ch === '\r' && source[i + 1] === '\n')
+            continue;
+        if (ch === '\n') {
+            const { fold, offset } = foldNewline(source, i);
+            res += fold;
+            i = offset;
+        }
+        else if (ch === '\\') {
+            let next = source[++i];
+            const cc = escapeCodes[next];
+            if (cc)
+                res += cc;
+            else if (next === '\n') {
+                // skip escaped newlines, but still trim the following line
+                next = source[i + 1];
+                while (next === ' ' || next === '\t')
+                    next = source[++i + 1];
+            }
+            else if (next === '\r' && source[i + 1] === '\n') {
+                // skip escaped CRLF newlines, but still trim the following line
+                next = source[++i + 1];
+                while (next === ' ' || next === '\t')
+                    next = source[++i + 1];
+            }
+            else if (next === 'x' || next === 'u' || next === 'U') {
+                const length = next === 'x' ? 2 : next === 'u' ? 4 : 8;
+                res += parseCharCode(source, i + 1, length, onError);
+                i += length;
+            }
+            else {
+                const raw = source.substr(i - 1, 2);
+                onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);
+                res += raw;
+            }
+        }
+        else if (ch === ' ' || ch === '\t') {
+            // trim trailing whitespace
+            const wsStart = i;
+            let next = source[i + 1];
+            while (next === ' ' || next === '\t')
+                next = source[++i + 1];
+            if (next !== '\n' && !(next === '\r' && source[i + 2] === '\n'))
+                res += i > wsStart ? source.slice(wsStart, i + 1) : ch;
+        }
+        else {
+            res += ch;
+        }
+    }
+    if (source[source.length - 1] !== '"' || source.length === 1)
+        onError(source.length, 'MISSING_CHAR', 'Missing closing "quote');
+    return res;
+}
+/**
+ * Fold a single newline into a space, multiple newlines to N - 1 newlines.
+ * Presumes `source[offset] === '\n'`
+ */
+function foldNewline(source, offset) {
+    let fold = '';
+    let ch = source[offset + 1];
+    while (ch === ' ' || ch === '\t' || ch === '\n' || ch === '\r') {
+        if (ch === '\r' && source[offset + 2] !== '\n')
+            break;
+        if (ch === '\n')
+            fold += '\n';
+        offset += 1;
+        ch = source[offset + 1];
+    }
+    if (!fold)
+        fold = ' ';
+    return { fold, offset };
+}
+const escapeCodes = {
+    '0': '\0', // null character
+    a: '\x07', // bell character
+    b: '\b', // backspace
+    e: '\x1b', // escape character
+    f: '\f', // form feed
+    n: '\n', // line feed
+    r: '\r', // carriage return
+    t: '\t', // horizontal tab
+    v: '\v', // vertical tab
+    N: '\u0085', // Unicode next line
+    _: '\u00a0', // Unicode non-breaking space
+    L: '\u2028', // Unicode line separator
+    P: '\u2029', // Unicode paragraph separator
+    ' ': ' ',
+    '"': '"',
+    '/': '/',
+    '\\': '\\',
+    '\t': '\t'
+};
+function parseCharCode(source, offset, length, onError) {
+    const cc = source.substr(offset, length);
+    const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);
+    const code = ok ? parseInt(cc, 16) : NaN;
+    try {
+        return String.fromCodePoint(code);
+    }
+    catch {
+        const raw = source.substr(offset - 2, length + 2);
+        onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);
+        return raw;
+    }
+}
+
+export { resolveFlowScalar };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-props.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-props.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/resolve-props.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,146 @@
+function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
+    let spaceBefore = false;
+    let atNewline = startOnNewline;
+    let hasSpace = startOnNewline;
+    let comment = '';
+    let commentSep = '';
+    let hasNewline = false;
+    let reqSpace = false;
+    let tab = null;
+    let anchor = null;
+    let tag = null;
+    let newlineAfterProp = null;
+    let comma = null;
+    let found = null;
+    let start = null;
+    for (const token of tokens) {
+        if (reqSpace) {
+            if (token.type !== 'space' &&
+                token.type !== 'newline' &&
+                token.type !== 'comma')
+                onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');
+            reqSpace = false;
+        }
+        if (tab) {
+            if (atNewline && token.type !== 'comment' && token.type !== 'newline') {
+                onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');
+            }
+            tab = null;
+        }
+        switch (token.type) {
+            case 'space':
+                // At the doc level, tabs at line start may be parsed
+                // as leading white space rather than indentation.
+                // In a flow collection, only the parser handles indent.
+                if (!flow &&
+                    (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&
+                    token.source.includes('\t')) {
+                    tab = token;
+                }
+                hasSpace = true;
+                break;
+            case 'comment': {
+                if (!hasSpace)
+                    onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');
+                const cb = token.source.substring(1) || ' ';
+                if (!comment)
+                    comment = cb;
+                else
+                    comment += commentSep + cb;
+                commentSep = '';
+                atNewline = false;
+                break;
+            }
+            case 'newline':
+                if (atNewline) {
+                    if (comment)
+                        comment += token.source;
+                    else if (!found || indicator !== 'seq-item-ind')
+                        spaceBefore = true;
+                }
+                else
+                    commentSep += token.source;
+                atNewline = true;
+                hasNewline = true;
+                if (anchor || tag)
+                    newlineAfterProp = token;
+                hasSpace = true;
+                break;
+            case 'anchor':
+                if (anchor)
+                    onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');
+                if (token.source.endsWith(':'))
+                    onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);
+                anchor = token;
+                start ?? (start = token.offset);
+                atNewline = false;
+                hasSpace = false;
+                reqSpace = true;
+                break;
+            case 'tag': {
+                if (tag)
+                    onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');
+                tag = token;
+                start ?? (start = token.offset);
+                atNewline = false;
+                hasSpace = false;
+                reqSpace = true;
+                break;
+            }
+            case indicator:
+                // Could here handle preceding comments differently
+                if (anchor || tag)
+                    onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);
+                if (found)
+                    onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);
+                found = token;
+                atNewline =
+                    indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';
+                hasSpace = false;
+                break;
+            case 'comma':
+                if (flow) {
+                    if (comma)
+                        onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);
+                    comma = token;
+                    atNewline = false;
+                    hasSpace = false;
+                    break;
+                }
+            // else fallthrough
+            default:
+                onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);
+                atNewline = false;
+                hasSpace = false;
+        }
+    }
+    const last = tokens[tokens.length - 1];
+    const end = last ? last.offset + last.source.length : offset;
+    if (reqSpace &&
+        next &&
+        next.type !== 'space' &&
+        next.type !== 'newline' &&
+        next.type !== 'comma' &&
+        (next.type !== 'scalar' || next.source !== '')) {
+        onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');
+    }
+    if (tab &&
+        ((atNewline && tab.indent <= parentIndent) ||
+            next?.type === 'block-map' ||
+            next?.type === 'block-seq'))
+        onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');
+    return {
+        comma,
+        found,
+        spaceBefore,
+        comment,
+        hasNewline,
+        anchor,
+        tag,
+        newlineAfterProp,
+        end,
+        start: start ?? end
+    };
+}
+
+export { resolveProps };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-contains-newline.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-contains-newline.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-contains-newline.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,34 @@
+function containsNewline(key) {
+    if (!key)
+        return null;
+    switch (key.type) {
+        case 'alias':
+        case 'scalar':
+        case 'double-quoted-scalar':
+        case 'single-quoted-scalar':
+            if (key.source.includes('\n'))
+                return true;
+            if (key.end)
+                for (const st of key.end)
+                    if (st.type === 'newline')
+                        return true;
+            return false;
+        case 'flow-collection':
+            for (const it of key.items) {
+                for (const st of it.start)
+                    if (st.type === 'newline')
+                        return true;
+                if (it.sep)
+                    for (const st of it.sep)
+                        if (st.type === 'newline')
+                            return true;
+                if (containsNewline(it.key) || containsNewline(it.value))
+                    return true;
+            }
+            return false;
+        default:
+            return true;
+    }
+}
+
+export { containsNewline };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,26 @@
+function emptyScalarPosition(offset, before, pos) {
+    if (before) {
+        pos ?? (pos = before.length);
+        for (let i = pos - 1; i >= 0; --i) {
+            let st = before[i];
+            switch (st.type) {
+                case 'space':
+                case 'comment':
+                case 'newline':
+                    offset -= st.source.length;
+                    continue;
+            }
+            // Technically, an empty scalar is immediately after the last non-empty
+            // node, but it's more useful to place it after any whitespace.
+            st = before[++i];
+            while (st?.type === 'space') {
+                offset += st.source.length;
+                st = before[++i];
+            }
+            break;
+        }
+    }
+    return offset;
+}
+
+export { emptyScalarPosition };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,15 @@
+import { containsNewline } from './util-contains-newline.js';
+
+function flowIndentCheck(indent, fc, onError) {
+    if (fc?.type === 'flow-collection') {
+        const end = fc.end[0];
+        if (end.indent === indent &&
+            (end.source === ']' || end.source === '}') &&
+            containsNewline(fc)) {
+            const msg = 'Flow end indicator should be more indented than parent';
+            onError(end, 'BAD_INDENT', msg, true);
+        }
+    }
+}
+
+export { flowIndentCheck };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-map-includes.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-map-includes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/compose/util-map-includes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,13 @@
+import { isScalar } from '../nodes/identity.js';
+
+function mapIncludes(ctx, items, search) {
+    const { uniqueKeys } = ctx.options;
+    if (uniqueKeys === false)
+        return false;
+    const isEqual = typeof uniqueKeys === 'function'
+        ? uniqueKeys
+        : (a, b) => a === b || (isScalar(a) && isScalar(b) && a.value === b.value);
+    return items.some(pair => isEqual(pair.key, search));
+}
+
+export { mapIncludes };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/Document.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/Document.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/Document.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,335 @@
+import { Alias } from '../nodes/Alias.js';
+import { isEmptyPath, collectionFromPath } from '../nodes/Collection.js';
+import { NODE_TYPE, DOC, isNode, isCollection, isScalar } from '../nodes/identity.js';
+import { Pair } from '../nodes/Pair.js';
+import { toJS } from '../nodes/toJS.js';
+import { Schema } from '../schema/Schema.js';
+import { stringifyDocument } from '../stringify/stringifyDocument.js';
+import { anchorNames, findNewAnchor, createNodeAnchors } from './anchors.js';
+import { applyReviver } from './applyReviver.js';
+import { createNode } from './createNode.js';
+import { Directives } from './directives.js';
+
+class Document {
+    constructor(value, replacer, options) {
+        /** A comment before this Document */
+        this.commentBefore = null;
+        /** A comment immediately after this Document */
+        this.comment = null;
+        /** Errors encountered during parsing. */
+        this.errors = [];
+        /** Warnings encountered during parsing. */
+        this.warnings = [];
+        Object.defineProperty(this, NODE_TYPE, { value: DOC });
+        let _replacer = null;
+        if (typeof replacer === 'function' || Array.isArray(replacer)) {
+            _replacer = replacer;
+        }
+        else if (options === undefined && replacer) {
+            options = replacer;
+            replacer = undefined;
+        }
+        const opt = Object.assign({
+            intAsBigInt: false,
+            keepSourceTokens: false,
+            logLevel: 'warn',
+            prettyErrors: true,
+            strict: true,
+            stringKeys: false,
+            uniqueKeys: true,
+            version: '1.2'
+        }, options);
+        this.options = opt;
+        let { version } = opt;
+        if (options?._directives) {
+            this.directives = options._directives.atDocument();
+            if (this.directives.yaml.explicit)
+                version = this.directives.yaml.version;
+        }
+        else
+            this.directives = new Directives({ version });
+        this.setSchema(version, options);
+        // @ts-expect-error We can't really know that this matches Contents.
+        this.contents =
+            value === undefined ? null : this.createNode(value, _replacer, options);
+    }
+    /**
+     * Create a deep copy of this Document and its contents.
+     *
+     * Custom Node values that inherit from `Object` still refer to their original instances.
+     */
+    clone() {
+        const copy = Object.create(Document.prototype, {
+            [NODE_TYPE]: { value: DOC }
+        });
+        copy.commentBefore = this.commentBefore;
+        copy.comment = this.comment;
+        copy.errors = this.errors.slice();
+        copy.warnings = this.warnings.slice();
+        copy.options = Object.assign({}, this.options);
+        if (this.directives)
+            copy.directives = this.directives.clone();
+        copy.schema = this.schema.clone();
+        // @ts-expect-error We can't really know that this matches Contents.
+        copy.contents = isNode(this.contents)
+            ? this.contents.clone(copy.schema)
+            : this.contents;
+        if (this.range)
+            copy.range = this.range.slice();
+        return copy;
+    }
+    /** Adds a value to the document. */
+    add(value) {
+        if (assertCollection(this.contents))
+            this.contents.add(value);
+    }
+    /** Adds a value to the document. */
+    addIn(path, value) {
+        if (assertCollection(this.contents))
+            this.contents.addIn(path, value);
+    }
+    /**
+     * Create a new `Alias` node, ensuring that the target `node` has the required anchor.
+     *
+     * If `node` already has an anchor, `name` is ignored.
+     * Otherwise, the `node.anchor` value will be set to `name`,
+     * or if an anchor with that name is already present in the document,
+     * `name` will be used as a prefix for a new unique anchor.
+     * If `name` is undefined, the generated anchor will use 'a' as a prefix.
+     */
+    createAlias(node, name) {
+        if (!node.anchor) {
+            const prev = anchorNames(this);
+            node.anchor =
+                // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
+                !name || prev.has(name) ? findNewAnchor(name || 'a', prev) : name;
+        }
+        return new Alias(node.anchor);
+    }
+    createNode(value, replacer, options) {
+        let _replacer = undefined;
+        if (typeof replacer === 'function') {
+            value = replacer.call({ '': value }, '', value);
+            _replacer = replacer;
+        }
+        else if (Array.isArray(replacer)) {
+            const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;
+            const asStr = replacer.filter(keyToStr).map(String);
+            if (asStr.length > 0)
+                replacer = replacer.concat(asStr);
+            _replacer = replacer;
+        }
+        else if (options === undefined && replacer) {
+            options = replacer;
+            replacer = undefined;
+        }
+        const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};
+        const { onAnchor, setAnchors, sourceObjects } = createNodeAnchors(this, 
+        // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
+        anchorPrefix || 'a');
+        const ctx = {
+            aliasDuplicateObjects: aliasDuplicateObjects ?? true,
+            keepUndefined: keepUndefined ?? false,
+            onAnchor,
+            onTagObj,
+            replacer: _replacer,
+            schema: this.schema,
+            sourceObjects
+        };
+        const node = createNode(value, tag, ctx);
+        if (flow && isCollection(node))
+            node.flow = true;
+        setAnchors();
+        return node;
+    }
+    /**
+     * Convert a key and a value into a `Pair` using the current schema,
+     * recursively wrapping all values as `Scalar` or `Collection` nodes.
+     */
+    createPair(key, value, options = {}) {
+        const k = this.createNode(key, null, options);
+        const v = this.createNode(value, null, options);
+        return new Pair(k, v);
+    }
+    /**
+     * Removes a value from the document.
+     * @returns `true` if the item was found and removed.
+     */
+    delete(key) {
+        return assertCollection(this.contents) ? this.contents.delete(key) : false;
+    }
+    /**
+     * Removes a value from the document.
+     * @returns `true` if the item was found and removed.
+     */
+    deleteIn(path) {
+        if (isEmptyPath(path)) {
+            if (this.contents == null)
+                return false;
+            // @ts-expect-error Presumed impossible if Strict extends false
+            this.contents = null;
+            return true;
+        }
+        return assertCollection(this.contents)
+            ? this.contents.deleteIn(path)
+            : false;
+    }
+    /**
+     * Returns item at `key`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    get(key, keepScalar) {
+        return isCollection(this.contents)
+            ? this.contents.get(key, keepScalar)
+            : undefined;
+    }
+    /**
+     * Returns item at `path`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    getIn(path, keepScalar) {
+        if (isEmptyPath(path))
+            return !keepScalar && isScalar(this.contents)
+                ? this.contents.value
+                : this.contents;
+        return isCollection(this.contents)
+            ? this.contents.getIn(path, keepScalar)
+            : undefined;
+    }
+    /**
+     * Checks if the document includes a value with the key `key`.
+     */
+    has(key) {
+        return isCollection(this.contents) ? this.contents.has(key) : false;
+    }
+    /**
+     * Checks if the document includes a value at `path`.
+     */
+    hasIn(path) {
+        if (isEmptyPath(path))
+            return this.contents !== undefined;
+        return isCollection(this.contents) ? this.contents.hasIn(path) : false;
+    }
+    /**
+     * Sets a value in this document. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    set(key, value) {
+        if (this.contents == null) {
+            // @ts-expect-error We can't really know that this matches Contents.
+            this.contents = collectionFromPath(this.schema, [key], value);
+        }
+        else if (assertCollection(this.contents)) {
+            this.contents.set(key, value);
+        }
+    }
+    /**
+     * Sets a value in this document. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    setIn(path, value) {
+        if (isEmptyPath(path)) {
+            // @ts-expect-error We can't really know that this matches Contents.
+            this.contents = value;
+        }
+        else if (this.contents == null) {
+            // @ts-expect-error We can't really know that this matches Contents.
+            this.contents = collectionFromPath(this.schema, Array.from(path), value);
+        }
+        else if (assertCollection(this.contents)) {
+            this.contents.setIn(path, value);
+        }
+    }
+    /**
+     * Change the YAML version and schema used by the document.
+     * A `null` version disables support for directives, explicit tags, anchors, and aliases.
+     * It also requires the `schema` option to be given as a `Schema` instance value.
+     *
+     * Overrides all previously set schema options.
+     */
+    setSchema(version, options = {}) {
+        if (typeof version === 'number')
+            version = String(version);
+        let opt;
+        switch (version) {
+            case '1.1':
+                if (this.directives)
+                    this.directives.yaml.version = '1.1';
+                else
+                    this.directives = new Directives({ version: '1.1' });
+                opt = { resolveKnownTags: false, schema: 'yaml-1.1' };
+                break;
+            case '1.2':
+            case 'next':
+                if (this.directives)
+                    this.directives.yaml.version = version;
+                else
+                    this.directives = new Directives({ version });
+                opt = { resolveKnownTags: true, schema: 'core' };
+                break;
+            case null:
+                if (this.directives)
+                    delete this.directives;
+                opt = null;
+                break;
+            default: {
+                const sv = JSON.stringify(version);
+                throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);
+            }
+        }
+        // Not using `instanceof Schema` to allow for duck typing
+        if (options.schema instanceof Object)
+            this.schema = options.schema;
+        else if (opt)
+            this.schema = new Schema(Object.assign(opt, options));
+        else
+            throw new Error(`With a null YAML version, the { schema: Schema } option is required`);
+    }
+    // json & jsonArg are only used from toJSON()
+    toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {
+        const ctx = {
+            anchors: new Map(),
+            doc: this,
+            keep: !json,
+            mapAsMap: mapAsMap === true,
+            mapKeyWarned: false,
+            maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100
+        };
+        const res = toJS(this.contents, jsonArg ?? '', ctx);
+        if (typeof onAnchor === 'function')
+            for (const { count, res } of ctx.anchors.values())
+                onAnchor(res, count);
+        return typeof reviver === 'function'
+            ? applyReviver(reviver, { '': res }, '', res)
+            : res;
+    }
+    /**
+     * A JSON representation of the document `contents`.
+     *
+     * @param jsonArg Used by `JSON.stringify` to indicate the array index or
+     *   property name.
+     */
+    toJSON(jsonArg, onAnchor) {
+        return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });
+    }
+    /** A YAML representation of the document. */
+    toString(options = {}) {
+        if (this.errors.length > 0)
+            throw new Error('Document with errors cannot be stringified');
+        if ('indent' in options &&
+            (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {
+            const s = JSON.stringify(options.indent);
+            throw new Error(`"indent" option must be a positive integer, not ${s}`);
+        }
+        return stringifyDocument(this, options);
+    }
+}
+function assertCollection(contents) {
+    if (isCollection(contents))
+        return true;
+    throw new Error('Expected a YAML collection as document contents');
+}
+
+export { Document };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/anchors.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/anchors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/anchors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,71 @@
+import { isScalar, isCollection } from '../nodes/identity.js';
+import { visit } from '../visit.js';
+
+/**
+ * Verify that the input string is a valid anchor.
+ *
+ * Will throw on errors.
+ */
+function anchorIsValid(anchor) {
+    if (/[\x00-\x19\s,[\]{}]/.test(anchor)) {
+        const sa = JSON.stringify(anchor);
+        const msg = `Anchor must not contain whitespace or control characters: ${sa}`;
+        throw new Error(msg);
+    }
+    return true;
+}
+function anchorNames(root) {
+    const anchors = new Set();
+    visit(root, {
+        Value(_key, node) {
+            if (node.anchor)
+                anchors.add(node.anchor);
+        }
+    });
+    return anchors;
+}
+/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */
+function findNewAnchor(prefix, exclude) {
+    for (let i = 1; true; ++i) {
+        const name = `${prefix}${i}`;
+        if (!exclude.has(name))
+            return name;
+    }
+}
+function createNodeAnchors(doc, prefix) {
+    const aliasObjects = [];
+    const sourceObjects = new Map();
+    let prevAnchors = null;
+    return {
+        onAnchor: (source) => {
+            aliasObjects.push(source);
+            prevAnchors ?? (prevAnchors = anchorNames(doc));
+            const anchor = findNewAnchor(prefix, prevAnchors);
+            prevAnchors.add(anchor);
+            return anchor;
+        },
+        /**
+         * With circular references, the source node is only resolved after all
+         * of its child nodes are. This is why anchors are set only after all of
+         * the nodes have been created.
+         */
+        setAnchors: () => {
+            for (const source of aliasObjects) {
+                const ref = sourceObjects.get(source);
+                if (typeof ref === 'object' &&
+                    ref.anchor &&
+                    (isScalar(ref.node) || isCollection(ref.node))) {
+                    ref.node.anchor = ref.anchor;
+                }
+                else {
+                    const error = new Error('Failed to resolve repeated object (this should not happen)');
+                    error.source = source;
+                    throw error;
+                }
+            }
+        },
+        sourceObjects
+    };
+}
+
+export { anchorIsValid, anchorNames, createNodeAnchors, findNewAnchor };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/applyReviver.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/applyReviver.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/applyReviver.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,55 @@
+/**
+ * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,
+ * in section 24.5.1.1 "Runtime Semantics: InternalizeJSONProperty" of the
+ * 2021 edition: https://tc39.es/ecma262/#sec-json.parse
+ *
+ * Includes extensions for handling Map and Set objects.
+ */
+function applyReviver(reviver, obj, key, val) {
+    if (val && typeof val === 'object') {
+        if (Array.isArray(val)) {
+            for (let i = 0, len = val.length; i < len; ++i) {
+                const v0 = val[i];
+                const v1 = applyReviver(reviver, val, String(i), v0);
+                // eslint-disable-next-line @typescript-eslint/no-array-delete
+                if (v1 === undefined)
+                    delete val[i];
+                else if (v1 !== v0)
+                    val[i] = v1;
+            }
+        }
+        else if (val instanceof Map) {
+            for (const k of Array.from(val.keys())) {
+                const v0 = val.get(k);
+                const v1 = applyReviver(reviver, val, k, v0);
+                if (v1 === undefined)
+                    val.delete(k);
+                else if (v1 !== v0)
+                    val.set(k, v1);
+            }
+        }
+        else if (val instanceof Set) {
+            for (const v0 of Array.from(val)) {
+                const v1 = applyReviver(reviver, val, v0, v0);
+                if (v1 === undefined)
+                    val.delete(v0);
+                else if (v1 !== v0) {
+                    val.delete(v0);
+                    val.add(v1);
+                }
+            }
+        }
+        else {
+            for (const [k, v0] of Object.entries(val)) {
+                const v1 = applyReviver(reviver, val, k, v0);
+                if (v1 === undefined)
+                    delete val[k];
+                else if (v1 !== v0)
+                    val[k] = v1;
+            }
+        }
+    }
+    return reviver.call(obj, key, val);
+}
+
+export { applyReviver };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/createNode.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/createNode.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/createNode.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,88 @@
+import { Alias } from '../nodes/Alias.js';
+import { isNode, isPair, MAP, SEQ, isDocument } from '../nodes/identity.js';
+import { Scalar } from '../nodes/Scalar.js';
+
+const defaultTagPrefix = 'tag:yaml.org,2002:';
+function findTagObject(value, tagName, tags) {
+    if (tagName) {
+        const match = tags.filter(t => t.tag === tagName);
+        const tagObj = match.find(t => !t.format) ?? match[0];
+        if (!tagObj)
+            throw new Error(`Tag ${tagName} not found`);
+        return tagObj;
+    }
+    return tags.find(t => t.identify?.(value) && !t.format);
+}
+function createNode(value, tagName, ctx) {
+    if (isDocument(value))
+        value = value.contents;
+    if (isNode(value))
+        return value;
+    if (isPair(value)) {
+        const map = ctx.schema[MAP].createNode?.(ctx.schema, null, ctx);
+        map.items.push(value);
+        return map;
+    }
+    if (value instanceof String ||
+        value instanceof Number ||
+        value instanceof Boolean ||
+        (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere
+    ) {
+        // https://tc39.es/ecma262/#sec-serializejsonproperty
+        value = value.valueOf();
+    }
+    const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;
+    // Detect duplicate references to the same object & use Alias nodes for all
+    // after first. The `ref` wrapper allows for circular references to resolve.
+    let ref = undefined;
+    if (aliasDuplicateObjects && value && typeof value === 'object') {
+        ref = sourceObjects.get(value);
+        if (ref) {
+            ref.anchor ?? (ref.anchor = onAnchor(value));
+            return new Alias(ref.anchor);
+        }
+        else {
+            ref = { anchor: null, node: null };
+            sourceObjects.set(value, ref);
+        }
+    }
+    if (tagName?.startsWith('!!'))
+        tagName = defaultTagPrefix + tagName.slice(2);
+    let tagObj = findTagObject(value, tagName, schema.tags);
+    if (!tagObj) {
+        if (value && typeof value.toJSON === 'function') {
+            // eslint-disable-next-line @typescript-eslint/no-unsafe-call
+            value = value.toJSON();
+        }
+        if (!value || typeof value !== 'object') {
+            const node = new Scalar(value);
+            if (ref)
+                ref.node = node;
+            return node;
+        }
+        tagObj =
+            value instanceof Map
+                ? schema[MAP]
+                : Symbol.iterator in Object(value)
+                    ? schema[SEQ]
+                    : schema[MAP];
+    }
+    if (onTagObj) {
+        onTagObj(tagObj);
+        delete ctx.onTagObj;
+    }
+    const node = tagObj?.createNode
+        ? tagObj.createNode(ctx.schema, value, ctx)
+        : typeof tagObj?.nodeClass?.from === 'function'
+            ? tagObj.nodeClass.from(ctx.schema, value, ctx)
+            : new Scalar(value);
+    if (tagName)
+        node.tag = tagName;
+    else if (!tagObj.default)
+        node.tag = tagObj.tag;
+    if (ref)
+        ref.node = node;
+    return node;
+}
+
+export { createNode };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/directives.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/directives.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/doc/directives.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,176 @@
+import { isNode } from '../nodes/identity.js';
+import { visit } from '../visit.js';
+
+const escapeChars = {
+    '!': '%21',
+    ',': '%2C',
+    '[': '%5B',
+    ']': '%5D',
+    '{': '%7B',
+    '}': '%7D'
+};
+const escapeTagName = (tn) => tn.replace(/[!,[\]{}]/g, ch => escapeChars[ch]);
+class Directives {
+    constructor(yaml, tags) {
+        /**
+         * The directives-end/doc-start marker `---`. If `null`, a marker may still be
+         * included in the document's stringified representation.
+         */
+        this.docStart = null;
+        /** The doc-end marker `...`.  */
+        this.docEnd = false;
+        this.yaml = Object.assign({}, Directives.defaultYaml, yaml);
+        this.tags = Object.assign({}, Directives.defaultTags, tags);
+    }
+    clone() {
+        const copy = new Directives(this.yaml, this.tags);
+        copy.docStart = this.docStart;
+        return copy;
+    }
+    /**
+     * During parsing, get a Directives instance for the current document and
+     * update the stream state according to the current version's spec.
+     */
+    atDocument() {
+        const res = new Directives(this.yaml, this.tags);
+        switch (this.yaml.version) {
+            case '1.1':
+                this.atNextDocument = true;
+                break;
+            case '1.2':
+                this.atNextDocument = false;
+                this.yaml = {
+                    explicit: Directives.defaultYaml.explicit,
+                    version: '1.2'
+                };
+                this.tags = Object.assign({}, Directives.defaultTags);
+                break;
+        }
+        return res;
+    }
+    /**
+     * @param onError - May be called even if the action was successful
+     * @returns `true` on success
+     */
+    add(line, onError) {
+        if (this.atNextDocument) {
+            this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };
+            this.tags = Object.assign({}, Directives.defaultTags);
+            this.atNextDocument = false;
+        }
+        const parts = line.trim().split(/[ \t]+/);
+        const name = parts.shift();
+        switch (name) {
+            case '%TAG': {
+                if (parts.length !== 2) {
+                    onError(0, '%TAG directive should contain exactly two parts');
+                    if (parts.length < 2)
+                        return false;
+                }
+                const [handle, prefix] = parts;
+                this.tags[handle] = prefix;
+                return true;
+            }
+            case '%YAML': {
+                this.yaml.explicit = true;
+                if (parts.length !== 1) {
+                    onError(0, '%YAML directive should contain exactly one part');
+                    return false;
+                }
+                const [version] = parts;
+                if (version === '1.1' || version === '1.2') {
+                    this.yaml.version = version;
+                    return true;
+                }
+                else {
+                    const isValid = /^\d+\.\d+$/.test(version);
+                    onError(6, `Unsupported YAML version ${version}`, isValid);
+                    return false;
+                }
+            }
+            default:
+                onError(0, `Unknown directive ${name}`, true);
+                return false;
+        }
+    }
+    /**
+     * Resolves a tag, matching handles to those defined in %TAG directives.
+     *
+     * @returns Resolved tag, which may also be the non-specific tag `'!'` or a
+     *   `'!local'` tag, or `null` if unresolvable.
+     */
+    tagName(source, onError) {
+        if (source === '!')
+            return '!'; // non-specific tag
+        if (source[0] !== '!') {
+            onError(`Not a valid tag: ${source}`);
+            return null;
+        }
+        if (source[1] === '<') {
+            const verbatim = source.slice(2, -1);
+            if (verbatim === '!' || verbatim === '!!') {
+                onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);
+                return null;
+            }
+            if (source[source.length - 1] !== '>')
+                onError('Verbatim tags must end with a >');
+            return verbatim;
+        }
+        const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);
+        if (!suffix)
+            onError(`The ${source} tag has no suffix`);
+        const prefix = this.tags[handle];
+        if (prefix) {
+            try {
+                return prefix + decodeURIComponent(suffix);
+            }
+            catch (error) {
+                onError(String(error));
+                return null;
+            }
+        }
+        if (handle === '!')
+            return source; // local tag
+        onError(`Could not resolve tag: ${source}`);
+        return null;
+    }
+    /**
+     * Given a fully resolved tag, returns its printable string form,
+     * taking into account current tag prefixes and defaults.
+     */
+    tagString(tag) {
+        for (const [handle, prefix] of Object.entries(this.tags)) {
+            if (tag.startsWith(prefix))
+                return handle + escapeTagName(tag.substring(prefix.length));
+        }
+        return tag[0] === '!' ? tag : `!<${tag}>`;
+    }
+    toString(doc) {
+        const lines = this.yaml.explicit
+            ? [`%YAML ${this.yaml.version || '1.2'}`]
+            : [];
+        const tagEntries = Object.entries(this.tags);
+        let tagNames;
+        if (doc && tagEntries.length > 0 && isNode(doc.contents)) {
+            const tags = {};
+            visit(doc.contents, (_key, node) => {
+                if (isNode(node) && node.tag)
+                    tags[node.tag] = true;
+            });
+            tagNames = Object.keys(tags);
+        }
+        else
+            tagNames = [];
+        for (const [handle, prefix] of tagEntries) {
+            if (handle === '!!' && prefix === 'tag:yaml.org,2002:')
+                continue;
+            if (!doc || tagNames.some(tn => tn.startsWith(prefix)))
+                lines.push(`%TAG ${handle} ${prefix}`);
+        }
+        return lines.join('\n');
+    }
+}
+Directives.defaultYaml = { explicit: false, version: '1.2' };
+Directives.defaultTags = { '!!': 'tag:yaml.org,2002:' };
+
+export { Directives };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/errors.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/errors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/errors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,57 @@
+class YAMLError extends Error {
+    constructor(name, pos, code, message) {
+        super();
+        this.name = name;
+        this.code = code;
+        this.message = message;
+        this.pos = pos;
+    }
+}
+class YAMLParseError extends YAMLError {
+    constructor(pos, code, message) {
+        super('YAMLParseError', pos, code, message);
+    }
+}
+class YAMLWarning extends YAMLError {
+    constructor(pos, code, message) {
+        super('YAMLWarning', pos, code, message);
+    }
+}
+const prettifyError = (src, lc) => (error) => {
+    if (error.pos[0] === -1)
+        return;
+    error.linePos = error.pos.map(pos => lc.linePos(pos));
+    const { line, col } = error.linePos[0];
+    error.message += ` at line ${line}, column ${col}`;
+    let ci = col - 1;
+    let lineStr = src
+        .substring(lc.lineStarts[line - 1], lc.lineStarts[line])
+        .replace(/[\n\r]+$/, '');
+    // Trim to max 80 chars, keeping col position near the middle
+    if (ci >= 60 && lineStr.length > 80) {
+        const trimStart = Math.min(ci - 39, lineStr.length - 79);
+        lineStr = '…' + lineStr.substring(trimStart);
+        ci -= trimStart - 1;
+    }
+    if (lineStr.length > 80)
+        lineStr = lineStr.substring(0, 79) + '…';
+    // Include previous line in context if pointing at line start
+    if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {
+        // Regexp won't match if start is trimmed
+        let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);
+        if (prev.length > 80)
+            prev = prev.substring(0, 79) + '…\n';
+        lineStr = prev + lineStr;
+    }
+    if (/[^ ]/.test(lineStr)) {
+        let count = 1;
+        const end = error.linePos[1];
+        if (end?.line === line && end.col > col) {
+            count = Math.max(1, Math.min(end.col - col, 80 - ci));
+        }
+        const pointer = ' '.repeat(ci) + '^'.repeat(count);
+        error.message += `:\n\n${lineStr}\n${pointer}\n`;
+    }
+};
+
+export { YAMLError, YAMLParseError, YAMLWarning, prettifyError };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/index.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+export { Composer } from './compose/composer.js';
+export { Document } from './doc/Document.js';
+export { Schema } from './schema/Schema.js';
+export { YAMLError, YAMLParseError, YAMLWarning } from './errors.js';
+export { Alias } from './nodes/Alias.js';
+export { isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq } from './nodes/identity.js';
+export { Pair } from './nodes/Pair.js';
+export { Scalar } from './nodes/Scalar.js';
+export { YAMLMap } from './nodes/YAMLMap.js';
+export { YAMLSeq } from './nodes/YAMLSeq.js';
+import * as cst from './parse/cst.js';
+export { cst as CST };
+export { Lexer } from './parse/lexer.js';
+export { LineCounter } from './parse/line-counter.js';
+export { Parser } from './parse/parser.js';
+export { parse, parseAllDocuments, parseDocument, stringify } from './public-api.js';
+export { visit, visitAsync } from './visit.js';
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/log.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/log.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/log.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,11 @@
+function debug(logLevel, ...messages) {
+    if (logLevel === 'debug')
+        console.log(...messages);
+}
+function warn(logLevel, warning) {
+    if (logLevel === 'debug' || logLevel === 'warn') {
+        console.warn(warning);
+    }
+}
+
+export { debug, warn };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Alias.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Alias.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Alias.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,116 @@
+import { anchorIsValid } from '../doc/anchors.js';
+import { visit } from '../visit.js';
+import { ALIAS, isAlias, isCollection, isPair, hasAnchor } from './identity.js';
+import { NodeBase } from './Node.js';
+import { toJS } from './toJS.js';
+
+class Alias extends NodeBase {
+    constructor(source) {
+        super(ALIAS);
+        this.source = source;
+        Object.defineProperty(this, 'tag', {
+            set() {
+                throw new Error('Alias nodes cannot have tags');
+            }
+        });
+    }
+    /**
+     * Resolve the value of this alias within `doc`, finding the last
+     * instance of the `source` anchor before this node.
+     */
+    resolve(doc, ctx) {
+        if (ctx?.maxAliasCount === 0)
+            throw new ReferenceError('Alias resolution is disabled');
+        let nodes;
+        if (ctx?.aliasResolveCache) {
+            nodes = ctx.aliasResolveCache;
+        }
+        else {
+            nodes = [];
+            visit(doc, {
+                Node: (_key, node) => {
+                    if (isAlias(node) || hasAnchor(node))
+                        nodes.push(node);
+                }
+            });
+            if (ctx)
+                ctx.aliasResolveCache = nodes;
+        }
+        let found = undefined;
+        for (const node of nodes) {
+            if (node === this)
+                break;
+            if (node.anchor === this.source)
+                found = node;
+        }
+        return found;
+    }
+    toJSON(_arg, ctx) {
+        if (!ctx)
+            return { source: this.source };
+        const { anchors, doc, maxAliasCount } = ctx;
+        const source = this.resolve(doc, ctx);
+        if (!source) {
+            const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;
+            throw new ReferenceError(msg);
+        }
+        let data = anchors.get(source);
+        if (!data) {
+            // Resolve anchors for Node.prototype.toJS()
+            toJS(source, null, ctx);
+            data = anchors.get(source);
+        }
+        /* istanbul ignore if */
+        if (data?.res === undefined) {
+            const msg = 'This should not happen: Alias anchor was not resolved?';
+            throw new ReferenceError(msg);
+        }
+        if (maxAliasCount >= 0) {
+            data.count += 1;
+            if (data.aliasCount === 0)
+                data.aliasCount = getAliasCount(doc, source, anchors);
+            if (data.count * data.aliasCount > maxAliasCount) {
+                const msg = 'Excessive alias count indicates a resource exhaustion attack';
+                throw new ReferenceError(msg);
+            }
+        }
+        return data.res;
+    }
+    toString(ctx, _onComment, _onChompKeep) {
+        const src = `*${this.source}`;
+        if (ctx) {
+            anchorIsValid(this.source);
+            if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {
+                const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;
+                throw new Error(msg);
+            }
+            if (ctx.implicitKey)
+                return `${src} `;
+        }
+        return src;
+    }
+}
+function getAliasCount(doc, node, anchors) {
+    if (isAlias(node)) {
+        const source = node.resolve(doc);
+        const anchor = anchors && source && anchors.get(source);
+        return anchor ? anchor.count * anchor.aliasCount : 0;
+    }
+    else if (isCollection(node)) {
+        let count = 0;
+        for (const item of node.items) {
+            const c = getAliasCount(doc, item, anchors);
+            if (c > count)
+                count = c;
+        }
+        return count;
+    }
+    else if (isPair(node)) {
+        const kc = getAliasCount(doc, node.key, anchors);
+        const vc = getAliasCount(doc, node.value, anchors);
+        return Math.max(kc, vc);
+    }
+    return 1;
+}
+
+export { Alias };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Collection.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,147 @@
+import { createNode } from '../doc/createNode.js';
+import { isNode, isPair, isCollection, isScalar } from './identity.js';
+import { NodeBase } from './Node.js';
+
+function collectionFromPath(schema, path, value) {
+    let v = value;
+    for (let i = path.length - 1; i >= 0; --i) {
+        const k = path[i];
+        if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {
+            const a = [];
+            a[k] = v;
+            v = a;
+        }
+        else {
+            v = new Map([[k, v]]);
+        }
+    }
+    return createNode(v, undefined, {
+        aliasDuplicateObjects: false,
+        keepUndefined: false,
+        onAnchor: () => {
+            throw new Error('This should not happen, please report a bug.');
+        },
+        schema,
+        sourceObjects: new Map()
+    });
+}
+// Type guard is intentionally a little wrong so as to be more useful,
+// as it does not cover untypable empty non-string iterables (e.g. []).
+const isEmptyPath = (path) => path == null ||
+    (typeof path === 'object' && !!path[Symbol.iterator]().next().done);
+class Collection extends NodeBase {
+    constructor(type, schema) {
+        super(type);
+        Object.defineProperty(this, 'schema', {
+            value: schema,
+            configurable: true,
+            enumerable: false,
+            writable: true
+        });
+    }
+    /**
+     * Create a copy of this collection.
+     *
+     * @param schema - If defined, overwrites the original's schema
+     */
+    clone(schema) {
+        const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));
+        if (schema)
+            copy.schema = schema;
+        copy.items = copy.items.map(it => isNode(it) || isPair(it) ? it.clone(schema) : it);
+        if (this.range)
+            copy.range = this.range.slice();
+        return copy;
+    }
+    /**
+     * Adds a value to the collection. For `!!map` and `!!omap` the value must
+     * be a Pair instance or a `{ key, value }` object, which may not have a key
+     * that already exists in the map.
+     */
+    addIn(path, value) {
+        if (isEmptyPath(path))
+            this.add(value);
+        else {
+            const [key, ...rest] = path;
+            const node = this.get(key, true);
+            if (isCollection(node))
+                node.addIn(rest, value);
+            else if (node === undefined && this.schema)
+                this.set(key, collectionFromPath(this.schema, rest, value));
+            else
+                throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
+        }
+    }
+    /**
+     * Removes a value from the collection.
+     * @returns `true` if the item was found and removed.
+     */
+    deleteIn(path) {
+        const [key, ...rest] = path;
+        if (rest.length === 0)
+            return this.delete(key);
+        const node = this.get(key, true);
+        if (isCollection(node))
+            return node.deleteIn(rest);
+        else
+            throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
+    }
+    /**
+     * Returns item at `key`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    getIn(path, keepScalar) {
+        const [key, ...rest] = path;
+        const node = this.get(key, true);
+        if (rest.length === 0)
+            return !keepScalar && isScalar(node) ? node.value : node;
+        else
+            return isCollection(node) ? node.getIn(rest, keepScalar) : undefined;
+    }
+    hasAllNullValues(allowScalar) {
+        return this.items.every(node => {
+            if (!isPair(node))
+                return false;
+            const n = node.value;
+            return (n == null ||
+                (allowScalar &&
+                    isScalar(n) &&
+                    n.value == null &&
+                    !n.commentBefore &&
+                    !n.comment &&
+                    !n.tag));
+        });
+    }
+    /**
+     * Checks if the collection includes a value with the key `key`.
+     */
+    hasIn(path) {
+        const [key, ...rest] = path;
+        if (rest.length === 0)
+            return this.has(key);
+        const node = this.get(key, true);
+        return isCollection(node) ? node.hasIn(rest) : false;
+    }
+    /**
+     * Sets a value in this collection. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    setIn(path, value) {
+        const [key, ...rest] = path;
+        if (rest.length === 0) {
+            this.set(key, value);
+        }
+        else {
+            const node = this.get(key, true);
+            if (isCollection(node))
+                node.setIn(rest, value);
+            else if (node === undefined && this.schema)
+                this.set(key, collectionFromPath(this.schema, rest, value));
+            else
+                throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
+        }
+    }
+}
+
+export { Collection, collectionFromPath, isEmptyPath };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Node.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Node.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Node.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,38 @@
+import { applyReviver } from '../doc/applyReviver.js';
+import { NODE_TYPE, isDocument } from './identity.js';
+import { toJS } from './toJS.js';
+
+class NodeBase {
+    constructor(type) {
+        Object.defineProperty(this, NODE_TYPE, { value: type });
+    }
+    /** Create a copy of this node.  */
+    clone() {
+        const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));
+        if (this.range)
+            copy.range = this.range.slice();
+        return copy;
+    }
+    /** A plain JavaScript representation of this node. */
+    toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {
+        if (!isDocument(doc))
+            throw new TypeError('A document argument is required');
+        const ctx = {
+            anchors: new Map(),
+            doc,
+            keep: true,
+            mapAsMap: mapAsMap === true,
+            mapKeyWarned: false,
+            maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100
+        };
+        const res = toJS(this, '', ctx);
+        if (typeof onAnchor === 'function')
+            for (const { count, res } of ctx.anchors.values())
+                onAnchor(res, count);
+        return typeof reviver === 'function'
+            ? applyReviver(reviver, { '': res }, '', res)
+            : res;
+    }
+}
+
+export { NodeBase };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Pair.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Pair.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Pair.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,36 @@
+import { createNode } from '../doc/createNode.js';
+import { stringifyPair } from '../stringify/stringifyPair.js';
+import { addPairToJSMap } from './addPairToJSMap.js';
+import { NODE_TYPE, PAIR, isNode } from './identity.js';
+
+function createPair(key, value, ctx) {
+    const k = createNode(key, undefined, ctx);
+    const v = createNode(value, undefined, ctx);
+    return new Pair(k, v);
+}
+class Pair {
+    constructor(key, value = null) {
+        Object.defineProperty(this, NODE_TYPE, { value: PAIR });
+        this.key = key;
+        this.value = value;
+    }
+    clone(schema) {
+        let { key, value } = this;
+        if (isNode(key))
+            key = key.clone(schema);
+        if (isNode(value))
+            value = value.clone(schema);
+        return new Pair(key, value);
+    }
+    toJSON(_, ctx) {
+        const pair = ctx?.mapAsMap ? new Map() : {};
+        return addPairToJSMap(ctx, pair, this);
+    }
+    toString(ctx, onComment, onChompKeep) {
+        return ctx?.doc
+            ? stringifyPair(this, ctx, onComment, onChompKeep)
+            : JSON.stringify(this);
+    }
+}
+
+export { Pair, createPair };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/Scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,24 @@
+import { SCALAR } from './identity.js';
+import { NodeBase } from './Node.js';
+import { toJS } from './toJS.js';
+
+const isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');
+class Scalar extends NodeBase {
+    constructor(value) {
+        super(SCALAR);
+        this.value = value;
+    }
+    toJSON(arg, ctx) {
+        return ctx?.keep ? this.value : toJS(this.value, arg, ctx);
+    }
+    toString() {
+        return String(this.value);
+    }
+}
+Scalar.BLOCK_FOLDED = 'BLOCK_FOLDED';
+Scalar.BLOCK_LITERAL = 'BLOCK_LITERAL';
+Scalar.PLAIN = 'PLAIN';
+Scalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';
+Scalar.QUOTE_SINGLE = 'QUOTE_SINGLE';
+
+export { Scalar, isScalarValue };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/YAMLMap.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/YAMLMap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/YAMLMap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,144 @@
+import { stringifyCollection } from '../stringify/stringifyCollection.js';
+import { addPairToJSMap } from './addPairToJSMap.js';
+import { Collection } from './Collection.js';
+import { MAP, isPair, isScalar } from './identity.js';
+import { Pair, createPair } from './Pair.js';
+import { isScalarValue } from './Scalar.js';
+
+function findPair(items, key) {
+    const k = isScalar(key) ? key.value : key;
+    for (const it of items) {
+        if (isPair(it)) {
+            if (it.key === key || it.key === k)
+                return it;
+            if (isScalar(it.key) && it.key.value === k)
+                return it;
+        }
+    }
+    return undefined;
+}
+class YAMLMap extends Collection {
+    static get tagName() {
+        return 'tag:yaml.org,2002:map';
+    }
+    constructor(schema) {
+        super(MAP, schema);
+        this.items = [];
+    }
+    /**
+     * A generic collection parsing method that can be extended
+     * to other node classes that inherit from YAMLMap
+     */
+    static from(schema, obj, ctx) {
+        const { keepUndefined, replacer } = ctx;
+        const map = new this(schema);
+        const add = (key, value) => {
+            if (typeof replacer === 'function')
+                value = replacer.call(obj, key, value);
+            else if (Array.isArray(replacer) && !replacer.includes(key))
+                return;
+            if (value !== undefined || keepUndefined)
+                map.items.push(createPair(key, value, ctx));
+        };
+        if (obj instanceof Map) {
+            for (const [key, value] of obj)
+                add(key, value);
+        }
+        else if (obj && typeof obj === 'object') {
+            for (const key of Object.keys(obj))
+                add(key, obj[key]);
+        }
+        if (typeof schema.sortMapEntries === 'function') {
+            map.items.sort(schema.sortMapEntries);
+        }
+        return map;
+    }
+    /**
+     * Adds a value to the collection.
+     *
+     * @param overwrite - If not set `true`, using a key that is already in the
+     *   collection will throw. Otherwise, overwrites the previous value.
+     */
+    add(pair, overwrite) {
+        let _pair;
+        if (isPair(pair))
+            _pair = pair;
+        else if (!pair || typeof pair !== 'object' || !('key' in pair)) {
+            // In TypeScript, this never happens.
+            _pair = new Pair(pair, pair?.value);
+        }
+        else
+            _pair = new Pair(pair.key, pair.value);
+        const prev = findPair(this.items, _pair.key);
+        const sortEntries = this.schema?.sortMapEntries;
+        if (prev) {
+            if (!overwrite)
+                throw new Error(`Key ${_pair.key} already set`);
+            // For scalars, keep the old node & its comments and anchors
+            if (isScalar(prev.value) && isScalarValue(_pair.value))
+                prev.value.value = _pair.value;
+            else
+                prev.value = _pair.value;
+        }
+        else if (sortEntries) {
+            const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);
+            if (i === -1)
+                this.items.push(_pair);
+            else
+                this.items.splice(i, 0, _pair);
+        }
+        else {
+            this.items.push(_pair);
+        }
+    }
+    delete(key) {
+        const it = findPair(this.items, key);
+        if (!it)
+            return false;
+        const del = this.items.splice(this.items.indexOf(it), 1);
+        return del.length > 0;
+    }
+    get(key, keepScalar) {
+        const it = findPair(this.items, key);
+        const node = it?.value;
+        return (!keepScalar && isScalar(node) ? node.value : node) ?? undefined;
+    }
+    has(key) {
+        return !!findPair(this.items, key);
+    }
+    set(key, value) {
+        this.add(new Pair(key, value), true);
+    }
+    /**
+     * @param ctx - Conversion context, originally set in Document#toJS()
+     * @param {Class} Type - If set, forces the returned collection type
+     * @returns Instance of Type, Map, or Object
+     */
+    toJSON(_, ctx, Type) {
+        const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};
+        if (ctx?.onCreate)
+            ctx.onCreate(map);
+        for (const item of this.items)
+            addPairToJSMap(ctx, map, item);
+        return map;
+    }
+    toString(ctx, onComment, onChompKeep) {
+        if (!ctx)
+            return JSON.stringify(this);
+        for (const item of this.items) {
+            if (!isPair(item))
+                throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);
+        }
+        if (!ctx.allNullValues && this.hasAllNullValues(false))
+            ctx = Object.assign({}, ctx, { allNullValues: true });
+        return stringifyCollection(this, ctx, {
+            blockItemPrefix: '',
+            flowChars: { start: '{', end: '}' },
+            itemIndent: ctx.indent || '',
+            onChompKeep,
+            onComment
+        });
+    }
+}
+
+export { YAMLMap, findPair };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/YAMLSeq.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/YAMLSeq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/YAMLSeq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,113 @@
+import { createNode } from '../doc/createNode.js';
+import { stringifyCollection } from '../stringify/stringifyCollection.js';
+import { Collection } from './Collection.js';
+import { SEQ, isScalar } from './identity.js';
+import { isScalarValue } from './Scalar.js';
+import { toJS } from './toJS.js';
+
+class YAMLSeq extends Collection {
+    static get tagName() {
+        return 'tag:yaml.org,2002:seq';
+    }
+    constructor(schema) {
+        super(SEQ, schema);
+        this.items = [];
+    }
+    add(value) {
+        this.items.push(value);
+    }
+    /**
+     * Removes a value from the collection.
+     *
+     * `key` must contain a representation of an integer for this to succeed.
+     * It may be wrapped in a `Scalar`.
+     *
+     * @returns `true` if the item was found and removed.
+     */
+    delete(key) {
+        const idx = asItemIndex(key);
+        if (typeof idx !== 'number')
+            return false;
+        const del = this.items.splice(idx, 1);
+        return del.length > 0;
+    }
+    get(key, keepScalar) {
+        const idx = asItemIndex(key);
+        if (typeof idx !== 'number')
+            return undefined;
+        const it = this.items[idx];
+        return !keepScalar && isScalar(it) ? it.value : it;
+    }
+    /**
+     * Checks if the collection includes a value with the key `key`.
+     *
+     * `key` must contain a representation of an integer for this to succeed.
+     * It may be wrapped in a `Scalar`.
+     */
+    has(key) {
+        const idx = asItemIndex(key);
+        return typeof idx === 'number' && idx < this.items.length;
+    }
+    /**
+     * Sets a value in this collection. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     *
+     * If `key` does not contain a representation of an integer, this will throw.
+     * It may be wrapped in a `Scalar`.
+     */
+    set(key, value) {
+        const idx = asItemIndex(key);
+        if (typeof idx !== 'number')
+            throw new Error(`Expected a valid index, not ${key}.`);
+        const prev = this.items[idx];
+        if (isScalar(prev) && isScalarValue(value))
+            prev.value = value;
+        else
+            this.items[idx] = value;
+    }
+    toJSON(_, ctx) {
+        const seq = [];
+        if (ctx?.onCreate)
+            ctx.onCreate(seq);
+        let i = 0;
+        for (const item of this.items)
+            seq.push(toJS(item, String(i++), ctx));
+        return seq;
+    }
+    toString(ctx, onComment, onChompKeep) {
+        if (!ctx)
+            return JSON.stringify(this);
+        return stringifyCollection(this, ctx, {
+            blockItemPrefix: '- ',
+            flowChars: { start: '[', end: ']' },
+            itemIndent: (ctx.indent || '') + '  ',
+            onChompKeep,
+            onComment
+        });
+    }
+    static from(schema, obj, ctx) {
+        const { replacer } = ctx;
+        const seq = new this(schema);
+        if (obj && Symbol.iterator in Object(obj)) {
+            let i = 0;
+            for (let it of obj) {
+                if (typeof replacer === 'function') {
+                    const key = obj instanceof Set ? it : String(i++);
+                    it = replacer.call(obj, key, it);
+                }
+                seq.items.push(createNode(it, undefined, ctx));
+            }
+        }
+        return seq;
+    }
+}
+function asItemIndex(key) {
+    let idx = isScalar(key) ? key.value : key;
+    if (idx && typeof idx === 'string')
+        idx = Number(idx);
+    return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0
+        ? idx
+        : null;
+}
+
+export { YAMLSeq };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,63 @@
+import { warn } from '../log.js';
+import { isMergeKey, addMergeToJSMap } from '../schema/yaml-1.1/merge.js';
+import { createStringifyContext } from '../stringify/stringify.js';
+import { isNode } from './identity.js';
+import { toJS } from './toJS.js';
+
+function addPairToJSMap(ctx, map, { key, value }) {
+    if (isNode(key) && key.addToJSMap)
+        key.addToJSMap(ctx, map, value);
+    // TODO: Should drop this special case for bare << handling
+    else if (isMergeKey(ctx, key))
+        addMergeToJSMap(ctx, map, value);
+    else {
+        const jsKey = toJS(key, '', ctx);
+        if (map instanceof Map) {
+            map.set(jsKey, toJS(value, jsKey, ctx));
+        }
+        else if (map instanceof Set) {
+            map.add(jsKey);
+        }
+        else {
+            const stringKey = stringifyKey(key, jsKey, ctx);
+            const jsValue = toJS(value, stringKey, ctx);
+            if (stringKey in map)
+                Object.defineProperty(map, stringKey, {
+                    value: jsValue,
+                    writable: true,
+                    enumerable: true,
+                    configurable: true
+                });
+            else
+                map[stringKey] = jsValue;
+        }
+    }
+    return map;
+}
+function stringifyKey(key, jsKey, ctx) {
+    if (jsKey === null)
+        return '';
+    // eslint-disable-next-line @typescript-eslint/no-base-to-string
+    if (typeof jsKey !== 'object')
+        return String(jsKey);
+    if (isNode(key) && ctx?.doc) {
+        const strCtx = createStringifyContext(ctx.doc, {});
+        strCtx.anchors = new Set();
+        for (const node of ctx.anchors.keys())
+            strCtx.anchors.add(node.anchor);
+        strCtx.inFlow = true;
+        strCtx.inStringifyKey = true;
+        const strKey = key.toString(strCtx);
+        if (!ctx.mapKeyWarned) {
+            let jsonStr = JSON.stringify(strKey);
+            if (jsonStr.length > 40)
+                jsonStr = jsonStr.substring(0, 36) + '..."';
+            warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);
+            ctx.mapKeyWarned = true;
+        }
+        return strKey;
+    }
+    return JSON.stringify(jsKey);
+}
+
+export { addPairToJSMap };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/identity.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/identity.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/identity.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,36 @@
+const ALIAS = Symbol.for('yaml.alias');
+const DOC = Symbol.for('yaml.document');
+const MAP = Symbol.for('yaml.map');
+const PAIR = Symbol.for('yaml.pair');
+const SCALAR = Symbol.for('yaml.scalar');
+const SEQ = Symbol.for('yaml.seq');
+const NODE_TYPE = Symbol.for('yaml.node.type');
+const isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;
+const isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;
+const isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;
+const isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;
+const isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;
+const isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;
+function isCollection(node) {
+    if (node && typeof node === 'object')
+        switch (node[NODE_TYPE]) {
+            case MAP:
+            case SEQ:
+                return true;
+        }
+    return false;
+}
+function isNode(node) {
+    if (node && typeof node === 'object')
+        switch (node[NODE_TYPE]) {
+            case ALIAS:
+            case MAP:
+            case SCALAR:
+            case SEQ:
+                return true;
+        }
+    return false;
+}
+const hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;
+
+export { ALIAS, DOC, MAP, NODE_TYPE, PAIR, SCALAR, SEQ, hasAnchor, isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/toJS.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/toJS.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/nodes/toJS.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,37 @@
+import { hasAnchor } from './identity.js';
+
+/**
+ * Recursively convert any node or its contents to native JavaScript
+ *
+ * @param value - The input value
+ * @param arg - If `value` defines a `toJSON()` method, use this
+ *   as its first argument
+ * @param ctx - Conversion context, originally set in Document#toJS(). If
+ *   `{ keep: true }` is not set, output should be suitable for JSON
+ *   stringification.
+ */
+function toJS(value, arg, ctx) {
+    // eslint-disable-next-line @typescript-eslint/no-unsafe-return
+    if (Array.isArray(value))
+        return value.map((v, i) => toJS(v, String(i), ctx));
+    if (value && typeof value.toJSON === 'function') {
+        // eslint-disable-next-line @typescript-eslint/no-unsafe-call
+        if (!ctx || !hasAnchor(value))
+            return value.toJSON(arg, ctx);
+        const data = { aliasCount: 0, count: 1, res: undefined };
+        ctx.anchors.set(value, data);
+        ctx.onCreate = res => {
+            data.res = res;
+            delete ctx.onCreate;
+        };
+        const res = value.toJSON(arg, ctx);
+        if (ctx.onCreate)
+            ctx.onCreate(res);
+        return res;
+    }
+    if (typeof value === 'bigint' && !ctx?.keep)
+        return Number(value);
+    return value;
+}
+
+export { toJS };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst-scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,214 @@
+import { resolveBlockScalar } from '../compose/resolve-block-scalar.js';
+import { resolveFlowScalar } from '../compose/resolve-flow-scalar.js';
+import { YAMLParseError } from '../errors.js';
+import { stringifyString } from '../stringify/stringifyString.js';
+
+function resolveAsScalar(token, strict = true, onError) {
+    if (token) {
+        const _onError = (pos, code, message) => {
+            const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;
+            if (onError)
+                onError(offset, code, message);
+            else
+                throw new YAMLParseError([offset, offset + 1], code, message);
+        };
+        switch (token.type) {
+            case 'scalar':
+            case 'single-quoted-scalar':
+            case 'double-quoted-scalar':
+                return resolveFlowScalar(token, strict, _onError);
+            case 'block-scalar':
+                return resolveBlockScalar({ options: { strict } }, token, _onError);
+        }
+    }
+    return null;
+}
+/**
+ * Create a new scalar token with `value`
+ *
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
+ * as this function does not support any schema operations and won't check for such conflicts.
+ *
+ * @param value The string representation of the value, which will have its content properly indented.
+ * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
+ * @param context.indent The indent level of the token.
+ * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.
+ * @param context.offset The offset position of the token.
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
+ */
+function createScalarToken(value, context) {
+    const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;
+    const source = stringifyString({ type, value }, {
+        implicitKey,
+        indent: indent > 0 ? ' '.repeat(indent) : '',
+        inFlow,
+        options: { blockQuote: true, lineWidth: -1 }
+    });
+    const end = context.end ?? [
+        { type: 'newline', offset: -1, indent, source: '\n' }
+    ];
+    switch (source[0]) {
+        case '|':
+        case '>': {
+            const he = source.indexOf('\n');
+            const head = source.substring(0, he);
+            const body = source.substring(he + 1) + '\n';
+            const props = [
+                { type: 'block-scalar-header', offset, indent, source: head }
+            ];
+            if (!addEndtoBlockProps(props, end))
+                props.push({ type: 'newline', offset: -1, indent, source: '\n' });
+            return { type: 'block-scalar', offset, indent, props, source: body };
+        }
+        case '"':
+            return { type: 'double-quoted-scalar', offset, indent, source, end };
+        case "'":
+            return { type: 'single-quoted-scalar', offset, indent, source, end };
+        default:
+            return { type: 'scalar', offset, indent, source, end };
+    }
+}
+/**
+ * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.
+ *
+ * Best efforts are made to retain any comments previously associated with the `token`,
+ * though all contents within a collection's `items` will be overwritten.
+ *
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
+ * as this function does not support any schema operations and won't check for such conflicts.
+ *
+ * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.
+ * @param value The string representation of the value, which will have its content properly indented.
+ * @param context.afterKey In most cases, values after a key should have an additional level of indentation.
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
+ * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
+ */
+function setScalarValue(token, value, context = {}) {
+    let { afterKey = false, implicitKey = false, inFlow = false, type } = context;
+    let indent = 'indent' in token ? token.indent : null;
+    if (afterKey && typeof indent === 'number')
+        indent += 2;
+    if (!type)
+        switch (token.type) {
+            case 'single-quoted-scalar':
+                type = 'QUOTE_SINGLE';
+                break;
+            case 'double-quoted-scalar':
+                type = 'QUOTE_DOUBLE';
+                break;
+            case 'block-scalar': {
+                const header = token.props[0];
+                if (header.type !== 'block-scalar-header')
+                    throw new Error('Invalid block scalar header');
+                type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';
+                break;
+            }
+            default:
+                type = 'PLAIN';
+        }
+    const source = stringifyString({ type, value }, {
+        implicitKey: implicitKey || indent === null,
+        indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',
+        inFlow,
+        options: { blockQuote: true, lineWidth: -1 }
+    });
+    switch (source[0]) {
+        case '|':
+        case '>':
+            setBlockScalarValue(token, source);
+            break;
+        case '"':
+            setFlowScalarValue(token, source, 'double-quoted-scalar');
+            break;
+        case "'":
+            setFlowScalarValue(token, source, 'single-quoted-scalar');
+            break;
+        default:
+            setFlowScalarValue(token, source, 'scalar');
+    }
+}
+function setBlockScalarValue(token, source) {
+    const he = source.indexOf('\n');
+    const head = source.substring(0, he);
+    const body = source.substring(he + 1) + '\n';
+    if (token.type === 'block-scalar') {
+        const header = token.props[0];
+        if (header.type !== 'block-scalar-header')
+            throw new Error('Invalid block scalar header');
+        header.source = head;
+        token.source = body;
+    }
+    else {
+        const { offset } = token;
+        const indent = 'indent' in token ? token.indent : -1;
+        const props = [
+            { type: 'block-scalar-header', offset, indent, source: head }
+        ];
+        if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))
+            props.push({ type: 'newline', offset: -1, indent, source: '\n' });
+        for (const key of Object.keys(token))
+            if (key !== 'type' && key !== 'offset')
+                delete token[key];
+        Object.assign(token, { type: 'block-scalar', indent, props, source: body });
+    }
+}
+/** @returns `true` if last token is a newline */
+function addEndtoBlockProps(props, end) {
+    if (end)
+        for (const st of end)
+            switch (st.type) {
+                case 'space':
+                case 'comment':
+                    props.push(st);
+                    break;
+                case 'newline':
+                    props.push(st);
+                    return true;
+            }
+    return false;
+}
+function setFlowScalarValue(token, source, type) {
+    switch (token.type) {
+        case 'scalar':
+        case 'double-quoted-scalar':
+        case 'single-quoted-scalar':
+            token.type = type;
+            token.source = source;
+            break;
+        case 'block-scalar': {
+            const end = token.props.slice(1);
+            let oa = source.length;
+            if (token.props[0].type === 'block-scalar-header')
+                oa -= token.props[0].source.length;
+            for (const tok of end)
+                tok.offset += oa;
+            delete token.props;
+            Object.assign(token, { type, source, end });
+            break;
+        }
+        case 'block-map':
+        case 'block-seq': {
+            const offset = token.offset + source.length;
+            const nl = { type: 'newline', offset, indent: token.indent, source: '\n' };
+            delete token.items;
+            Object.assign(token, { type, source, end: [nl] });
+            break;
+        }
+        default: {
+            const indent = 'indent' in token ? token.indent : -1;
+            const end = 'end' in token && Array.isArray(token.end)
+                ? token.end.filter(st => st.type === 'space' ||
+                    st.type === 'comment' ||
+                    st.type === 'newline')
+                : [];
+            for (const key of Object.keys(token))
+                if (key !== 'type' && key !== 'offset')
+                    delete token[key];
+            Object.assign(token, { type, indent, source, end });
+        }
+    }
+}
+
+export { createScalarToken, resolveAsScalar, setScalarValue };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst-stringify.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst-stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst-stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,61 @@
+/**
+ * Stringify a CST document, token, or collection item
+ *
+ * Fair warning: This applies no validation whatsoever, and
+ * simply concatenates the sources in their logical order.
+ */
+const stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);
+function stringifyToken(token) {
+    switch (token.type) {
+        case 'block-scalar': {
+            let res = '';
+            for (const tok of token.props)
+                res += stringifyToken(tok);
+            return res + token.source;
+        }
+        case 'block-map':
+        case 'block-seq': {
+            let res = '';
+            for (const item of token.items)
+                res += stringifyItem(item);
+            return res;
+        }
+        case 'flow-collection': {
+            let res = token.start.source;
+            for (const item of token.items)
+                res += stringifyItem(item);
+            for (const st of token.end)
+                res += st.source;
+            return res;
+        }
+        case 'document': {
+            let res = stringifyItem(token);
+            if (token.end)
+                for (const st of token.end)
+                    res += st.source;
+            return res;
+        }
+        default: {
+            let res = token.source;
+            if ('end' in token && token.end)
+                for (const st of token.end)
+                    res += st.source;
+            return res;
+        }
+    }
+}
+function stringifyItem({ start, key, sep, value }) {
+    let res = '';
+    for (const st of start)
+        res += st.source;
+    if (key)
+        res += stringifyToken(key);
+    if (sep)
+        for (const st of sep)
+            res += st.source;
+    if (value)
+        res += stringifyToken(value);
+    return res;
+}
+
+export { stringify };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst-visit.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst-visit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst-visit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,97 @@
+const BREAK = Symbol('break visit');
+const SKIP = Symbol('skip children');
+const REMOVE = Symbol('remove item');
+/**
+ * Apply a visitor to a CST document or item.
+ *
+ * Walks through the tree (depth-first) starting from the root, calling a
+ * `visitor` function with two arguments when entering each item:
+ *   - `item`: The current item, which included the following members:
+ *     - `start: SourceToken[]` – Source tokens before the key or value,
+ *       possibly including its anchor or tag.
+ *     - `key?: Token | null` – Set for pair values. May then be `null`, if
+ *       the key before the `:` separator is empty.
+ *     - `sep?: SourceToken[]` – Source tokens between the key and the value,
+ *       which should include the `:` map value indicator if `value` is set.
+ *     - `value?: Token` – The value of a sequence item, or of a map pair.
+ *   - `path`: The steps from the root to the current node, as an array of
+ *     `['key' | 'value', number]` tuples.
+ *
+ * The return value of the visitor may be used to control the traversal:
+ *   - `undefined` (default): Do nothing and continue
+ *   - `visit.SKIP`: Do not visit the children of this token, continue with
+ *      next sibling
+ *   - `visit.BREAK`: Terminate traversal completely
+ *   - `visit.REMOVE`: Remove the current item, then continue with the next one
+ *   - `number`: Set the index of the next step. This is useful especially if
+ *     the index of the current token has changed.
+ *   - `function`: Define the next visitor for this item. After the original
+ *     visitor is called on item entry, next visitors are called after handling
+ *     a non-empty `key` and when exiting the item.
+ */
+function visit(cst, visitor) {
+    if ('type' in cst && cst.type === 'document')
+        cst = { start: cst.start, value: cst.value };
+    _visit(Object.freeze([]), cst, visitor);
+}
+// Without the `as symbol` casts, TS declares these in the `visit`
+// namespace using `var`, but then complains about that because
+// `unique symbol` must be `const`.
+/** Terminate visit traversal completely */
+visit.BREAK = BREAK;
+/** Do not visit the children of the current item */
+visit.SKIP = SKIP;
+/** Remove the current item */
+visit.REMOVE = REMOVE;
+/** Find the item at `path` from `cst` as the root */
+visit.itemAtPath = (cst, path) => {
+    let item = cst;
+    for (const [field, index] of path) {
+        const tok = item?.[field];
+        if (tok && 'items' in tok) {
+            item = tok.items[index];
+        }
+        else
+            return undefined;
+    }
+    return item;
+};
+/**
+ * Get the immediate parent collection of the item at `path` from `cst` as the root.
+ *
+ * Throws an error if the collection is not found, which should never happen if the item itself exists.
+ */
+visit.parentCollection = (cst, path) => {
+    const parent = visit.itemAtPath(cst, path.slice(0, -1));
+    const field = path[path.length - 1][0];
+    const coll = parent?.[field];
+    if (coll && 'items' in coll)
+        return coll;
+    throw new Error('Parent collection not found');
+};
+function _visit(path, item, visitor) {
+    let ctrl = visitor(item, path);
+    if (typeof ctrl === 'symbol')
+        return ctrl;
+    for (const field of ['key', 'value']) {
+        const token = item[field];
+        if (token && 'items' in token) {
+            for (let i = 0; i < token.items.length; ++i) {
+                const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);
+                if (typeof ci === 'number')
+                    i = ci - 1;
+                else if (ci === BREAK)
+                    return BREAK;
+                else if (ci === REMOVE) {
+                    token.items.splice(i, 1);
+                    i -= 1;
+                }
+            }
+            if (typeof ctrl === 'function' && field === 'key')
+                ctrl = ctrl(item, path);
+        }
+    }
+    return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;
+}
+
+export { visit };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/cst.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,98 @@
+export { createScalarToken, resolveAsScalar, setScalarValue } from './cst-scalar.js';
+export { stringify } from './cst-stringify.js';
+export { visit } from './cst-visit.js';
+
+/** The byte order mark */
+const BOM = '\u{FEFF}';
+/** Start of doc-mode */
+const DOCUMENT = '\x02'; // C0: Start of Text
+/** Unexpected end of flow-mode */
+const FLOW_END = '\x18'; // C0: Cancel
+/** Next token is a scalar value */
+const SCALAR = '\x1f'; // C0: Unit Separator
+/** @returns `true` if `token` is a flow or block collection */
+const isCollection = (token) => !!token && 'items' in token;
+/** @returns `true` if `token` is a flow or block scalar; not an alias */
+const isScalar = (token) => !!token &&
+    (token.type === 'scalar' ||
+        token.type === 'single-quoted-scalar' ||
+        token.type === 'double-quoted-scalar' ||
+        token.type === 'block-scalar');
+/* istanbul ignore next */
+/** Get a printable representation of a lexer token */
+function prettyToken(token) {
+    switch (token) {
+        case BOM:
+            return '<BOM>';
+        case DOCUMENT:
+            return '<DOC>';
+        case FLOW_END:
+            return '<FLOW_END>';
+        case SCALAR:
+            return '<SCALAR>';
+        default:
+            return JSON.stringify(token);
+    }
+}
+/** Identify the type of a lexer token. May return `null` for unknown tokens. */
+function tokenType(source) {
+    switch (source) {
+        case BOM:
+            return 'byte-order-mark';
+        case DOCUMENT:
+            return 'doc-mode';
+        case FLOW_END:
+            return 'flow-error-end';
+        case SCALAR:
+            return 'scalar';
+        case '---':
+            return 'doc-start';
+        case '...':
+            return 'doc-end';
+        case '':
+        case '\n':
+        case '\r\n':
+            return 'newline';
+        case '-':
+            return 'seq-item-ind';
+        case '?':
+            return 'explicit-key-ind';
+        case ':':
+            return 'map-value-ind';
+        case '{':
+            return 'flow-map-start';
+        case '}':
+            return 'flow-map-end';
+        case '[':
+            return 'flow-seq-start';
+        case ']':
+            return 'flow-seq-end';
+        case ',':
+            return 'comma';
+    }
+    switch (source[0]) {
+        case ' ':
+        case '\t':
+            return 'space';
+        case '#':
+            return 'comment';
+        case '%':
+            return 'directive-line';
+        case '*':
+            return 'alias';
+        case '&':
+            return 'anchor';
+        case '!':
+            return 'tag';
+        case "'":
+            return 'single-quoted-scalar';
+        case '"':
+            return 'double-quoted-scalar';
+        case '|':
+        case '>':
+            return 'block-scalar-header';
+    }
+    return null;
+}
+
+export { BOM, DOCUMENT, FLOW_END, SCALAR, isCollection, isScalar, prettyToken, tokenType };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/lexer.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/lexer.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/lexer.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,721 @@
+import { BOM, DOCUMENT, FLOW_END, SCALAR } from './cst.js';
+
+/*
+START -> stream
+
+stream
+  directive -> line-end -> stream
+  indent + line-end -> stream
+  [else] -> line-start
+
+line-end
+  comment -> line-end
+  newline -> .
+  input-end -> END
+
+line-start
+  doc-start -> doc
+  doc-end -> stream
+  [else] -> indent -> block-start
+
+block-start
+  seq-item-start -> block-start
+  explicit-key-start -> block-start
+  map-value-start -> block-start
+  [else] -> doc
+
+doc
+  line-end -> line-start
+  spaces -> doc
+  anchor -> doc
+  tag -> doc
+  flow-start -> flow -> doc
+  flow-end -> error -> doc
+  seq-item-start -> error -> doc
+  explicit-key-start -> error -> doc
+  map-value-start -> doc
+  alias -> doc
+  quote-start -> quoted-scalar -> doc
+  block-scalar-header -> line-end -> block-scalar(min) -> line-start
+  [else] -> plain-scalar(false, min) -> doc
+
+flow
+  line-end -> flow
+  spaces -> flow
+  anchor -> flow
+  tag -> flow
+  flow-start -> flow -> flow
+  flow-end -> .
+  seq-item-start -> error -> flow
+  explicit-key-start -> flow
+  map-value-start -> flow
+  alias -> flow
+  quote-start -> quoted-scalar -> flow
+  comma -> flow
+  [else] -> plain-scalar(true, 0) -> flow
+
+quoted-scalar
+  quote-end -> .
+  [else] -> quoted-scalar
+
+block-scalar(min)
+  newline + peek(indent < min) -> .
+  [else] -> block-scalar(min)
+
+plain-scalar(is-flow, min)
+  scalar-end(is-flow) -> .
+  peek(newline + (indent < min)) -> .
+  [else] -> plain-scalar(min)
+*/
+function isEmpty(ch) {
+    switch (ch) {
+        case undefined:
+        case ' ':
+        case '\n':
+        case '\r':
+        case '\t':
+            return true;
+        default:
+            return false;
+    }
+}
+const hexDigits = new Set('0123456789ABCDEFabcdef');
+const tagChars = new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()");
+const flowIndicatorChars = new Set(',[]{}');
+const invalidAnchorChars = new Set(' ,[]{}\n\r\t');
+const isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);
+/**
+ * Splits an input string into lexical tokens, i.e. smaller strings that are
+ * easily identifiable by `tokens.tokenType()`.
+ *
+ * Lexing starts always in a "stream" context. Incomplete input may be buffered
+ * until a complete token can be emitted.
+ *
+ * In addition to slices of the original input, the following control characters
+ * may also be emitted:
+ *
+ * - `\x02` (Start of Text): A document starts with the next token
+ * - `\x18` (Cancel): Unexpected end of flow-mode (indicates an error)
+ * - `\x1f` (Unit Separator): Next token is a scalar value
+ * - `\u{FEFF}` (Byte order mark): Emitted separately outside documents
+ */
+class Lexer {
+    constructor() {
+        /**
+         * Flag indicating whether the end of the current buffer marks the end of
+         * all input
+         */
+        this.atEnd = false;
+        /**
+         * Explicit indent set in block scalar header, as an offset from the current
+         * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not
+         * explicitly set.
+         */
+        this.blockScalarIndent = -1;
+        /**
+         * Block scalars that include a + (keep) chomping indicator in their header
+         * include trailing empty lines, which are otherwise excluded from the
+         * scalar's contents.
+         */
+        this.blockScalarKeep = false;
+        /** Current input */
+        this.buffer = '';
+        /**
+         * Flag noting whether the map value indicator : can immediately follow this
+         * node within a flow context.
+         */
+        this.flowKey = false;
+        /** Count of surrounding flow collection levels. */
+        this.flowLevel = 0;
+        /**
+         * Minimum level of indentation required for next lines to be parsed as a
+         * part of the current scalar value.
+         */
+        this.indentNext = 0;
+        /** Indentation level of the current line. */
+        this.indentValue = 0;
+        /** Position of the next \n character. */
+        this.lineEndPos = null;
+        /** Stores the state of the lexer if reaching the end of incpomplete input */
+        this.next = null;
+        /** A pointer to `buffer`; the current position of the lexer. */
+        this.pos = 0;
+    }
+    /**
+     * Generate YAML tokens from the `source` string. If `incomplete`,
+     * a part of the last line may be left as a buffer for the next call.
+     *
+     * @returns A generator of lexical tokens
+     */
+    *lex(source, incomplete = false) {
+        if (source) {
+            if (typeof source !== 'string')
+                throw TypeError('source is not a string');
+            this.buffer = this.buffer ? this.buffer + source : source;
+            this.lineEndPos = null;
+        }
+        this.atEnd = !incomplete;
+        let next = this.next ?? 'stream';
+        while (next && (incomplete || this.hasChars(1)))
+            next = yield* this.parseNext(next);
+    }
+    atLineEnd() {
+        let i = this.pos;
+        let ch = this.buffer[i];
+        while (ch === ' ' || ch === '\t')
+            ch = this.buffer[++i];
+        if (!ch || ch === '#' || ch === '\n')
+            return true;
+        if (ch === '\r')
+            return this.buffer[i + 1] === '\n';
+        return false;
+    }
+    charAt(n) {
+        return this.buffer[this.pos + n];
+    }
+    continueScalar(offset) {
+        let ch = this.buffer[offset];
+        if (this.indentNext > 0) {
+            let indent = 0;
+            while (ch === ' ')
+                ch = this.buffer[++indent + offset];
+            if (ch === '\r') {
+                const next = this.buffer[indent + offset + 1];
+                if (next === '\n' || (!next && !this.atEnd))
+                    return offset + indent + 1;
+            }
+            return ch === '\n' || indent >= this.indentNext || (!ch && !this.atEnd)
+                ? offset + indent
+                : -1;
+        }
+        if (ch === '-' || ch === '.') {
+            const dt = this.buffer.substr(offset, 3);
+            if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))
+                return -1;
+        }
+        return offset;
+    }
+    getLine() {
+        let end = this.lineEndPos;
+        if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {
+            end = this.buffer.indexOf('\n', this.pos);
+            this.lineEndPos = end;
+        }
+        if (end === -1)
+            return this.atEnd ? this.buffer.substring(this.pos) : null;
+        if (this.buffer[end - 1] === '\r')
+            end -= 1;
+        return this.buffer.substring(this.pos, end);
+    }
+    hasChars(n) {
+        return this.pos + n <= this.buffer.length;
+    }
+    setNext(state) {
+        this.buffer = this.buffer.substring(this.pos);
+        this.pos = 0;
+        this.lineEndPos = null;
+        this.next = state;
+        return null;
+    }
+    peek(n) {
+        return this.buffer.substr(this.pos, n);
+    }
+    *parseNext(next) {
+        switch (next) {
+            case 'stream':
+                return yield* this.parseStream();
+            case 'line-start':
+                return yield* this.parseLineStart();
+            case 'block-start':
+                return yield* this.parseBlockStart();
+            case 'doc':
+                return yield* this.parseDocument();
+            case 'flow':
+                return yield* this.parseFlowCollection();
+            case 'quoted-scalar':
+                return yield* this.parseQuotedScalar();
+            case 'block-scalar':
+                return yield* this.parseBlockScalar();
+            case 'plain-scalar':
+                return yield* this.parsePlainScalar();
+        }
+    }
+    *parseStream() {
+        let line = this.getLine();
+        if (line === null)
+            return this.setNext('stream');
+        if (line[0] === BOM) {
+            yield* this.pushCount(1);
+            line = line.substring(1);
+        }
+        if (line[0] === '%') {
+            let dirEnd = line.length;
+            let cs = line.indexOf('#');
+            while (cs !== -1) {
+                const ch = line[cs - 1];
+                if (ch === ' ' || ch === '\t') {
+                    dirEnd = cs - 1;
+                    break;
+                }
+                else {
+                    cs = line.indexOf('#', cs + 1);
+                }
+            }
+            while (true) {
+                const ch = line[dirEnd - 1];
+                if (ch === ' ' || ch === '\t')
+                    dirEnd -= 1;
+                else
+                    break;
+            }
+            const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));
+            yield* this.pushCount(line.length - n); // possible comment
+            this.pushNewline();
+            return 'stream';
+        }
+        if (this.atLineEnd()) {
+            const sp = yield* this.pushSpaces(true);
+            yield* this.pushCount(line.length - sp);
+            yield* this.pushNewline();
+            return 'stream';
+        }
+        yield DOCUMENT;
+        return yield* this.parseLineStart();
+    }
+    *parseLineStart() {
+        const ch = this.charAt(0);
+        if (!ch && !this.atEnd)
+            return this.setNext('line-start');
+        if (ch === '-' || ch === '.') {
+            if (!this.atEnd && !this.hasChars(4))
+                return this.setNext('line-start');
+            const s = this.peek(3);
+            if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {
+                yield* this.pushCount(3);
+                this.indentValue = 0;
+                this.indentNext = 0;
+                return s === '---' ? 'doc' : 'stream';
+            }
+        }
+        this.indentValue = yield* this.pushSpaces(false);
+        if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))
+            this.indentNext = this.indentValue;
+        return yield* this.parseBlockStart();
+    }
+    *parseBlockStart() {
+        const [ch0, ch1] = this.peek(2);
+        if (!ch1 && !this.atEnd)
+            return this.setNext('block-start');
+        if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {
+            const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));
+            this.indentNext = this.indentValue + 1;
+            this.indentValue += n;
+            return 'block-start';
+        }
+        return 'doc';
+    }
+    *parseDocument() {
+        yield* this.pushSpaces(true);
+        const line = this.getLine();
+        if (line === null)
+            return this.setNext('doc');
+        let n = yield* this.pushIndicators();
+        switch (line[n]) {
+            case '#':
+                yield* this.pushCount(line.length - n);
+            // fallthrough
+            case undefined:
+                yield* this.pushNewline();
+                return yield* this.parseLineStart();
+            case '{':
+            case '[':
+                yield* this.pushCount(1);
+                this.flowKey = false;
+                this.flowLevel = 1;
+                return 'flow';
+            case '}':
+            case ']':
+                // this is an error
+                yield* this.pushCount(1);
+                return 'doc';
+            case '*':
+                yield* this.pushUntil(isNotAnchorChar);
+                return 'doc';
+            case '"':
+            case "'":
+                return yield* this.parseQuotedScalar();
+            case '|':
+            case '>':
+                n += yield* this.parseBlockScalarHeader();
+                n += yield* this.pushSpaces(true);
+                yield* this.pushCount(line.length - n);
+                yield* this.pushNewline();
+                return yield* this.parseBlockScalar();
+            default:
+                return yield* this.parsePlainScalar();
+        }
+    }
+    *parseFlowCollection() {
+        let nl, sp;
+        let indent = -1;
+        do {
+            nl = yield* this.pushNewline();
+            if (nl > 0) {
+                sp = yield* this.pushSpaces(false);
+                this.indentValue = indent = sp;
+            }
+            else {
+                sp = 0;
+            }
+            sp += yield* this.pushSpaces(true);
+        } while (nl + sp > 0);
+        const line = this.getLine();
+        if (line === null)
+            return this.setNext('flow');
+        if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||
+            (indent === 0 &&
+                (line.startsWith('---') || line.startsWith('...')) &&
+                isEmpty(line[3]))) {
+            // Allowing for the terminal ] or } at the same (rather than greater)
+            // indent level as the initial [ or { is technically invalid, but
+            // failing here would be surprising to users.
+            const atFlowEndMarker = indent === this.indentNext - 1 &&
+                this.flowLevel === 1 &&
+                (line[0] === ']' || line[0] === '}');
+            if (!atFlowEndMarker) {
+                // this is an error
+                this.flowLevel = 0;
+                yield FLOW_END;
+                return yield* this.parseLineStart();
+            }
+        }
+        let n = 0;
+        while (line[n] === ',') {
+            n += yield* this.pushCount(1);
+            n += yield* this.pushSpaces(true);
+            this.flowKey = false;
+        }
+        n += yield* this.pushIndicators();
+        switch (line[n]) {
+            case undefined:
+                return 'flow';
+            case '#':
+                yield* this.pushCount(line.length - n);
+                return 'flow';
+            case '{':
+            case '[':
+                yield* this.pushCount(1);
+                this.flowKey = false;
+                this.flowLevel += 1;
+                return 'flow';
+            case '}':
+            case ']':
+                yield* this.pushCount(1);
+                this.flowKey = true;
+                this.flowLevel -= 1;
+                return this.flowLevel ? 'flow' : 'doc';
+            case '*':
+                yield* this.pushUntil(isNotAnchorChar);
+                return 'flow';
+            case '"':
+            case "'":
+                this.flowKey = true;
+                return yield* this.parseQuotedScalar();
+            case ':': {
+                const next = this.charAt(1);
+                if (this.flowKey || isEmpty(next) || next === ',') {
+                    this.flowKey = false;
+                    yield* this.pushCount(1);
+                    yield* this.pushSpaces(true);
+                    return 'flow';
+                }
+            }
+            // fallthrough
+            default:
+                this.flowKey = false;
+                return yield* this.parsePlainScalar();
+        }
+    }
+    *parseQuotedScalar() {
+        const quote = this.charAt(0);
+        let end = this.buffer.indexOf(quote, this.pos + 1);
+        if (quote === "'") {
+            while (end !== -1 && this.buffer[end + 1] === "'")
+                end = this.buffer.indexOf("'", end + 2);
+        }
+        else {
+            // double-quote
+            while (end !== -1) {
+                let n = 0;
+                while (this.buffer[end - 1 - n] === '\\')
+                    n += 1;
+                if (n % 2 === 0)
+                    break;
+                end = this.buffer.indexOf('"', end + 1);
+            }
+        }
+        // Only looking for newlines within the quotes
+        const qb = this.buffer.substring(0, end);
+        let nl = qb.indexOf('\n', this.pos);
+        if (nl !== -1) {
+            while (nl !== -1) {
+                const cs = this.continueScalar(nl + 1);
+                if (cs === -1)
+                    break;
+                nl = qb.indexOf('\n', cs);
+            }
+            if (nl !== -1) {
+                // this is an error caused by an unexpected unindent
+                end = nl - (qb[nl - 1] === '\r' ? 2 : 1);
+            }
+        }
+        if (end === -1) {
+            if (!this.atEnd)
+                return this.setNext('quoted-scalar');
+            end = this.buffer.length;
+        }
+        yield* this.pushToIndex(end + 1, false);
+        return this.flowLevel ? 'flow' : 'doc';
+    }
+    *parseBlockScalarHeader() {
+        this.blockScalarIndent = -1;
+        this.blockScalarKeep = false;
+        let i = this.pos;
+        while (true) {
+            const ch = this.buffer[++i];
+            if (ch === '+')
+                this.blockScalarKeep = true;
+            else if (ch > '0' && ch <= '9')
+                this.blockScalarIndent = Number(ch) - 1;
+            else if (ch !== '-')
+                break;
+        }
+        return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');
+    }
+    *parseBlockScalar() {
+        let nl = this.pos - 1; // may be -1 if this.pos === 0
+        let indent = 0;
+        let ch;
+        loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {
+            switch (ch) {
+                case ' ':
+                    indent += 1;
+                    break;
+                case '\n':
+                    nl = i;
+                    indent = 0;
+                    break;
+                case '\r': {
+                    const next = this.buffer[i + 1];
+                    if (!next && !this.atEnd)
+                        return this.setNext('block-scalar');
+                    if (next === '\n')
+                        break;
+                } // fallthrough
+                default:
+                    break loop;
+            }
+        }
+        if (!ch && !this.atEnd)
+            return this.setNext('block-scalar');
+        if (indent >= this.indentNext) {
+            if (this.blockScalarIndent === -1)
+                this.indentNext = indent;
+            else {
+                this.indentNext =
+                    this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);
+            }
+            do {
+                const cs = this.continueScalar(nl + 1);
+                if (cs === -1)
+                    break;
+                nl = this.buffer.indexOf('\n', cs);
+            } while (nl !== -1);
+            if (nl === -1) {
+                if (!this.atEnd)
+                    return this.setNext('block-scalar');
+                nl = this.buffer.length;
+            }
+        }
+        // Trailing insufficiently indented tabs are invalid.
+        // To catch that during parsing, we include them in the block scalar value.
+        let i = nl + 1;
+        ch = this.buffer[i];
+        while (ch === ' ')
+            ch = this.buffer[++i];
+        if (ch === '\t') {
+            while (ch === '\t' || ch === ' ' || ch === '\r' || ch === '\n')
+                ch = this.buffer[++i];
+            nl = i - 1;
+        }
+        else if (!this.blockScalarKeep) {
+            do {
+                let i = nl - 1;
+                let ch = this.buffer[i];
+                if (ch === '\r')
+                    ch = this.buffer[--i];
+                const lastChar = i; // Drop the line if last char not more indented
+                while (ch === ' ')
+                    ch = this.buffer[--i];
+                if (ch === '\n' && i >= this.pos && i + 1 + indent > lastChar)
+                    nl = i;
+                else
+                    break;
+            } while (true);
+        }
+        yield SCALAR;
+        yield* this.pushToIndex(nl + 1, true);
+        return yield* this.parseLineStart();
+    }
+    *parsePlainScalar() {
+        const inFlow = this.flowLevel > 0;
+        let end = this.pos - 1;
+        let i = this.pos - 1;
+        let ch;
+        while ((ch = this.buffer[++i])) {
+            if (ch === ':') {
+                const next = this.buffer[i + 1];
+                if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))
+                    break;
+                end = i;
+            }
+            else if (isEmpty(ch)) {
+                let next = this.buffer[i + 1];
+                if (ch === '\r') {
+                    if (next === '\n') {
+                        i += 1;
+                        ch = '\n';
+                        next = this.buffer[i + 1];
+                    }
+                    else
+                        end = i;
+                }
+                if (next === '#' || (inFlow && flowIndicatorChars.has(next)))
+                    break;
+                if (ch === '\n') {
+                    const cs = this.continueScalar(i + 1);
+                    if (cs === -1)
+                        break;
+                    i = Math.max(i, cs - 2); // to advance, but still account for ' #'
+                }
+            }
+            else {
+                if (inFlow && flowIndicatorChars.has(ch))
+                    break;
+                end = i;
+            }
+        }
+        if (!ch && !this.atEnd)
+            return this.setNext('plain-scalar');
+        yield SCALAR;
+        yield* this.pushToIndex(end + 1, true);
+        return inFlow ? 'flow' : 'doc';
+    }
+    *pushCount(n) {
+        if (n > 0) {
+            yield this.buffer.substr(this.pos, n);
+            this.pos += n;
+            return n;
+        }
+        return 0;
+    }
+    *pushToIndex(i, allowEmpty) {
+        const s = this.buffer.slice(this.pos, i);
+        if (s) {
+            yield s;
+            this.pos += s.length;
+            return s.length;
+        }
+        else if (allowEmpty)
+            yield '';
+        return 0;
+    }
+    *pushIndicators() {
+        let n = 0;
+        loop: while (true) {
+            switch (this.charAt(0)) {
+                case '!':
+                    n += yield* this.pushTag();
+                    n += yield* this.pushSpaces(true);
+                    continue loop;
+                case '&':
+                    n += yield* this.pushUntil(isNotAnchorChar);
+                    n += yield* this.pushSpaces(true);
+                    continue loop;
+                case '-': // this is an error
+                case '?': // this is an error outside flow collections
+                case ':': {
+                    const inFlow = this.flowLevel > 0;
+                    const ch1 = this.charAt(1);
+                    if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {
+                        if (!inFlow)
+                            this.indentNext = this.indentValue + 1;
+                        else if (this.flowKey)
+                            this.flowKey = false;
+                        n += yield* this.pushCount(1);
+                        n += yield* this.pushSpaces(true);
+                        continue loop;
+                    }
+                }
+            }
+            break loop;
+        }
+        return n;
+    }
+    *pushTag() {
+        if (this.charAt(1) === '<') {
+            let i = this.pos + 2;
+            let ch = this.buffer[i];
+            while (!isEmpty(ch) && ch !== '>')
+                ch = this.buffer[++i];
+            return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);
+        }
+        else {
+            let i = this.pos + 1;
+            let ch = this.buffer[i];
+            while (ch) {
+                if (tagChars.has(ch))
+                    ch = this.buffer[++i];
+                else if (ch === '%' &&
+                    hexDigits.has(this.buffer[i + 1]) &&
+                    hexDigits.has(this.buffer[i + 2])) {
+                    ch = this.buffer[(i += 3)];
+                }
+                else
+                    break;
+            }
+            return yield* this.pushToIndex(i, false);
+        }
+    }
+    *pushNewline() {
+        const ch = this.buffer[this.pos];
+        if (ch === '\n')
+            return yield* this.pushCount(1);
+        else if (ch === '\r' && this.charAt(1) === '\n')
+            return yield* this.pushCount(2);
+        else
+            return 0;
+    }
+    *pushSpaces(allowTabs) {
+        let i = this.pos - 1;
+        let ch;
+        do {
+            ch = this.buffer[++i];
+        } while (ch === ' ' || (allowTabs && ch === '\t'));
+        const n = i - this.pos;
+        if (n > 0) {
+            yield this.buffer.substr(this.pos, n);
+            this.pos = i;
+        }
+        return n;
+    }
+    *pushUntil(test) {
+        let i = this.pos;
+        let ch = this.buffer[i];
+        while (!test(ch))
+            ch = this.buffer[++i];
+        return yield* this.pushToIndex(i, false);
+    }
+}
+
+export { Lexer };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/line-counter.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/line-counter.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/line-counter.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,39 @@
+/**
+ * Tracks newlines during parsing in order to provide an efficient API for
+ * determining the one-indexed `{ line, col }` position for any offset
+ * within the input.
+ */
+class LineCounter {
+    constructor() {
+        this.lineStarts = [];
+        /**
+         * Should be called in ascending order. Otherwise, call
+         * `lineCounter.lineStarts.sort()` before calling `linePos()`.
+         */
+        this.addNewLine = (offset) => this.lineStarts.push(offset);
+        /**
+         * Performs a binary search and returns the 1-indexed { line, col }
+         * position of `offset`. If `line === 0`, `addNewLine` has never been
+         * called or `offset` is before the first known newline.
+         */
+        this.linePos = (offset) => {
+            let low = 0;
+            let high = this.lineStarts.length;
+            while (low < high) {
+                const mid = (low + high) >> 1; // Math.floor((low + high) / 2)
+                if (this.lineStarts[mid] < offset)
+                    low = mid + 1;
+                else
+                    high = mid;
+            }
+            if (this.lineStarts[low] === offset)
+                return { line: low + 1, col: 1 };
+            if (low === 0)
+                return { line: 0, col: offset };
+            const start = this.lineStarts[low - 1];
+            return { line: low, col: offset - start + 1 };
+        };
+    }
+}
+
+export { LineCounter };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/parser.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/parser.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/parse/parser.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,975 @@
+import { tokenType } from './cst.js';
+import { Lexer } from './lexer.js';
+
+function includesToken(list, type) {
+    for (let i = 0; i < list.length; ++i)
+        if (list[i].type === type)
+            return true;
+    return false;
+}
+function findNonEmptyIndex(list) {
+    for (let i = 0; i < list.length; ++i) {
+        switch (list[i].type) {
+            case 'space':
+            case 'comment':
+            case 'newline':
+                break;
+            default:
+                return i;
+        }
+    }
+    return -1;
+}
+function isFlowToken(token) {
+    switch (token?.type) {
+        case 'alias':
+        case 'scalar':
+        case 'single-quoted-scalar':
+        case 'double-quoted-scalar':
+        case 'flow-collection':
+            return true;
+        default:
+            return false;
+    }
+}
+function getPrevProps(parent) {
+    switch (parent.type) {
+        case 'document':
+            return parent.start;
+        case 'block-map': {
+            const it = parent.items[parent.items.length - 1];
+            return it.sep ?? it.start;
+        }
+        case 'block-seq':
+            return parent.items[parent.items.length - 1].start;
+        /* istanbul ignore next should not happen */
+        default:
+            return [];
+    }
+}
+/** Note: May modify input array */
+function getFirstKeyStartProps(prev) {
+    if (prev.length === 0)
+        return [];
+    let i = prev.length;
+    loop: while (--i >= 0) {
+        switch (prev[i].type) {
+            case 'doc-start':
+            case 'explicit-key-ind':
+            case 'map-value-ind':
+            case 'seq-item-ind':
+            case 'newline':
+                break loop;
+        }
+    }
+    while (prev[++i]?.type === 'space') {
+        /* loop */
+    }
+    return prev.splice(i, prev.length);
+}
+function arrayPushArray(target, source) {
+    // May exhaust call stack with large `source` array
+    if (source.length < 1e5)
+        Array.prototype.push.apply(target, source);
+    else
+        for (let i = 0; i < source.length; ++i)
+            target.push(source[i]);
+}
+function fixFlowSeqItems(fc) {
+    if (fc.start.type === 'flow-seq-start') {
+        for (const it of fc.items) {
+            if (it.sep &&
+                !it.value &&
+                !includesToken(it.start, 'explicit-key-ind') &&
+                !includesToken(it.sep, 'map-value-ind')) {
+                if (it.key)
+                    it.value = it.key;
+                delete it.key;
+                if (isFlowToken(it.value)) {
+                    if (it.value.end)
+                        arrayPushArray(it.value.end, it.sep);
+                    else
+                        it.value.end = it.sep;
+                }
+                else
+                    arrayPushArray(it.start, it.sep);
+                delete it.sep;
+            }
+        }
+    }
+}
+/**
+ * A YAML concrete syntax tree (CST) parser
+ *
+ * ```ts
+ * const src: string = ...
+ * for (const token of new Parser().parse(src)) {
+ *   // token: Token
+ * }
+ * ```
+ *
+ * To use the parser with a user-provided lexer:
+ *
+ * ```ts
+ * function* parse(source: string, lexer: Lexer) {
+ *   const parser = new Parser()
+ *   for (const lexeme of lexer.lex(source))
+ *     yield* parser.next(lexeme)
+ *   yield* parser.end()
+ * }
+ *
+ * const src: string = ...
+ * const lexer = new Lexer()
+ * for (const token of parse(src, lexer)) {
+ *   // token: Token
+ * }
+ * ```
+ */
+class Parser {
+    /**
+     * @param onNewLine - If defined, called separately with the start position of
+     *   each new line (in `parse()`, including the start of input).
+     */
+    constructor(onNewLine) {
+        /** If true, space and sequence indicators count as indentation */
+        this.atNewLine = true;
+        /** If true, next token is a scalar value */
+        this.atScalar = false;
+        /** Current indentation level */
+        this.indent = 0;
+        /** Current offset since the start of parsing */
+        this.offset = 0;
+        /** On the same line with a block map key */
+        this.onKeyLine = false;
+        /** Top indicates the node that's currently being built */
+        this.stack = [];
+        /** The source of the current token, set in parse() */
+        this.source = '';
+        /** The type of the current token, set in parse() */
+        this.type = '';
+        // Must be defined after `next()`
+        this.lexer = new Lexer();
+        this.onNewLine = onNewLine;
+    }
+    /**
+     * Parse `source` as a YAML stream.
+     * If `incomplete`, a part of the last line may be left as a buffer for the next call.
+     *
+     * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.
+     *
+     * @returns A generator of tokens representing each directive, document, and other structure.
+     */
+    *parse(source, incomplete = false) {
+        if (this.onNewLine && this.offset === 0)
+            this.onNewLine(0);
+        for (const lexeme of this.lexer.lex(source, incomplete))
+            yield* this.next(lexeme);
+        if (!incomplete)
+            yield* this.end();
+    }
+    /**
+     * Advance the parser by the `source` of one lexical token.
+     */
+    *next(source) {
+        this.source = source;
+        if (this.atScalar) {
+            this.atScalar = false;
+            yield* this.step();
+            this.offset += source.length;
+            return;
+        }
+        const type = tokenType(source);
+        if (!type) {
+            const message = `Not a YAML token: ${source}`;
+            yield* this.pop({ type: 'error', offset: this.offset, message, source });
+            this.offset += source.length;
+        }
+        else if (type === 'scalar') {
+            this.atNewLine = false;
+            this.atScalar = true;
+            this.type = 'scalar';
+        }
+        else {
+            this.type = type;
+            yield* this.step();
+            switch (type) {
+                case 'newline':
+                    this.atNewLine = true;
+                    this.indent = 0;
+                    if (this.onNewLine)
+                        this.onNewLine(this.offset + source.length);
+                    break;
+                case 'space':
+                    if (this.atNewLine && source[0] === ' ')
+                        this.indent += source.length;
+                    break;
+                case 'explicit-key-ind':
+                case 'map-value-ind':
+                case 'seq-item-ind':
+                    if (this.atNewLine)
+                        this.indent += source.length;
+                    break;
+                case 'doc-mode':
+                case 'flow-error-end':
+                    return;
+                default:
+                    this.atNewLine = false;
+            }
+            this.offset += source.length;
+        }
+    }
+    /** Call at end of input to push out any remaining constructions */
+    *end() {
+        while (this.stack.length > 0)
+            yield* this.pop();
+    }
+    get sourceToken() {
+        const st = {
+            type: this.type,
+            offset: this.offset,
+            indent: this.indent,
+            source: this.source
+        };
+        return st;
+    }
+    *step() {
+        const top = this.peek(1);
+        if (this.type === 'doc-end' && top?.type !== 'doc-end') {
+            while (this.stack.length > 0)
+                yield* this.pop();
+            this.stack.push({
+                type: 'doc-end',
+                offset: this.offset,
+                source: this.source
+            });
+            return;
+        }
+        if (!top)
+            return yield* this.stream();
+        switch (top.type) {
+            case 'document':
+                return yield* this.document(top);
+            case 'alias':
+            case 'scalar':
+            case 'single-quoted-scalar':
+            case 'double-quoted-scalar':
+                return yield* this.scalar(top);
+            case 'block-scalar':
+                return yield* this.blockScalar(top);
+            case 'block-map':
+                return yield* this.blockMap(top);
+            case 'block-seq':
+                return yield* this.blockSequence(top);
+            case 'flow-collection':
+                return yield* this.flowCollection(top);
+            case 'doc-end':
+                return yield* this.documentEnd(top);
+        }
+        /* istanbul ignore next should not happen */
+        yield* this.pop();
+    }
+    peek(n) {
+        return this.stack[this.stack.length - n];
+    }
+    *pop(error) {
+        const token = error ?? this.stack.pop();
+        /* istanbul ignore if should not happen */
+        if (!token) {
+            const message = 'Tried to pop an empty stack';
+            yield { type: 'error', offset: this.offset, source: '', message };
+        }
+        else if (this.stack.length === 0) {
+            yield token;
+        }
+        else {
+            const top = this.peek(1);
+            if (token.type === 'block-scalar') {
+                // Block scalars use their parent rather than header indent
+                token.indent = 'indent' in top ? top.indent : 0;
+            }
+            else if (token.type === 'flow-collection' && top.type === 'document') {
+                // Ignore all indent for top-level flow collections
+                token.indent = 0;
+            }
+            if (token.type === 'flow-collection')
+                fixFlowSeqItems(token);
+            switch (top.type) {
+                case 'document':
+                    top.value = token;
+                    break;
+                case 'block-scalar':
+                    top.props.push(token); // error
+                    break;
+                case 'block-map': {
+                    const it = top.items[top.items.length - 1];
+                    if (it.value) {
+                        top.items.push({ start: [], key: token, sep: [] });
+                        this.onKeyLine = true;
+                        return;
+                    }
+                    else if (it.sep) {
+                        it.value = token;
+                    }
+                    else {
+                        Object.assign(it, { key: token, sep: [] });
+                        this.onKeyLine = !it.explicitKey;
+                        return;
+                    }
+                    break;
+                }
+                case 'block-seq': {
+                    const it = top.items[top.items.length - 1];
+                    if (it.value)
+                        top.items.push({ start: [], value: token });
+                    else
+                        it.value = token;
+                    break;
+                }
+                case 'flow-collection': {
+                    const it = top.items[top.items.length - 1];
+                    if (!it || it.value)
+                        top.items.push({ start: [], key: token, sep: [] });
+                    else if (it.sep)
+                        it.value = token;
+                    else
+                        Object.assign(it, { key: token, sep: [] });
+                    return;
+                }
+                /* istanbul ignore next should not happen */
+                default:
+                    yield* this.pop();
+                    yield* this.pop(token);
+            }
+            if ((top.type === 'document' ||
+                top.type === 'block-map' ||
+                top.type === 'block-seq') &&
+                (token.type === 'block-map' || token.type === 'block-seq')) {
+                const last = token.items[token.items.length - 1];
+                if (last &&
+                    !last.sep &&
+                    !last.value &&
+                    last.start.length > 0 &&
+                    findNonEmptyIndex(last.start) === -1 &&
+                    (token.indent === 0 ||
+                        last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {
+                    if (top.type === 'document')
+                        top.end = last.start;
+                    else
+                        top.items.push({ start: last.start });
+                    token.items.splice(-1, 1);
+                }
+            }
+        }
+    }
+    *stream() {
+        switch (this.type) {
+            case 'directive-line':
+                yield { type: 'directive', offset: this.offset, source: this.source };
+                return;
+            case 'byte-order-mark':
+            case 'space':
+            case 'comment':
+            case 'newline':
+                yield this.sourceToken;
+                return;
+            case 'doc-mode':
+            case 'doc-start': {
+                const doc = {
+                    type: 'document',
+                    offset: this.offset,
+                    start: []
+                };
+                if (this.type === 'doc-start')
+                    doc.start.push(this.sourceToken);
+                this.stack.push(doc);
+                return;
+            }
+        }
+        yield {
+            type: 'error',
+            offset: this.offset,
+            message: `Unexpected ${this.type} token in YAML stream`,
+            source: this.source
+        };
+    }
+    *document(doc) {
+        if (doc.value)
+            return yield* this.lineEnd(doc);
+        switch (this.type) {
+            case 'doc-start': {
+                if (findNonEmptyIndex(doc.start) !== -1) {
+                    yield* this.pop();
+                    yield* this.step();
+                }
+                else
+                    doc.start.push(this.sourceToken);
+                return;
+            }
+            case 'anchor':
+            case 'tag':
+            case 'space':
+            case 'comment':
+            case 'newline':
+                doc.start.push(this.sourceToken);
+                return;
+        }
+        const bv = this.startBlockValue(doc);
+        if (bv)
+            this.stack.push(bv);
+        else {
+            yield {
+                type: 'error',
+                offset: this.offset,
+                message: `Unexpected ${this.type} token in YAML document`,
+                source: this.source
+            };
+        }
+    }
+    *scalar(scalar) {
+        if (this.type === 'map-value-ind') {
+            const prev = getPrevProps(this.peek(2));
+            const start = getFirstKeyStartProps(prev);
+            let sep;
+            if (scalar.end) {
+                sep = scalar.end;
+                sep.push(this.sourceToken);
+                delete scalar.end;
+            }
+            else
+                sep = [this.sourceToken];
+            const map = {
+                type: 'block-map',
+                offset: scalar.offset,
+                indent: scalar.indent,
+                items: [{ start, key: scalar, sep }]
+            };
+            this.onKeyLine = true;
+            this.stack[this.stack.length - 1] = map;
+        }
+        else
+            yield* this.lineEnd(scalar);
+    }
+    *blockScalar(scalar) {
+        switch (this.type) {
+            case 'space':
+            case 'comment':
+            case 'newline':
+                scalar.props.push(this.sourceToken);
+                return;
+            case 'scalar':
+                scalar.source = this.source;
+                // block-scalar source includes trailing newline
+                this.atNewLine = true;
+                this.indent = 0;
+                if (this.onNewLine) {
+                    let nl = this.source.indexOf('\n') + 1;
+                    while (nl !== 0) {
+                        this.onNewLine(this.offset + nl);
+                        nl = this.source.indexOf('\n', nl) + 1;
+                    }
+                }
+                yield* this.pop();
+                break;
+            /* istanbul ignore next should not happen */
+            default:
+                yield* this.pop();
+                yield* this.step();
+        }
+    }
+    *blockMap(map) {
+        const it = map.items[map.items.length - 1];
+        // it.sep is true-ish if pair already has key or : separator
+        switch (this.type) {
+            case 'newline':
+                this.onKeyLine = false;
+                if (it.value) {
+                    const end = 'end' in it.value ? it.value.end : undefined;
+                    const last = Array.isArray(end) ? end[end.length - 1] : undefined;
+                    if (last?.type === 'comment')
+                        end?.push(this.sourceToken);
+                    else
+                        map.items.push({ start: [this.sourceToken] });
+                }
+                else if (it.sep) {
+                    it.sep.push(this.sourceToken);
+                }
+                else {
+                    it.start.push(this.sourceToken);
+                }
+                return;
+            case 'space':
+            case 'comment':
+                if (it.value) {
+                    map.items.push({ start: [this.sourceToken] });
+                }
+                else if (it.sep) {
+                    it.sep.push(this.sourceToken);
+                }
+                else {
+                    if (this.atIndentedComment(it.start, map.indent)) {
+                        const prev = map.items[map.items.length - 2];
+                        const end = prev?.value?.end;
+                        if (Array.isArray(end)) {
+                            arrayPushArray(end, it.start);
+                            end.push(this.sourceToken);
+                            map.items.pop();
+                            return;
+                        }
+                    }
+                    it.start.push(this.sourceToken);
+                }
+                return;
+        }
+        if (this.indent >= map.indent) {
+            const atMapIndent = !this.onKeyLine && this.indent === map.indent;
+            const atNextItem = atMapIndent &&
+                (it.sep || it.explicitKey) &&
+                this.type !== 'seq-item-ind';
+            // For empty nodes, assign newline-separated not indented empty tokens to following node
+            let start = [];
+            if (atNextItem && it.sep && !it.value) {
+                const nl = [];
+                for (let i = 0; i < it.sep.length; ++i) {
+                    const st = it.sep[i];
+                    switch (st.type) {
+                        case 'newline':
+                            nl.push(i);
+                            break;
+                        case 'space':
+                            break;
+                        case 'comment':
+                            if (st.indent > map.indent)
+                                nl.length = 0;
+                            break;
+                        default:
+                            nl.length = 0;
+                    }
+                }
+                if (nl.length >= 2)
+                    start = it.sep.splice(nl[1]);
+            }
+            switch (this.type) {
+                case 'anchor':
+                case 'tag':
+                    if (atNextItem || it.value) {
+                        start.push(this.sourceToken);
+                        map.items.push({ start });
+                        this.onKeyLine = true;
+                    }
+                    else if (it.sep) {
+                        it.sep.push(this.sourceToken);
+                    }
+                    else {
+                        it.start.push(this.sourceToken);
+                    }
+                    return;
+                case 'explicit-key-ind':
+                    if (!it.sep && !it.explicitKey) {
+                        it.start.push(this.sourceToken);
+                        it.explicitKey = true;
+                    }
+                    else if (atNextItem || it.value) {
+                        start.push(this.sourceToken);
+                        map.items.push({ start, explicitKey: true });
+                    }
+                    else {
+                        this.stack.push({
+                            type: 'block-map',
+                            offset: this.offset,
+                            indent: this.indent,
+                            items: [{ start: [this.sourceToken], explicitKey: true }]
+                        });
+                    }
+                    this.onKeyLine = true;
+                    return;
+                case 'map-value-ind':
+                    if (it.explicitKey) {
+                        if (!it.sep) {
+                            if (includesToken(it.start, 'newline')) {
+                                Object.assign(it, { key: null, sep: [this.sourceToken] });
+                            }
+                            else {
+                                const start = getFirstKeyStartProps(it.start);
+                                this.stack.push({
+                                    type: 'block-map',
+                                    offset: this.offset,
+                                    indent: this.indent,
+                                    items: [{ start, key: null, sep: [this.sourceToken] }]
+                                });
+                            }
+                        }
+                        else if (it.value) {
+                            map.items.push({ start: [], key: null, sep: [this.sourceToken] });
+                        }
+                        else if (includesToken(it.sep, 'map-value-ind')) {
+                            this.stack.push({
+                                type: 'block-map',
+                                offset: this.offset,
+                                indent: this.indent,
+                                items: [{ start, key: null, sep: [this.sourceToken] }]
+                            });
+                        }
+                        else if (isFlowToken(it.key) &&
+                            !includesToken(it.sep, 'newline')) {
+                            const start = getFirstKeyStartProps(it.start);
+                            const key = it.key;
+                            const sep = it.sep;
+                            sep.push(this.sourceToken);
+                            // @ts-expect-error type guard is wrong here
+                            delete it.key;
+                            // @ts-expect-error type guard is wrong here
+                            delete it.sep;
+                            this.stack.push({
+                                type: 'block-map',
+                                offset: this.offset,
+                                indent: this.indent,
+                                items: [{ start, key, sep }]
+                            });
+                        }
+                        else if (start.length > 0) {
+                            // Not actually at next item
+                            it.sep = it.sep.concat(start, this.sourceToken);
+                        }
+                        else {
+                            it.sep.push(this.sourceToken);
+                        }
+                    }
+                    else {
+                        if (!it.sep) {
+                            Object.assign(it, { key: null, sep: [this.sourceToken] });
+                        }
+                        else if (it.value || atNextItem) {
+                            map.items.push({ start, key: null, sep: [this.sourceToken] });
+                        }
+                        else if (includesToken(it.sep, 'map-value-ind')) {
+                            this.stack.push({
+                                type: 'block-map',
+                                offset: this.offset,
+                                indent: this.indent,
+                                items: [{ start: [], key: null, sep: [this.sourceToken] }]
+                            });
+                        }
+                        else {
+                            it.sep.push(this.sourceToken);
+                        }
+                    }
+                    this.onKeyLine = true;
+                    return;
+                case 'alias':
+                case 'scalar':
+                case 'single-quoted-scalar':
+                case 'double-quoted-scalar': {
+                    const fs = this.flowScalar(this.type);
+                    if (atNextItem || it.value) {
+                        map.items.push({ start, key: fs, sep: [] });
+                        this.onKeyLine = true;
+                    }
+                    else if (it.sep) {
+                        this.stack.push(fs);
+                    }
+                    else {
+                        Object.assign(it, { key: fs, sep: [] });
+                        this.onKeyLine = true;
+                    }
+                    return;
+                }
+                default: {
+                    const bv = this.startBlockValue(map);
+                    if (bv) {
+                        if (bv.type === 'block-seq') {
+                            if (!it.explicitKey &&
+                                it.sep &&
+                                !includesToken(it.sep, 'newline')) {
+                                yield* this.pop({
+                                    type: 'error',
+                                    offset: this.offset,
+                                    message: 'Unexpected block-seq-ind on same line with key',
+                                    source: this.source
+                                });
+                                return;
+                            }
+                        }
+                        else if (atMapIndent) {
+                            map.items.push({ start });
+                        }
+                        this.stack.push(bv);
+                        return;
+                    }
+                }
+            }
+        }
+        yield* this.pop();
+        yield* this.step();
+    }
+    *blockSequence(seq) {
+        const it = seq.items[seq.items.length - 1];
+        switch (this.type) {
+            case 'newline':
+                if (it.value) {
+                    const end = 'end' in it.value ? it.value.end : undefined;
+                    const last = Array.isArray(end) ? end[end.length - 1] : undefined;
+                    if (last?.type === 'comment')
+                        end?.push(this.sourceToken);
+                    else
+                        seq.items.push({ start: [this.sourceToken] });
+                }
+                else
+                    it.start.push(this.sourceToken);
+                return;
+            case 'space':
+            case 'comment':
+                if (it.value)
+                    seq.items.push({ start: [this.sourceToken] });
+                else {
+                    if (this.atIndentedComment(it.start, seq.indent)) {
+                        const prev = seq.items[seq.items.length - 2];
+                        const end = prev?.value?.end;
+                        if (Array.isArray(end)) {
+                            arrayPushArray(end, it.start);
+                            end.push(this.sourceToken);
+                            seq.items.pop();
+                            return;
+                        }
+                    }
+                    it.start.push(this.sourceToken);
+                }
+                return;
+            case 'anchor':
+            case 'tag':
+                if (it.value || this.indent <= seq.indent)
+                    break;
+                it.start.push(this.sourceToken);
+                return;
+            case 'seq-item-ind':
+                if (this.indent !== seq.indent)
+                    break;
+                if (it.value || includesToken(it.start, 'seq-item-ind'))
+                    seq.items.push({ start: [this.sourceToken] });
+                else
+                    it.start.push(this.sourceToken);
+                return;
+        }
+        if (this.indent > seq.indent) {
+            const bv = this.startBlockValue(seq);
+            if (bv) {
+                this.stack.push(bv);
+                return;
+            }
+        }
+        yield* this.pop();
+        yield* this.step();
+    }
+    *flowCollection(fc) {
+        const it = fc.items[fc.items.length - 1];
+        if (this.type === 'flow-error-end') {
+            let top;
+            do {
+                yield* this.pop();
+                top = this.peek(1);
+            } while (top?.type === 'flow-collection');
+        }
+        else if (fc.end.length === 0) {
+            switch (this.type) {
+                case 'comma':
+                case 'explicit-key-ind':
+                    if (!it || it.sep)
+                        fc.items.push({ start: [this.sourceToken] });
+                    else
+                        it.start.push(this.sourceToken);
+                    return;
+                case 'map-value-ind':
+                    if (!it || it.value)
+                        fc.items.push({ start: [], key: null, sep: [this.sourceToken] });
+                    else if (it.sep)
+                        it.sep.push(this.sourceToken);
+                    else
+                        Object.assign(it, { key: null, sep: [this.sourceToken] });
+                    return;
+                case 'space':
+                case 'comment':
+                case 'newline':
+                case 'anchor':
+                case 'tag':
+                    if (!it || it.value)
+                        fc.items.push({ start: [this.sourceToken] });
+                    else if (it.sep)
+                        it.sep.push(this.sourceToken);
+                    else
+                        it.start.push(this.sourceToken);
+                    return;
+                case 'alias':
+                case 'scalar':
+                case 'single-quoted-scalar':
+                case 'double-quoted-scalar': {
+                    const fs = this.flowScalar(this.type);
+                    if (!it || it.value)
+                        fc.items.push({ start: [], key: fs, sep: [] });
+                    else if (it.sep)
+                        this.stack.push(fs);
+                    else
+                        Object.assign(it, { key: fs, sep: [] });
+                    return;
+                }
+                case 'flow-map-end':
+                case 'flow-seq-end':
+                    fc.end.push(this.sourceToken);
+                    return;
+            }
+            const bv = this.startBlockValue(fc);
+            /* istanbul ignore else should not happen */
+            if (bv)
+                this.stack.push(bv);
+            else {
+                yield* this.pop();
+                yield* this.step();
+            }
+        }
+        else {
+            const parent = this.peek(2);
+            if (parent.type === 'block-map' &&
+                ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||
+                    (this.type === 'newline' &&
+                        !parent.items[parent.items.length - 1].sep))) {
+                yield* this.pop();
+                yield* this.step();
+            }
+            else if (this.type === 'map-value-ind' &&
+                parent.type !== 'flow-collection') {
+                const prev = getPrevProps(parent);
+                const start = getFirstKeyStartProps(prev);
+                fixFlowSeqItems(fc);
+                const sep = fc.end.splice(1, fc.end.length);
+                sep.push(this.sourceToken);
+                const map = {
+                    type: 'block-map',
+                    offset: fc.offset,
+                    indent: fc.indent,
+                    items: [{ start, key: fc, sep }]
+                };
+                this.onKeyLine = true;
+                this.stack[this.stack.length - 1] = map;
+            }
+            else {
+                yield* this.lineEnd(fc);
+            }
+        }
+    }
+    flowScalar(type) {
+        if (this.onNewLine) {
+            let nl = this.source.indexOf('\n') + 1;
+            while (nl !== 0) {
+                this.onNewLine(this.offset + nl);
+                nl = this.source.indexOf('\n', nl) + 1;
+            }
+        }
+        return {
+            type,
+            offset: this.offset,
+            indent: this.indent,
+            source: this.source
+        };
+    }
+    startBlockValue(parent) {
+        switch (this.type) {
+            case 'alias':
+            case 'scalar':
+            case 'single-quoted-scalar':
+            case 'double-quoted-scalar':
+                return this.flowScalar(this.type);
+            case 'block-scalar-header':
+                return {
+                    type: 'block-scalar',
+                    offset: this.offset,
+                    indent: this.indent,
+                    props: [this.sourceToken],
+                    source: ''
+                };
+            case 'flow-map-start':
+            case 'flow-seq-start':
+                return {
+                    type: 'flow-collection',
+                    offset: this.offset,
+                    indent: this.indent,
+                    start: this.sourceToken,
+                    items: [],
+                    end: []
+                };
+            case 'seq-item-ind':
+                return {
+                    type: 'block-seq',
+                    offset: this.offset,
+                    indent: this.indent,
+                    items: [{ start: [this.sourceToken] }]
+                };
+            case 'explicit-key-ind': {
+                this.onKeyLine = true;
+                const prev = getPrevProps(parent);
+                const start = getFirstKeyStartProps(prev);
+                start.push(this.sourceToken);
+                return {
+                    type: 'block-map',
+                    offset: this.offset,
+                    indent: this.indent,
+                    items: [{ start, explicitKey: true }]
+                };
+            }
+            case 'map-value-ind': {
+                this.onKeyLine = true;
+                const prev = getPrevProps(parent);
+                const start = getFirstKeyStartProps(prev);
+                return {
+                    type: 'block-map',
+                    offset: this.offset,
+                    indent: this.indent,
+                    items: [{ start, key: null, sep: [this.sourceToken] }]
+                };
+            }
+        }
+        return null;
+    }
+    atIndentedComment(start, indent) {
+        if (this.type !== 'comment')
+            return false;
+        if (this.indent <= indent)
+            return false;
+        return start.every(st => st.type === 'newline' || st.type === 'space');
+    }
+    *documentEnd(docEnd) {
+        if (this.type !== 'doc-mode') {
+            if (docEnd.end)
+                docEnd.end.push(this.sourceToken);
+            else
+                docEnd.end = [this.sourceToken];
+            if (this.type === 'newline')
+                yield* this.pop();
+        }
+    }
+    *lineEnd(token) {
+        switch (this.type) {
+            case 'comma':
+            case 'doc-start':
+            case 'doc-end':
+            case 'flow-seq-end':
+            case 'flow-map-end':
+            case 'map-value-ind':
+                yield* this.pop();
+                yield* this.step();
+                break;
+            case 'newline':
+                this.onKeyLine = false;
+            // fallthrough
+            case 'space':
+            case 'comment':
+            default:
+                // all other values are errors
+                if (token.end)
+                    token.end.push(this.sourceToken);
+                else
+                    token.end = [this.sourceToken];
+                if (this.type === 'newline')
+                    yield* this.pop();
+        }
+    }
+}
+
+export { Parser };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/public-api.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/public-api.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/public-api.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,102 @@
+import { Composer } from './compose/composer.js';
+import { Document } from './doc/Document.js';
+import { prettifyError, YAMLParseError } from './errors.js';
+import { warn } from './log.js';
+import { isDocument } from './nodes/identity.js';
+import { LineCounter } from './parse/line-counter.js';
+import { Parser } from './parse/parser.js';
+
+function parseOptions(options) {
+    const prettyErrors = options.prettyErrors !== false;
+    const lineCounter = options.lineCounter || (prettyErrors && new LineCounter()) || null;
+    return { lineCounter, prettyErrors };
+}
+/**
+ * Parse the input as a stream of YAML documents.
+ *
+ * Documents should be separated from each other by `...` or `---` marker lines.
+ *
+ * @returns If an empty `docs` array is returned, it will be of type
+ *   EmptyStream and contain additional stream information. In
+ *   TypeScript, you should use `'empty' in docs` as a type guard for it.
+ */
+function parseAllDocuments(source, options = {}) {
+    const { lineCounter, prettyErrors } = parseOptions(options);
+    const parser = new Parser(lineCounter?.addNewLine);
+    const composer = new Composer(options);
+    const docs = Array.from(composer.compose(parser.parse(source)));
+    if (prettyErrors && lineCounter)
+        for (const doc of docs) {
+            doc.errors.forEach(prettifyError(source, lineCounter));
+            doc.warnings.forEach(prettifyError(source, lineCounter));
+        }
+    if (docs.length > 0)
+        return docs;
+    return Object.assign([], { empty: true }, composer.streamInfo());
+}
+/** Parse an input string into a single YAML.Document */
+function parseDocument(source, options = {}) {
+    const { lineCounter, prettyErrors } = parseOptions(options);
+    const parser = new Parser(lineCounter?.addNewLine);
+    const composer = new Composer(options);
+    // `doc` is always set by compose.end(true) at the very latest
+    let doc = null;
+    for (const _doc of composer.compose(parser.parse(source), true, source.length)) {
+        if (!doc)
+            doc = _doc;
+        else if (doc.options.logLevel !== 'silent') {
+            doc.errors.push(new YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));
+            break;
+        }
+    }
+    if (prettyErrors && lineCounter) {
+        doc.errors.forEach(prettifyError(source, lineCounter));
+        doc.warnings.forEach(prettifyError(source, lineCounter));
+    }
+    return doc;
+}
+function parse(src, reviver, options) {
+    let _reviver = undefined;
+    if (typeof reviver === 'function') {
+        _reviver = reviver;
+    }
+    else if (options === undefined && reviver && typeof reviver === 'object') {
+        options = reviver;
+    }
+    const doc = parseDocument(src, options);
+    if (!doc)
+        return null;
+    doc.warnings.forEach(warning => warn(doc.options.logLevel, warning));
+    if (doc.errors.length > 0) {
+        if (doc.options.logLevel !== 'silent')
+            throw doc.errors[0];
+        else
+            doc.errors = [];
+    }
+    return doc.toJS(Object.assign({ reviver: _reviver }, options));
+}
+function stringify(value, replacer, options) {
+    let _replacer = null;
+    if (typeof replacer === 'function' || Array.isArray(replacer)) {
+        _replacer = replacer;
+    }
+    else if (options === undefined && replacer) {
+        options = replacer;
+    }
+    if (typeof options === 'string')
+        options = options.length;
+    if (typeof options === 'number') {
+        const indent = Math.round(options);
+        options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };
+    }
+    if (value === undefined) {
+        const { keepUndefined } = options ?? replacer ?? {};
+        if (!keepUndefined)
+            return undefined;
+    }
+    if (isDocument(value) && !_replacer)
+        return value.toString(options);
+    return new Document(value, _replacer, options).toString(options);
+}
+
+export { parse, parseAllDocuments, parseDocument, stringify };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/Schema.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/Schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/Schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,37 @@
+import { MAP, SCALAR, SEQ } from '../nodes/identity.js';
+import { map } from './common/map.js';
+import { seq } from './common/seq.js';
+import { string } from './common/string.js';
+import { getTags, coreKnownTags } from './tags.js';
+
+const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
+class Schema {
+    constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {
+        this.compat = Array.isArray(compat)
+            ? getTags(compat, 'compat')
+            : compat
+                ? getTags(null, compat)
+                : null;
+        this.name = (typeof schema === 'string' && schema) || 'core';
+        this.knownTags = resolveKnownTags ? coreKnownTags : {};
+        this.tags = getTags(customTags, this.name, merge);
+        this.toStringOptions = toStringDefaults ?? null;
+        Object.defineProperty(this, MAP, { value: map });
+        Object.defineProperty(this, SCALAR, { value: string });
+        Object.defineProperty(this, SEQ, { value: seq });
+        // Used by createMap()
+        this.sortMapEntries =
+            typeof sortMapEntries === 'function'
+                ? sortMapEntries
+                : sortMapEntries === true
+                    ? sortMapEntriesByKey
+                    : null;
+    }
+    clone() {
+        const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));
+        copy.tags = this.tags.slice();
+        return copy;
+    }
+}
+
+export { Schema };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/map.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/map.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/map.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+import { isMap } from '../../nodes/identity.js';
+import { YAMLMap } from '../../nodes/YAMLMap.js';
+
+const map = {
+    collection: 'map',
+    default: true,
+    nodeClass: YAMLMap,
+    tag: 'tag:yaml.org,2002:map',
+    resolve(map, onError) {
+        if (!isMap(map))
+            onError('Expected a mapping for this tag');
+        return map;
+    },
+    createNode: (schema, obj, ctx) => YAMLMap.from(schema, obj, ctx)
+};
+
+export { map };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/null.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/null.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/null.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,15 @@
+import { Scalar } from '../../nodes/Scalar.js';
+
+const nullTag = {
+    identify: value => value == null,
+    createNode: () => new Scalar(null),
+    default: true,
+    tag: 'tag:yaml.org,2002:null',
+    test: /^(?:~|[Nn]ull|NULL)?$/,
+    resolve: () => new Scalar(null),
+    stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)
+        ? source
+        : ctx.options.nullStr
+};
+
+export { nullTag };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/seq.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/seq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/seq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+import { isSeq } from '../../nodes/identity.js';
+import { YAMLSeq } from '../../nodes/YAMLSeq.js';
+
+const seq = {
+    collection: 'seq',
+    default: true,
+    nodeClass: YAMLSeq,
+    tag: 'tag:yaml.org,2002:seq',
+    resolve(seq, onError) {
+        if (!isSeq(seq))
+            onError('Expected a sequence for this tag');
+        return seq;
+    },
+    createNode: (schema, obj, ctx) => YAMLSeq.from(schema, obj, ctx)
+};
+
+export { seq };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/string.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/string.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/common/string.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,14 @@
+import { stringifyString } from '../../stringify/stringifyString.js';
+
+const string = {
+    identify: value => typeof value === 'string',
+    default: true,
+    tag: 'tag:yaml.org,2002:str',
+    resolve: str => str,
+    stringify(item, ctx, onComment, onChompKeep) {
+        ctx = Object.assign({ actualString: true }, ctx);
+        return stringifyString(item, ctx, onComment, onChompKeep);
+    }
+};
+
+export { string };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/bool.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/bool.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/bool.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+import { Scalar } from '../../nodes/Scalar.js';
+
+const boolTag = {
+    identify: value => typeof value === 'boolean',
+    default: true,
+    tag: 'tag:yaml.org,2002:bool',
+    test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,
+    resolve: str => new Scalar(str[0] === 't' || str[0] === 'T'),
+    stringify({ source, value }, ctx) {
+        if (source && boolTag.test.test(source)) {
+            const sv = source[0] === 't' || source[0] === 'T';
+            if (value === sv)
+                return source;
+        }
+        return value ? ctx.options.trueStr : ctx.options.falseStr;
+    }
+};
+
+export { boolTag };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/float.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/float.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/float.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,43 @@
+import { Scalar } from '../../nodes/Scalar.js';
+import { stringifyNumber } from '../../stringify/stringifyNumber.js';
+
+const floatNaN = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,
+    resolve: str => str.slice(-3).toLowerCase() === 'nan'
+        ? NaN
+        : str[0] === '-'
+            ? Number.NEGATIVE_INFINITY
+            : Number.POSITIVE_INFINITY,
+    stringify: stringifyNumber
+};
+const floatExp = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    format: 'EXP',
+    test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,
+    resolve: str => parseFloat(str),
+    stringify(node) {
+        const num = Number(node.value);
+        return isFinite(num) ? num.toExponential() : stringifyNumber(node);
+    }
+};
+const float = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,
+    resolve(str) {
+        const node = new Scalar(parseFloat(str));
+        const dot = str.indexOf('.');
+        if (dot !== -1 && str[str.length - 1] === '0')
+            node.minFractionDigits = str.length - dot - 1;
+        return node;
+    },
+    stringify: stringifyNumber
+};
+
+export { float, floatExp, floatNaN };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/int.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/int.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/int.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,38 @@
+import { stringifyNumber } from '../../stringify/stringifyNumber.js';
+
+const intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);
+const intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));
+function intStringify(node, radix, prefix) {
+    const { value } = node;
+    if (intIdentify(value) && value >= 0)
+        return prefix + value.toString(radix);
+    return stringifyNumber(node);
+}
+const intOct = {
+    identify: value => intIdentify(value) && value >= 0,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'OCT',
+    test: /^0o[0-7]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),
+    stringify: node => intStringify(node, 8, '0o')
+};
+const int = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    test: /^[-+]?[0-9]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),
+    stringify: stringifyNumber
+};
+const intHex = {
+    identify: value => intIdentify(value) && value >= 0,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'HEX',
+    test: /^0x[0-9a-fA-F]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),
+    stringify: node => intStringify(node, 16, '0x')
+};
+
+export { int, intHex, intOct };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/schema.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/core/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,23 @@
+import { map } from '../common/map.js';
+import { nullTag } from '../common/null.js';
+import { seq } from '../common/seq.js';
+import { string } from '../common/string.js';
+import { boolTag } from './bool.js';
+import { floatNaN, floatExp, float } from './float.js';
+import { intOct, int, intHex } from './int.js';
+
+const schema = [
+    map,
+    seq,
+    string,
+    nullTag,
+    boolTag,
+    intOct,
+    int,
+    intHex,
+    floatNaN,
+    floatExp,
+    float
+];
+
+export { schema };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/json/schema.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/json/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/json/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,62 @@
+import { Scalar } from '../../nodes/Scalar.js';
+import { map } from '../common/map.js';
+import { seq } from '../common/seq.js';
+
+function intIdentify(value) {
+    return typeof value === 'bigint' || Number.isInteger(value);
+}
+const stringifyJSON = ({ value }) => JSON.stringify(value);
+const jsonScalars = [
+    {
+        identify: value => typeof value === 'string',
+        default: true,
+        tag: 'tag:yaml.org,2002:str',
+        resolve: str => str,
+        stringify: stringifyJSON
+    },
+    {
+        identify: value => value == null,
+        createNode: () => new Scalar(null),
+        default: true,
+        tag: 'tag:yaml.org,2002:null',
+        test: /^null$/,
+        resolve: () => null,
+        stringify: stringifyJSON
+    },
+    {
+        identify: value => typeof value === 'boolean',
+        default: true,
+        tag: 'tag:yaml.org,2002:bool',
+        test: /^true$|^false$/,
+        resolve: str => str === 'true',
+        stringify: stringifyJSON
+    },
+    {
+        identify: intIdentify,
+        default: true,
+        tag: 'tag:yaml.org,2002:int',
+        test: /^-?(?:0|[1-9][0-9]*)$/,
+        resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),
+        stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)
+    },
+    {
+        identify: value => typeof value === 'number',
+        default: true,
+        tag: 'tag:yaml.org,2002:float',
+        test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,
+        resolve: str => parseFloat(str),
+        stringify: stringifyJSON
+    }
+];
+const jsonError = {
+    default: true,
+    tag: '',
+    test: /^/,
+    resolve(str, onError) {
+        onError(`Unresolved plain scalar ${JSON.stringify(str)}`);
+        return str;
+    }
+};
+const schema = [map, seq].concat(jsonScalars, jsonError);
+
+export { schema };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/tags.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/tags.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/tags.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,96 @@
+import { map } from './common/map.js';
+import { nullTag } from './common/null.js';
+import { seq } from './common/seq.js';
+import { string } from './common/string.js';
+import { boolTag } from './core/bool.js';
+import { floatNaN, floatExp, float } from './core/float.js';
+import { intOct, intHex, int } from './core/int.js';
+import { schema } from './core/schema.js';
+import { schema as schema$1 } from './json/schema.js';
+import { binary } from './yaml-1.1/binary.js';
+import { merge } from './yaml-1.1/merge.js';
+import { omap } from './yaml-1.1/omap.js';
+import { pairs } from './yaml-1.1/pairs.js';
+import { schema as schema$2 } from './yaml-1.1/schema.js';
+import { set } from './yaml-1.1/set.js';
+import { timestamp, intTime, floatTime } from './yaml-1.1/timestamp.js';
+
+const schemas = new Map([
+    ['core', schema],
+    ['failsafe', [map, seq, string]],
+    ['json', schema$1],
+    ['yaml11', schema$2],
+    ['yaml-1.1', schema$2]
+]);
+const tagsByName = {
+    binary,
+    bool: boolTag,
+    float,
+    floatExp,
+    floatNaN,
+    floatTime,
+    int,
+    intHex,
+    intOct,
+    intTime,
+    map,
+    merge,
+    null: nullTag,
+    omap,
+    pairs,
+    seq,
+    set,
+    timestamp
+};
+const coreKnownTags = {
+    'tag:yaml.org,2002:binary': binary,
+    'tag:yaml.org,2002:merge': merge,
+    'tag:yaml.org,2002:omap': omap,
+    'tag:yaml.org,2002:pairs': pairs,
+    'tag:yaml.org,2002:set': set,
+    'tag:yaml.org,2002:timestamp': timestamp
+};
+function getTags(customTags, schemaName, addMergeTag) {
+    const schemaTags = schemas.get(schemaName);
+    if (schemaTags && !customTags) {
+        return addMergeTag && !schemaTags.includes(merge)
+            ? schemaTags.concat(merge)
+            : schemaTags.slice();
+    }
+    let tags = schemaTags;
+    if (!tags) {
+        if (Array.isArray(customTags))
+            tags = [];
+        else {
+            const keys = Array.from(schemas.keys())
+                .filter(key => key !== 'yaml11')
+                .map(key => JSON.stringify(key))
+                .join(', ');
+            throw new Error(`Unknown schema "${schemaName}"; use one of ${keys} or define customTags array`);
+        }
+    }
+    if (Array.isArray(customTags)) {
+        for (const tag of customTags)
+            tags = tags.concat(tag);
+    }
+    else if (typeof customTags === 'function') {
+        tags = customTags(tags.slice());
+    }
+    if (addMergeTag)
+        tags = tags.concat(merge);
+    return tags.reduce((tags, tag) => {
+        const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;
+        if (!tagObj) {
+            const tagName = JSON.stringify(tag);
+            const keys = Object.keys(tagsByName)
+                .map(key => JSON.stringify(key))
+                .join(', ');
+            throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);
+        }
+        if (!tags.includes(tagObj))
+            tags.push(tagObj);
+        return tags;
+    }, []);
+}
+
+export { coreKnownTags, getTags };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,58 @@
+import { Scalar } from '../../nodes/Scalar.js';
+import { stringifyString } from '../../stringify/stringifyString.js';
+
+const binary = {
+    identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array
+    default: false,
+    tag: 'tag:yaml.org,2002:binary',
+    /**
+     * Returns a Buffer in node and an Uint8Array in browsers
+     *
+     * To use the resulting buffer as an image, you'll want to do something like:
+     *
+     *   const blob = new Blob([buffer], { type: 'image/jpeg' })
+     *   document.querySelector('#photo').src = URL.createObjectURL(blob)
+     */
+    resolve(src, onError) {
+        if (typeof atob === 'function') {
+            // On IE 11, atob() can't handle newlines
+            const str = atob(src.replace(/[\n\r]/g, ''));
+            const buffer = new Uint8Array(str.length);
+            for (let i = 0; i < str.length; ++i)
+                buffer[i] = str.charCodeAt(i);
+            return buffer;
+        }
+        else {
+            onError('This environment does not support reading binary tags; either Buffer or atob is required');
+            return src;
+        }
+    },
+    stringify({ comment, type, value }, ctx, onComment, onChompKeep) {
+        if (!value)
+            return '';
+        const buf = value; // checked earlier by binary.identify()
+        let str;
+        if (typeof btoa === 'function') {
+            let s = '';
+            for (let i = 0; i < buf.length; ++i)
+                s += String.fromCharCode(buf[i]);
+            str = btoa(s);
+        }
+        else {
+            throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');
+        }
+        type ?? (type = Scalar.BLOCK_LITERAL);
+        if (type !== Scalar.QUOTE_DOUBLE) {
+            const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);
+            const n = Math.ceil(str.length / lineWidth);
+            const lines = new Array(n);
+            for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {
+                lines[i] = str.substr(o, lineWidth);
+            }
+            str = lines.join(type === Scalar.BLOCK_LITERAL ? '\n' : ' ');
+        }
+        return stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);
+    }
+};
+
+export { binary };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,26 @@
+import { Scalar } from '../../nodes/Scalar.js';
+
+function boolStringify({ value, source }, ctx) {
+    const boolObj = value ? trueTag : falseTag;
+    if (source && boolObj.test.test(source))
+        return source;
+    return value ? ctx.options.trueStr : ctx.options.falseStr;
+}
+const trueTag = {
+    identify: value => value === true,
+    default: true,
+    tag: 'tag:yaml.org,2002:bool',
+    test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,
+    resolve: () => new Scalar(true),
+    stringify: boolStringify
+};
+const falseTag = {
+    identify: value => value === false,
+    default: true,
+    tag: 'tag:yaml.org,2002:bool',
+    test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,
+    resolve: () => new Scalar(false),
+    stringify: boolStringify
+};
+
+export { falseTag, trueTag };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,46 @@
+import { Scalar } from '../../nodes/Scalar.js';
+import { stringifyNumber } from '../../stringify/stringifyNumber.js';
+
+const floatNaN = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,
+    resolve: (str) => str.slice(-3).toLowerCase() === 'nan'
+        ? NaN
+        : str[0] === '-'
+            ? Number.NEGATIVE_INFINITY
+            : Number.POSITIVE_INFINITY,
+    stringify: stringifyNumber
+};
+const floatExp = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    format: 'EXP',
+    test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,
+    resolve: (str) => parseFloat(str.replace(/_/g, '')),
+    stringify(node) {
+        const num = Number(node.value);
+        return isFinite(num) ? num.toExponential() : stringifyNumber(node);
+    }
+};
+const float = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,
+    resolve(str) {
+        const node = new Scalar(parseFloat(str.replace(/_/g, '')));
+        const dot = str.indexOf('.');
+        if (dot !== -1) {
+            const f = str.substring(dot + 1).replace(/_/g, '');
+            if (f[f.length - 1] === '0')
+                node.minFractionDigits = f.length;
+        }
+        return node;
+    },
+    stringify: stringifyNumber
+};
+
+export { float, floatExp, floatNaN };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,71 @@
+import { stringifyNumber } from '../../stringify/stringifyNumber.js';
+
+const intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);
+function intResolve(str, offset, radix, { intAsBigInt }) {
+    const sign = str[0];
+    if (sign === '-' || sign === '+')
+        offset += 1;
+    str = str.substring(offset).replace(/_/g, '');
+    if (intAsBigInt) {
+        switch (radix) {
+            case 2:
+                str = `0b${str}`;
+                break;
+            case 8:
+                str = `0o${str}`;
+                break;
+            case 16:
+                str = `0x${str}`;
+                break;
+        }
+        const n = BigInt(str);
+        return sign === '-' ? BigInt(-1) * n : n;
+    }
+    const n = parseInt(str, radix);
+    return sign === '-' ? -1 * n : n;
+}
+function intStringify(node, radix, prefix) {
+    const { value } = node;
+    if (intIdentify(value)) {
+        const str = value.toString(radix);
+        return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;
+    }
+    return stringifyNumber(node);
+}
+const intBin = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'BIN',
+    test: /^[-+]?0b[0-1_]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),
+    stringify: node => intStringify(node, 2, '0b')
+};
+const intOct = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'OCT',
+    test: /^[-+]?0[0-7_]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),
+    stringify: node => intStringify(node, 8, '0')
+};
+const int = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    test: /^[-+]?[0-9][0-9_]*$/,
+    resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),
+    stringify: stringifyNumber
+};
+const intHex = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'HEX',
+    test: /^[-+]?0x[0-9a-fA-F_]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),
+    stringify: node => intStringify(node, 16, '0x')
+};
+
+export { int, intBin, intHex, intOct };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,67 @@
+import { isScalar, isSeq, isAlias, isMap } from '../../nodes/identity.js';
+import { Scalar } from '../../nodes/Scalar.js';
+
+// If the value associated with a merge key is a single mapping node, each of
+// its key/value pairs is inserted into the current mapping, unless the key
+// already exists in it. If the value associated with the merge key is a
+// sequence, then this sequence is expected to contain mapping nodes and each
+// of these nodes is merged in turn according to its order in the sequence.
+// Keys in mapping nodes earlier in the sequence override keys specified in
+// later mapping nodes. -- http://yaml.org/type/merge.html
+const MERGE_KEY = '<<';
+const merge = {
+    identify: value => value === MERGE_KEY ||
+        (typeof value === 'symbol' && value.description === MERGE_KEY),
+    default: 'key',
+    tag: 'tag:yaml.org,2002:merge',
+    test: /^<<$/,
+    resolve: () => Object.assign(new Scalar(Symbol(MERGE_KEY)), {
+        addToJSMap: addMergeToJSMap
+    }),
+    stringify: () => MERGE_KEY
+};
+const isMergeKey = (ctx, key) => (merge.identify(key) ||
+    (isScalar(key) &&
+        (!key.type || key.type === Scalar.PLAIN) &&
+        merge.identify(key.value))) &&
+    ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);
+function addMergeToJSMap(ctx, map, value) {
+    const source = resolveAliasValue(ctx, value);
+    if (isSeq(source))
+        for (const it of source.items)
+            mergeValue(ctx, map, it);
+    else if (Array.isArray(source))
+        for (const it of source)
+            mergeValue(ctx, map, it);
+    else
+        mergeValue(ctx, map, source);
+}
+function mergeValue(ctx, map, value) {
+    const source = resolveAliasValue(ctx, value);
+    if (!isMap(source))
+        throw new Error('Merge sources must be maps or map aliases');
+    const srcMap = source.toJSON(null, ctx, Map);
+    for (const [key, value] of srcMap) {
+        if (map instanceof Map) {
+            if (!map.has(key))
+                map.set(key, value);
+        }
+        else if (map instanceof Set) {
+            map.add(key);
+        }
+        else if (!Object.prototype.hasOwnProperty.call(map, key)) {
+            Object.defineProperty(map, key, {
+                value,
+                writable: true,
+                enumerable: true,
+                configurable: true
+            });
+        }
+    }
+    return map;
+}
+function resolveAliasValue(ctx, value) {
+    return ctx && isAlias(value) ? value.resolve(ctx.doc, ctx) : value;
+}
+
+export { addMergeToJSMap, isMergeKey, merge };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,74 @@
+import { isScalar, isPair } from '../../nodes/identity.js';
+import { toJS } from '../../nodes/toJS.js';
+import { YAMLMap } from '../../nodes/YAMLMap.js';
+import { YAMLSeq } from '../../nodes/YAMLSeq.js';
+import { resolvePairs, createPairs } from './pairs.js';
+
+class YAMLOMap extends YAMLSeq {
+    constructor() {
+        super();
+        this.add = YAMLMap.prototype.add.bind(this);
+        this.delete = YAMLMap.prototype.delete.bind(this);
+        this.get = YAMLMap.prototype.get.bind(this);
+        this.has = YAMLMap.prototype.has.bind(this);
+        this.set = YAMLMap.prototype.set.bind(this);
+        this.tag = YAMLOMap.tag;
+    }
+    /**
+     * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,
+     * but TypeScript won't allow widening the signature of a child method.
+     */
+    toJSON(_, ctx) {
+        if (!ctx)
+            return super.toJSON(_);
+        const map = new Map();
+        if (ctx?.onCreate)
+            ctx.onCreate(map);
+        for (const pair of this.items) {
+            let key, value;
+            if (isPair(pair)) {
+                key = toJS(pair.key, '', ctx);
+                value = toJS(pair.value, key, ctx);
+            }
+            else {
+                key = toJS(pair, '', ctx);
+            }
+            if (map.has(key))
+                throw new Error('Ordered maps must not include duplicate keys');
+            map.set(key, value);
+        }
+        return map;
+    }
+    static from(schema, iterable, ctx) {
+        const pairs = createPairs(schema, iterable, ctx);
+        const omap = new this();
+        omap.items = pairs.items;
+        return omap;
+    }
+}
+YAMLOMap.tag = 'tag:yaml.org,2002:omap';
+const omap = {
+    collection: 'seq',
+    identify: value => value instanceof Map,
+    nodeClass: YAMLOMap,
+    default: false,
+    tag: 'tag:yaml.org,2002:omap',
+    resolve(seq, onError) {
+        const pairs = resolvePairs(seq, onError);
+        const seenKeys = [];
+        for (const { key } of pairs.items) {
+            if (isScalar(key)) {
+                if (seenKeys.includes(key.value)) {
+                    onError(`Ordered maps must not include duplicate keys: ${key.value}`);
+                }
+                else {
+                    seenKeys.push(key.value);
+                }
+            }
+        }
+        return Object.assign(new YAMLOMap(), pairs);
+    },
+    createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)
+};
+
+export { YAMLOMap, omap };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,78 @@
+import { isSeq, isPair, isMap } from '../../nodes/identity.js';
+import { createPair, Pair } from '../../nodes/Pair.js';
+import { Scalar } from '../../nodes/Scalar.js';
+import { YAMLSeq } from '../../nodes/YAMLSeq.js';
+
+function resolvePairs(seq, onError) {
+    if (isSeq(seq)) {
+        for (let i = 0; i < seq.items.length; ++i) {
+            let item = seq.items[i];
+            if (isPair(item))
+                continue;
+            else if (isMap(item)) {
+                if (item.items.length > 1)
+                    onError('Each pair must have its own sequence indicator');
+                const pair = item.items[0] || new Pair(new Scalar(null));
+                if (item.commentBefore)
+                    pair.key.commentBefore = pair.key.commentBefore
+                        ? `${item.commentBefore}\n${pair.key.commentBefore}`
+                        : item.commentBefore;
+                if (item.comment) {
+                    const cn = pair.value ?? pair.key;
+                    cn.comment = cn.comment
+                        ? `${item.comment}\n${cn.comment}`
+                        : item.comment;
+                }
+                item = pair;
+            }
+            seq.items[i] = isPair(item) ? item : new Pair(item);
+        }
+    }
+    else
+        onError('Expected a sequence for this tag');
+    return seq;
+}
+function createPairs(schema, iterable, ctx) {
+    const { replacer } = ctx;
+    const pairs = new YAMLSeq(schema);
+    pairs.tag = 'tag:yaml.org,2002:pairs';
+    let i = 0;
+    if (iterable && Symbol.iterator in Object(iterable))
+        for (let it of iterable) {
+            if (typeof replacer === 'function')
+                it = replacer.call(iterable, String(i++), it);
+            let key, value;
+            if (Array.isArray(it)) {
+                if (it.length === 2) {
+                    key = it[0];
+                    value = it[1];
+                }
+                else
+                    throw new TypeError(`Expected [key, value] tuple: ${it}`);
+            }
+            else if (it && it instanceof Object) {
+                const keys = Object.keys(it);
+                if (keys.length === 1) {
+                    key = keys[0];
+                    value = it[key];
+                }
+                else {
+                    throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);
+                }
+            }
+            else {
+                key = it;
+            }
+            pairs.items.push(createPair(key, value, ctx));
+        }
+    return pairs;
+}
+const pairs = {
+    collection: 'seq',
+    default: false,
+    tag: 'tag:yaml.org,2002:pairs',
+    resolve: resolvePairs,
+    createNode: createPairs
+};
+
+export { createPairs, pairs, resolvePairs };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,39 @@
+import { map } from '../common/map.js';
+import { nullTag } from '../common/null.js';
+import { seq } from '../common/seq.js';
+import { string } from '../common/string.js';
+import { binary } from './binary.js';
+import { trueTag, falseTag } from './bool.js';
+import { floatNaN, floatExp, float } from './float.js';
+import { intBin, intOct, int, intHex } from './int.js';
+import { merge } from './merge.js';
+import { omap } from './omap.js';
+import { pairs } from './pairs.js';
+import { set } from './set.js';
+import { intTime, floatTime, timestamp } from './timestamp.js';
+
+const schema = [
+    map,
+    seq,
+    string,
+    nullTag,
+    trueTag,
+    falseTag,
+    intBin,
+    intOct,
+    int,
+    intHex,
+    floatNaN,
+    floatExp,
+    float,
+    binary,
+    merge,
+    omap,
+    pairs,
+    set,
+    intTime,
+    floatTime,
+    timestamp
+];
+
+export { schema };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,93 @@
+import { isMap, isPair, isScalar } from '../../nodes/identity.js';
+import { Pair, createPair } from '../../nodes/Pair.js';
+import { YAMLMap, findPair } from '../../nodes/YAMLMap.js';
+
+class YAMLSet extends YAMLMap {
+    constructor(schema) {
+        super(schema);
+        this.tag = YAMLSet.tag;
+    }
+    add(key) {
+        let pair;
+        if (isPair(key))
+            pair = key;
+        else if (key &&
+            typeof key === 'object' &&
+            'key' in key &&
+            'value' in key &&
+            key.value === null)
+            pair = new Pair(key.key, null);
+        else
+            pair = new Pair(key, null);
+        const prev = findPair(this.items, pair.key);
+        if (!prev)
+            this.items.push(pair);
+    }
+    /**
+     * If `keepPair` is `true`, returns the Pair matching `key`.
+     * Otherwise, returns the value of that Pair's key.
+     */
+    get(key, keepPair) {
+        const pair = findPair(this.items, key);
+        return !keepPair && isPair(pair)
+            ? isScalar(pair.key)
+                ? pair.key.value
+                : pair.key
+            : pair;
+    }
+    set(key, value) {
+        if (typeof value !== 'boolean')
+            throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);
+        const prev = findPair(this.items, key);
+        if (prev && !value) {
+            this.items.splice(this.items.indexOf(prev), 1);
+        }
+        else if (!prev && value) {
+            this.items.push(new Pair(key));
+        }
+    }
+    toJSON(_, ctx) {
+        return super.toJSON(_, ctx, Set);
+    }
+    toString(ctx, onComment, onChompKeep) {
+        if (!ctx)
+            return JSON.stringify(this);
+        if (this.hasAllNullValues(true))
+            return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);
+        else
+            throw new Error('Set items must all have null values');
+    }
+    static from(schema, iterable, ctx) {
+        const { replacer } = ctx;
+        const set = new this(schema);
+        if (iterable && Symbol.iterator in Object(iterable))
+            for (let value of iterable) {
+                if (typeof replacer === 'function')
+                    value = replacer.call(iterable, value, value);
+                set.items.push(createPair(value, null, ctx));
+            }
+        return set;
+    }
+}
+YAMLSet.tag = 'tag:yaml.org,2002:set';
+const set = {
+    collection: 'map',
+    identify: value => value instanceof Set,
+    nodeClass: YAMLSet,
+    default: false,
+    tag: 'tag:yaml.org,2002:set',
+    createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),
+    resolve(map, onError) {
+        if (isMap(map)) {
+            if (map.hasAllNullValues(true))
+                return Object.assign(new YAMLSet(), map);
+            else
+                onError('Set items must all have null values');
+        }
+        else
+            onError('Expected a mapping for this tag');
+        return map;
+    }
+};
+
+export { YAMLSet, set };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,101 @@
+import { stringifyNumber } from '../../stringify/stringifyNumber.js';
+
+/** Internal types handle bigint as number, because TS can't figure it out. */
+function parseSexagesimal(str, asBigInt) {
+    const sign = str[0];
+    const parts = sign === '-' || sign === '+' ? str.substring(1) : str;
+    const num = (n) => asBigInt ? BigInt(n) : Number(n);
+    const res = parts
+        .replace(/_/g, '')
+        .split(':')
+        .reduce((res, p) => res * num(60) + num(p), num(0));
+    return (sign === '-' ? num(-1) * res : res);
+}
+/**
+ * hhhh:mm:ss.sss
+ *
+ * Internal types handle bigint as number, because TS can't figure it out.
+ */
+function stringifySexagesimal(node) {
+    let { value } = node;
+    let num = (n) => n;
+    if (typeof value === 'bigint')
+        num = n => BigInt(n);
+    else if (isNaN(value) || !isFinite(value))
+        return stringifyNumber(node);
+    let sign = '';
+    if (value < 0) {
+        sign = '-';
+        value *= num(-1);
+    }
+    const _60 = num(60);
+    const parts = [value % _60]; // seconds, including ms
+    if (value < 60) {
+        parts.unshift(0); // at least one : is required
+    }
+    else {
+        value = (value - parts[0]) / _60;
+        parts.unshift(value % _60); // minutes
+        if (value >= 60) {
+            value = (value - parts[0]) / _60;
+            parts.unshift(value); // hours
+        }
+    }
+    return (sign +
+        parts
+            .map(n => String(n).padStart(2, '0'))
+            .join(':')
+            .replace(/000000\d*$/, '') // % 60 may introduce error
+    );
+}
+const intTime = {
+    identify: value => typeof value === 'bigint' || Number.isInteger(value),
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'TIME',
+    test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,
+    resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),
+    stringify: stringifySexagesimal
+};
+const floatTime = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    format: 'TIME',
+    test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,
+    resolve: str => parseSexagesimal(str, false),
+    stringify: stringifySexagesimal
+};
+const timestamp = {
+    identify: value => value instanceof Date,
+    default: true,
+    tag: 'tag:yaml.org,2002:timestamp',
+    // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part
+    // may be omitted altogether, resulting in a date format. In such a case, the time part is
+    // assumed to be 00:00:00Z (start of day, UTC).
+    test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd
+        '(?:' + // time is optional
+        '(?:t|T|[ \\t]+)' + // t | T | whitespace
+        '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?
+        '(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30
+        ')?$'),
+    resolve(str) {
+        const match = str.match(timestamp.test);
+        if (!match)
+            throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');
+        const [, year, month, day, hour, minute, second] = match.map(Number);
+        const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;
+        let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);
+        const tz = match[8];
+        if (tz && tz !== 'Z') {
+            let d = parseSexagesimal(tz, false);
+            if (Math.abs(d) < 30)
+                d *= 60;
+            date -= 60000 * d;
+        }
+        return new Date(date);
+    },
+    stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\.000Z$/, '') ?? ''
+};
+
+export { floatTime, intTime, timestamp };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/foldFlowLines.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/foldFlowLines.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/foldFlowLines.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,146 @@
+const FOLD_FLOW = 'flow';
+const FOLD_BLOCK = 'block';
+const FOLD_QUOTED = 'quoted';
+/**
+ * Tries to keep input at up to `lineWidth` characters, splitting only on spaces
+ * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are
+ * terminated with `\n` and started with `indent`.
+ */
+function foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {
+    if (!lineWidth || lineWidth < 0)
+        return text;
+    if (lineWidth < minContentWidth)
+        minContentWidth = 0;
+    const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);
+    if (text.length <= endStep)
+        return text;
+    const folds = [];
+    const escapedFolds = {};
+    let end = lineWidth - indent.length;
+    if (typeof indentAtStart === 'number') {
+        if (indentAtStart > lineWidth - Math.max(2, minContentWidth))
+            folds.push(0);
+        else
+            end = lineWidth - indentAtStart;
+    }
+    let split = undefined;
+    let prev = undefined;
+    let overflow = false;
+    let i = -1;
+    let escStart = -1;
+    let escEnd = -1;
+    if (mode === FOLD_BLOCK) {
+        i = consumeMoreIndentedLines(text, i, indent.length);
+        if (i !== -1)
+            end = i + endStep;
+    }
+    for (let ch; (ch = text[(i += 1)]);) {
+        if (mode === FOLD_QUOTED && ch === '\\') {
+            escStart = i;
+            switch (text[i + 1]) {
+                case 'x':
+                    i += 3;
+                    break;
+                case 'u':
+                    i += 5;
+                    break;
+                case 'U':
+                    i += 9;
+                    break;
+                default:
+                    i += 1;
+            }
+            escEnd = i;
+        }
+        if (ch === '\n') {
+            if (mode === FOLD_BLOCK)
+                i = consumeMoreIndentedLines(text, i, indent.length);
+            end = i + indent.length + endStep;
+            split = undefined;
+        }
+        else {
+            if (ch === ' ' &&
+                prev &&
+                prev !== ' ' &&
+                prev !== '\n' &&
+                prev !== '\t') {
+                // space surrounded by non-space can be replaced with newline + indent
+                const next = text[i + 1];
+                if (next && next !== ' ' && next !== '\n' && next !== '\t')
+                    split = i;
+            }
+            if (i >= end) {
+                if (split) {
+                    folds.push(split);
+                    end = split + endStep;
+                    split = undefined;
+                }
+                else if (mode === FOLD_QUOTED) {
+                    // white-space collected at end may stretch past lineWidth
+                    while (prev === ' ' || prev === '\t') {
+                        prev = ch;
+                        ch = text[(i += 1)];
+                        overflow = true;
+                    }
+                    // Account for newline escape, but don't break preceding escape
+                    const j = i > escEnd + 1 ? i - 2 : escStart - 1;
+                    // Bail out if lineWidth & minContentWidth are shorter than an escape string
+                    if (escapedFolds[j])
+                        return text;
+                    folds.push(j);
+                    escapedFolds[j] = true;
+                    end = j + endStep;
+                    split = undefined;
+                }
+                else {
+                    overflow = true;
+                }
+            }
+        }
+        prev = ch;
+    }
+    if (overflow && onOverflow)
+        onOverflow();
+    if (folds.length === 0)
+        return text;
+    if (onFold)
+        onFold();
+    let res = text.slice(0, folds[0]);
+    for (let i = 0; i < folds.length; ++i) {
+        const fold = folds[i];
+        const end = folds[i + 1] || text.length;
+        if (fold === 0)
+            res = `\n${indent}${text.slice(0, end)}`;
+        else {
+            if (mode === FOLD_QUOTED && escapedFolds[fold])
+                res += `${text[fold]}\\`;
+            res += `\n${indent}${text.slice(fold + 1, end)}`;
+        }
+    }
+    return res;
+}
+/**
+ * Presumes `i + 1` is at the start of a line
+ * @returns index of last newline in more-indented block
+ */
+function consumeMoreIndentedLines(text, i, indent) {
+    let end = i;
+    let start = i + 1;
+    let ch = text[start];
+    while (ch === ' ' || ch === '\t') {
+        if (i < start + indent) {
+            ch = text[++i];
+        }
+        else {
+            do {
+                ch = text[++i];
+            } while (ch && ch !== '\n');
+            end = i;
+            start = i + 1;
+            ch = text[start];
+        }
+    }
+    return end;
+}
+
+export { FOLD_BLOCK, FOLD_FLOW, FOLD_QUOTED, foldFlowLines };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringify.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,129 @@
+import { anchorIsValid } from '../doc/anchors.js';
+import { isPair, isAlias, isNode, isScalar, isCollection } from '../nodes/identity.js';
+import { stringifyComment } from './stringifyComment.js';
+import { stringifyString } from './stringifyString.js';
+
+function createStringifyContext(doc, options) {
+    const opt = Object.assign({
+        blockQuote: true,
+        commentString: stringifyComment,
+        defaultKeyType: null,
+        defaultStringType: 'PLAIN',
+        directives: null,
+        doubleQuotedAsJSON: false,
+        doubleQuotedMinMultiLineLength: 40,
+        falseStr: 'false',
+        flowCollectionPadding: true,
+        indentSeq: true,
+        lineWidth: 80,
+        minContentWidth: 20,
+        nullStr: 'null',
+        simpleKeys: false,
+        singleQuote: null,
+        trailingComma: false,
+        trueStr: 'true',
+        verifyAliasOrder: true
+    }, doc.schema.toStringOptions, options);
+    let inFlow;
+    switch (opt.collectionStyle) {
+        case 'block':
+            inFlow = false;
+            break;
+        case 'flow':
+            inFlow = true;
+            break;
+        default:
+            inFlow = null;
+    }
+    return {
+        anchors: new Set(),
+        doc,
+        flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',
+        indent: '',
+        indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : '  ',
+        inFlow,
+        options: opt
+    };
+}
+function getTagObject(tags, item) {
+    if (item.tag) {
+        const match = tags.filter(t => t.tag === item.tag);
+        if (match.length > 0)
+            return match.find(t => t.format === item.format) ?? match[0];
+    }
+    let tagObj = undefined;
+    let obj;
+    if (isScalar(item)) {
+        obj = item.value;
+        let match = tags.filter(t => t.identify?.(obj));
+        if (match.length > 1) {
+            const testMatch = match.filter(t => t.test);
+            if (testMatch.length > 0)
+                match = testMatch;
+        }
+        tagObj =
+            match.find(t => t.format === item.format) ?? match.find(t => !t.format);
+    }
+    else {
+        obj = item;
+        tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);
+    }
+    if (!tagObj) {
+        const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);
+        throw new Error(`Tag not resolved for ${name} value`);
+    }
+    return tagObj;
+}
+// needs to be called before value stringifier to allow for circular anchor refs
+function stringifyProps(node, tagObj, { anchors, doc }) {
+    if (!doc.directives)
+        return '';
+    const props = [];
+    const anchor = (isScalar(node) || isCollection(node)) && node.anchor;
+    if (anchor && anchorIsValid(anchor)) {
+        anchors.add(anchor);
+        props.push(`&${anchor}`);
+    }
+    const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);
+    if (tag)
+        props.push(doc.directives.tagString(tag));
+    return props.join(' ');
+}
+function stringify(item, ctx, onComment, onChompKeep) {
+    if (isPair(item))
+        return item.toString(ctx, onComment, onChompKeep);
+    if (isAlias(item)) {
+        if (ctx.doc.directives)
+            return item.toString(ctx);
+        if (ctx.resolvedAliases?.has(item)) {
+            throw new TypeError(`Cannot stringify circular structure without alias nodes`);
+        }
+        else {
+            if (ctx.resolvedAliases)
+                ctx.resolvedAliases.add(item);
+            else
+                ctx.resolvedAliases = new Set([item]);
+            item = item.resolve(ctx.doc);
+        }
+    }
+    let tagObj = undefined;
+    const node = isNode(item)
+        ? item
+        : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });
+    tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));
+    const props = stringifyProps(node, tagObj, ctx);
+    if (props.length > 0)
+        ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;
+    const str = typeof tagObj.stringify === 'function'
+        ? tagObj.stringify(node, ctx, onComment, onChompKeep)
+        : isScalar(node)
+            ? stringifyString(node, ctx, onComment, onChompKeep)
+            : node.toString(ctx, onComment, onChompKeep);
+    if (!props)
+        return str;
+    return isScalar(node) || str[0] === '{' || str[0] === '['
+        ? `${props} ${str}`
+        : `${props}\n${ctx.indent}${str}`;
+}
+
+export { createStringifyContext, stringify };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyCollection.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyCollection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyCollection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,153 @@
+import { isNode, isPair } from '../nodes/identity.js';
+import { stringify } from './stringify.js';
+import { lineComment, indentComment } from './stringifyComment.js';
+
+function stringifyCollection(collection, ctx, options) {
+    const flow = ctx.inFlow ?? collection.flow;
+    const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;
+    return stringify(collection, ctx, options);
+}
+function stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {
+    const { indent, options: { commentString } } = ctx;
+    const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });
+    let chompKeep = false; // flag for the preceding node's status
+    const lines = [];
+    for (let i = 0; i < items.length; ++i) {
+        const item = items[i];
+        let comment = null;
+        if (isNode(item)) {
+            if (!chompKeep && item.spaceBefore)
+                lines.push('');
+            addCommentBefore(ctx, lines, item.commentBefore, chompKeep);
+            if (item.comment)
+                comment = item.comment;
+        }
+        else if (isPair(item)) {
+            const ik = isNode(item.key) ? item.key : null;
+            if (ik) {
+                if (!chompKeep && ik.spaceBefore)
+                    lines.push('');
+                addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);
+            }
+        }
+        chompKeep = false;
+        let str = stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));
+        if (comment)
+            str += lineComment(str, itemIndent, commentString(comment));
+        if (chompKeep && comment)
+            chompKeep = false;
+        lines.push(blockItemPrefix + str);
+    }
+    let str;
+    if (lines.length === 0) {
+        str = flowChars.start + flowChars.end;
+    }
+    else {
+        str = lines[0];
+        for (let i = 1; i < lines.length; ++i) {
+            const line = lines[i];
+            str += line ? `\n${indent}${line}` : '\n';
+        }
+    }
+    if (comment) {
+        str += '\n' + indentComment(commentString(comment), indent);
+        if (onComment)
+            onComment();
+    }
+    else if (chompKeep && onChompKeep)
+        onChompKeep();
+    return str;
+}
+function stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {
+    const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;
+    itemIndent += indentStep;
+    const itemCtx = Object.assign({}, ctx, {
+        indent: itemIndent,
+        inFlow: true,
+        type: null
+    });
+    let reqNewline = false;
+    let linesAtValue = 0;
+    const lines = [];
+    for (let i = 0; i < items.length; ++i) {
+        const item = items[i];
+        let comment = null;
+        if (isNode(item)) {
+            if (item.spaceBefore)
+                lines.push('');
+            addCommentBefore(ctx, lines, item.commentBefore, false);
+            if (item.comment)
+                comment = item.comment;
+        }
+        else if (isPair(item)) {
+            const ik = isNode(item.key) ? item.key : null;
+            if (ik) {
+                if (ik.spaceBefore)
+                    lines.push('');
+                addCommentBefore(ctx, lines, ik.commentBefore, false);
+                if (ik.comment)
+                    reqNewline = true;
+            }
+            const iv = isNode(item.value) ? item.value : null;
+            if (iv) {
+                if (iv.comment)
+                    comment = iv.comment;
+                if (iv.commentBefore)
+                    reqNewline = true;
+            }
+            else if (item.value == null && ik?.comment) {
+                comment = ik.comment;
+            }
+        }
+        if (comment)
+            reqNewline = true;
+        let str = stringify(item, itemCtx, () => (comment = null));
+        reqNewline || (reqNewline = lines.length > linesAtValue || str.includes('\n'));
+        if (i < items.length - 1) {
+            str += ',';
+        }
+        else if (ctx.options.trailingComma) {
+            if (ctx.options.lineWidth > 0) {
+                reqNewline || (reqNewline = lines.reduce((sum, line) => sum + line.length + 2, 2) +
+                    (str.length + 2) >
+                    ctx.options.lineWidth);
+            }
+            if (reqNewline) {
+                str += ',';
+            }
+        }
+        if (comment)
+            str += lineComment(str, itemIndent, commentString(comment));
+        lines.push(str);
+        linesAtValue = lines.length;
+    }
+    const { start, end } = flowChars;
+    if (lines.length === 0) {
+        return start + end;
+    }
+    else {
+        if (!reqNewline) {
+            const len = lines.reduce((sum, line) => sum + line.length + 2, 2);
+            reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;
+        }
+        if (reqNewline) {
+            let str = start;
+            for (const line of lines)
+                str += line ? `\n${indentStep}${indent}${line}` : '\n';
+            return `${str}\n${indent}${end}`;
+        }
+        else {
+            return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;
+        }
+    }
+}
+function addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {
+    if (comment && chompKeep)
+        comment = comment.replace(/^\n+/, '');
+    if (comment) {
+        const ic = indentComment(commentString(comment), indent);
+        lines.push(ic.trimStart()); // Avoid double indent on first line
+    }
+}
+
+export { stringifyCollection };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyComment.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyComment.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyComment.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,20 @@
+/**
+ * Stringifies a comment.
+ *
+ * Empty comment lines are left empty,
+ * lines consisting of a single space are replaced by `#`,
+ * and all other lines are prefixed with a `#`.
+ */
+const stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');
+function indentComment(comment, indent) {
+    if (/^\n+$/.test(comment))
+        return comment.substring(1);
+    return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;
+}
+const lineComment = (str, indent, comment) => str.endsWith('\n')
+    ? indentComment(comment, indent)
+    : comment.includes('\n')
+        ? '\n' + indentComment(comment, indent)
+        : (str.endsWith(' ') ? '' : ' ') + comment;
+
+export { indentComment, lineComment, stringifyComment };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyDocument.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyDocument.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyDocument.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,85 @@
+import { isNode } from '../nodes/identity.js';
+import { createStringifyContext, stringify } from './stringify.js';
+import { indentComment, lineComment } from './stringifyComment.js';
+
+function stringifyDocument(doc, options) {
+    const lines = [];
+    let hasDirectives = options.directives === true;
+    if (options.directives !== false && doc.directives) {
+        const dir = doc.directives.toString(doc);
+        if (dir) {
+            lines.push(dir);
+            hasDirectives = true;
+        }
+        else if (doc.directives.docStart)
+            hasDirectives = true;
+    }
+    if (hasDirectives)
+        lines.push('---');
+    const ctx = createStringifyContext(doc, options);
+    const { commentString } = ctx.options;
+    if (doc.commentBefore) {
+        if (lines.length !== 1)
+            lines.unshift('');
+        const cs = commentString(doc.commentBefore);
+        lines.unshift(indentComment(cs, ''));
+    }
+    let chompKeep = false;
+    let contentComment = null;
+    if (doc.contents) {
+        if (isNode(doc.contents)) {
+            if (doc.contents.spaceBefore && hasDirectives)
+                lines.push('');
+            if (doc.contents.commentBefore) {
+                const cs = commentString(doc.contents.commentBefore);
+                lines.push(indentComment(cs, ''));
+            }
+            // top-level block scalars need to be indented if followed by a comment
+            ctx.forceBlockIndent = !!doc.comment;
+            contentComment = doc.contents.comment;
+        }
+        const onChompKeep = contentComment ? undefined : () => (chompKeep = true);
+        let body = stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);
+        if (contentComment)
+            body += lineComment(body, '', commentString(contentComment));
+        if ((body[0] === '|' || body[0] === '>') &&
+            lines[lines.length - 1] === '---') {
+            // Top-level block scalars with a preceding doc marker ought to use the
+            // same line for their header.
+            lines[lines.length - 1] = `--- ${body}`;
+        }
+        else
+            lines.push(body);
+    }
+    else {
+        lines.push(stringify(doc.contents, ctx));
+    }
+    if (doc.directives?.docEnd) {
+        if (doc.comment) {
+            const cs = commentString(doc.comment);
+            if (cs.includes('\n')) {
+                lines.push('...');
+                lines.push(indentComment(cs, ''));
+            }
+            else {
+                lines.push(`... ${cs}`);
+            }
+        }
+        else {
+            lines.push('...');
+        }
+    }
+    else {
+        let dc = doc.comment;
+        if (dc && chompKeep)
+            dc = dc.replace(/^\n+/, '');
+        if (dc) {
+            if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')
+                lines.push('');
+            lines.push(indentComment(commentString(dc), ''));
+        }
+    }
+    return lines.join('\n') + '\n';
+}
+
+export { stringifyDocument };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyNumber.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyNumber.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyNumber.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,25 @@
+function stringifyNumber({ format, minFractionDigits, tag, value }) {
+    if (typeof value === 'bigint')
+        return String(value);
+    const num = typeof value === 'number' ? value : Number(value);
+    if (!isFinite(num))
+        return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';
+    let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);
+    if (!format &&
+        minFractionDigits &&
+        (!tag || tag === 'tag:yaml.org,2002:float') &&
+        /^-?\d/.test(n) &&
+        !n.includes('e')) {
+        let i = n.indexOf('.');
+        if (i < 0) {
+            i = n.length;
+            n += '.';
+        }
+        let d = minFractionDigits - (n.length - i - 1);
+        while (d-- > 0)
+            n += '0';
+    }
+    return n;
+}
+
+export { stringifyNumber };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyPair.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyPair.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyPair.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,150 @@
+import { isCollection, isNode, isScalar, isSeq } from '../nodes/identity.js';
+import { Scalar } from '../nodes/Scalar.js';
+import { stringify } from './stringify.js';
+import { lineComment, indentComment } from './stringifyComment.js';
+
+function stringifyPair({ key, value }, ctx, onComment, onChompKeep) {
+    const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;
+    let keyComment = (isNode(key) && key.comment) || null;
+    if (simpleKeys) {
+        if (keyComment) {
+            throw new Error('With simple keys, key nodes cannot have comments');
+        }
+        if (isCollection(key) || (!isNode(key) && typeof key === 'object')) {
+            const msg = 'With simple keys, collection cannot be used as a key value';
+            throw new Error(msg);
+        }
+    }
+    let explicitKey = !simpleKeys &&
+        (!key ||
+            (keyComment && value == null && !ctx.inFlow) ||
+            isCollection(key) ||
+            (isScalar(key)
+                ? key.type === Scalar.BLOCK_FOLDED || key.type === Scalar.BLOCK_LITERAL
+                : typeof key === 'object'));
+    ctx = Object.assign({}, ctx, {
+        allNullValues: false,
+        implicitKey: !explicitKey && (simpleKeys || !allNullValues),
+        indent: indent + indentStep
+    });
+    let keyCommentDone = false;
+    let chompKeep = false;
+    let str = stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));
+    if (!explicitKey && !ctx.inFlow && str.length > 1024) {
+        if (simpleKeys)
+            throw new Error('With simple keys, single line scalar must not span more than 1024 characters');
+        explicitKey = true;
+    }
+    if (ctx.inFlow) {
+        if (allNullValues || value == null) {
+            if (keyCommentDone && onComment)
+                onComment();
+            return str === '' ? '?' : explicitKey ? `? ${str}` : str;
+        }
+    }
+    else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {
+        str = `? ${str}`;
+        if (keyComment && !keyCommentDone) {
+            str += lineComment(str, ctx.indent, commentString(keyComment));
+        }
+        else if (chompKeep && onChompKeep)
+            onChompKeep();
+        return str;
+    }
+    if (keyCommentDone)
+        keyComment = null;
+    if (explicitKey) {
+        if (keyComment)
+            str += lineComment(str, ctx.indent, commentString(keyComment));
+        str = `? ${str}\n${indent}:`;
+    }
+    else {
+        str = `${str}:`;
+        if (keyComment)
+            str += lineComment(str, ctx.indent, commentString(keyComment));
+    }
+    let vsb, vcb, valueComment;
+    if (isNode(value)) {
+        vsb = !!value.spaceBefore;
+        vcb = value.commentBefore;
+        valueComment = value.comment;
+    }
+    else {
+        vsb = false;
+        vcb = null;
+        valueComment = null;
+        if (value && typeof value === 'object')
+            value = doc.createNode(value);
+    }
+    ctx.implicitKey = false;
+    if (!explicitKey && !keyComment && isScalar(value))
+        ctx.indentAtStart = str.length + 1;
+    chompKeep = false;
+    if (!indentSeq &&
+        indentStep.length >= 2 &&
+        !ctx.inFlow &&
+        !explicitKey &&
+        isSeq(value) &&
+        !value.flow &&
+        !value.tag &&
+        !value.anchor) {
+        // If indentSeq === false, consider '- ' as part of indentation where possible
+        ctx.indent = ctx.indent.substring(2);
+    }
+    let valueCommentDone = false;
+    const valueStr = stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));
+    let ws = ' ';
+    if (keyComment || vsb || vcb) {
+        ws = vsb ? '\n' : '';
+        if (vcb) {
+            const cs = commentString(vcb);
+            ws += `\n${indentComment(cs, ctx.indent)}`;
+        }
+        if (valueStr === '' && !ctx.inFlow) {
+            if (ws === '\n' && valueComment)
+                ws = '\n\n';
+        }
+        else {
+            ws += `\n${ctx.indent}`;
+        }
+    }
+    else if (!explicitKey && isCollection(value)) {
+        const vs0 = valueStr[0];
+        const nl0 = valueStr.indexOf('\n');
+        const hasNewline = nl0 !== -1;
+        const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;
+        if (hasNewline || !flow) {
+            let hasPropsLine = false;
+            if (hasNewline && (vs0 === '&' || vs0 === '!')) {
+                let sp0 = valueStr.indexOf(' ');
+                if (vs0 === '&' &&
+                    sp0 !== -1 &&
+                    sp0 < nl0 &&
+                    valueStr[sp0 + 1] === '!') {
+                    sp0 = valueStr.indexOf(' ', sp0 + 1);
+                }
+                if (sp0 === -1 || nl0 < sp0)
+                    hasPropsLine = true;
+            }
+            if (!hasPropsLine)
+                ws = `\n${ctx.indent}`;
+        }
+    }
+    else if (valueStr === '' || valueStr[0] === '\n') {
+        ws = '';
+    }
+    str += ws + valueStr;
+    if (ctx.inFlow) {
+        if (valueCommentDone && onComment)
+            onComment();
+    }
+    else if (valueComment && !valueCommentDone) {
+        str += lineComment(str, ctx.indent, commentString(valueComment));
+    }
+    else if (chompKeep && onChompKeep) {
+        onChompKeep();
+    }
+    return str;
+}
+
+export { stringifyPair };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyString.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyString.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/stringify/stringifyString.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,336 @@
+import { Scalar } from '../nodes/Scalar.js';
+import { foldFlowLines, FOLD_FLOW, FOLD_QUOTED, FOLD_BLOCK } from './foldFlowLines.js';
+
+const getFoldOptions = (ctx, isBlock) => ({
+    indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,
+    lineWidth: ctx.options.lineWidth,
+    minContentWidth: ctx.options.minContentWidth
+});
+// Also checks for lines starting with %, as parsing the output as YAML 1.1 will
+// presume that's starting a new document.
+const containsDocumentMarker = (str) => /^(%|---|\.\.\.)/m.test(str);
+function lineLengthOverLimit(str, lineWidth, indentLength) {
+    if (!lineWidth || lineWidth < 0)
+        return false;
+    const limit = lineWidth - indentLength;
+    const strLen = str.length;
+    if (strLen <= limit)
+        return false;
+    for (let i = 0, start = 0; i < strLen; ++i) {
+        if (str[i] === '\n') {
+            if (i - start > limit)
+                return true;
+            start = i + 1;
+            if (strLen - start <= limit)
+                return false;
+        }
+    }
+    return true;
+}
+function doubleQuotedString(value, ctx) {
+    const json = JSON.stringify(value);
+    if (ctx.options.doubleQuotedAsJSON)
+        return json;
+    const { implicitKey } = ctx;
+    const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;
+    const indent = ctx.indent || (containsDocumentMarker(value) ? '  ' : '');
+    let str = '';
+    let start = 0;
+    for (let i = 0, ch = json[i]; ch; ch = json[++i]) {
+        if (ch === ' ' && json[i + 1] === '\\' && json[i + 2] === 'n') {
+            // space before newline needs to be escaped to not be folded
+            str += json.slice(start, i) + '\\ ';
+            i += 1;
+            start = i;
+            ch = '\\';
+        }
+        if (ch === '\\')
+            switch (json[i + 1]) {
+                case 'u':
+                    {
+                        str += json.slice(start, i);
+                        const code = json.substr(i + 2, 4);
+                        switch (code) {
+                            case '0000':
+                                str += '\\0';
+                                break;
+                            case '0007':
+                                str += '\\a';
+                                break;
+                            case '000b':
+                                str += '\\v';
+                                break;
+                            case '001b':
+                                str += '\\e';
+                                break;
+                            case '0085':
+                                str += '\\N';
+                                break;
+                            case '00a0':
+                                str += '\\_';
+                                break;
+                            case '2028':
+                                str += '\\L';
+                                break;
+                            case '2029':
+                                str += '\\P';
+                                break;
+                            default:
+                                if (code.substr(0, 2) === '00')
+                                    str += '\\x' + code.substr(2);
+                                else
+                                    str += json.substr(i, 6);
+                        }
+                        i += 5;
+                        start = i + 1;
+                    }
+                    break;
+                case 'n':
+                    if (implicitKey ||
+                        json[i + 2] === '"' ||
+                        json.length < minMultiLineLength) {
+                        i += 1;
+                    }
+                    else {
+                        // folding will eat first newline
+                        str += json.slice(start, i) + '\n\n';
+                        while (json[i + 2] === '\\' &&
+                            json[i + 3] === 'n' &&
+                            json[i + 4] !== '"') {
+                            str += '\n';
+                            i += 2;
+                        }
+                        str += indent;
+                        // space after newline needs to be escaped to not be folded
+                        if (json[i + 2] === ' ')
+                            str += '\\';
+                        i += 1;
+                        start = i + 1;
+                    }
+                    break;
+                default:
+                    i += 1;
+            }
+    }
+    str = start ? str + json.slice(start) : json;
+    return implicitKey
+        ? str
+        : foldFlowLines(str, indent, FOLD_QUOTED, getFoldOptions(ctx, false));
+}
+function singleQuotedString(value, ctx) {
+    if (ctx.options.singleQuote === false ||
+        (ctx.implicitKey && value.includes('\n')) ||
+        /[ \t]\n|\n[ \t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline
+    )
+        return doubleQuotedString(value, ctx);
+    const indent = ctx.indent || (containsDocumentMarker(value) ? '  ' : '');
+    const res = "'" + value.replace(/'/g, "''").replace(/\n+/g, `$&\n${indent}`) + "'";
+    return ctx.implicitKey
+        ? res
+        : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx, false));
+}
+function quotedString(value, ctx) {
+    const { singleQuote } = ctx.options;
+    let qs;
+    if (singleQuote === false)
+        qs = doubleQuotedString;
+    else {
+        const hasDouble = value.includes('"');
+        const hasSingle = value.includes("'");
+        if (hasDouble && !hasSingle)
+            qs = singleQuotedString;
+        else if (hasSingle && !hasDouble)
+            qs = doubleQuotedString;
+        else
+            qs = singleQuote ? singleQuotedString : doubleQuotedString;
+    }
+    return qs(value, ctx);
+}
+// The negative lookbehind avoids a polynomial search,
+// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind
+let blockEndNewlines;
+try {
+    blockEndNewlines = new RegExp('(^|(?<!\n))\n+(?!\n|$)', 'g');
+}
+catch {
+    blockEndNewlines = /\n+(?!\n|$)/g;
+}
+function blockString({ comment, type, value }, ctx, onComment, onChompKeep) {
+    const { blockQuote, commentString, lineWidth } = ctx.options;
+    // 1. Block can't end in whitespace unless the last line is non-empty.
+    // 2. Strings consisting of only whitespace are best rendered explicitly.
+    if (!blockQuote || /\n[\t ]+$/.test(value)) {
+        return quotedString(value, ctx);
+    }
+    const indent = ctx.indent ||
+        (ctx.forceBlockIndent || containsDocumentMarker(value) ? '  ' : '');
+    const literal = blockQuote === 'literal'
+        ? true
+        : blockQuote === 'folded' || type === Scalar.BLOCK_FOLDED
+            ? false
+            : type === Scalar.BLOCK_LITERAL
+                ? true
+                : !lineLengthOverLimit(value, lineWidth, indent.length);
+    if (!value)
+        return literal ? '|\n' : '>\n';
+    // determine chomping from whitespace at value end
+    let chomp;
+    let endStart;
+    for (endStart = value.length; endStart > 0; --endStart) {
+        const ch = value[endStart - 1];
+        if (ch !== '\n' && ch !== '\t' && ch !== ' ')
+            break;
+    }
+    let end = value.substring(endStart);
+    const endNlPos = end.indexOf('\n');
+    if (endNlPos === -1) {
+        chomp = '-'; // strip
+    }
+    else if (value === end || endNlPos !== end.length - 1) {
+        chomp = '+'; // keep
+        if (onChompKeep)
+            onChompKeep();
+    }
+    else {
+        chomp = ''; // clip
+    }
+    if (end) {
+        value = value.slice(0, -end.length);
+        if (end[end.length - 1] === '\n')
+            end = end.slice(0, -1);
+        end = end.replace(blockEndNewlines, `$&${indent}`);
+    }
+    // determine indent indicator from whitespace at value start
+    let startWithSpace = false;
+    let startEnd;
+    let startNlPos = -1;
+    for (startEnd = 0; startEnd < value.length; ++startEnd) {
+        const ch = value[startEnd];
+        if (ch === ' ')
+            startWithSpace = true;
+        else if (ch === '\n')
+            startNlPos = startEnd;
+        else
+            break;
+    }
+    let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);
+    if (start) {
+        value = value.substring(start.length);
+        start = start.replace(/\n+/g, `$&${indent}`);
+    }
+    const indentSize = indent ? '2' : '1'; // root is at -1
+    // Leading | or > is added later
+    let header = (startWithSpace ? indentSize : '') + chomp;
+    if (comment) {
+        header += ' ' + commentString(comment.replace(/ ?[\r\n]+/g, ' '));
+        if (onComment)
+            onComment();
+    }
+    if (!literal) {
+        const foldedValue = value
+            .replace(/\n+/g, '\n$&')
+            .replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, '$1$2') // more-indented lines aren't folded
+            //                ^ more-ind. ^ empty     ^ capture next empty lines only at end of indent
+            .replace(/\n+/g, `$&${indent}`);
+        let literalFallback = false;
+        const foldOptions = getFoldOptions(ctx, true);
+        if (blockQuote !== 'folded' && type !== Scalar.BLOCK_FOLDED) {
+            foldOptions.onOverflow = () => {
+                literalFallback = true;
+            };
+        }
+        const body = foldFlowLines(`${start}${foldedValue}${end}`, indent, FOLD_BLOCK, foldOptions);
+        if (!literalFallback)
+            return `>${header}\n${indent}${body}`;
+    }
+    value = value.replace(/\n+/g, `$&${indent}`);
+    return `|${header}\n${indent}${start}${value}${end}`;
+}
+function plainString(item, ctx, onComment, onChompKeep) {
+    const { type, value } = item;
+    const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;
+    if ((implicitKey && value.includes('\n')) ||
+        (inFlow && /[[\]{},]/.test(value))) {
+        return quotedString(value, ctx);
+    }
+    if (/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) {
+        // not allowed:
+        // - '-' or '?'
+        // - start with an indicator character (except [?:-]) or /[?-] /
+        // - '\n ', ': ' or ' \n' anywhere
+        // - '#' not preceded by a non-space char
+        // - end with ' ' or ':'
+        return implicitKey || inFlow || !value.includes('\n')
+            ? quotedString(value, ctx)
+            : blockString(item, ctx, onComment, onChompKeep);
+    }
+    if (!implicitKey &&
+        !inFlow &&
+        type !== Scalar.PLAIN &&
+        value.includes('\n')) {
+        // Where allowed & type not set explicitly, prefer block style for multiline strings
+        return blockString(item, ctx, onComment, onChompKeep);
+    }
+    if (containsDocumentMarker(value)) {
+        if (indent === '') {
+            ctx.forceBlockIndent = true;
+            return blockString(item, ctx, onComment, onChompKeep);
+        }
+        else if (implicitKey && indent === indentStep) {
+            return quotedString(value, ctx);
+        }
+    }
+    const str = value.replace(/\n+/g, `$&\n${indent}`);
+    // Verify that output will be parsed as a string, as e.g. plain numbers and
+    // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),
+    // and others in v1.1.
+    if (actualString) {
+        const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);
+        const { compat, tags } = ctx.doc.schema;
+        if (tags.some(test) || compat?.some(test))
+            return quotedString(value, ctx);
+    }
+    return implicitKey
+        ? str
+        : foldFlowLines(str, indent, FOLD_FLOW, getFoldOptions(ctx, false));
+}
+function stringifyString(item, ctx, onComment, onChompKeep) {
+    const { implicitKey, inFlow } = ctx;
+    const ss = typeof item.value === 'string'
+        ? item
+        : Object.assign({}, item, { value: String(item.value) });
+    let { type } = item;
+    if (type !== Scalar.QUOTE_DOUBLE) {
+        // force double quotes on control characters & unpaired surrogates
+        if (/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(ss.value))
+            type = Scalar.QUOTE_DOUBLE;
+    }
+    const _stringify = (_type) => {
+        switch (_type) {
+            case Scalar.BLOCK_FOLDED:
+            case Scalar.BLOCK_LITERAL:
+                return implicitKey || inFlow
+                    ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers
+                    : blockString(ss, ctx, onComment, onChompKeep);
+            case Scalar.QUOTE_DOUBLE:
+                return doubleQuotedString(ss.value, ctx);
+            case Scalar.QUOTE_SINGLE:
+                return singleQuotedString(ss.value, ctx);
+            case Scalar.PLAIN:
+                return plainString(ss, ctx, onComment, onChompKeep);
+            default:
+                return null;
+        }
+    };
+    let res = _stringify(type);
+    if (res === null) {
+        const { defaultKeyType, defaultStringType } = ctx.options;
+        const t = (implicitKey && defaultKeyType) || defaultStringType;
+        res = _stringify(t);
+        if (res === null)
+            throw new Error(`Unsupported default string type ${t}`);
+    }
+    return res;
+}
+
+export { stringifyString };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/util.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/util.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/util.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,11 @@
+export { createNode } from './doc/createNode.js';
+export { debug, warn } from './log.js';
+export { createPair } from './nodes/Pair.js';
+export { toJS } from './nodes/toJS.js';
+export { findPair } from './nodes/YAMLMap.js';
+export { map as mapTag } from './schema/common/map.js';
+export { seq as seqTag } from './schema/common/seq.js';
+export { string as stringTag } from './schema/common/string.js';
+export { foldFlowLines } from './stringify/foldFlowLines.js';
+export { stringifyNumber } from './stringify/stringifyNumber.js';
+export { stringifyString } from './stringify/stringifyString.js';
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/visit.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/visit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/dist/visit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,233 @@
+import { isDocument, isNode, isPair, isCollection, isMap, isSeq, isScalar, isAlias } from './nodes/identity.js';
+
+const BREAK = Symbol('break visit');
+const SKIP = Symbol('skip children');
+const REMOVE = Symbol('remove node');
+/**
+ * Apply a visitor to an AST node or document.
+ *
+ * Walks through the tree (depth-first) starting from `node`, calling a
+ * `visitor` function with three arguments:
+ *   - `key`: For sequence values and map `Pair`, the node's index in the
+ *     collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.
+ *     `null` for the root node.
+ *   - `node`: The current node.
+ *   - `path`: The ancestry of the current node.
+ *
+ * The return value of the visitor may be used to control the traversal:
+ *   - `undefined` (default): Do nothing and continue
+ *   - `visit.SKIP`: Do not visit the children of this node, continue with next
+ *     sibling
+ *   - `visit.BREAK`: Terminate traversal completely
+ *   - `visit.REMOVE`: Remove the current node, then continue with the next one
+ *   - `Node`: Replace the current node, then continue by visiting it
+ *   - `number`: While iterating the items of a sequence or map, set the index
+ *     of the next step. This is useful especially if the index of the current
+ *     node has changed.
+ *
+ * If `visitor` is a single function, it will be called with all values
+ * encountered in the tree, including e.g. `null` values. Alternatively,
+ * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,
+ * `Alias` and `Scalar` node. To define the same visitor function for more than
+ * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)
+ * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most
+ * specific defined one will be used for each node.
+ */
+function visit(node, visitor) {
+    const visitor_ = initVisitor(visitor);
+    if (isDocument(node)) {
+        const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));
+        if (cd === REMOVE)
+            node.contents = null;
+    }
+    else
+        visit_(null, node, visitor_, Object.freeze([]));
+}
+// Without the `as symbol` casts, TS declares these in the `visit`
+// namespace using `var`, but then complains about that because
+// `unique symbol` must be `const`.
+/** Terminate visit traversal completely */
+visit.BREAK = BREAK;
+/** Do not visit the children of the current node */
+visit.SKIP = SKIP;
+/** Remove the current node */
+visit.REMOVE = REMOVE;
+function visit_(key, node, visitor, path) {
+    const ctrl = callVisitor(key, node, visitor, path);
+    if (isNode(ctrl) || isPair(ctrl)) {
+        replaceNode(key, path, ctrl);
+        return visit_(key, ctrl, visitor, path);
+    }
+    if (typeof ctrl !== 'symbol') {
+        if (isCollection(node)) {
+            path = Object.freeze(path.concat(node));
+            for (let i = 0; i < node.items.length; ++i) {
+                const ci = visit_(i, node.items[i], visitor, path);
+                if (typeof ci === 'number')
+                    i = ci - 1;
+                else if (ci === BREAK)
+                    return BREAK;
+                else if (ci === REMOVE) {
+                    node.items.splice(i, 1);
+                    i -= 1;
+                }
+            }
+        }
+        else if (isPair(node)) {
+            path = Object.freeze(path.concat(node));
+            const ck = visit_('key', node.key, visitor, path);
+            if (ck === BREAK)
+                return BREAK;
+            else if (ck === REMOVE)
+                node.key = null;
+            const cv = visit_('value', node.value, visitor, path);
+            if (cv === BREAK)
+                return BREAK;
+            else if (cv === REMOVE)
+                node.value = null;
+        }
+    }
+    return ctrl;
+}
+/**
+ * Apply an async visitor to an AST node or document.
+ *
+ * Walks through the tree (depth-first) starting from `node`, calling a
+ * `visitor` function with three arguments:
+ *   - `key`: For sequence values and map `Pair`, the node's index in the
+ *     collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.
+ *     `null` for the root node.
+ *   - `node`: The current node.
+ *   - `path`: The ancestry of the current node.
+ *
+ * The return value of the visitor may be used to control the traversal:
+ *   - `Promise`: Must resolve to one of the following values
+ *   - `undefined` (default): Do nothing and continue
+ *   - `visit.SKIP`: Do not visit the children of this node, continue with next
+ *     sibling
+ *   - `visit.BREAK`: Terminate traversal completely
+ *   - `visit.REMOVE`: Remove the current node, then continue with the next one
+ *   - `Node`: Replace the current node, then continue by visiting it
+ *   - `number`: While iterating the items of a sequence or map, set the index
+ *     of the next step. This is useful especially if the index of the current
+ *     node has changed.
+ *
+ * If `visitor` is a single function, it will be called with all values
+ * encountered in the tree, including e.g. `null` values. Alternatively,
+ * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,
+ * `Alias` and `Scalar` node. To define the same visitor function for more than
+ * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)
+ * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most
+ * specific defined one will be used for each node.
+ */
+async function visitAsync(node, visitor) {
+    const visitor_ = initVisitor(visitor);
+    if (isDocument(node)) {
+        const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));
+        if (cd === REMOVE)
+            node.contents = null;
+    }
+    else
+        await visitAsync_(null, node, visitor_, Object.freeze([]));
+}
+// Without the `as symbol` casts, TS declares these in the `visit`
+// namespace using `var`, but then complains about that because
+// `unique symbol` must be `const`.
+/** Terminate visit traversal completely */
+visitAsync.BREAK = BREAK;
+/** Do not visit the children of the current node */
+visitAsync.SKIP = SKIP;
+/** Remove the current node */
+visitAsync.REMOVE = REMOVE;
+async function visitAsync_(key, node, visitor, path) {
+    const ctrl = await callVisitor(key, node, visitor, path);
+    if (isNode(ctrl) || isPair(ctrl)) {
+        replaceNode(key, path, ctrl);
+        return visitAsync_(key, ctrl, visitor, path);
+    }
+    if (typeof ctrl !== 'symbol') {
+        if (isCollection(node)) {
+            path = Object.freeze(path.concat(node));
+            for (let i = 0; i < node.items.length; ++i) {
+                const ci = await visitAsync_(i, node.items[i], visitor, path);
+                if (typeof ci === 'number')
+                    i = ci - 1;
+                else if (ci === BREAK)
+                    return BREAK;
+                else if (ci === REMOVE) {
+                    node.items.splice(i, 1);
+                    i -= 1;
+                }
+            }
+        }
+        else if (isPair(node)) {
+            path = Object.freeze(path.concat(node));
+            const ck = await visitAsync_('key', node.key, visitor, path);
+            if (ck === BREAK)
+                return BREAK;
+            else if (ck === REMOVE)
+                node.key = null;
+            const cv = await visitAsync_('value', node.value, visitor, path);
+            if (cv === BREAK)
+                return BREAK;
+            else if (cv === REMOVE)
+                node.value = null;
+        }
+    }
+    return ctrl;
+}
+function initVisitor(visitor) {
+    if (typeof visitor === 'object' &&
+        (visitor.Collection || visitor.Node || visitor.Value)) {
+        return Object.assign({
+            Alias: visitor.Node,
+            Map: visitor.Node,
+            Scalar: visitor.Node,
+            Seq: visitor.Node
+        }, visitor.Value && {
+            Map: visitor.Value,
+            Scalar: visitor.Value,
+            Seq: visitor.Value
+        }, visitor.Collection && {
+            Map: visitor.Collection,
+            Seq: visitor.Collection
+        }, visitor);
+    }
+    return visitor;
+}
+function callVisitor(key, node, visitor, path) {
+    if (typeof visitor === 'function')
+        return visitor(key, node, path);
+    if (isMap(node))
+        return visitor.Map?.(key, node, path);
+    if (isSeq(node))
+        return visitor.Seq?.(key, node, path);
+    if (isPair(node))
+        return visitor.Pair?.(key, node, path);
+    if (isScalar(node))
+        return visitor.Scalar?.(key, node, path);
+    if (isAlias(node))
+        return visitor.Alias?.(key, node, path);
+    return undefined;
+}
+function replaceNode(key, path, node) {
+    const parent = path[path.length - 1];
+    if (isCollection(parent)) {
+        parent.items[key] = node;
+    }
+    else if (isPair(parent)) {
+        if (key === 'key')
+            parent.key = node;
+        else
+            parent.value = node;
+    }
+    else if (isDocument(parent)) {
+        parent.contents = node;
+    }
+    else {
+        const pt = isAlias(parent) ? 'alias' : 'scalar';
+        throw new Error(`Cannot replace node with ${pt} parent`);
+    }
+}
+
+export { visit, visitAsync };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/index.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,5 @@
+// `export * as default from ...` fails on Webpack v4
+// https://github.com/eemeli/yaml/issues/228
+import * as YAML from './dist/index.js'
+export default YAML
+export * from './dist/index.js'
Index: frontend/node_modules/tailwindcss/node_modules/yaml/browser/package.json
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/browser/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/browser/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+{
+  "type": "module"
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/cli.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/cli.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/cli.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,8 @@
+export declare const help = "yaml: A command-line YAML processor and inspector\n\nReads stdin and writes output to stdout and errors & warnings to stderr.\n\nUsage:\n  yaml          Process a YAML stream, outputting it as YAML\n  yaml cst      Parse the CST of a YAML stream\n  yaml lex      Parse the lexical tokens of a YAML stream\n  yaml valid    Validate a YAML stream, returning 0 on success\n\nOptions:\n  --help, -h    Show this message.\n  --json, -j    Output JSON.\n  --indent 2    Output pretty-printed data, indented by the given number of spaces.\n  --merge, -m   Enable support for \"<<\" merge keys.\n\nAdditional options for bare \"yaml\" command:\n  --doc, -d     Output pretty-printed JS Document objects.\n  --single, -1  Require the input to consist of a single YAML document.\n  --strict, -s  Stop on errors.\n  --visit, -v   Apply a visitor to each document (requires a path to import)\n  --yaml 1.1    Set the YAML version. (default: 1.2)";
+export declare class UserError extends Error {
+    static ARGS: number;
+    static SINGLE: number;
+    code: number;
+    constructor(code: number, message: string);
+}
+export declare function cli(stdin: NodeJS.ReadableStream, done: (error?: Error) => void, argv?: string[]): Promise<void>;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/cli.mjs
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/cli.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/cli.mjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,201 @@
+import { resolve } from 'path';
+import { parseArgs } from 'util';
+import { prettyToken } from './parse/cst.js';
+import { Lexer } from './parse/lexer.js';
+import { Parser } from './parse/parser.js';
+import { Composer } from './compose/composer.js';
+import { LineCounter } from './parse/line-counter.js';
+import { prettifyError } from './errors.js';
+import { visit } from './visit.js';
+
+const help = `\
+yaml: A command-line YAML processor and inspector
+
+Reads stdin and writes output to stdout and errors & warnings to stderr.
+
+Usage:
+  yaml          Process a YAML stream, outputting it as YAML
+  yaml cst      Parse the CST of a YAML stream
+  yaml lex      Parse the lexical tokens of a YAML stream
+  yaml valid    Validate a YAML stream, returning 0 on success
+
+Options:
+  --help, -h    Show this message.
+  --json, -j    Output JSON.
+  --indent 2    Output pretty-printed data, indented by the given number of spaces.
+  --merge, -m   Enable support for "<<" merge keys.
+
+Additional options for bare "yaml" command:
+  --doc, -d     Output pretty-printed JS Document objects.
+  --single, -1  Require the input to consist of a single YAML document.
+  --strict, -s  Stop on errors.
+  --visit, -v   Apply a visitor to each document (requires a path to import)
+  --yaml 1.1    Set the YAML version. (default: 1.2)`;
+class UserError extends Error {
+    constructor(code, message) {
+        super(`Error: ${message}`);
+        this.code = code;
+    }
+}
+UserError.ARGS = 2;
+UserError.SINGLE = 3;
+async function cli(stdin, done, argv) {
+    let args;
+    try {
+        args = parseArgs({
+            args: argv,
+            allowPositionals: true,
+            options: {
+                doc: { type: 'boolean', short: 'd' },
+                help: { type: 'boolean', short: 'h' },
+                indent: { type: 'string', short: 'i' },
+                merge: { type: 'boolean', short: 'm' },
+                json: { type: 'boolean', short: 'j' },
+                single: { type: 'boolean', short: '1' },
+                strict: { type: 'boolean', short: 's' },
+                visit: { type: 'string', short: 'v' },
+                yaml: { type: 'string', default: '1.2' }
+            }
+        });
+    }
+    catch (error) {
+        return done(new UserError(UserError.ARGS, error.message));
+    }
+    const { positionals: [mode], values: opt } = args;
+    let indent = Number(opt.indent);
+    stdin.setEncoding('utf-8');
+    // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
+    switch (opt.help || mode) {
+        /* istanbul ignore next */
+        case true: // --help
+            console.log(help);
+            break;
+        case 'lex': {
+            const lexer = new Lexer();
+            const data = [];
+            const add = (tok) => {
+                if (opt.json)
+                    data.push(tok);
+                else
+                    console.log(prettyToken(tok));
+            };
+            stdin.on('data', (chunk) => {
+                for (const tok of lexer.lex(chunk, true))
+                    add(tok);
+            });
+            stdin.on('end', () => {
+                for (const tok of lexer.lex('', false))
+                    add(tok);
+                if (opt.json)
+                    console.log(JSON.stringify(data, null, indent));
+                done();
+            });
+            break;
+        }
+        case 'cst': {
+            const parser = new Parser();
+            const data = [];
+            const add = (tok) => {
+                if (opt.json)
+                    data.push(tok);
+                else
+                    console.dir(tok, { depth: null });
+            };
+            stdin.on('data', (chunk) => {
+                for (const tok of parser.parse(chunk, true))
+                    add(tok);
+            });
+            stdin.on('end', () => {
+                for (const tok of parser.parse('', false))
+                    add(tok);
+                if (opt.json)
+                    console.log(JSON.stringify(data, null, indent));
+                done();
+            });
+            break;
+        }
+        case undefined:
+        case 'valid': {
+            const lineCounter = new LineCounter();
+            const parser = new Parser(lineCounter.addNewLine);
+            // @ts-expect-error Version is validated at runtime
+            const composer = new Composer({ version: opt.yaml, merge: opt.merge });
+            const visitor = opt.visit
+                ? (await import(resolve(opt.visit))).default
+                : null;
+            let source = '';
+            let hasDoc = false;
+            let reqDocEnd = false;
+            const data = [];
+            const add = (doc) => {
+                if (hasDoc && opt.single) {
+                    return done(new UserError(UserError.SINGLE, 'Input stream contains multiple documents'));
+                }
+                for (const error of doc.errors) {
+                    prettifyError(source, lineCounter)(error);
+                    if (opt.strict || mode === 'valid')
+                        return done(error);
+                    console.error(error);
+                }
+                for (const warning of doc.warnings) {
+                    prettifyError(source, lineCounter)(warning);
+                    console.error(warning);
+                }
+                if (visitor)
+                    visit(doc, visitor);
+                if (mode === 'valid')
+                    doc.toJS();
+                else if (opt.json)
+                    data.push(doc);
+                else if (opt.doc) {
+                    Object.defineProperties(doc, {
+                        options: { enumerable: false },
+                        schema: { enumerable: false }
+                    });
+                    console.dir(doc, { depth: null });
+                }
+                else {
+                    if (reqDocEnd)
+                        console.log('...');
+                    try {
+                        indent || (indent = 2);
+                        const str = doc.toString({ indent });
+                        console.log(str.endsWith('\n') ? str.slice(0, -1) : str);
+                    }
+                    catch (error) {
+                        done(error);
+                    }
+                }
+                hasDoc = true;
+                reqDocEnd = !doc.directives?.docEnd;
+            };
+            stdin.on('data', (chunk) => {
+                source += chunk;
+                for (const tok of parser.parse(chunk, true)) {
+                    for (const doc of composer.next(tok))
+                        add(doc);
+                }
+            });
+            stdin.on('end', () => {
+                for (const tok of parser.parse('', false)) {
+                    for (const doc of composer.next(tok))
+                        add(doc);
+                }
+                for (const doc of composer.end(false))
+                    add(doc);
+                if (opt.single && !hasDoc) {
+                    return done(new UserError(UserError.SINGLE, 'Input stream contained no documents'));
+                }
+                if (mode !== 'valid' && opt.json) {
+                    console.log(JSON.stringify(opt.single ? data[0] : data, null, indent));
+                }
+                done();
+            });
+            break;
+        }
+        default:
+            done(new UserError(UserError.ARGS, `Unknown command: ${JSON.stringify(mode)}`));
+    }
+}
+
+export { UserError, cli, help };
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-collection.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-collection.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-collection.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,11 @@
+import type { ParsedNode } from '../nodes/Node';
+import type { BlockMap, BlockSequence, FlowCollection, SourceToken } from '../parse/cst';
+import type { ComposeContext, ComposeNode } from './compose-node';
+import type { ComposeErrorHandler } from './composer';
+interface Props {
+    anchor: SourceToken | null;
+    tag: SourceToken | null;
+    newlineAfterProp: SourceToken | null;
+}
+export declare function composeCollection(CN: ComposeNode, ctx: ComposeContext, token: BlockMap | BlockSequence | FlowCollection, props: Props, onError: ComposeErrorHandler): ParsedNode;
+export {};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-collection.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,90 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+var Scalar = require('../nodes/Scalar.js');
+var YAMLMap = require('../nodes/YAMLMap.js');
+var YAMLSeq = require('../nodes/YAMLSeq.js');
+var resolveBlockMap = require('./resolve-block-map.js');
+var resolveBlockSeq = require('./resolve-block-seq.js');
+var resolveFlowCollection = require('./resolve-flow-collection.js');
+
+function resolveCollection(CN, ctx, token, onError, tagName, tag) {
+    const coll = token.type === 'block-map'
+        ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)
+        : token.type === 'block-seq'
+            ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)
+            : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);
+    const Coll = coll.constructor;
+    // If we got a tagName matching the class, or the tag name is '!',
+    // then use the tagName from the node class used to create it.
+    if (tagName === '!' || tagName === Coll.tagName) {
+        coll.tag = Coll.tagName;
+        return coll;
+    }
+    if (tagName)
+        coll.tag = tagName;
+    return coll;
+}
+function composeCollection(CN, ctx, token, props, onError) {
+    const tagToken = props.tag;
+    const tagName = !tagToken
+        ? null
+        : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));
+    if (token.type === 'block-seq') {
+        const { anchor, newlineAfterProp: nl } = props;
+        const lastProp = anchor && tagToken
+            ? anchor.offset > tagToken.offset
+                ? anchor
+                : tagToken
+            : (anchor ?? tagToken);
+        if (lastProp && (!nl || nl.offset < lastProp.offset)) {
+            const message = 'Missing newline after block sequence props';
+            onError(lastProp, 'MISSING_CHAR', message);
+        }
+    }
+    const expType = token.type === 'block-map'
+        ? 'map'
+        : token.type === 'block-seq'
+            ? 'seq'
+            : token.start.source === '{'
+                ? 'map'
+                : 'seq';
+    // shortcut: check if it's a generic YAMLMap or YAMLSeq
+    // before jumping into the custom tag logic.
+    if (!tagToken ||
+        !tagName ||
+        tagName === '!' ||
+        (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||
+        (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {
+        return resolveCollection(CN, ctx, token, onError, tagName);
+    }
+    let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);
+    if (!tag) {
+        const kt = ctx.schema.knownTags[tagName];
+        if (kt?.collection === expType) {
+            ctx.schema.tags.push(Object.assign({}, kt, { default: false }));
+            tag = kt;
+        }
+        else {
+            if (kt) {
+                onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);
+            }
+            else {
+                onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);
+            }
+            return resolveCollection(CN, ctx, token, onError, tagName);
+        }
+    }
+    const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);
+    const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;
+    const node = identity.isNode(res)
+        ? res
+        : new Scalar.Scalar(res);
+    node.range = coll.range;
+    node.tag = tagName;
+    if (tag?.format)
+        node.format = tag.format;
+    return node;
+}
+
+exports.composeCollection = composeCollection;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-doc.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-doc.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-doc.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,7 @@
+import type { Directives } from '../doc/directives';
+import { Document } from '../doc/Document';
+import type { ParsedNode } from '../nodes/Node';
+import type { DocumentOptions, ParseOptions, SchemaOptions } from '../options';
+import type * as CST from '../parse/cst';
+import type { ComposeErrorHandler } from './composer';
+export declare function composeDoc<Contents extends ParsedNode = ParsedNode, Strict extends boolean = true>(options: ParseOptions & DocumentOptions & SchemaOptions, directives: Directives, { offset, start, value, end }: CST.Document, onError: ComposeErrorHandler): Document.Parsed<Contents, Strict>;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-doc.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-doc.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-doc.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,45 @@
+'use strict';
+
+var Document = require('../doc/Document.js');
+var composeNode = require('./compose-node.js');
+var resolveEnd = require('./resolve-end.js');
+var resolveProps = require('./resolve-props.js');
+
+function composeDoc(options, directives, { offset, start, value, end }, onError) {
+    const opts = Object.assign({ _directives: directives }, options);
+    const doc = new Document.Document(undefined, opts);
+    const ctx = {
+        atKey: false,
+        atRoot: true,
+        directives: doc.directives,
+        options: doc.options,
+        schema: doc.schema
+    };
+    const props = resolveProps.resolveProps(start, {
+        indicator: 'doc-start',
+        next: value ?? end?.[0],
+        offset,
+        onError,
+        parentIndent: 0,
+        startOnNewline: true
+    });
+    if (props.found) {
+        doc.directives.docStart = true;
+        if (value &&
+            (value.type === 'block-map' || value.type === 'block-seq') &&
+            !props.hasNewline)
+            onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');
+    }
+    // @ts-expect-error If Contents is set, let's trust the user
+    doc.contents = value
+        ? composeNode.composeNode(ctx, value, props, onError)
+        : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);
+    const contentEnd = doc.contents.range[2];
+    const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);
+    if (re.comment)
+        doc.comment = re.comment;
+    doc.range = [offset, contentEnd, re.offset];
+    return doc;
+}
+
+exports.composeDoc = composeDoc;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-node.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-node.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-node.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,29 @@
+import type { Directives } from '../doc/directives';
+import type { ParsedNode } from '../nodes/Node';
+import type { ParseOptions } from '../options';
+import type { SourceToken, Token } from '../parse/cst';
+import type { Schema } from '../schema/Schema';
+import type { ComposeErrorHandler } from './composer';
+export interface ComposeContext {
+    atKey: boolean;
+    atRoot: boolean;
+    directives: Directives;
+    options: Readonly<Required<Omit<ParseOptions, 'lineCounter'>>>;
+    schema: Readonly<Schema>;
+}
+interface Props {
+    spaceBefore: boolean;
+    comment: string;
+    anchor: SourceToken | null;
+    tag: SourceToken | null;
+    newlineAfterProp: SourceToken | null;
+    end: number;
+}
+declare const CN: {
+    composeNode: typeof composeNode;
+    composeEmptyNode: typeof composeEmptyNode;
+};
+export type ComposeNode = typeof CN;
+export declare function composeNode(ctx: ComposeContext, token: Token, props: Props, onError: ComposeErrorHandler): ParsedNode;
+export declare function composeEmptyNode(ctx: ComposeContext, offset: number, before: Token[] | undefined, pos: number | null, { spaceBefore, comment, anchor, tag, end }: Props, onError: ComposeErrorHandler): import('../index').Scalar.Parsed;
+export {};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-node.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-node.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-node.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,112 @@
+'use strict';
+
+var Alias = require('../nodes/Alias.js');
+var identity = require('../nodes/identity.js');
+var composeCollection = require('./compose-collection.js');
+var composeScalar = require('./compose-scalar.js');
+var resolveEnd = require('./resolve-end.js');
+var utilEmptyScalarPosition = require('./util-empty-scalar-position.js');
+
+const CN = { composeNode, composeEmptyNode };
+function composeNode(ctx, token, props, onError) {
+    const atKey = ctx.atKey;
+    const { spaceBefore, comment, anchor, tag } = props;
+    let node;
+    let isSrcToken = true;
+    switch (token.type) {
+        case 'alias':
+            node = composeAlias(ctx, token, onError);
+            if (anchor || tag)
+                onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');
+            break;
+        case 'scalar':
+        case 'single-quoted-scalar':
+        case 'double-quoted-scalar':
+        case 'block-scalar':
+            node = composeScalar.composeScalar(ctx, token, tag, onError);
+            if (anchor)
+                node.anchor = anchor.source.substring(1);
+            break;
+        case 'block-map':
+        case 'block-seq':
+        case 'flow-collection':
+            try {
+                node = composeCollection.composeCollection(CN, ctx, token, props, onError);
+                if (anchor)
+                    node.anchor = anchor.source.substring(1);
+            }
+            catch (error) {
+                // Almost certainly here due to a stack overflow
+                const message = error instanceof Error ? error.message : String(error);
+                onError(token, 'RESOURCE_EXHAUSTION', message);
+            }
+            break;
+        default: {
+            const message = token.type === 'error'
+                ? token.message
+                : `Unsupported token (type: ${token.type})`;
+            onError(token, 'UNEXPECTED_TOKEN', message);
+            isSrcToken = false;
+        }
+    }
+    node ?? (node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError));
+    if (anchor && node.anchor === '')
+        onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');
+    if (atKey &&
+        ctx.options.stringKeys &&
+        (!identity.isScalar(node) ||
+            typeof node.value !== 'string' ||
+            (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {
+        const msg = 'With stringKeys, all keys must be strings';
+        onError(tag ?? token, 'NON_STRING_KEY', msg);
+    }
+    if (spaceBefore)
+        node.spaceBefore = true;
+    if (comment) {
+        if (token.type === 'scalar' && token.source === '')
+            node.comment = comment;
+        else
+            node.commentBefore = comment;
+    }
+    // @ts-expect-error Type checking misses meaning of isSrcToken
+    if (ctx.options.keepSourceTokens && isSrcToken)
+        node.srcToken = token;
+    return node;
+}
+function composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {
+    const token = {
+        type: 'scalar',
+        offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),
+        indent: -1,
+        source: ''
+    };
+    const node = composeScalar.composeScalar(ctx, token, tag, onError);
+    if (anchor) {
+        node.anchor = anchor.source.substring(1);
+        if (node.anchor === '')
+            onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');
+    }
+    if (spaceBefore)
+        node.spaceBefore = true;
+    if (comment) {
+        node.comment = comment;
+        node.range[2] = end;
+    }
+    return node;
+}
+function composeAlias({ options }, { offset, source, end }, onError) {
+    const alias = new Alias.Alias(source.substring(1));
+    if (alias.source === '')
+        onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');
+    if (alias.source.endsWith(':'))
+        onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);
+    const valueEnd = offset + source.length;
+    const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);
+    alias.range = [offset, valueEnd, re.offset];
+    if (re.comment)
+        alias.comment = re.comment;
+    return alias;
+}
+
+exports.composeEmptyNode = composeEmptyNode;
+exports.composeNode = composeNode;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-scalar.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,5 @@
+import { Scalar } from '../nodes/Scalar';
+import type { BlockScalar, FlowScalar, SourceToken } from '../parse/cst';
+import type { ComposeContext } from './compose-node';
+import type { ComposeErrorHandler } from './composer';
+export declare function composeScalar(ctx: ComposeContext, token: FlowScalar | BlockScalar, tagToken: SourceToken | null, onError: ComposeErrorHandler): Scalar.Parsed;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/compose-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,88 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+var Scalar = require('../nodes/Scalar.js');
+var resolveBlockScalar = require('./resolve-block-scalar.js');
+var resolveFlowScalar = require('./resolve-flow-scalar.js');
+
+function composeScalar(ctx, token, tagToken, onError) {
+    const { value, type, comment, range } = token.type === 'block-scalar'
+        ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)
+        : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);
+    const tagName = tagToken
+        ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))
+        : null;
+    let tag;
+    if (ctx.options.stringKeys && ctx.atKey) {
+        tag = ctx.schema[identity.SCALAR];
+    }
+    else if (tagName)
+        tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);
+    else if (token.type === 'scalar')
+        tag = findScalarTagByTest(ctx, value, token, onError);
+    else
+        tag = ctx.schema[identity.SCALAR];
+    let scalar;
+    try {
+        const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);
+        scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);
+    }
+    catch (error) {
+        const msg = error instanceof Error ? error.message : String(error);
+        onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);
+        scalar = new Scalar.Scalar(value);
+    }
+    scalar.range = range;
+    scalar.source = value;
+    if (type)
+        scalar.type = type;
+    if (tagName)
+        scalar.tag = tagName;
+    if (tag.format)
+        scalar.format = tag.format;
+    if (comment)
+        scalar.comment = comment;
+    return scalar;
+}
+function findScalarTagByName(schema, value, tagName, tagToken, onError) {
+    if (tagName === '!')
+        return schema[identity.SCALAR]; // non-specific tag
+    const matchWithTest = [];
+    for (const tag of schema.tags) {
+        if (!tag.collection && tag.tag === tagName) {
+            if (tag.default && tag.test)
+                matchWithTest.push(tag);
+            else
+                return tag;
+        }
+    }
+    for (const tag of matchWithTest)
+        if (tag.test?.test(value))
+            return tag;
+    const kt = schema.knownTags[tagName];
+    if (kt && !kt.collection) {
+        // Ensure that the known tag is available for stringifying,
+        // but does not get used by default.
+        schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));
+        return kt;
+    }
+    onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');
+    return schema[identity.SCALAR];
+}
+function findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {
+    const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&
+        tag.test?.test(value)) || schema[identity.SCALAR];
+    if (schema.compat) {
+        const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??
+            schema[identity.SCALAR];
+        if (tag.tag !== compat.tag) {
+            const ts = directives.tagString(tag.tag);
+            const cs = directives.tagString(compat.tag);
+            const msg = `Value may be parsed as either ${ts} or ${cs}`;
+            onError(token, 'TAG_RESOLVE_FAILED', msg, true);
+        }
+    }
+    return tag;
+}
+
+exports.composeScalar = composeScalar;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/composer.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/composer.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/composer.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,63 @@
+import { Directives } from '../doc/directives';
+import { Document } from '../doc/Document';
+import type { ErrorCode } from '../errors';
+import { YAMLParseError, YAMLWarning } from '../errors';
+import type { ParsedNode, Range } from '../nodes/Node';
+import type { DocumentOptions, ParseOptions, SchemaOptions } from '../options';
+import type { Token } from '../parse/cst';
+type ErrorSource = number | [number, number] | Range | {
+    offset: number;
+    source?: string;
+};
+export type ComposeErrorHandler = (source: ErrorSource, code: ErrorCode, message: string, warning?: boolean) => void;
+/**
+ * Compose a stream of CST nodes into a stream of YAML Documents.
+ *
+ * ```ts
+ * import { Composer, Parser } from 'yaml'
+ *
+ * const src: string = ...
+ * const tokens = new Parser().parse(src)
+ * const docs = new Composer().compose(tokens)
+ * ```
+ */
+export declare class Composer<Contents extends ParsedNode = ParsedNode, Strict extends boolean = true> {
+    private directives;
+    private doc;
+    private options;
+    private atDirectives;
+    private prelude;
+    private errors;
+    private warnings;
+    constructor(options?: ParseOptions & DocumentOptions & SchemaOptions);
+    private onError;
+    private decorate;
+    /**
+     * Current stream status information.
+     *
+     * Mostly useful at the end of input for an empty stream.
+     */
+    streamInfo(): {
+        comment: string;
+        directives: Directives;
+        errors: YAMLParseError[];
+        warnings: YAMLWarning[];
+    };
+    /**
+     * Compose tokens into documents.
+     *
+     * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.
+     * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.
+     */
+    compose(tokens: Iterable<Token>, forceDoc?: boolean, endOffset?: number): Generator<Document.Parsed<Contents, Strict>, void, unknown>;
+    /** Advance the composer by one CST token. */
+    next(token: Token): Generator<Document.Parsed<Contents, Strict>, void, unknown>;
+    /**
+     * Call at end of input to yield any remaining document.
+     *
+     * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.
+     * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.
+     */
+    end(forceDoc?: boolean, endOffset?: number): Generator<Document.Parsed<Contents, Strict>, void, unknown>;
+}
+export {};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/composer.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/composer.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/composer.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,224 @@
+'use strict';
+
+var node_process = require('process');
+var directives = require('../doc/directives.js');
+var Document = require('../doc/Document.js');
+var errors = require('../errors.js');
+var identity = require('../nodes/identity.js');
+var composeDoc = require('./compose-doc.js');
+var resolveEnd = require('./resolve-end.js');
+
+function getErrorPos(src) {
+    if (typeof src === 'number')
+        return [src, src + 1];
+    if (Array.isArray(src))
+        return src.length === 2 ? src : [src[0], src[1]];
+    const { offset, source } = src;
+    return [offset, offset + (typeof source === 'string' ? source.length : 1)];
+}
+function parsePrelude(prelude) {
+    let comment = '';
+    let atComment = false;
+    let afterEmptyLine = false;
+    for (let i = 0; i < prelude.length; ++i) {
+        const source = prelude[i];
+        switch (source[0]) {
+            case '#':
+                comment +=
+                    (comment === '' ? '' : afterEmptyLine ? '\n\n' : '\n') +
+                        (source.substring(1) || ' ');
+                atComment = true;
+                afterEmptyLine = false;
+                break;
+            case '%':
+                if (prelude[i + 1]?.[0] !== '#')
+                    i += 1;
+                atComment = false;
+                break;
+            default:
+                // This may be wrong after doc-end, but in that case it doesn't matter
+                if (!atComment)
+                    afterEmptyLine = true;
+                atComment = false;
+        }
+    }
+    return { comment, afterEmptyLine };
+}
+/**
+ * Compose a stream of CST nodes into a stream of YAML Documents.
+ *
+ * ```ts
+ * import { Composer, Parser } from 'yaml'
+ *
+ * const src: string = ...
+ * const tokens = new Parser().parse(src)
+ * const docs = new Composer().compose(tokens)
+ * ```
+ */
+class Composer {
+    constructor(options = {}) {
+        this.doc = null;
+        this.atDirectives = false;
+        this.prelude = [];
+        this.errors = [];
+        this.warnings = [];
+        this.onError = (source, code, message, warning) => {
+            const pos = getErrorPos(source);
+            if (warning)
+                this.warnings.push(new errors.YAMLWarning(pos, code, message));
+            else
+                this.errors.push(new errors.YAMLParseError(pos, code, message));
+        };
+        // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
+        this.directives = new directives.Directives({ version: options.version || '1.2' });
+        this.options = options;
+    }
+    decorate(doc, afterDoc) {
+        const { comment, afterEmptyLine } = parsePrelude(this.prelude);
+        //console.log({ dc: doc.comment, prelude, comment })
+        if (comment) {
+            const dc = doc.contents;
+            if (afterDoc) {
+                doc.comment = doc.comment ? `${doc.comment}\n${comment}` : comment;
+            }
+            else if (afterEmptyLine || doc.directives.docStart || !dc) {
+                doc.commentBefore = comment;
+            }
+            else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {
+                let it = dc.items[0];
+                if (identity.isPair(it))
+                    it = it.key;
+                const cb = it.commentBefore;
+                it.commentBefore = cb ? `${comment}\n${cb}` : comment;
+            }
+            else {
+                const cb = dc.commentBefore;
+                dc.commentBefore = cb ? `${comment}\n${cb}` : comment;
+            }
+        }
+        if (afterDoc) {
+            for (let i = 0; i < this.errors.length; ++i)
+                doc.errors.push(this.errors[i]);
+            for (let i = 0; i < this.warnings.length; ++i)
+                doc.warnings.push(this.warnings[i]);
+        }
+        else {
+            doc.errors = this.errors;
+            doc.warnings = this.warnings;
+        }
+        this.prelude = [];
+        this.errors = [];
+        this.warnings = [];
+    }
+    /**
+     * Current stream status information.
+     *
+     * Mostly useful at the end of input for an empty stream.
+     */
+    streamInfo() {
+        return {
+            comment: parsePrelude(this.prelude).comment,
+            directives: this.directives,
+            errors: this.errors,
+            warnings: this.warnings
+        };
+    }
+    /**
+     * Compose tokens into documents.
+     *
+     * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.
+     * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.
+     */
+    *compose(tokens, forceDoc = false, endOffset = -1) {
+        for (const token of tokens)
+            yield* this.next(token);
+        yield* this.end(forceDoc, endOffset);
+    }
+    /** Advance the composer by one CST token. */
+    *next(token) {
+        if (node_process.env.LOG_STREAM)
+            console.dir(token, { depth: null });
+        switch (token.type) {
+            case 'directive':
+                this.directives.add(token.source, (offset, message, warning) => {
+                    const pos = getErrorPos(token);
+                    pos[0] += offset;
+                    this.onError(pos, 'BAD_DIRECTIVE', message, warning);
+                });
+                this.prelude.push(token.source);
+                this.atDirectives = true;
+                break;
+            case 'document': {
+                const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);
+                if (this.atDirectives && !doc.directives.docStart)
+                    this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');
+                this.decorate(doc, false);
+                if (this.doc)
+                    yield this.doc;
+                this.doc = doc;
+                this.atDirectives = false;
+                break;
+            }
+            case 'byte-order-mark':
+            case 'space':
+                break;
+            case 'comment':
+            case 'newline':
+                this.prelude.push(token.source);
+                break;
+            case 'error': {
+                const msg = token.source
+                    ? `${token.message}: ${JSON.stringify(token.source)}`
+                    : token.message;
+                const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);
+                if (this.atDirectives || !this.doc)
+                    this.errors.push(error);
+                else
+                    this.doc.errors.push(error);
+                break;
+            }
+            case 'doc-end': {
+                if (!this.doc) {
+                    const msg = 'Unexpected doc-end without preceding document';
+                    this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));
+                    break;
+                }
+                this.doc.directives.docEnd = true;
+                const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);
+                this.decorate(this.doc, true);
+                if (end.comment) {
+                    const dc = this.doc.comment;
+                    this.doc.comment = dc ? `${dc}\n${end.comment}` : end.comment;
+                }
+                this.doc.range[2] = end.offset;
+                break;
+            }
+            default:
+                this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));
+        }
+    }
+    /**
+     * Call at end of input to yield any remaining document.
+     *
+     * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.
+     * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.
+     */
+    *end(forceDoc = false, endOffset = -1) {
+        if (this.doc) {
+            this.decorate(this.doc, true);
+            yield this.doc;
+            this.doc = null;
+        }
+        else if (forceDoc) {
+            const opts = Object.assign({ _directives: this.directives }, this.options);
+            const doc = new Document.Document(undefined, opts);
+            if (this.atDirectives)
+                this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');
+            doc.range = [0, endOffset, endOffset];
+            this.decorate(doc, false);
+            yield doc;
+        }
+    }
+}
+
+exports.Composer = Composer;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-map.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-map.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-map.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,6 @@
+import { YAMLMap } from '../nodes/YAMLMap';
+import type { BlockMap } from '../parse/cst';
+import type { CollectionTag } from '../schema/types';
+import type { ComposeContext, ComposeNode } from './compose-node';
+import type { ComposeErrorHandler } from './composer';
+export declare function resolveBlockMap({ composeNode, composeEmptyNode }: ComposeNode, ctx: ComposeContext, bm: BlockMap, onError: ComposeErrorHandler, tag?: CollectionTag): YAMLMap.Parsed;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-map.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-map.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-map.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,117 @@
+'use strict';
+
+var Pair = require('../nodes/Pair.js');
+var YAMLMap = require('../nodes/YAMLMap.js');
+var resolveProps = require('./resolve-props.js');
+var utilContainsNewline = require('./util-contains-newline.js');
+var utilFlowIndentCheck = require('./util-flow-indent-check.js');
+var utilMapIncludes = require('./util-map-includes.js');
+
+const startColMsg = 'All mapping items must start at the same column';
+function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {
+    const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;
+    const map = new NodeClass(ctx.schema);
+    if (ctx.atRoot)
+        ctx.atRoot = false;
+    let offset = bm.offset;
+    let commentEnd = null;
+    for (const collItem of bm.items) {
+        const { start, key, sep, value } = collItem;
+        // key properties
+        const keyProps = resolveProps.resolveProps(start, {
+            indicator: 'explicit-key-ind',
+            next: key ?? sep?.[0],
+            offset,
+            onError,
+            parentIndent: bm.indent,
+            startOnNewline: true
+        });
+        const implicitKey = !keyProps.found;
+        if (implicitKey) {
+            if (key) {
+                if (key.type === 'block-seq')
+                    onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');
+                else if ('indent' in key && key.indent !== bm.indent)
+                    onError(offset, 'BAD_INDENT', startColMsg);
+            }
+            if (!keyProps.anchor && !keyProps.tag && !sep) {
+                commentEnd = keyProps.end;
+                if (keyProps.comment) {
+                    if (map.comment)
+                        map.comment += '\n' + keyProps.comment;
+                    else
+                        map.comment = keyProps.comment;
+                }
+                continue;
+            }
+            if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {
+                onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');
+            }
+        }
+        else if (keyProps.found?.indent !== bm.indent) {
+            onError(offset, 'BAD_INDENT', startColMsg);
+        }
+        // key value
+        ctx.atKey = true;
+        const keyStart = keyProps.end;
+        const keyNode = key
+            ? composeNode(ctx, key, keyProps, onError)
+            : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);
+        if (ctx.schema.compat)
+            utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);
+        ctx.atKey = false;
+        if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))
+            onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');
+        // value properties
+        const valueProps = resolveProps.resolveProps(sep ?? [], {
+            indicator: 'map-value-ind',
+            next: value,
+            offset: keyNode.range[2],
+            onError,
+            parentIndent: bm.indent,
+            startOnNewline: !key || key.type === 'block-scalar'
+        });
+        offset = valueProps.end;
+        if (valueProps.found) {
+            if (implicitKey) {
+                if (value?.type === 'block-map' && !valueProps.hasNewline)
+                    onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');
+                if (ctx.options.strict &&
+                    keyProps.start < valueProps.found.offset - 1024)
+                    onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');
+            }
+            // value value
+            const valueNode = value
+                ? composeNode(ctx, value, valueProps, onError)
+                : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);
+            if (ctx.schema.compat)
+                utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);
+            offset = valueNode.range[2];
+            const pair = new Pair.Pair(keyNode, valueNode);
+            if (ctx.options.keepSourceTokens)
+                pair.srcToken = collItem;
+            map.items.push(pair);
+        }
+        else {
+            // key with no value
+            if (implicitKey)
+                onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');
+            if (valueProps.comment) {
+                if (keyNode.comment)
+                    keyNode.comment += '\n' + valueProps.comment;
+                else
+                    keyNode.comment = valueProps.comment;
+            }
+            const pair = new Pair.Pair(keyNode);
+            if (ctx.options.keepSourceTokens)
+                pair.srcToken = collItem;
+            map.items.push(pair);
+        }
+    }
+    if (commentEnd && commentEnd < offset)
+        onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');
+    map.range = [bm.offset, offset, commentEnd ?? offset];
+    return map;
+}
+
+exports.resolveBlockMap = resolveBlockMap;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,11 @@
+import type { Range } from '../nodes/Node';
+import { Scalar } from '../nodes/Scalar';
+import type { BlockScalar } from '../parse/cst';
+import type { ComposeContext } from './compose-node';
+import type { ComposeErrorHandler } from './composer';
+export declare function resolveBlockScalar(ctx: ComposeContext, scalar: BlockScalar, onError: ComposeErrorHandler): {
+    value: string;
+    type: Scalar.BLOCK_FOLDED | Scalar.BLOCK_LITERAL | null;
+    comment: string;
+    range: Range;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,200 @@
+'use strict';
+
+var Scalar = require('../nodes/Scalar.js');
+
+function resolveBlockScalar(ctx, scalar, onError) {
+    const start = scalar.offset;
+    const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);
+    if (!header)
+        return { value: '', type: null, comment: '', range: [start, start, start] };
+    const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;
+    const lines = scalar.source ? splitLines(scalar.source) : [];
+    // determine the end of content & start of chomping
+    let chompStart = lines.length;
+    for (let i = lines.length - 1; i >= 0; --i) {
+        const content = lines[i][1];
+        if (content === '' || content === '\r')
+            chompStart = i;
+        else
+            break;
+    }
+    // shortcut for empty contents
+    if (chompStart === 0) {
+        const value = header.chomp === '+' && lines.length > 0
+            ? '\n'.repeat(Math.max(1, lines.length - 1))
+            : '';
+        let end = start + header.length;
+        if (scalar.source)
+            end += scalar.source.length;
+        return { value, type, comment: header.comment, range: [start, end, end] };
+    }
+    // find the indentation level to trim from start
+    let trimIndent = scalar.indent + header.indent;
+    let offset = scalar.offset + header.length;
+    let contentStart = 0;
+    for (let i = 0; i < chompStart; ++i) {
+        const [indent, content] = lines[i];
+        if (content === '' || content === '\r') {
+            if (header.indent === 0 && indent.length > trimIndent)
+                trimIndent = indent.length;
+        }
+        else {
+            if (indent.length < trimIndent) {
+                const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';
+                onError(offset + indent.length, 'MISSING_CHAR', message);
+            }
+            if (header.indent === 0)
+                trimIndent = indent.length;
+            contentStart = i;
+            if (trimIndent === 0 && !ctx.atRoot) {
+                const message = 'Block scalar values in collections must be indented';
+                onError(offset, 'BAD_INDENT', message);
+            }
+            break;
+        }
+        offset += indent.length + content.length + 1;
+    }
+    // include trailing more-indented empty lines in content
+    for (let i = lines.length - 1; i >= chompStart; --i) {
+        if (lines[i][0].length > trimIndent)
+            chompStart = i + 1;
+    }
+    let value = '';
+    let sep = '';
+    let prevMoreIndented = false;
+    // leading whitespace is kept intact
+    for (let i = 0; i < contentStart; ++i)
+        value += lines[i][0].slice(trimIndent) + '\n';
+    for (let i = contentStart; i < chompStart; ++i) {
+        let [indent, content] = lines[i];
+        offset += indent.length + content.length + 1;
+        const crlf = content[content.length - 1] === '\r';
+        if (crlf)
+            content = content.slice(0, -1);
+        /* istanbul ignore if already caught in lexer */
+        if (content && indent.length < trimIndent) {
+            const src = header.indent
+                ? 'explicit indentation indicator'
+                : 'first line';
+            const message = `Block scalar lines must not be less indented than their ${src}`;
+            onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);
+            indent = '';
+        }
+        if (type === Scalar.Scalar.BLOCK_LITERAL) {
+            value += sep + indent.slice(trimIndent) + content;
+            sep = '\n';
+        }
+        else if (indent.length > trimIndent || content[0] === '\t') {
+            // more-indented content within a folded block
+            if (sep === ' ')
+                sep = '\n';
+            else if (!prevMoreIndented && sep === '\n')
+                sep = '\n\n';
+            value += sep + indent.slice(trimIndent) + content;
+            sep = '\n';
+            prevMoreIndented = true;
+        }
+        else if (content === '') {
+            // empty line
+            if (sep === '\n')
+                value += '\n';
+            else
+                sep = '\n';
+        }
+        else {
+            value += sep + content;
+            sep = ' ';
+            prevMoreIndented = false;
+        }
+    }
+    switch (header.chomp) {
+        case '-':
+            break;
+        case '+':
+            for (let i = chompStart; i < lines.length; ++i)
+                value += '\n' + lines[i][0].slice(trimIndent);
+            if (value[value.length - 1] !== '\n')
+                value += '\n';
+            break;
+        default:
+            value += '\n';
+    }
+    const end = start + header.length + scalar.source.length;
+    return { value, type, comment: header.comment, range: [start, end, end] };
+}
+function parseBlockScalarHeader({ offset, props }, strict, onError) {
+    /* istanbul ignore if should not happen */
+    if (props[0].type !== 'block-scalar-header') {
+        onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');
+        return null;
+    }
+    const { source } = props[0];
+    const mode = source[0];
+    let indent = 0;
+    let chomp = '';
+    let error = -1;
+    for (let i = 1; i < source.length; ++i) {
+        const ch = source[i];
+        if (!chomp && (ch === '-' || ch === '+'))
+            chomp = ch;
+        else {
+            const n = Number(ch);
+            if (!indent && n)
+                indent = n;
+            else if (error === -1)
+                error = offset + i;
+        }
+    }
+    if (error !== -1)
+        onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);
+    let hasSpace = false;
+    let comment = '';
+    let length = source.length;
+    for (let i = 1; i < props.length; ++i) {
+        const token = props[i];
+        switch (token.type) {
+            case 'space':
+                hasSpace = true;
+            // fallthrough
+            case 'newline':
+                length += token.source.length;
+                break;
+            case 'comment':
+                if (strict && !hasSpace) {
+                    const message = 'Comments must be separated from other tokens by white space characters';
+                    onError(token, 'MISSING_CHAR', message);
+                }
+                length += token.source.length;
+                comment = token.source.substring(1);
+                break;
+            case 'error':
+                onError(token, 'UNEXPECTED_TOKEN', token.message);
+                length += token.source.length;
+                break;
+            /* istanbul ignore next should not happen */
+            default: {
+                const message = `Unexpected token in block scalar header: ${token.type}`;
+                onError(token, 'UNEXPECTED_TOKEN', message);
+                const ts = token.source;
+                if (ts && typeof ts === 'string')
+                    length += ts.length;
+            }
+        }
+    }
+    return { mode, indent, chomp, comment, length };
+}
+/** @returns Array of lines split up as `[indent, content]` */
+function splitLines(source) {
+    const split = source.split(/\n( *)/);
+    const first = split[0];
+    const m = first.match(/^( *)/);
+    const line0 = m?.[1]
+        ? [m[1], first.slice(m[1].length)]
+        : ['', first];
+    const lines = [line0];
+    for (let i = 1; i < split.length; i += 2)
+        lines.push([split[i], split[i + 1]]);
+    return lines;
+}
+
+exports.resolveBlockScalar = resolveBlockScalar;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-seq.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-seq.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-seq.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,6 @@
+import { YAMLSeq } from '../nodes/YAMLSeq';
+import type { BlockSequence } from '../parse/cst';
+import type { CollectionTag } from '../schema/types';
+import type { ComposeContext, ComposeNode } from './compose-node';
+import type { ComposeErrorHandler } from './composer';
+export declare function resolveBlockSeq({ composeNode, composeEmptyNode }: ComposeNode, ctx: ComposeContext, bs: BlockSequence, onError: ComposeErrorHandler, tag?: CollectionTag): YAMLSeq.Parsed;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-seq.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-seq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-block-seq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,51 @@
+'use strict';
+
+var YAMLSeq = require('../nodes/YAMLSeq.js');
+var resolveProps = require('./resolve-props.js');
+var utilFlowIndentCheck = require('./util-flow-indent-check.js');
+
+function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {
+    const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;
+    const seq = new NodeClass(ctx.schema);
+    if (ctx.atRoot)
+        ctx.atRoot = false;
+    if (ctx.atKey)
+        ctx.atKey = false;
+    let offset = bs.offset;
+    let commentEnd = null;
+    for (const { start, value } of bs.items) {
+        const props = resolveProps.resolveProps(start, {
+            indicator: 'seq-item-ind',
+            next: value,
+            offset,
+            onError,
+            parentIndent: bs.indent,
+            startOnNewline: true
+        });
+        if (!props.found) {
+            if (props.anchor || props.tag || value) {
+                if (value?.type === 'block-seq')
+                    onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');
+                else
+                    onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');
+            }
+            else {
+                commentEnd = props.end;
+                if (props.comment)
+                    seq.comment = props.comment;
+                continue;
+            }
+        }
+        const node = value
+            ? composeNode(ctx, value, props, onError)
+            : composeEmptyNode(ctx, props.end, start, null, props, onError);
+        if (ctx.schema.compat)
+            utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);
+        offset = node.range[2];
+        seq.items.push(node);
+    }
+    seq.range = [bs.offset, offset, commentEnd ?? offset];
+    return seq;
+}
+
+exports.resolveBlockSeq = resolveBlockSeq;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-end.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-end.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-end.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,6 @@
+import type { SourceToken } from '../parse/cst';
+import type { ComposeErrorHandler } from './composer';
+export declare function resolveEnd(end: SourceToken[] | undefined, offset: number, reqSpace: boolean, onError: ComposeErrorHandler): {
+    comment: string;
+    offset: number;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-end.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-end.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-end.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,39 @@
+'use strict';
+
+function resolveEnd(end, offset, reqSpace, onError) {
+    let comment = '';
+    if (end) {
+        let hasSpace = false;
+        let sep = '';
+        for (const token of end) {
+            const { source, type } = token;
+            switch (type) {
+                case 'space':
+                    hasSpace = true;
+                    break;
+                case 'comment': {
+                    if (reqSpace && !hasSpace)
+                        onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');
+                    const cb = source.substring(1) || ' ';
+                    if (!comment)
+                        comment = cb;
+                    else
+                        comment += sep + cb;
+                    sep = '';
+                    break;
+                }
+                case 'newline':
+                    if (comment)
+                        sep += source;
+                    hasSpace = true;
+                    break;
+                default:
+                    onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);
+            }
+            offset += source.length;
+        }
+    }
+    return { comment, offset };
+}
+
+exports.resolveEnd = resolveEnd;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,7 @@
+import { YAMLMap } from '../nodes/YAMLMap';
+import { YAMLSeq } from '../nodes/YAMLSeq';
+import type { FlowCollection } from '../parse/cst';
+import type { CollectionTag } from '../schema/types';
+import type { ComposeContext, ComposeNode } from './compose-node';
+import type { ComposeErrorHandler } from './composer';
+export declare function resolveFlowCollection({ composeNode, composeEmptyNode }: ComposeNode, ctx: ComposeContext, fc: FlowCollection, onError: ComposeErrorHandler, tag?: CollectionTag): YAMLMap.Parsed<import('../index').ParsedNode, import('../index').ParsedNode | null> | YAMLSeq.Parsed<import('../index').ParsedNode>;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-collection.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,209 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+var Pair = require('../nodes/Pair.js');
+var YAMLMap = require('../nodes/YAMLMap.js');
+var YAMLSeq = require('../nodes/YAMLSeq.js');
+var resolveEnd = require('./resolve-end.js');
+var resolveProps = require('./resolve-props.js');
+var utilContainsNewline = require('./util-contains-newline.js');
+var utilMapIncludes = require('./util-map-includes.js');
+
+const blockMsg = 'Block collections are not allowed within flow collections';
+const isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');
+function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {
+    const isMap = fc.start.source === '{';
+    const fcName = isMap ? 'flow map' : 'flow sequence';
+    const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));
+    const coll = new NodeClass(ctx.schema);
+    coll.flow = true;
+    const atRoot = ctx.atRoot;
+    if (atRoot)
+        ctx.atRoot = false;
+    if (ctx.atKey)
+        ctx.atKey = false;
+    let offset = fc.offset + fc.start.source.length;
+    for (let i = 0; i < fc.items.length; ++i) {
+        const collItem = fc.items[i];
+        const { start, key, sep, value } = collItem;
+        const props = resolveProps.resolveProps(start, {
+            flow: fcName,
+            indicator: 'explicit-key-ind',
+            next: key ?? sep?.[0],
+            offset,
+            onError,
+            parentIndent: fc.indent,
+            startOnNewline: false
+        });
+        if (!props.found) {
+            if (!props.anchor && !props.tag && !sep && !value) {
+                if (i === 0 && props.comma)
+                    onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);
+                else if (i < fc.items.length - 1)
+                    onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);
+                if (props.comment) {
+                    if (coll.comment)
+                        coll.comment += '\n' + props.comment;
+                    else
+                        coll.comment = props.comment;
+                }
+                offset = props.end;
+                continue;
+            }
+            if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))
+                onError(key, // checked by containsNewline()
+                'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');
+        }
+        if (i === 0) {
+            if (props.comma)
+                onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);
+        }
+        else {
+            if (!props.comma)
+                onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);
+            if (props.comment) {
+                let prevItemComment = '';
+                loop: for (const st of start) {
+                    switch (st.type) {
+                        case 'comma':
+                        case 'space':
+                            break;
+                        case 'comment':
+                            prevItemComment = st.source.substring(1);
+                            break loop;
+                        default:
+                            break loop;
+                    }
+                }
+                if (prevItemComment) {
+                    let prev = coll.items[coll.items.length - 1];
+                    if (identity.isPair(prev))
+                        prev = prev.value ?? prev.key;
+                    if (prev.comment)
+                        prev.comment += '\n' + prevItemComment;
+                    else
+                        prev.comment = prevItemComment;
+                    props.comment = props.comment.substring(prevItemComment.length + 1);
+                }
+            }
+        }
+        if (!isMap && !sep && !props.found) {
+            // item is a value in a seq
+            // → key & sep are empty, start does not include ? or :
+            const valueNode = value
+                ? composeNode(ctx, value, props, onError)
+                : composeEmptyNode(ctx, props.end, sep, null, props, onError);
+            coll.items.push(valueNode);
+            offset = valueNode.range[2];
+            if (isBlock(value))
+                onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);
+        }
+        else {
+            // item is a key+value pair
+            // key value
+            ctx.atKey = true;
+            const keyStart = props.end;
+            const keyNode = key
+                ? composeNode(ctx, key, props, onError)
+                : composeEmptyNode(ctx, keyStart, start, null, props, onError);
+            if (isBlock(key))
+                onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);
+            ctx.atKey = false;
+            // value properties
+            const valueProps = resolveProps.resolveProps(sep ?? [], {
+                flow: fcName,
+                indicator: 'map-value-ind',
+                next: value,
+                offset: keyNode.range[2],
+                onError,
+                parentIndent: fc.indent,
+                startOnNewline: false
+            });
+            if (valueProps.found) {
+                if (!isMap && !props.found && ctx.options.strict) {
+                    if (sep)
+                        for (const st of sep) {
+                            if (st === valueProps.found)
+                                break;
+                            if (st.type === 'newline') {
+                                onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');
+                                break;
+                            }
+                        }
+                    if (props.start < valueProps.found.offset - 1024)
+                        onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');
+                }
+            }
+            else if (value) {
+                if ('source' in value && value.source?.[0] === ':')
+                    onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);
+                else
+                    onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);
+            }
+            // value value
+            const valueNode = value
+                ? composeNode(ctx, value, valueProps, onError)
+                : valueProps.found
+                    ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)
+                    : null;
+            if (valueNode) {
+                if (isBlock(value))
+                    onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);
+            }
+            else if (valueProps.comment) {
+                if (keyNode.comment)
+                    keyNode.comment += '\n' + valueProps.comment;
+                else
+                    keyNode.comment = valueProps.comment;
+            }
+            const pair = new Pair.Pair(keyNode, valueNode);
+            if (ctx.options.keepSourceTokens)
+                pair.srcToken = collItem;
+            if (isMap) {
+                const map = coll;
+                if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))
+                    onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');
+                map.items.push(pair);
+            }
+            else {
+                const map = new YAMLMap.YAMLMap(ctx.schema);
+                map.flow = true;
+                map.items.push(pair);
+                const endRange = (valueNode ?? keyNode).range;
+                map.range = [keyNode.range[0], endRange[1], endRange[2]];
+                coll.items.push(map);
+            }
+            offset = valueNode ? valueNode.range[2] : valueProps.end;
+        }
+    }
+    const expectedEnd = isMap ? '}' : ']';
+    const [ce, ...ee] = fc.end;
+    let cePos = offset;
+    if (ce?.source === expectedEnd)
+        cePos = ce.offset + ce.source.length;
+    else {
+        const name = fcName[0].toUpperCase() + fcName.substring(1);
+        const msg = atRoot
+            ? `${name} must end with a ${expectedEnd}`
+            : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;
+        onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);
+        if (ce && ce.source.length !== 1)
+            ee.unshift(ce);
+    }
+    if (ee.length > 0) {
+        const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);
+        if (end.comment) {
+            if (coll.comment)
+                coll.comment += '\n' + end.comment;
+            else
+                coll.comment = end.comment;
+        }
+        coll.range = [fc.offset, cePos, end.offset];
+    }
+    else {
+        coll.range = [fc.offset, cePos, cePos];
+    }
+    return coll;
+}
+
+exports.resolveFlowCollection = resolveFlowCollection;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,10 @@
+import type { Range } from '../nodes/Node';
+import { Scalar } from '../nodes/Scalar';
+import type { FlowScalar } from '../parse/cst';
+import type { ComposeErrorHandler } from './composer';
+export declare function resolveFlowScalar(scalar: FlowScalar, strict: boolean, onError: ComposeErrorHandler): {
+    value: string;
+    type: Scalar.PLAIN | Scalar.QUOTE_DOUBLE | Scalar.QUOTE_SINGLE | null;
+    comment: string;
+    range: Range;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-flow-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,227 @@
+'use strict';
+
+var Scalar = require('../nodes/Scalar.js');
+var resolveEnd = require('./resolve-end.js');
+
+function resolveFlowScalar(scalar, strict, onError) {
+    const { offset, type, source, end } = scalar;
+    let _type;
+    let value;
+    const _onError = (rel, code, msg) => onError(offset + rel, code, msg);
+    switch (type) {
+        case 'scalar':
+            _type = Scalar.Scalar.PLAIN;
+            value = plainValue(source, _onError);
+            break;
+        case 'single-quoted-scalar':
+            _type = Scalar.Scalar.QUOTE_SINGLE;
+            value = singleQuotedValue(source, _onError);
+            break;
+        case 'double-quoted-scalar':
+            _type = Scalar.Scalar.QUOTE_DOUBLE;
+            value = doubleQuotedValue(source, _onError);
+            break;
+        /* istanbul ignore next should not happen */
+        default:
+            onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);
+            return {
+                value: '',
+                type: null,
+                comment: '',
+                range: [offset, offset + source.length, offset + source.length]
+            };
+    }
+    const valueEnd = offset + source.length;
+    const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);
+    return {
+        value,
+        type: _type,
+        comment: re.comment,
+        range: [offset, valueEnd, re.offset]
+    };
+}
+function plainValue(source, onError) {
+    let badChar = '';
+    switch (source[0]) {
+        /* istanbul ignore next should not happen */
+        case '\t':
+            badChar = 'a tab character';
+            break;
+        case ',':
+            badChar = 'flow indicator character ,';
+            break;
+        case '%':
+            badChar = 'directive indicator character %';
+            break;
+        case '|':
+        case '>': {
+            badChar = `block scalar indicator ${source[0]}`;
+            break;
+        }
+        case '@':
+        case '`': {
+            badChar = `reserved character ${source[0]}`;
+            break;
+        }
+    }
+    if (badChar)
+        onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);
+    return foldLines(source);
+}
+function singleQuotedValue(source, onError) {
+    if (source[source.length - 1] !== "'" || source.length === 1)
+        onError(source.length, 'MISSING_CHAR', "Missing closing 'quote");
+    return foldLines(source.slice(1, -1)).replace(/''/g, "'");
+}
+function foldLines(source) {
+    /**
+     * The negative lookbehind here and in the `re` RegExp is to
+     * prevent causing a polynomial search time in certain cases.
+     *
+     * The try-catch is for Safari, which doesn't support this yet:
+     * https://caniuse.com/js-regexp-lookbehind
+     */
+    let first, line;
+    try {
+        first = new RegExp('(.*?)(?<![ \t])[ \t]*\r?\n', 'sy');
+        line = new RegExp('[ \t]*(.*?)(?:(?<![ \t])[ \t]*)?\r?\n', 'sy');
+    }
+    catch {
+        first = /(.*?)[ \t]*\r?\n/sy;
+        line = /[ \t]*(.*?)[ \t]*\r?\n/sy;
+    }
+    let match = first.exec(source);
+    if (!match)
+        return source;
+    let res = match[1];
+    let sep = ' ';
+    let pos = first.lastIndex;
+    line.lastIndex = pos;
+    while ((match = line.exec(source))) {
+        if (match[1] === '') {
+            if (sep === '\n')
+                res += sep;
+            else
+                sep = '\n';
+        }
+        else {
+            res += sep + match[1];
+            sep = ' ';
+        }
+        pos = line.lastIndex;
+    }
+    const last = /[ \t]*(.*)/sy;
+    last.lastIndex = pos;
+    match = last.exec(source);
+    return res + sep + (match?.[1] ?? '');
+}
+function doubleQuotedValue(source, onError) {
+    let res = '';
+    for (let i = 1; i < source.length - 1; ++i) {
+        const ch = source[i];
+        if (ch === '\r' && source[i + 1] === '\n')
+            continue;
+        if (ch === '\n') {
+            const { fold, offset } = foldNewline(source, i);
+            res += fold;
+            i = offset;
+        }
+        else if (ch === '\\') {
+            let next = source[++i];
+            const cc = escapeCodes[next];
+            if (cc)
+                res += cc;
+            else if (next === '\n') {
+                // skip escaped newlines, but still trim the following line
+                next = source[i + 1];
+                while (next === ' ' || next === '\t')
+                    next = source[++i + 1];
+            }
+            else if (next === '\r' && source[i + 1] === '\n') {
+                // skip escaped CRLF newlines, but still trim the following line
+                next = source[++i + 1];
+                while (next === ' ' || next === '\t')
+                    next = source[++i + 1];
+            }
+            else if (next === 'x' || next === 'u' || next === 'U') {
+                const length = next === 'x' ? 2 : next === 'u' ? 4 : 8;
+                res += parseCharCode(source, i + 1, length, onError);
+                i += length;
+            }
+            else {
+                const raw = source.substr(i - 1, 2);
+                onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);
+                res += raw;
+            }
+        }
+        else if (ch === ' ' || ch === '\t') {
+            // trim trailing whitespace
+            const wsStart = i;
+            let next = source[i + 1];
+            while (next === ' ' || next === '\t')
+                next = source[++i + 1];
+            if (next !== '\n' && !(next === '\r' && source[i + 2] === '\n'))
+                res += i > wsStart ? source.slice(wsStart, i + 1) : ch;
+        }
+        else {
+            res += ch;
+        }
+    }
+    if (source[source.length - 1] !== '"' || source.length === 1)
+        onError(source.length, 'MISSING_CHAR', 'Missing closing "quote');
+    return res;
+}
+/**
+ * Fold a single newline into a space, multiple newlines to N - 1 newlines.
+ * Presumes `source[offset] === '\n'`
+ */
+function foldNewline(source, offset) {
+    let fold = '';
+    let ch = source[offset + 1];
+    while (ch === ' ' || ch === '\t' || ch === '\n' || ch === '\r') {
+        if (ch === '\r' && source[offset + 2] !== '\n')
+            break;
+        if (ch === '\n')
+            fold += '\n';
+        offset += 1;
+        ch = source[offset + 1];
+    }
+    if (!fold)
+        fold = ' ';
+    return { fold, offset };
+}
+const escapeCodes = {
+    '0': '\0', // null character
+    a: '\x07', // bell character
+    b: '\b', // backspace
+    e: '\x1b', // escape character
+    f: '\f', // form feed
+    n: '\n', // line feed
+    r: '\r', // carriage return
+    t: '\t', // horizontal tab
+    v: '\v', // vertical tab
+    N: '\u0085', // Unicode next line
+    _: '\u00a0', // Unicode non-breaking space
+    L: '\u2028', // Unicode line separator
+    P: '\u2029', // Unicode paragraph separator
+    ' ': ' ',
+    '"': '"',
+    '/': '/',
+    '\\': '\\',
+    '\t': '\t'
+};
+function parseCharCode(source, offset, length, onError) {
+    const cc = source.substr(offset, length);
+    const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);
+    const code = ok ? parseInt(cc, 16) : NaN;
+    try {
+        return String.fromCodePoint(code);
+    }
+    catch {
+        const raw = source.substr(offset - 2, length + 2);
+        onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);
+        return raw;
+    }
+}
+
+exports.resolveFlowScalar = resolveFlowScalar;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-props.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-props.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-props.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,23 @@
+import type { SourceToken, Token } from '../parse/cst';
+import type { ComposeErrorHandler } from './composer';
+export interface ResolvePropsArg {
+    flow?: 'flow map' | 'flow sequence';
+    indicator: 'doc-start' | 'explicit-key-ind' | 'map-value-ind' | 'seq-item-ind';
+    next: Token | null | undefined;
+    offset: number;
+    onError: ComposeErrorHandler;
+    parentIndent: number;
+    startOnNewline: boolean;
+}
+export declare function resolveProps(tokens: SourceToken[], { flow, indicator, next, offset, onError, parentIndent, startOnNewline }: ResolvePropsArg): {
+    comma: SourceToken | null;
+    found: SourceToken | null;
+    spaceBefore: boolean;
+    comment: string;
+    hasNewline: boolean;
+    anchor: SourceToken | null;
+    tag: SourceToken | null;
+    newlineAfterProp: SourceToken | null;
+    end: number;
+    start: number;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-props.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-props.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/resolve-props.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,148 @@
+'use strict';
+
+function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
+    let spaceBefore = false;
+    let atNewline = startOnNewline;
+    let hasSpace = startOnNewline;
+    let comment = '';
+    let commentSep = '';
+    let hasNewline = false;
+    let reqSpace = false;
+    let tab = null;
+    let anchor = null;
+    let tag = null;
+    let newlineAfterProp = null;
+    let comma = null;
+    let found = null;
+    let start = null;
+    for (const token of tokens) {
+        if (reqSpace) {
+            if (token.type !== 'space' &&
+                token.type !== 'newline' &&
+                token.type !== 'comma')
+                onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');
+            reqSpace = false;
+        }
+        if (tab) {
+            if (atNewline && token.type !== 'comment' && token.type !== 'newline') {
+                onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');
+            }
+            tab = null;
+        }
+        switch (token.type) {
+            case 'space':
+                // At the doc level, tabs at line start may be parsed
+                // as leading white space rather than indentation.
+                // In a flow collection, only the parser handles indent.
+                if (!flow &&
+                    (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&
+                    token.source.includes('\t')) {
+                    tab = token;
+                }
+                hasSpace = true;
+                break;
+            case 'comment': {
+                if (!hasSpace)
+                    onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');
+                const cb = token.source.substring(1) || ' ';
+                if (!comment)
+                    comment = cb;
+                else
+                    comment += commentSep + cb;
+                commentSep = '';
+                atNewline = false;
+                break;
+            }
+            case 'newline':
+                if (atNewline) {
+                    if (comment)
+                        comment += token.source;
+                    else if (!found || indicator !== 'seq-item-ind')
+                        spaceBefore = true;
+                }
+                else
+                    commentSep += token.source;
+                atNewline = true;
+                hasNewline = true;
+                if (anchor || tag)
+                    newlineAfterProp = token;
+                hasSpace = true;
+                break;
+            case 'anchor':
+                if (anchor)
+                    onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');
+                if (token.source.endsWith(':'))
+                    onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);
+                anchor = token;
+                start ?? (start = token.offset);
+                atNewline = false;
+                hasSpace = false;
+                reqSpace = true;
+                break;
+            case 'tag': {
+                if (tag)
+                    onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');
+                tag = token;
+                start ?? (start = token.offset);
+                atNewline = false;
+                hasSpace = false;
+                reqSpace = true;
+                break;
+            }
+            case indicator:
+                // Could here handle preceding comments differently
+                if (anchor || tag)
+                    onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);
+                if (found)
+                    onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);
+                found = token;
+                atNewline =
+                    indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';
+                hasSpace = false;
+                break;
+            case 'comma':
+                if (flow) {
+                    if (comma)
+                        onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);
+                    comma = token;
+                    atNewline = false;
+                    hasSpace = false;
+                    break;
+                }
+            // else fallthrough
+            default:
+                onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);
+                atNewline = false;
+                hasSpace = false;
+        }
+    }
+    const last = tokens[tokens.length - 1];
+    const end = last ? last.offset + last.source.length : offset;
+    if (reqSpace &&
+        next &&
+        next.type !== 'space' &&
+        next.type !== 'newline' &&
+        next.type !== 'comma' &&
+        (next.type !== 'scalar' || next.source !== '')) {
+        onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');
+    }
+    if (tab &&
+        ((atNewline && tab.indent <= parentIndent) ||
+            next?.type === 'block-map' ||
+            next?.type === 'block-seq'))
+        onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');
+    return {
+        comma,
+        found,
+        spaceBefore,
+        comment,
+        hasNewline,
+        anchor,
+        tag,
+        newlineAfterProp,
+        end,
+        start: start ?? end
+    };
+}
+
+exports.resolveProps = resolveProps;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-contains-newline.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-contains-newline.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-contains-newline.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { Token } from '../parse/cst';
+export declare function containsNewline(key: Token | null | undefined): boolean | null;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-contains-newline.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-contains-newline.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-contains-newline.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,36 @@
+'use strict';
+
+function containsNewline(key) {
+    if (!key)
+        return null;
+    switch (key.type) {
+        case 'alias':
+        case 'scalar':
+        case 'double-quoted-scalar':
+        case 'single-quoted-scalar':
+            if (key.source.includes('\n'))
+                return true;
+            if (key.end)
+                for (const st of key.end)
+                    if (st.type === 'newline')
+                        return true;
+            return false;
+        case 'flow-collection':
+            for (const it of key.items) {
+                for (const st of it.start)
+                    if (st.type === 'newline')
+                        return true;
+                if (it.sep)
+                    for (const st of it.sep)
+                        if (st.type === 'newline')
+                            return true;
+                if (containsNewline(it.key) || containsNewline(it.value))
+                    return true;
+            }
+            return false;
+        default:
+            return true;
+    }
+}
+
+exports.containsNewline = containsNewline;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { Token } from '../parse/cst';
+export declare function emptyScalarPosition(offset: number, before: Token[] | undefined, pos: number | null): number;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-empty-scalar-position.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-empty-scalar-position.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-empty-scalar-position.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,28 @@
+'use strict';
+
+function emptyScalarPosition(offset, before, pos) {
+    if (before) {
+        pos ?? (pos = before.length);
+        for (let i = pos - 1; i >= 0; --i) {
+            let st = before[i];
+            switch (st.type) {
+                case 'space':
+                case 'comment':
+                case 'newline':
+                    offset -= st.source.length;
+                    continue;
+            }
+            // Technically, an empty scalar is immediately after the last non-empty
+            // node, but it's more useful to place it after any whitespace.
+            st = before[++i];
+            while (st?.type === 'space') {
+                offset += st.source.length;
+                st = before[++i];
+            }
+            break;
+        }
+    }
+    return offset;
+}
+
+exports.emptyScalarPosition = emptyScalarPosition;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { Token } from '../parse/cst';
+import type { ComposeErrorHandler } from './composer';
+export declare function flowIndentCheck(indent: number, fc: Token | null | undefined, onError: ComposeErrorHandler): void;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-flow-indent-check.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-flow-indent-check.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-flow-indent-check.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+'use strict';
+
+var utilContainsNewline = require('./util-contains-newline.js');
+
+function flowIndentCheck(indent, fc, onError) {
+    if (fc?.type === 'flow-collection') {
+        const end = fc.end[0];
+        if (end.indent === indent &&
+            (end.source === ']' || end.source === '}') &&
+            utilContainsNewline.containsNewline(fc)) {
+            const msg = 'Flow end indicator should be more indented than parent';
+            onError(end, 'BAD_INDENT', msg, true);
+        }
+    }
+}
+
+exports.flowIndentCheck = flowIndentCheck;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-map-includes.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-map-includes.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-map-includes.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { ParsedNode } from '../nodes/Node';
+import type { Pair } from '../nodes/Pair';
+import type { ComposeContext } from './compose-node';
+export declare function mapIncludes(ctx: ComposeContext, items: Pair<ParsedNode>[], search: ParsedNode): boolean;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-map-includes.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-map-includes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/compose/util-map-includes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,15 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+
+function mapIncludes(ctx, items, search) {
+    const { uniqueKeys } = ctx.options;
+    if (uniqueKeys === false)
+        return false;
+    const isEqual = typeof uniqueKeys === 'function'
+        ? uniqueKeys
+        : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);
+    return items.some(pair => isEqual(pair.key, search));
+}
+
+exports.mapIncludes = mapIncludes;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/Document.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/Document.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/Document.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,141 @@
+import type { YAMLError, YAMLWarning } from '../errors';
+import { Alias } from '../nodes/Alias';
+import { NODE_TYPE } from '../nodes/identity';
+import type { Node, NodeType, ParsedNode, Range } from '../nodes/Node';
+import { Pair } from '../nodes/Pair';
+import type { Scalar } from '../nodes/Scalar';
+import type { YAMLMap } from '../nodes/YAMLMap';
+import type { YAMLSeq } from '../nodes/YAMLSeq';
+import type { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToJSOptions, ToStringOptions } from '../options';
+import { Schema } from '../schema/Schema';
+import { Directives } from './directives';
+export type Replacer = any[] | ((key: any, value: any) => unknown);
+export declare namespace Document {
+    /** @ts-ignore The typing of directives fails in TS <= 4.2 */
+    interface Parsed<Contents extends ParsedNode = ParsedNode, Strict extends boolean = true> extends Document<Contents, Strict> {
+        directives: Directives;
+        range: Range;
+    }
+}
+export declare class Document<Contents extends Node = Node, Strict extends boolean = true> {
+    readonly [NODE_TYPE]: symbol;
+    /** A comment before this Document */
+    commentBefore: string | null;
+    /** A comment immediately after this Document */
+    comment: string | null;
+    /** The document contents. */
+    contents: Strict extends true ? Contents | null : Contents;
+    directives: Strict extends true ? Directives | undefined : Directives;
+    /** Errors encountered during parsing. */
+    errors: YAMLError[];
+    options: Required<Omit<ParseOptions & DocumentOptions, '_directives' | 'lineCounter' | 'version'>>;
+    /**
+     * The `[start, value-end, node-end]` character offsets for the part of the
+     * source parsed into this document (undefined if not parsed). The `value-end`
+     * and `node-end` positions are themselves not included in their respective
+     * ranges.
+     */
+    range?: Range;
+    /** The schema used with the document. Use `setSchema()` to change. */
+    schema: Schema;
+    /** Warnings encountered during parsing. */
+    warnings: YAMLWarning[];
+    /**
+     * @param value - The initial value for the document, which will be wrapped
+     *   in a Node container.
+     */
+    constructor(value?: any, options?: DocumentOptions & SchemaOptions & ParseOptions & CreateNodeOptions);
+    constructor(value: any, replacer: null | Replacer, options?: DocumentOptions & SchemaOptions & ParseOptions & CreateNodeOptions);
+    /**
+     * Create a deep copy of this Document and its contents.
+     *
+     * Custom Node values that inherit from `Object` still refer to their original instances.
+     */
+    clone(): Document<Contents, Strict>;
+    /** Adds a value to the document. */
+    add(value: any): void;
+    /** Adds a value to the document. */
+    addIn(path: Iterable<unknown>, value: unknown): void;
+    /**
+     * Create a new `Alias` node, ensuring that the target `node` has the required anchor.
+     *
+     * If `node` already has an anchor, `name` is ignored.
+     * Otherwise, the `node.anchor` value will be set to `name`,
+     * or if an anchor with that name is already present in the document,
+     * `name` will be used as a prefix for a new unique anchor.
+     * If `name` is undefined, the generated anchor will use 'a' as a prefix.
+     */
+    createAlias(node: Strict extends true ? Scalar | YAMLMap | YAMLSeq : Node, name?: string): Alias;
+    /**
+     * Convert any value into a `Node` using the current schema, recursively
+     * turning objects into collections.
+     */
+    createNode<T = unknown>(value: T, options?: CreateNodeOptions): NodeType<T>;
+    createNode<T = unknown>(value: T, replacer: Replacer | CreateNodeOptions | null, options?: CreateNodeOptions): NodeType<T>;
+    /**
+     * Convert a key and a value into a `Pair` using the current schema,
+     * recursively wrapping all values as `Scalar` or `Collection` nodes.
+     */
+    createPair<K extends Node = Node, V extends Node = Node>(key: unknown, value: unknown, options?: CreateNodeOptions): Pair<K, V>;
+    /**
+     * Removes a value from the document.
+     * @returns `true` if the item was found and removed.
+     */
+    delete(key: unknown): boolean;
+    /**
+     * Removes a value from the document.
+     * @returns `true` if the item was found and removed.
+     */
+    deleteIn(path: Iterable<unknown> | null): boolean;
+    /**
+     * Returns item at `key`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    get(key: unknown, keepScalar?: boolean): Strict extends true ? unknown : any;
+    /**
+     * Returns item at `path`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    getIn(path: Iterable<unknown> | null, keepScalar?: boolean): Strict extends true ? unknown : any;
+    /**
+     * Checks if the document includes a value with the key `key`.
+     */
+    has(key: unknown): boolean;
+    /**
+     * Checks if the document includes a value at `path`.
+     */
+    hasIn(path: Iterable<unknown> | null): boolean;
+    /**
+     * Sets a value in this document. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    set(key: any, value: unknown): void;
+    /**
+     * Sets a value in this document. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    setIn(path: Iterable<unknown> | null, value: unknown): void;
+    /**
+     * Change the YAML version and schema used by the document.
+     * A `null` version disables support for directives, explicit tags, anchors, and aliases.
+     * It also requires the `schema` option to be given as a `Schema` instance value.
+     *
+     * Overrides all previously set schema options.
+     */
+    setSchema(version: '1.1' | '1.2' | 'next' | null, options?: SchemaOptions): void;
+    /** A plain JavaScript representation of the document `contents`. */
+    toJS(opt?: ToJSOptions & {
+        [ignored: string]: unknown;
+    }): any;
+    /**
+     * A JSON representation of the document `contents`.
+     *
+     * @param jsonArg Used by `JSON.stringify` to indicate the array index or
+     *   property name.
+     */
+    toJSON(jsonArg?: string | null, onAnchor?: ToJSOptions['onAnchor']): any;
+    /** A YAML representation of the document. */
+    toString(options?: ToStringOptions): string;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/Document.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/Document.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/Document.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,337 @@
+'use strict';
+
+var Alias = require('../nodes/Alias.js');
+var Collection = require('../nodes/Collection.js');
+var identity = require('../nodes/identity.js');
+var Pair = require('../nodes/Pair.js');
+var toJS = require('../nodes/toJS.js');
+var Schema = require('../schema/Schema.js');
+var stringifyDocument = require('../stringify/stringifyDocument.js');
+var anchors = require('./anchors.js');
+var applyReviver = require('./applyReviver.js');
+var createNode = require('./createNode.js');
+var directives = require('./directives.js');
+
+class Document {
+    constructor(value, replacer, options) {
+        /** A comment before this Document */
+        this.commentBefore = null;
+        /** A comment immediately after this Document */
+        this.comment = null;
+        /** Errors encountered during parsing. */
+        this.errors = [];
+        /** Warnings encountered during parsing. */
+        this.warnings = [];
+        Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });
+        let _replacer = null;
+        if (typeof replacer === 'function' || Array.isArray(replacer)) {
+            _replacer = replacer;
+        }
+        else if (options === undefined && replacer) {
+            options = replacer;
+            replacer = undefined;
+        }
+        const opt = Object.assign({
+            intAsBigInt: false,
+            keepSourceTokens: false,
+            logLevel: 'warn',
+            prettyErrors: true,
+            strict: true,
+            stringKeys: false,
+            uniqueKeys: true,
+            version: '1.2'
+        }, options);
+        this.options = opt;
+        let { version } = opt;
+        if (options?._directives) {
+            this.directives = options._directives.atDocument();
+            if (this.directives.yaml.explicit)
+                version = this.directives.yaml.version;
+        }
+        else
+            this.directives = new directives.Directives({ version });
+        this.setSchema(version, options);
+        // @ts-expect-error We can't really know that this matches Contents.
+        this.contents =
+            value === undefined ? null : this.createNode(value, _replacer, options);
+    }
+    /**
+     * Create a deep copy of this Document and its contents.
+     *
+     * Custom Node values that inherit from `Object` still refer to their original instances.
+     */
+    clone() {
+        const copy = Object.create(Document.prototype, {
+            [identity.NODE_TYPE]: { value: identity.DOC }
+        });
+        copy.commentBefore = this.commentBefore;
+        copy.comment = this.comment;
+        copy.errors = this.errors.slice();
+        copy.warnings = this.warnings.slice();
+        copy.options = Object.assign({}, this.options);
+        if (this.directives)
+            copy.directives = this.directives.clone();
+        copy.schema = this.schema.clone();
+        // @ts-expect-error We can't really know that this matches Contents.
+        copy.contents = identity.isNode(this.contents)
+            ? this.contents.clone(copy.schema)
+            : this.contents;
+        if (this.range)
+            copy.range = this.range.slice();
+        return copy;
+    }
+    /** Adds a value to the document. */
+    add(value) {
+        if (assertCollection(this.contents))
+            this.contents.add(value);
+    }
+    /** Adds a value to the document. */
+    addIn(path, value) {
+        if (assertCollection(this.contents))
+            this.contents.addIn(path, value);
+    }
+    /**
+     * Create a new `Alias` node, ensuring that the target `node` has the required anchor.
+     *
+     * If `node` already has an anchor, `name` is ignored.
+     * Otherwise, the `node.anchor` value will be set to `name`,
+     * or if an anchor with that name is already present in the document,
+     * `name` will be used as a prefix for a new unique anchor.
+     * If `name` is undefined, the generated anchor will use 'a' as a prefix.
+     */
+    createAlias(node, name) {
+        if (!node.anchor) {
+            const prev = anchors.anchorNames(this);
+            node.anchor =
+                // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
+                !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;
+        }
+        return new Alias.Alias(node.anchor);
+    }
+    createNode(value, replacer, options) {
+        let _replacer = undefined;
+        if (typeof replacer === 'function') {
+            value = replacer.call({ '': value }, '', value);
+            _replacer = replacer;
+        }
+        else if (Array.isArray(replacer)) {
+            const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;
+            const asStr = replacer.filter(keyToStr).map(String);
+            if (asStr.length > 0)
+                replacer = replacer.concat(asStr);
+            _replacer = replacer;
+        }
+        else if (options === undefined && replacer) {
+            options = replacer;
+            replacer = undefined;
+        }
+        const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};
+        const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, 
+        // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
+        anchorPrefix || 'a');
+        const ctx = {
+            aliasDuplicateObjects: aliasDuplicateObjects ?? true,
+            keepUndefined: keepUndefined ?? false,
+            onAnchor,
+            onTagObj,
+            replacer: _replacer,
+            schema: this.schema,
+            sourceObjects
+        };
+        const node = createNode.createNode(value, tag, ctx);
+        if (flow && identity.isCollection(node))
+            node.flow = true;
+        setAnchors();
+        return node;
+    }
+    /**
+     * Convert a key and a value into a `Pair` using the current schema,
+     * recursively wrapping all values as `Scalar` or `Collection` nodes.
+     */
+    createPair(key, value, options = {}) {
+        const k = this.createNode(key, null, options);
+        const v = this.createNode(value, null, options);
+        return new Pair.Pair(k, v);
+    }
+    /**
+     * Removes a value from the document.
+     * @returns `true` if the item was found and removed.
+     */
+    delete(key) {
+        return assertCollection(this.contents) ? this.contents.delete(key) : false;
+    }
+    /**
+     * Removes a value from the document.
+     * @returns `true` if the item was found and removed.
+     */
+    deleteIn(path) {
+        if (Collection.isEmptyPath(path)) {
+            if (this.contents == null)
+                return false;
+            // @ts-expect-error Presumed impossible if Strict extends false
+            this.contents = null;
+            return true;
+        }
+        return assertCollection(this.contents)
+            ? this.contents.deleteIn(path)
+            : false;
+    }
+    /**
+     * Returns item at `key`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    get(key, keepScalar) {
+        return identity.isCollection(this.contents)
+            ? this.contents.get(key, keepScalar)
+            : undefined;
+    }
+    /**
+     * Returns item at `path`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    getIn(path, keepScalar) {
+        if (Collection.isEmptyPath(path))
+            return !keepScalar && identity.isScalar(this.contents)
+                ? this.contents.value
+                : this.contents;
+        return identity.isCollection(this.contents)
+            ? this.contents.getIn(path, keepScalar)
+            : undefined;
+    }
+    /**
+     * Checks if the document includes a value with the key `key`.
+     */
+    has(key) {
+        return identity.isCollection(this.contents) ? this.contents.has(key) : false;
+    }
+    /**
+     * Checks if the document includes a value at `path`.
+     */
+    hasIn(path) {
+        if (Collection.isEmptyPath(path))
+            return this.contents !== undefined;
+        return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;
+    }
+    /**
+     * Sets a value in this document. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    set(key, value) {
+        if (this.contents == null) {
+            // @ts-expect-error We can't really know that this matches Contents.
+            this.contents = Collection.collectionFromPath(this.schema, [key], value);
+        }
+        else if (assertCollection(this.contents)) {
+            this.contents.set(key, value);
+        }
+    }
+    /**
+     * Sets a value in this document. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    setIn(path, value) {
+        if (Collection.isEmptyPath(path)) {
+            // @ts-expect-error We can't really know that this matches Contents.
+            this.contents = value;
+        }
+        else if (this.contents == null) {
+            // @ts-expect-error We can't really know that this matches Contents.
+            this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);
+        }
+        else if (assertCollection(this.contents)) {
+            this.contents.setIn(path, value);
+        }
+    }
+    /**
+     * Change the YAML version and schema used by the document.
+     * A `null` version disables support for directives, explicit tags, anchors, and aliases.
+     * It also requires the `schema` option to be given as a `Schema` instance value.
+     *
+     * Overrides all previously set schema options.
+     */
+    setSchema(version, options = {}) {
+        if (typeof version === 'number')
+            version = String(version);
+        let opt;
+        switch (version) {
+            case '1.1':
+                if (this.directives)
+                    this.directives.yaml.version = '1.1';
+                else
+                    this.directives = new directives.Directives({ version: '1.1' });
+                opt = { resolveKnownTags: false, schema: 'yaml-1.1' };
+                break;
+            case '1.2':
+            case 'next':
+                if (this.directives)
+                    this.directives.yaml.version = version;
+                else
+                    this.directives = new directives.Directives({ version });
+                opt = { resolveKnownTags: true, schema: 'core' };
+                break;
+            case null:
+                if (this.directives)
+                    delete this.directives;
+                opt = null;
+                break;
+            default: {
+                const sv = JSON.stringify(version);
+                throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);
+            }
+        }
+        // Not using `instanceof Schema` to allow for duck typing
+        if (options.schema instanceof Object)
+            this.schema = options.schema;
+        else if (opt)
+            this.schema = new Schema.Schema(Object.assign(opt, options));
+        else
+            throw new Error(`With a null YAML version, the { schema: Schema } option is required`);
+    }
+    // json & jsonArg are only used from toJSON()
+    toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {
+        const ctx = {
+            anchors: new Map(),
+            doc: this,
+            keep: !json,
+            mapAsMap: mapAsMap === true,
+            mapKeyWarned: false,
+            maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100
+        };
+        const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);
+        if (typeof onAnchor === 'function')
+            for (const { count, res } of ctx.anchors.values())
+                onAnchor(res, count);
+        return typeof reviver === 'function'
+            ? applyReviver.applyReviver(reviver, { '': res }, '', res)
+            : res;
+    }
+    /**
+     * A JSON representation of the document `contents`.
+     *
+     * @param jsonArg Used by `JSON.stringify` to indicate the array index or
+     *   property name.
+     */
+    toJSON(jsonArg, onAnchor) {
+        return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });
+    }
+    /** A YAML representation of the document. */
+    toString(options = {}) {
+        if (this.errors.length > 0)
+            throw new Error('Document with errors cannot be stringified');
+        if ('indent' in options &&
+            (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {
+            const s = JSON.stringify(options.indent);
+            throw new Error(`"indent" option must be a positive integer, not ${s}`);
+        }
+        return stringifyDocument.stringifyDocument(this, options);
+    }
+}
+function assertCollection(contents) {
+    if (identity.isCollection(contents))
+        return true;
+    throw new Error('Expected a YAML collection as document contents');
+}
+
+exports.Document = Document;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/anchors.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/anchors.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/anchors.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,24 @@
+import type { Node } from '../nodes/Node';
+import type { Document } from './Document';
+/**
+ * Verify that the input string is a valid anchor.
+ *
+ * Will throw on errors.
+ */
+export declare function anchorIsValid(anchor: string): true;
+export declare function anchorNames(root: Document<Node, boolean> | Node): Set<string>;
+/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */
+export declare function findNewAnchor(prefix: string, exclude: Set<string>): string;
+export declare function createNodeAnchors(doc: Document<Node, boolean>, prefix: string): {
+    onAnchor: (source: unknown) => string;
+    /**
+     * With circular references, the source node is only resolved after all
+     * of its child nodes are. This is why anchors are set only after all of
+     * the nodes have been created.
+     */
+    setAnchors: () => void;
+    sourceObjects: Map<unknown, {
+        anchor: string | null;
+        node: Node | null;
+    }>;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/anchors.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/anchors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/anchors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,76 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+var visit = require('../visit.js');
+
+/**
+ * Verify that the input string is a valid anchor.
+ *
+ * Will throw on errors.
+ */
+function anchorIsValid(anchor) {
+    if (/[\x00-\x19\s,[\]{}]/.test(anchor)) {
+        const sa = JSON.stringify(anchor);
+        const msg = `Anchor must not contain whitespace or control characters: ${sa}`;
+        throw new Error(msg);
+    }
+    return true;
+}
+function anchorNames(root) {
+    const anchors = new Set();
+    visit.visit(root, {
+        Value(_key, node) {
+            if (node.anchor)
+                anchors.add(node.anchor);
+        }
+    });
+    return anchors;
+}
+/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */
+function findNewAnchor(prefix, exclude) {
+    for (let i = 1; true; ++i) {
+        const name = `${prefix}${i}`;
+        if (!exclude.has(name))
+            return name;
+    }
+}
+function createNodeAnchors(doc, prefix) {
+    const aliasObjects = [];
+    const sourceObjects = new Map();
+    let prevAnchors = null;
+    return {
+        onAnchor: (source) => {
+            aliasObjects.push(source);
+            prevAnchors ?? (prevAnchors = anchorNames(doc));
+            const anchor = findNewAnchor(prefix, prevAnchors);
+            prevAnchors.add(anchor);
+            return anchor;
+        },
+        /**
+         * With circular references, the source node is only resolved after all
+         * of its child nodes are. This is why anchors are set only after all of
+         * the nodes have been created.
+         */
+        setAnchors: () => {
+            for (const source of aliasObjects) {
+                const ref = sourceObjects.get(source);
+                if (typeof ref === 'object' &&
+                    ref.anchor &&
+                    (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {
+                    ref.node.anchor = ref.anchor;
+                }
+                else {
+                    const error = new Error('Failed to resolve repeated object (this should not happen)');
+                    error.source = source;
+                    throw error;
+                }
+            }
+        },
+        sourceObjects
+    };
+}
+
+exports.anchorIsValid = anchorIsValid;
+exports.anchorNames = anchorNames;
+exports.createNodeAnchors = createNodeAnchors;
+exports.findNewAnchor = findNewAnchor;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/applyReviver.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/applyReviver.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/applyReviver.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,9 @@
+export type Reviver = (key: unknown, value: unknown) => unknown;
+/**
+ * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,
+ * in section 24.5.1.1 "Runtime Semantics: InternalizeJSONProperty" of the
+ * 2021 edition: https://tc39.es/ecma262/#sec-json.parse
+ *
+ * Includes extensions for handling Map and Set objects.
+ */
+export declare function applyReviver(reviver: Reviver, obj: unknown, key: unknown, val: any): unknown;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/applyReviver.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/applyReviver.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/applyReviver.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,57 @@
+'use strict';
+
+/**
+ * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,
+ * in section 24.5.1.1 "Runtime Semantics: InternalizeJSONProperty" of the
+ * 2021 edition: https://tc39.es/ecma262/#sec-json.parse
+ *
+ * Includes extensions for handling Map and Set objects.
+ */
+function applyReviver(reviver, obj, key, val) {
+    if (val && typeof val === 'object') {
+        if (Array.isArray(val)) {
+            for (let i = 0, len = val.length; i < len; ++i) {
+                const v0 = val[i];
+                const v1 = applyReviver(reviver, val, String(i), v0);
+                // eslint-disable-next-line @typescript-eslint/no-array-delete
+                if (v1 === undefined)
+                    delete val[i];
+                else if (v1 !== v0)
+                    val[i] = v1;
+            }
+        }
+        else if (val instanceof Map) {
+            for (const k of Array.from(val.keys())) {
+                const v0 = val.get(k);
+                const v1 = applyReviver(reviver, val, k, v0);
+                if (v1 === undefined)
+                    val.delete(k);
+                else if (v1 !== v0)
+                    val.set(k, v1);
+            }
+        }
+        else if (val instanceof Set) {
+            for (const v0 of Array.from(val)) {
+                const v1 = applyReviver(reviver, val, v0, v0);
+                if (v1 === undefined)
+                    val.delete(v0);
+                else if (v1 !== v0) {
+                    val.delete(v0);
+                    val.add(v1);
+                }
+            }
+        }
+        else {
+            for (const [k, v0] of Object.entries(val)) {
+                const v1 = applyReviver(reviver, val, k, v0);
+                if (v1 === undefined)
+                    delete val[k];
+                else if (v1 !== v0)
+                    val[k] = v1;
+            }
+        }
+    }
+    return reviver.call(obj, key, val);
+}
+
+exports.applyReviver = applyReviver;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/createNode.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/createNode.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/createNode.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+import type { Node } from '../nodes/Node';
+import type { Schema } from '../schema/Schema';
+import type { CollectionTag, ScalarTag } from '../schema/types';
+import type { Replacer } from './Document';
+export interface CreateNodeContext {
+    aliasDuplicateObjects: boolean;
+    keepUndefined: boolean;
+    onAnchor: (source: unknown) => string;
+    onTagObj?: (tagObj: ScalarTag | CollectionTag) => void;
+    sourceObjects: Map<unknown, {
+        anchor: string | null;
+        node: Node | null;
+    }>;
+    replacer?: Replacer;
+    schema: Schema;
+}
+export declare function createNode(value: unknown, tagName: string | undefined, ctx: CreateNodeContext): Node;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/createNode.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/createNode.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/createNode.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,90 @@
+'use strict';
+
+var Alias = require('../nodes/Alias.js');
+var identity = require('../nodes/identity.js');
+var Scalar = require('../nodes/Scalar.js');
+
+const defaultTagPrefix = 'tag:yaml.org,2002:';
+function findTagObject(value, tagName, tags) {
+    if (tagName) {
+        const match = tags.filter(t => t.tag === tagName);
+        const tagObj = match.find(t => !t.format) ?? match[0];
+        if (!tagObj)
+            throw new Error(`Tag ${tagName} not found`);
+        return tagObj;
+    }
+    return tags.find(t => t.identify?.(value) && !t.format);
+}
+function createNode(value, tagName, ctx) {
+    if (identity.isDocument(value))
+        value = value.contents;
+    if (identity.isNode(value))
+        return value;
+    if (identity.isPair(value)) {
+        const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);
+        map.items.push(value);
+        return map;
+    }
+    if (value instanceof String ||
+        value instanceof Number ||
+        value instanceof Boolean ||
+        (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere
+    ) {
+        // https://tc39.es/ecma262/#sec-serializejsonproperty
+        value = value.valueOf();
+    }
+    const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;
+    // Detect duplicate references to the same object & use Alias nodes for all
+    // after first. The `ref` wrapper allows for circular references to resolve.
+    let ref = undefined;
+    if (aliasDuplicateObjects && value && typeof value === 'object') {
+        ref = sourceObjects.get(value);
+        if (ref) {
+            ref.anchor ?? (ref.anchor = onAnchor(value));
+            return new Alias.Alias(ref.anchor);
+        }
+        else {
+            ref = { anchor: null, node: null };
+            sourceObjects.set(value, ref);
+        }
+    }
+    if (tagName?.startsWith('!!'))
+        tagName = defaultTagPrefix + tagName.slice(2);
+    let tagObj = findTagObject(value, tagName, schema.tags);
+    if (!tagObj) {
+        if (value && typeof value.toJSON === 'function') {
+            // eslint-disable-next-line @typescript-eslint/no-unsafe-call
+            value = value.toJSON();
+        }
+        if (!value || typeof value !== 'object') {
+            const node = new Scalar.Scalar(value);
+            if (ref)
+                ref.node = node;
+            return node;
+        }
+        tagObj =
+            value instanceof Map
+                ? schema[identity.MAP]
+                : Symbol.iterator in Object(value)
+                    ? schema[identity.SEQ]
+                    : schema[identity.MAP];
+    }
+    if (onTagObj) {
+        onTagObj(tagObj);
+        delete ctx.onTagObj;
+    }
+    const node = tagObj?.createNode
+        ? tagObj.createNode(ctx.schema, value, ctx)
+        : typeof tagObj?.nodeClass?.from === 'function'
+            ? tagObj.nodeClass.from(ctx.schema, value, ctx)
+            : new Scalar.Scalar(value);
+    if (tagName)
+        node.tag = tagName;
+    else if (!tagObj.default)
+        node.tag = tagObj.tag;
+    if (ref)
+        ref.node = node;
+    return node;
+}
+
+exports.createNode = createNode;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/directives.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/directives.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/directives.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,49 @@
+import type { Document } from './Document';
+export declare class Directives {
+    static defaultYaml: Directives['yaml'];
+    static defaultTags: Directives['tags'];
+    yaml: {
+        version: '1.1' | '1.2' | 'next';
+        explicit?: boolean;
+    };
+    tags: Record<string, string>;
+    /**
+     * The directives-end/doc-start marker `---`. If `null`, a marker may still be
+     * included in the document's stringified representation.
+     */
+    docStart: true | null;
+    /** The doc-end marker `...`.  */
+    docEnd: boolean;
+    /**
+     * Used when parsing YAML 1.1, where:
+     * > If the document specifies no directives, it is parsed using the same
+     * > settings as the previous document. If the document does specify any
+     * > directives, all directives of previous documents, if any, are ignored.
+     */
+    private atNextDocument?;
+    constructor(yaml?: Directives['yaml'], tags?: Directives['tags']);
+    clone(): Directives;
+    /**
+     * During parsing, get a Directives instance for the current document and
+     * update the stream state according to the current version's spec.
+     */
+    atDocument(): Directives;
+    /**
+     * @param onError - May be called even if the action was successful
+     * @returns `true` on success
+     */
+    add(line: string, onError: (offset: number, message: string, warning?: boolean) => void): boolean;
+    /**
+     * Resolves a tag, matching handles to those defined in %TAG directives.
+     *
+     * @returns Resolved tag, which may also be the non-specific tag `'!'` or a
+     *   `'!local'` tag, or `null` if unresolvable.
+     */
+    tagName(source: string, onError: (message: string) => void): string | null;
+    /**
+     * Given a fully resolved tag, returns its printable string form,
+     * taking into account current tag prefixes and defaults.
+     */
+    tagString(tag: string): string;
+    toString(doc?: Document): string;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/directives.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/directives.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/doc/directives.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,178 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+var visit = require('../visit.js');
+
+const escapeChars = {
+    '!': '%21',
+    ',': '%2C',
+    '[': '%5B',
+    ']': '%5D',
+    '{': '%7B',
+    '}': '%7D'
+};
+const escapeTagName = (tn) => tn.replace(/[!,[\]{}]/g, ch => escapeChars[ch]);
+class Directives {
+    constructor(yaml, tags) {
+        /**
+         * The directives-end/doc-start marker `---`. If `null`, a marker may still be
+         * included in the document's stringified representation.
+         */
+        this.docStart = null;
+        /** The doc-end marker `...`.  */
+        this.docEnd = false;
+        this.yaml = Object.assign({}, Directives.defaultYaml, yaml);
+        this.tags = Object.assign({}, Directives.defaultTags, tags);
+    }
+    clone() {
+        const copy = new Directives(this.yaml, this.tags);
+        copy.docStart = this.docStart;
+        return copy;
+    }
+    /**
+     * During parsing, get a Directives instance for the current document and
+     * update the stream state according to the current version's spec.
+     */
+    atDocument() {
+        const res = new Directives(this.yaml, this.tags);
+        switch (this.yaml.version) {
+            case '1.1':
+                this.atNextDocument = true;
+                break;
+            case '1.2':
+                this.atNextDocument = false;
+                this.yaml = {
+                    explicit: Directives.defaultYaml.explicit,
+                    version: '1.2'
+                };
+                this.tags = Object.assign({}, Directives.defaultTags);
+                break;
+        }
+        return res;
+    }
+    /**
+     * @param onError - May be called even if the action was successful
+     * @returns `true` on success
+     */
+    add(line, onError) {
+        if (this.atNextDocument) {
+            this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };
+            this.tags = Object.assign({}, Directives.defaultTags);
+            this.atNextDocument = false;
+        }
+        const parts = line.trim().split(/[ \t]+/);
+        const name = parts.shift();
+        switch (name) {
+            case '%TAG': {
+                if (parts.length !== 2) {
+                    onError(0, '%TAG directive should contain exactly two parts');
+                    if (parts.length < 2)
+                        return false;
+                }
+                const [handle, prefix] = parts;
+                this.tags[handle] = prefix;
+                return true;
+            }
+            case '%YAML': {
+                this.yaml.explicit = true;
+                if (parts.length !== 1) {
+                    onError(0, '%YAML directive should contain exactly one part');
+                    return false;
+                }
+                const [version] = parts;
+                if (version === '1.1' || version === '1.2') {
+                    this.yaml.version = version;
+                    return true;
+                }
+                else {
+                    const isValid = /^\d+\.\d+$/.test(version);
+                    onError(6, `Unsupported YAML version ${version}`, isValid);
+                    return false;
+                }
+            }
+            default:
+                onError(0, `Unknown directive ${name}`, true);
+                return false;
+        }
+    }
+    /**
+     * Resolves a tag, matching handles to those defined in %TAG directives.
+     *
+     * @returns Resolved tag, which may also be the non-specific tag `'!'` or a
+     *   `'!local'` tag, or `null` if unresolvable.
+     */
+    tagName(source, onError) {
+        if (source === '!')
+            return '!'; // non-specific tag
+        if (source[0] !== '!') {
+            onError(`Not a valid tag: ${source}`);
+            return null;
+        }
+        if (source[1] === '<') {
+            const verbatim = source.slice(2, -1);
+            if (verbatim === '!' || verbatim === '!!') {
+                onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);
+                return null;
+            }
+            if (source[source.length - 1] !== '>')
+                onError('Verbatim tags must end with a >');
+            return verbatim;
+        }
+        const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);
+        if (!suffix)
+            onError(`The ${source} tag has no suffix`);
+        const prefix = this.tags[handle];
+        if (prefix) {
+            try {
+                return prefix + decodeURIComponent(suffix);
+            }
+            catch (error) {
+                onError(String(error));
+                return null;
+            }
+        }
+        if (handle === '!')
+            return source; // local tag
+        onError(`Could not resolve tag: ${source}`);
+        return null;
+    }
+    /**
+     * Given a fully resolved tag, returns its printable string form,
+     * taking into account current tag prefixes and defaults.
+     */
+    tagString(tag) {
+        for (const [handle, prefix] of Object.entries(this.tags)) {
+            if (tag.startsWith(prefix))
+                return handle + escapeTagName(tag.substring(prefix.length));
+        }
+        return tag[0] === '!' ? tag : `!<${tag}>`;
+    }
+    toString(doc) {
+        const lines = this.yaml.explicit
+            ? [`%YAML ${this.yaml.version || '1.2'}`]
+            : [];
+        const tagEntries = Object.entries(this.tags);
+        let tagNames;
+        if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {
+            const tags = {};
+            visit.visit(doc.contents, (_key, node) => {
+                if (identity.isNode(node) && node.tag)
+                    tags[node.tag] = true;
+            });
+            tagNames = Object.keys(tags);
+        }
+        else
+            tagNames = [];
+        for (const [handle, prefix] of tagEntries) {
+            if (handle === '!!' && prefix === 'tag:yaml.org,2002:')
+                continue;
+            if (!doc || tagNames.some(tn => tn.startsWith(prefix)))
+                lines.push(`%TAG ${handle} ${prefix}`);
+        }
+        return lines.join('\n');
+    }
+}
+Directives.defaultYaml = { explicit: false, version: '1.2' };
+Directives.defaultTags = { '!!': 'tag:yaml.org,2002:' };
+
+exports.Directives = Directives;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/errors.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/errors.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/errors.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,21 @@
+import type { LineCounter } from './parse/line-counter';
+export type ErrorCode = 'ALIAS_PROPS' | 'BAD_ALIAS' | 'BAD_DIRECTIVE' | 'BAD_DQ_ESCAPE' | 'BAD_INDENT' | 'BAD_PROP_ORDER' | 'BAD_SCALAR_START' | 'BLOCK_AS_IMPLICIT_KEY' | 'BLOCK_IN_FLOW' | 'DUPLICATE_KEY' | 'IMPOSSIBLE' | 'KEY_OVER_1024_CHARS' | 'MISSING_CHAR' | 'MULTILINE_IMPLICIT_KEY' | 'MULTIPLE_ANCHORS' | 'MULTIPLE_DOCS' | 'MULTIPLE_TAGS' | 'NON_STRING_KEY' | 'RESOURCE_EXHAUSTION' | 'TAB_AS_INDENT' | 'TAG_RESOLVE_FAILED' | 'UNEXPECTED_TOKEN' | 'BAD_COLLECTION_TYPE';
+export type LinePos = {
+    line: number;
+    col: number;
+};
+export declare class YAMLError extends Error {
+    name: 'YAMLParseError' | 'YAMLWarning';
+    code: ErrorCode;
+    message: string;
+    pos: [number, number];
+    linePos?: [LinePos] | [LinePos, LinePos];
+    constructor(name: YAMLError['name'], pos: [number, number], code: ErrorCode, message: string);
+}
+export declare class YAMLParseError extends YAMLError {
+    constructor(pos: [number, number], code: ErrorCode, message: string);
+}
+export declare class YAMLWarning extends YAMLError {
+    constructor(pos: [number, number], code: ErrorCode, message: string);
+}
+export declare const prettifyError: (src: string, lc: LineCounter) => (error: YAMLError) => void;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/errors.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/errors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/errors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,62 @@
+'use strict';
+
+class YAMLError extends Error {
+    constructor(name, pos, code, message) {
+        super();
+        this.name = name;
+        this.code = code;
+        this.message = message;
+        this.pos = pos;
+    }
+}
+class YAMLParseError extends YAMLError {
+    constructor(pos, code, message) {
+        super('YAMLParseError', pos, code, message);
+    }
+}
+class YAMLWarning extends YAMLError {
+    constructor(pos, code, message) {
+        super('YAMLWarning', pos, code, message);
+    }
+}
+const prettifyError = (src, lc) => (error) => {
+    if (error.pos[0] === -1)
+        return;
+    error.linePos = error.pos.map(pos => lc.linePos(pos));
+    const { line, col } = error.linePos[0];
+    error.message += ` at line ${line}, column ${col}`;
+    let ci = col - 1;
+    let lineStr = src
+        .substring(lc.lineStarts[line - 1], lc.lineStarts[line])
+        .replace(/[\n\r]+$/, '');
+    // Trim to max 80 chars, keeping col position near the middle
+    if (ci >= 60 && lineStr.length > 80) {
+        const trimStart = Math.min(ci - 39, lineStr.length - 79);
+        lineStr = '…' + lineStr.substring(trimStart);
+        ci -= trimStart - 1;
+    }
+    if (lineStr.length > 80)
+        lineStr = lineStr.substring(0, 79) + '…';
+    // Include previous line in context if pointing at line start
+    if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {
+        // Regexp won't match if start is trimmed
+        let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);
+        if (prev.length > 80)
+            prev = prev.substring(0, 79) + '…\n';
+        lineStr = prev + lineStr;
+    }
+    if (/[^ ]/.test(lineStr)) {
+        let count = 1;
+        const end = error.linePos[1];
+        if (end?.line === line && end.col > col) {
+            count = Math.max(1, Math.min(end.col - col, 80 - ci));
+        }
+        const pointer = ' '.repeat(ci) + '^'.repeat(count);
+        error.message += `:\n\n${lineStr}\n${pointer}\n`;
+    }
+};
+
+exports.YAMLError = YAMLError;
+exports.YAMLParseError = YAMLParseError;
+exports.YAMLWarning = YAMLWarning;
+exports.prettifyError = prettifyError;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/index.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,25 @@
+export { Composer } from './compose/composer';
+export { Document } from './doc/Document';
+export { Schema } from './schema/Schema';
+export type { ErrorCode } from './errors';
+export { YAMLError, YAMLParseError, YAMLWarning } from './errors';
+export { Alias } from './nodes/Alias';
+export { isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq } from './nodes/identity';
+export type { Node, ParsedNode, Range } from './nodes/Node';
+export { Pair } from './nodes/Pair';
+export { Scalar } from './nodes/Scalar';
+export { YAMLMap } from './nodes/YAMLMap';
+export { YAMLSeq } from './nodes/YAMLSeq';
+export type { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToJSOptions, ToStringOptions } from './options';
+export * as CST from './parse/cst';
+export { Lexer } from './parse/lexer';
+export { LineCounter } from './parse/line-counter';
+export { Parser } from './parse/parser';
+export type { EmptyStream } from './public-api';
+export { parse, parseAllDocuments, parseDocument, stringify } from './public-api';
+export type { TagId, Tags } from './schema/tags';
+export type { CollectionTag, ScalarTag } from './schema/types';
+export type { YAMLOMap } from './schema/yaml-1.1/omap';
+export type { YAMLSet } from './schema/yaml-1.1/set';
+export type { asyncVisitor, asyncVisitorFn, visitor, visitorFn } from './visit';
+export { visit, visitAsync } from './visit';
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/index.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,50 @@
+'use strict';
+
+var composer = require('./compose/composer.js');
+var Document = require('./doc/Document.js');
+var Schema = require('./schema/Schema.js');
+var errors = require('./errors.js');
+var Alias = require('./nodes/Alias.js');
+var identity = require('./nodes/identity.js');
+var Pair = require('./nodes/Pair.js');
+var Scalar = require('./nodes/Scalar.js');
+var YAMLMap = require('./nodes/YAMLMap.js');
+var YAMLSeq = require('./nodes/YAMLSeq.js');
+var cst = require('./parse/cst.js');
+var lexer = require('./parse/lexer.js');
+var lineCounter = require('./parse/line-counter.js');
+var parser = require('./parse/parser.js');
+var publicApi = require('./public-api.js');
+var visit = require('./visit.js');
+
+
+
+exports.Composer = composer.Composer;
+exports.Document = Document.Document;
+exports.Schema = Schema.Schema;
+exports.YAMLError = errors.YAMLError;
+exports.YAMLParseError = errors.YAMLParseError;
+exports.YAMLWarning = errors.YAMLWarning;
+exports.Alias = Alias.Alias;
+exports.isAlias = identity.isAlias;
+exports.isCollection = identity.isCollection;
+exports.isDocument = identity.isDocument;
+exports.isMap = identity.isMap;
+exports.isNode = identity.isNode;
+exports.isPair = identity.isPair;
+exports.isScalar = identity.isScalar;
+exports.isSeq = identity.isSeq;
+exports.Pair = Pair.Pair;
+exports.Scalar = Scalar.Scalar;
+exports.YAMLMap = YAMLMap.YAMLMap;
+exports.YAMLSeq = YAMLSeq.YAMLSeq;
+exports.CST = cst;
+exports.Lexer = lexer.Lexer;
+exports.LineCounter = lineCounter.LineCounter;
+exports.Parser = parser.Parser;
+exports.parse = publicApi.parse;
+exports.parseAllDocuments = publicApi.parseAllDocuments;
+exports.parseDocument = publicApi.parseDocument;
+exports.stringify = publicApi.stringify;
+exports.visit = visit.visit;
+exports.visitAsync = visit.visitAsync;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/log.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/log.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/log.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+export type LogLevelId = 'silent' | 'error' | 'warn' | 'debug';
+export declare function debug(logLevel: LogLevelId, ...messages: any[]): void;
+export declare function warn(logLevel: LogLevelId, warning: string | Error): void;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/log.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/log.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/log.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+'use strict';
+
+var node_process = require('process');
+
+function debug(logLevel, ...messages) {
+    if (logLevel === 'debug')
+        console.log(...messages);
+}
+function warn(logLevel, warning) {
+    if (logLevel === 'debug' || logLevel === 'warn') {
+        if (typeof node_process.emitWarning === 'function')
+            node_process.emitWarning(warning);
+        else
+            console.warn(warning);
+    }
+}
+
+exports.debug = debug;
+exports.warn = warn;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Alias.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Alias.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Alias.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,29 @@
+import type { Document } from '../doc/Document';
+import type { FlowScalar } from '../parse/cst';
+import type { StringifyContext } from '../stringify/stringify';
+import type { Range } from './Node';
+import { NodeBase } from './Node';
+import type { Scalar } from './Scalar';
+import type { ToJSContext } from './toJS';
+import type { YAMLMap } from './YAMLMap';
+import type { YAMLSeq } from './YAMLSeq';
+export declare namespace Alias {
+    interface Parsed extends Alias {
+        range: Range;
+        srcToken?: FlowScalar & {
+            type: 'alias';
+        };
+    }
+}
+export declare class Alias extends NodeBase {
+    source: string;
+    anchor?: never;
+    constructor(source: string);
+    /**
+     * Resolve the value of this alias within `doc`, finding the last
+     * instance of the `source` anchor before this node.
+     */
+    resolve(doc: Document, ctx?: ToJSContext): Scalar | YAMLMap | YAMLSeq | undefined;
+    toJSON(_arg?: unknown, ctx?: ToJSContext): unknown;
+    toString(ctx?: StringifyContext, _onComment?: () => void, _onChompKeep?: () => void): string;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Alias.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Alias.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Alias.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,118 @@
+'use strict';
+
+var anchors = require('../doc/anchors.js');
+var visit = require('../visit.js');
+var identity = require('./identity.js');
+var Node = require('./Node.js');
+var toJS = require('./toJS.js');
+
+class Alias extends Node.NodeBase {
+    constructor(source) {
+        super(identity.ALIAS);
+        this.source = source;
+        Object.defineProperty(this, 'tag', {
+            set() {
+                throw new Error('Alias nodes cannot have tags');
+            }
+        });
+    }
+    /**
+     * Resolve the value of this alias within `doc`, finding the last
+     * instance of the `source` anchor before this node.
+     */
+    resolve(doc, ctx) {
+        if (ctx?.maxAliasCount === 0)
+            throw new ReferenceError('Alias resolution is disabled');
+        let nodes;
+        if (ctx?.aliasResolveCache) {
+            nodes = ctx.aliasResolveCache;
+        }
+        else {
+            nodes = [];
+            visit.visit(doc, {
+                Node: (_key, node) => {
+                    if (identity.isAlias(node) || identity.hasAnchor(node))
+                        nodes.push(node);
+                }
+            });
+            if (ctx)
+                ctx.aliasResolveCache = nodes;
+        }
+        let found = undefined;
+        for (const node of nodes) {
+            if (node === this)
+                break;
+            if (node.anchor === this.source)
+                found = node;
+        }
+        return found;
+    }
+    toJSON(_arg, ctx) {
+        if (!ctx)
+            return { source: this.source };
+        const { anchors, doc, maxAliasCount } = ctx;
+        const source = this.resolve(doc, ctx);
+        if (!source) {
+            const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;
+            throw new ReferenceError(msg);
+        }
+        let data = anchors.get(source);
+        if (!data) {
+            // Resolve anchors for Node.prototype.toJS()
+            toJS.toJS(source, null, ctx);
+            data = anchors.get(source);
+        }
+        /* istanbul ignore if */
+        if (data?.res === undefined) {
+            const msg = 'This should not happen: Alias anchor was not resolved?';
+            throw new ReferenceError(msg);
+        }
+        if (maxAliasCount >= 0) {
+            data.count += 1;
+            if (data.aliasCount === 0)
+                data.aliasCount = getAliasCount(doc, source, anchors);
+            if (data.count * data.aliasCount > maxAliasCount) {
+                const msg = 'Excessive alias count indicates a resource exhaustion attack';
+                throw new ReferenceError(msg);
+            }
+        }
+        return data.res;
+    }
+    toString(ctx, _onComment, _onChompKeep) {
+        const src = `*${this.source}`;
+        if (ctx) {
+            anchors.anchorIsValid(this.source);
+            if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {
+                const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;
+                throw new Error(msg);
+            }
+            if (ctx.implicitKey)
+                return `${src} `;
+        }
+        return src;
+    }
+}
+function getAliasCount(doc, node, anchors) {
+    if (identity.isAlias(node)) {
+        const source = node.resolve(doc);
+        const anchor = anchors && source && anchors.get(source);
+        return anchor ? anchor.count * anchor.aliasCount : 0;
+    }
+    else if (identity.isCollection(node)) {
+        let count = 0;
+        for (const item of node.items) {
+            const c = getAliasCount(doc, item, anchors);
+            if (c > count)
+                count = c;
+        }
+        return count;
+    }
+    else if (identity.isPair(node)) {
+        const kc = getAliasCount(doc, node.key, anchors);
+        const vc = getAliasCount(doc, node.value, anchors);
+        return Math.max(kc, vc);
+    }
+    return 1;
+}
+
+exports.Alias = Alias;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Collection.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Collection.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Collection.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,73 @@
+import type { Schema } from '../schema/Schema';
+import { NODE_TYPE } from './identity';
+import { NodeBase } from './Node';
+export declare function collectionFromPath(schema: Schema, path: unknown[], value: unknown): import('./Node').Node;
+export declare const isEmptyPath: (path: Iterable<unknown> | null | undefined) => path is null | undefined;
+export declare abstract class Collection extends NodeBase {
+    schema: Schema | undefined;
+    [NODE_TYPE]: symbol;
+    items: unknown[];
+    /** An optional anchor on this node. Used by alias nodes. */
+    anchor?: string;
+    /**
+     * If true, stringify this and all child nodes using flow rather than
+     * block styles.
+     */
+    flow?: boolean;
+    constructor(type: symbol, schema?: Schema);
+    /**
+     * Create a copy of this collection.
+     *
+     * @param schema - If defined, overwrites the original's schema
+     */
+    clone(schema?: Schema): Collection;
+    /** Adds a value to the collection. */
+    abstract add(value: unknown): void;
+    /**
+     * Removes a value from the collection.
+     * @returns `true` if the item was found and removed.
+     */
+    abstract delete(key: unknown): boolean;
+    /**
+     * Returns item at `key`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    abstract get(key: unknown, keepScalar?: boolean): unknown;
+    /**
+     * Checks if the collection includes a value with the key `key`.
+     */
+    abstract has(key: unknown): boolean;
+    /**
+     * Sets a value in this collection. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    abstract set(key: unknown, value: unknown): void;
+    /**
+     * Adds a value to the collection. For `!!map` and `!!omap` the value must
+     * be a Pair instance or a `{ key, value }` object, which may not have a key
+     * that already exists in the map.
+     */
+    addIn(path: Iterable<unknown>, value: unknown): void;
+    /**
+     * Removes a value from the collection.
+     * @returns `true` if the item was found and removed.
+     */
+    deleteIn(path: Iterable<unknown>): boolean;
+    /**
+     * Returns item at `key`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    getIn(path: Iterable<unknown>, keepScalar?: boolean): unknown;
+    hasAllNullValues(allowScalar?: boolean): boolean;
+    /**
+     * Checks if the collection includes a value with the key `key`.
+     */
+    hasIn(path: Iterable<unknown>): boolean;
+    /**
+     * Sets a value in this collection. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    setIn(path: Iterable<unknown>, value: unknown): void;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Collection.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Collection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,151 @@
+'use strict';
+
+var createNode = require('../doc/createNode.js');
+var identity = require('./identity.js');
+var Node = require('./Node.js');
+
+function collectionFromPath(schema, path, value) {
+    let v = value;
+    for (let i = path.length - 1; i >= 0; --i) {
+        const k = path[i];
+        if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {
+            const a = [];
+            a[k] = v;
+            v = a;
+        }
+        else {
+            v = new Map([[k, v]]);
+        }
+    }
+    return createNode.createNode(v, undefined, {
+        aliasDuplicateObjects: false,
+        keepUndefined: false,
+        onAnchor: () => {
+            throw new Error('This should not happen, please report a bug.');
+        },
+        schema,
+        sourceObjects: new Map()
+    });
+}
+// Type guard is intentionally a little wrong so as to be more useful,
+// as it does not cover untypable empty non-string iterables (e.g. []).
+const isEmptyPath = (path) => path == null ||
+    (typeof path === 'object' && !!path[Symbol.iterator]().next().done);
+class Collection extends Node.NodeBase {
+    constructor(type, schema) {
+        super(type);
+        Object.defineProperty(this, 'schema', {
+            value: schema,
+            configurable: true,
+            enumerable: false,
+            writable: true
+        });
+    }
+    /**
+     * Create a copy of this collection.
+     *
+     * @param schema - If defined, overwrites the original's schema
+     */
+    clone(schema) {
+        const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));
+        if (schema)
+            copy.schema = schema;
+        copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);
+        if (this.range)
+            copy.range = this.range.slice();
+        return copy;
+    }
+    /**
+     * Adds a value to the collection. For `!!map` and `!!omap` the value must
+     * be a Pair instance or a `{ key, value }` object, which may not have a key
+     * that already exists in the map.
+     */
+    addIn(path, value) {
+        if (isEmptyPath(path))
+            this.add(value);
+        else {
+            const [key, ...rest] = path;
+            const node = this.get(key, true);
+            if (identity.isCollection(node))
+                node.addIn(rest, value);
+            else if (node === undefined && this.schema)
+                this.set(key, collectionFromPath(this.schema, rest, value));
+            else
+                throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
+        }
+    }
+    /**
+     * Removes a value from the collection.
+     * @returns `true` if the item was found and removed.
+     */
+    deleteIn(path) {
+        const [key, ...rest] = path;
+        if (rest.length === 0)
+            return this.delete(key);
+        const node = this.get(key, true);
+        if (identity.isCollection(node))
+            return node.deleteIn(rest);
+        else
+            throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
+    }
+    /**
+     * Returns item at `key`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     */
+    getIn(path, keepScalar) {
+        const [key, ...rest] = path;
+        const node = this.get(key, true);
+        if (rest.length === 0)
+            return !keepScalar && identity.isScalar(node) ? node.value : node;
+        else
+            return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;
+    }
+    hasAllNullValues(allowScalar) {
+        return this.items.every(node => {
+            if (!identity.isPair(node))
+                return false;
+            const n = node.value;
+            return (n == null ||
+                (allowScalar &&
+                    identity.isScalar(n) &&
+                    n.value == null &&
+                    !n.commentBefore &&
+                    !n.comment &&
+                    !n.tag));
+        });
+    }
+    /**
+     * Checks if the collection includes a value with the key `key`.
+     */
+    hasIn(path) {
+        const [key, ...rest] = path;
+        if (rest.length === 0)
+            return this.has(key);
+        const node = this.get(key, true);
+        return identity.isCollection(node) ? node.hasIn(rest) : false;
+    }
+    /**
+     * Sets a value in this collection. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     */
+    setIn(path, value) {
+        const [key, ...rest] = path;
+        if (rest.length === 0) {
+            this.set(key, value);
+        }
+        else {
+            const node = this.get(key, true);
+            if (identity.isCollection(node))
+                node.setIn(rest, value);
+            else if (node === undefined && this.schema)
+                this.set(key, collectionFromPath(this.schema, rest, value));
+            else
+                throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
+        }
+    }
+}
+
+exports.Collection = Collection;
+exports.collectionFromPath = collectionFromPath;
+exports.isEmptyPath = isEmptyPath;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Node.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Node.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Node.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,53 @@
+import type { Document } from '../doc/Document';
+import type { ToJSOptions } from '../options';
+import type { Token } from '../parse/cst';
+import type { StringifyContext } from '../stringify/stringify';
+import type { Alias } from './Alias';
+import { NODE_TYPE } from './identity';
+import type { Scalar } from './Scalar';
+import type { ToJSContext } from './toJS';
+import type { MapLike, YAMLMap } from './YAMLMap';
+import type { YAMLSeq } from './YAMLSeq';
+export type Node<T = unknown> = Alias | Scalar<T> | YAMLMap<unknown, T> | YAMLSeq<T>;
+/** Utility type mapper */
+export type NodeType<T> = T extends string | number | bigint | boolean | null | undefined ? Scalar<T> : T extends Date ? Scalar<string | Date> : T extends Array<any> ? YAMLSeq<NodeType<T[number]>> : T extends {
+    [key: string]: any;
+} ? YAMLMap<NodeType<keyof T>, NodeType<T[keyof T]>> : T extends {
+    [key: number]: any;
+} ? YAMLMap<NodeType<keyof T>, NodeType<T[keyof T]>> : Node;
+export type ParsedNode = Alias.Parsed | Scalar.Parsed | YAMLMap.Parsed | YAMLSeq.Parsed;
+/** `[start, value-end, node-end]` */
+export type Range = [number, number, number];
+export declare abstract class NodeBase {
+    readonly [NODE_TYPE]: symbol;
+    /** A comment on or immediately after this */
+    comment?: string | null;
+    /** A comment before this */
+    commentBefore?: string | null;
+    /**
+     * The `[start, value-end, node-end]` character offsets for the part of the
+     * source parsed into this node (undefined if not parsed). The `value-end`
+     * and `node-end` positions are themselves not included in their respective
+     * ranges.
+     */
+    range?: Range | null;
+    /** A blank line before this node and its commentBefore */
+    spaceBefore?: boolean;
+    /** The CST token that was composed into this node.  */
+    srcToken?: Token;
+    /** A fully qualified tag, if required */
+    tag?: string;
+    /**
+     * Customize the way that a key-value pair is resolved.
+     * Used for YAML 1.1 !!merge << handling.
+     */
+    addToJSMap?: (ctx: ToJSContext | undefined, map: MapLike, value: unknown) => void;
+    /** A plain JS representation of this node */
+    abstract toJSON(): any;
+    abstract toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
+    constructor(type: symbol);
+    /** Create a copy of this node.  */
+    clone(): NodeBase;
+    /** A plain JavaScript representation of this node. */
+    toJS(doc: Document<Node, boolean>, { mapAsMap, maxAliasCount, onAnchor, reviver }?: ToJSOptions): any;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Node.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Node.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Node.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,40 @@
+'use strict';
+
+var applyReviver = require('../doc/applyReviver.js');
+var identity = require('./identity.js');
+var toJS = require('./toJS.js');
+
+class NodeBase {
+    constructor(type) {
+        Object.defineProperty(this, identity.NODE_TYPE, { value: type });
+    }
+    /** Create a copy of this node.  */
+    clone() {
+        const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));
+        if (this.range)
+            copy.range = this.range.slice();
+        return copy;
+    }
+    /** A plain JavaScript representation of this node. */
+    toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {
+        if (!identity.isDocument(doc))
+            throw new TypeError('A document argument is required');
+        const ctx = {
+            anchors: new Map(),
+            doc,
+            keep: true,
+            mapAsMap: mapAsMap === true,
+            mapKeyWarned: false,
+            maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100
+        };
+        const res = toJS.toJS(this, '', ctx);
+        if (typeof onAnchor === 'function')
+            for (const { count, res } of ctx.anchors.values())
+                onAnchor(res, count);
+        return typeof reviver === 'function'
+            ? applyReviver.applyReviver(reviver, { '': res }, '', res)
+            : res;
+    }
+}
+
+exports.NodeBase = NodeBase;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Pair.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Pair.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Pair.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,22 @@
+import type { CreateNodeContext } from '../doc/createNode';
+import type { CollectionItem } from '../parse/cst';
+import type { Schema } from '../schema/Schema';
+import type { StringifyContext } from '../stringify/stringify';
+import { addPairToJSMap } from './addPairToJSMap';
+import { NODE_TYPE } from './identity';
+import type { Node } from './Node';
+import type { ToJSContext } from './toJS';
+export declare function createPair(key: unknown, value: unknown, ctx: CreateNodeContext): Pair<Node, Node>;
+export declare class Pair<K = unknown, V = unknown> {
+    readonly [NODE_TYPE]: symbol;
+    /** Always Node or null when parsed, but can be set to anything. */
+    key: K;
+    /** Always Node or null when parsed, but can be set to anything. */
+    value: V | null;
+    /** The CST token that was composed into this pair.  */
+    srcToken?: CollectionItem;
+    constructor(key: K, value?: V | null);
+    clone(schema?: Schema): Pair<K, V>;
+    toJSON(_?: unknown, ctx?: ToJSContext): ReturnType<typeof addPairToJSMap>;
+    toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Pair.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Pair.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Pair.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,39 @@
+'use strict';
+
+var createNode = require('../doc/createNode.js');
+var stringifyPair = require('../stringify/stringifyPair.js');
+var addPairToJSMap = require('./addPairToJSMap.js');
+var identity = require('./identity.js');
+
+function createPair(key, value, ctx) {
+    const k = createNode.createNode(key, undefined, ctx);
+    const v = createNode.createNode(value, undefined, ctx);
+    return new Pair(k, v);
+}
+class Pair {
+    constructor(key, value = null) {
+        Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });
+        this.key = key;
+        this.value = value;
+    }
+    clone(schema) {
+        let { key, value } = this;
+        if (identity.isNode(key))
+            key = key.clone(schema);
+        if (identity.isNode(value))
+            value = value.clone(schema);
+        return new Pair(key, value);
+    }
+    toJSON(_, ctx) {
+        const pair = ctx?.mapAsMap ? new Map() : {};
+        return addPairToJSMap.addPairToJSMap(ctx, pair, this);
+    }
+    toString(ctx, onComment, onChompKeep) {
+        return ctx?.doc
+            ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)
+            : JSON.stringify(this);
+    }
+}
+
+exports.Pair = Pair;
+exports.createPair = createPair;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Scalar.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,47 @@
+import type { BlockScalar, FlowScalar } from '../parse/cst';
+import type { Range } from './Node';
+import { NodeBase } from './Node';
+import type { ToJSContext } from './toJS';
+export declare const isScalarValue: (value: unknown) => boolean;
+export declare namespace Scalar {
+    interface Parsed extends Scalar {
+        range: Range;
+        source: string;
+        srcToken?: FlowScalar | BlockScalar;
+    }
+    type BLOCK_FOLDED = 'BLOCK_FOLDED';
+    type BLOCK_LITERAL = 'BLOCK_LITERAL';
+    type PLAIN = 'PLAIN';
+    type QUOTE_DOUBLE = 'QUOTE_DOUBLE';
+    type QUOTE_SINGLE = 'QUOTE_SINGLE';
+    type Type = BLOCK_FOLDED | BLOCK_LITERAL | PLAIN | QUOTE_DOUBLE | QUOTE_SINGLE;
+}
+export declare class Scalar<T = unknown> extends NodeBase {
+    static readonly BLOCK_FOLDED = "BLOCK_FOLDED";
+    static readonly BLOCK_LITERAL = "BLOCK_LITERAL";
+    static readonly PLAIN = "PLAIN";
+    static readonly QUOTE_DOUBLE = "QUOTE_DOUBLE";
+    static readonly QUOTE_SINGLE = "QUOTE_SINGLE";
+    value: T;
+    /** An optional anchor on this node. Used by alias nodes. */
+    anchor?: string;
+    /**
+     * By default (undefined), numbers use decimal notation.
+     * The YAML 1.2 core schema only supports 'HEX' and 'OCT'.
+     * The YAML 1.1 schema also supports 'BIN' and 'TIME'
+     */
+    format?: string;
+    /**
+     * If `value` is a number that is serialized as a decimal string
+     * (i.e. not using exponential notation),
+     * use this value when stringifying this node.
+     */
+    minFractionDigits?: number;
+    /** Set during parsing to the source string value */
+    source?: string;
+    /** The scalar style used for the node's string representation */
+    type?: Scalar.Type;
+    constructor(value: T);
+    toJSON(arg?: any, ctx?: ToJSContext): any;
+    toString(): string;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/Scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,27 @@
+'use strict';
+
+var identity = require('./identity.js');
+var Node = require('./Node.js');
+var toJS = require('./toJS.js');
+
+const isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');
+class Scalar extends Node.NodeBase {
+    constructor(value) {
+        super(identity.SCALAR);
+        this.value = value;
+    }
+    toJSON(arg, ctx) {
+        return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);
+    }
+    toString() {
+        return String(this.value);
+    }
+}
+Scalar.BLOCK_FOLDED = 'BLOCK_FOLDED';
+Scalar.BLOCK_LITERAL = 'BLOCK_LITERAL';
+Scalar.PLAIN = 'PLAIN';
+Scalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';
+Scalar.QUOTE_SINGLE = 'QUOTE_SINGLE';
+
+exports.Scalar = Scalar;
+exports.isScalarValue = isScalarValue;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLMap.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLMap.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLMap.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,53 @@
+import type { BlockMap, FlowCollection } from '../parse/cst';
+import type { Schema } from '../schema/Schema';
+import type { StringifyContext } from '../stringify/stringify';
+import type { CreateNodeContext } from '../util';
+import { Collection } from './Collection';
+import type { ParsedNode, Range } from './Node';
+import { Pair } from './Pair';
+import type { Scalar } from './Scalar';
+import type { ToJSContext } from './toJS';
+export type MapLike = Map<unknown, unknown> | Set<unknown> | Record<string | number | symbol, unknown>;
+export declare function findPair<K = unknown, V = unknown>(items: Iterable<Pair<K, V>>, key: unknown): Pair<K, V> | undefined;
+export declare namespace YAMLMap {
+    interface Parsed<K extends ParsedNode = ParsedNode, V extends ParsedNode | null = ParsedNode | null> extends YAMLMap<K, V> {
+        items: Pair<K, V>[];
+        range: Range;
+        srcToken?: BlockMap | FlowCollection;
+    }
+}
+export declare class YAMLMap<K = unknown, V = unknown> extends Collection {
+    static get tagName(): 'tag:yaml.org,2002:map';
+    items: Pair<K, V>[];
+    constructor(schema?: Schema);
+    /**
+     * A generic collection parsing method that can be extended
+     * to other node classes that inherit from YAMLMap
+     */
+    static from(schema: Schema, obj: unknown, ctx: CreateNodeContext): YAMLMap;
+    /**
+     * Adds a value to the collection.
+     *
+     * @param overwrite - If not set `true`, using a key that is already in the
+     *   collection will throw. Otherwise, overwrites the previous value.
+     */
+    add(pair: Pair<K, V> | {
+        key: K;
+        value: V;
+    }, overwrite?: boolean): void;
+    delete(key: unknown): boolean;
+    get(key: unknown, keepScalar: true): Scalar<V> | undefined;
+    get(key: unknown, keepScalar?: false): V | undefined;
+    get(key: unknown, keepScalar?: boolean): V | Scalar<V> | undefined;
+    has(key: unknown): boolean;
+    set(key: K, value: V): void;
+    /**
+     * @param ctx - Conversion context, originally set in Document#toJS()
+     * @param {Class} Type - If set, forces the returned collection type
+     * @returns Instance of Type, Map, or Object
+     */
+    toJSON<T extends MapLike = Map<unknown, unknown>>(_?: unknown, ctx?: ToJSContext, Type?: {
+        new (): T;
+    }): any;
+    toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLMap.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLMap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLMap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,147 @@
+'use strict';
+
+var stringifyCollection = require('../stringify/stringifyCollection.js');
+var addPairToJSMap = require('./addPairToJSMap.js');
+var Collection = require('./Collection.js');
+var identity = require('./identity.js');
+var Pair = require('./Pair.js');
+var Scalar = require('./Scalar.js');
+
+function findPair(items, key) {
+    const k = identity.isScalar(key) ? key.value : key;
+    for (const it of items) {
+        if (identity.isPair(it)) {
+            if (it.key === key || it.key === k)
+                return it;
+            if (identity.isScalar(it.key) && it.key.value === k)
+                return it;
+        }
+    }
+    return undefined;
+}
+class YAMLMap extends Collection.Collection {
+    static get tagName() {
+        return 'tag:yaml.org,2002:map';
+    }
+    constructor(schema) {
+        super(identity.MAP, schema);
+        this.items = [];
+    }
+    /**
+     * A generic collection parsing method that can be extended
+     * to other node classes that inherit from YAMLMap
+     */
+    static from(schema, obj, ctx) {
+        const { keepUndefined, replacer } = ctx;
+        const map = new this(schema);
+        const add = (key, value) => {
+            if (typeof replacer === 'function')
+                value = replacer.call(obj, key, value);
+            else if (Array.isArray(replacer) && !replacer.includes(key))
+                return;
+            if (value !== undefined || keepUndefined)
+                map.items.push(Pair.createPair(key, value, ctx));
+        };
+        if (obj instanceof Map) {
+            for (const [key, value] of obj)
+                add(key, value);
+        }
+        else if (obj && typeof obj === 'object') {
+            for (const key of Object.keys(obj))
+                add(key, obj[key]);
+        }
+        if (typeof schema.sortMapEntries === 'function') {
+            map.items.sort(schema.sortMapEntries);
+        }
+        return map;
+    }
+    /**
+     * Adds a value to the collection.
+     *
+     * @param overwrite - If not set `true`, using a key that is already in the
+     *   collection will throw. Otherwise, overwrites the previous value.
+     */
+    add(pair, overwrite) {
+        let _pair;
+        if (identity.isPair(pair))
+            _pair = pair;
+        else if (!pair || typeof pair !== 'object' || !('key' in pair)) {
+            // In TypeScript, this never happens.
+            _pair = new Pair.Pair(pair, pair?.value);
+        }
+        else
+            _pair = new Pair.Pair(pair.key, pair.value);
+        const prev = findPair(this.items, _pair.key);
+        const sortEntries = this.schema?.sortMapEntries;
+        if (prev) {
+            if (!overwrite)
+                throw new Error(`Key ${_pair.key} already set`);
+            // For scalars, keep the old node & its comments and anchors
+            if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))
+                prev.value.value = _pair.value;
+            else
+                prev.value = _pair.value;
+        }
+        else if (sortEntries) {
+            const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);
+            if (i === -1)
+                this.items.push(_pair);
+            else
+                this.items.splice(i, 0, _pair);
+        }
+        else {
+            this.items.push(_pair);
+        }
+    }
+    delete(key) {
+        const it = findPair(this.items, key);
+        if (!it)
+            return false;
+        const del = this.items.splice(this.items.indexOf(it), 1);
+        return del.length > 0;
+    }
+    get(key, keepScalar) {
+        const it = findPair(this.items, key);
+        const node = it?.value;
+        return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;
+    }
+    has(key) {
+        return !!findPair(this.items, key);
+    }
+    set(key, value) {
+        this.add(new Pair.Pair(key, value), true);
+    }
+    /**
+     * @param ctx - Conversion context, originally set in Document#toJS()
+     * @param {Class} Type - If set, forces the returned collection type
+     * @returns Instance of Type, Map, or Object
+     */
+    toJSON(_, ctx, Type) {
+        const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};
+        if (ctx?.onCreate)
+            ctx.onCreate(map);
+        for (const item of this.items)
+            addPairToJSMap.addPairToJSMap(ctx, map, item);
+        return map;
+    }
+    toString(ctx, onComment, onChompKeep) {
+        if (!ctx)
+            return JSON.stringify(this);
+        for (const item of this.items) {
+            if (!identity.isPair(item))
+                throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);
+        }
+        if (!ctx.allNullValues && this.hasAllNullValues(false))
+            ctx = Object.assign({}, ctx, { allNullValues: true });
+        return stringifyCollection.stringifyCollection(this, ctx, {
+            blockItemPrefix: '',
+            flowChars: { start: '{', end: '}' },
+            itemIndent: ctx.indent || '',
+            onChompKeep,
+            onComment
+        });
+    }
+}
+
+exports.YAMLMap = YAMLMap;
+exports.findPair = findPair;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLSeq.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLSeq.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLSeq.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,60 @@
+import type { CreateNodeContext } from '../doc/createNode';
+import type { BlockSequence, FlowCollection } from '../parse/cst';
+import type { Schema } from '../schema/Schema';
+import type { StringifyContext } from '../stringify/stringify';
+import { Collection } from './Collection';
+import type { ParsedNode, Range } from './Node';
+import type { Pair } from './Pair';
+import type { Scalar } from './Scalar';
+import type { ToJSContext } from './toJS';
+export declare namespace YAMLSeq {
+    interface Parsed<T extends ParsedNode | Pair<ParsedNode, ParsedNode | null> = ParsedNode> extends YAMLSeq<T> {
+        items: T[];
+        range: Range;
+        srcToken?: BlockSequence | FlowCollection;
+    }
+}
+export declare class YAMLSeq<T = unknown> extends Collection {
+    static get tagName(): 'tag:yaml.org,2002:seq';
+    items: T[];
+    constructor(schema?: Schema);
+    add(value: T): void;
+    /**
+     * Removes a value from the collection.
+     *
+     * `key` must contain a representation of an integer for this to succeed.
+     * It may be wrapped in a `Scalar`.
+     *
+     * @returns `true` if the item was found and removed.
+     */
+    delete(key: unknown): boolean;
+    /**
+     * Returns item at `key`, or `undefined` if not found. By default unwraps
+     * scalar values from their surrounding node; to disable set `keepScalar` to
+     * `true` (collections are always returned intact).
+     *
+     * `key` must contain a representation of an integer for this to succeed.
+     * It may be wrapped in a `Scalar`.
+     */
+    get(key: unknown, keepScalar: true): Scalar<T> | undefined;
+    get(key: unknown, keepScalar?: false): T | undefined;
+    get(key: unknown, keepScalar?: boolean): T | Scalar<T> | undefined;
+    /**
+     * Checks if the collection includes a value with the key `key`.
+     *
+     * `key` must contain a representation of an integer for this to succeed.
+     * It may be wrapped in a `Scalar`.
+     */
+    has(key: unknown): boolean;
+    /**
+     * Sets a value in this collection. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     *
+     * If `key` does not contain a representation of an integer, this will throw.
+     * It may be wrapped in a `Scalar`.
+     */
+    set(key: unknown, value: T): void;
+    toJSON(_?: unknown, ctx?: ToJSContext): unknown[];
+    toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
+    static from(schema: Schema, obj: unknown, ctx: CreateNodeContext): YAMLSeq;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLSeq.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLSeq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/YAMLSeq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,115 @@
+'use strict';
+
+var createNode = require('../doc/createNode.js');
+var stringifyCollection = require('../stringify/stringifyCollection.js');
+var Collection = require('./Collection.js');
+var identity = require('./identity.js');
+var Scalar = require('./Scalar.js');
+var toJS = require('./toJS.js');
+
+class YAMLSeq extends Collection.Collection {
+    static get tagName() {
+        return 'tag:yaml.org,2002:seq';
+    }
+    constructor(schema) {
+        super(identity.SEQ, schema);
+        this.items = [];
+    }
+    add(value) {
+        this.items.push(value);
+    }
+    /**
+     * Removes a value from the collection.
+     *
+     * `key` must contain a representation of an integer for this to succeed.
+     * It may be wrapped in a `Scalar`.
+     *
+     * @returns `true` if the item was found and removed.
+     */
+    delete(key) {
+        const idx = asItemIndex(key);
+        if (typeof idx !== 'number')
+            return false;
+        const del = this.items.splice(idx, 1);
+        return del.length > 0;
+    }
+    get(key, keepScalar) {
+        const idx = asItemIndex(key);
+        if (typeof idx !== 'number')
+            return undefined;
+        const it = this.items[idx];
+        return !keepScalar && identity.isScalar(it) ? it.value : it;
+    }
+    /**
+     * Checks if the collection includes a value with the key `key`.
+     *
+     * `key` must contain a representation of an integer for this to succeed.
+     * It may be wrapped in a `Scalar`.
+     */
+    has(key) {
+        const idx = asItemIndex(key);
+        return typeof idx === 'number' && idx < this.items.length;
+    }
+    /**
+     * Sets a value in this collection. For `!!set`, `value` needs to be a
+     * boolean to add/remove the item from the set.
+     *
+     * If `key` does not contain a representation of an integer, this will throw.
+     * It may be wrapped in a `Scalar`.
+     */
+    set(key, value) {
+        const idx = asItemIndex(key);
+        if (typeof idx !== 'number')
+            throw new Error(`Expected a valid index, not ${key}.`);
+        const prev = this.items[idx];
+        if (identity.isScalar(prev) && Scalar.isScalarValue(value))
+            prev.value = value;
+        else
+            this.items[idx] = value;
+    }
+    toJSON(_, ctx) {
+        const seq = [];
+        if (ctx?.onCreate)
+            ctx.onCreate(seq);
+        let i = 0;
+        for (const item of this.items)
+            seq.push(toJS.toJS(item, String(i++), ctx));
+        return seq;
+    }
+    toString(ctx, onComment, onChompKeep) {
+        if (!ctx)
+            return JSON.stringify(this);
+        return stringifyCollection.stringifyCollection(this, ctx, {
+            blockItemPrefix: '- ',
+            flowChars: { start: '[', end: ']' },
+            itemIndent: (ctx.indent || '') + '  ',
+            onChompKeep,
+            onComment
+        });
+    }
+    static from(schema, obj, ctx) {
+        const { replacer } = ctx;
+        const seq = new this(schema);
+        if (obj && Symbol.iterator in Object(obj)) {
+            let i = 0;
+            for (let it of obj) {
+                if (typeof replacer === 'function') {
+                    const key = obj instanceof Set ? it : String(i++);
+                    it = replacer.call(obj, key, it);
+                }
+                seq.items.push(createNode.createNode(it, undefined, ctx));
+            }
+        }
+        return seq;
+    }
+}
+function asItemIndex(key) {
+    let idx = identity.isScalar(key) ? key.value : key;
+    if (idx && typeof idx === 'string')
+        idx = Number(idx);
+    return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0
+        ? idx
+        : null;
+}
+
+exports.YAMLSeq = YAMLSeq;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { Pair } from './Pair';
+import type { ToJSContext } from './toJS';
+import type { MapLike } from './YAMLMap';
+export declare function addPairToJSMap(ctx: ToJSContext | undefined, map: MapLike, { key, value }: Pair): MapLike;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/addPairToJSMap.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/addPairToJSMap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/addPairToJSMap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,65 @@
+'use strict';
+
+var log = require('../log.js');
+var merge = require('../schema/yaml-1.1/merge.js');
+var stringify = require('../stringify/stringify.js');
+var identity = require('./identity.js');
+var toJS = require('./toJS.js');
+
+function addPairToJSMap(ctx, map, { key, value }) {
+    if (identity.isNode(key) && key.addToJSMap)
+        key.addToJSMap(ctx, map, value);
+    // TODO: Should drop this special case for bare << handling
+    else if (merge.isMergeKey(ctx, key))
+        merge.addMergeToJSMap(ctx, map, value);
+    else {
+        const jsKey = toJS.toJS(key, '', ctx);
+        if (map instanceof Map) {
+            map.set(jsKey, toJS.toJS(value, jsKey, ctx));
+        }
+        else if (map instanceof Set) {
+            map.add(jsKey);
+        }
+        else {
+            const stringKey = stringifyKey(key, jsKey, ctx);
+            const jsValue = toJS.toJS(value, stringKey, ctx);
+            if (stringKey in map)
+                Object.defineProperty(map, stringKey, {
+                    value: jsValue,
+                    writable: true,
+                    enumerable: true,
+                    configurable: true
+                });
+            else
+                map[stringKey] = jsValue;
+        }
+    }
+    return map;
+}
+function stringifyKey(key, jsKey, ctx) {
+    if (jsKey === null)
+        return '';
+    // eslint-disable-next-line @typescript-eslint/no-base-to-string
+    if (typeof jsKey !== 'object')
+        return String(jsKey);
+    if (identity.isNode(key) && ctx?.doc) {
+        const strCtx = stringify.createStringifyContext(ctx.doc, {});
+        strCtx.anchors = new Set();
+        for (const node of ctx.anchors.keys())
+            strCtx.anchors.add(node.anchor);
+        strCtx.inFlow = true;
+        strCtx.inStringifyKey = true;
+        const strKey = key.toString(strCtx);
+        if (!ctx.mapKeyWarned) {
+            let jsonStr = JSON.stringify(strKey);
+            if (jsonStr.length > 40)
+                jsonStr = jsonStr.substring(0, 36) + '..."';
+            log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);
+            ctx.mapKeyWarned = true;
+        }
+        return strKey;
+    }
+    return JSON.stringify(jsKey);
+}
+
+exports.addPairToJSMap = addPairToJSMap;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/identity.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/identity.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/identity.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,23 @@
+import type { Document } from '../doc/Document';
+import type { Alias } from './Alias';
+import type { Node } from './Node';
+import type { Pair } from './Pair';
+import type { Scalar } from './Scalar';
+import type { YAMLMap } from './YAMLMap';
+import type { YAMLSeq } from './YAMLSeq';
+export declare const ALIAS: unique symbol;
+export declare const DOC: unique symbol;
+export declare const MAP: unique symbol;
+export declare const PAIR: unique symbol;
+export declare const SCALAR: unique symbol;
+export declare const SEQ: unique symbol;
+export declare const NODE_TYPE: unique symbol;
+export declare const isAlias: (node: any) => node is Alias;
+export declare const isDocument: <T extends Node = Node>(node: any) => node is Document<T>;
+export declare const isMap: <K = unknown, V = unknown>(node: any) => node is YAMLMap<K, V>;
+export declare const isPair: <K = unknown, V = unknown>(node: any) => node is Pair<K, V>;
+export declare const isScalar: <T = unknown>(node: any) => node is Scalar<T>;
+export declare const isSeq: <T = unknown>(node: any) => node is YAMLSeq<T>;
+export declare function isCollection<K = unknown, V = unknown>(node: any): node is YAMLMap<K, V> | YAMLSeq<V>;
+export declare function isNode<T = unknown>(node: any): node is Node<T>;
+export declare const hasAnchor: <K = unknown, V = unknown>(node: unknown) => node is Scalar<V> | YAMLMap<K, V> | YAMLSeq<V>;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/identity.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/identity.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/identity.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,53 @@
+'use strict';
+
+const ALIAS = Symbol.for('yaml.alias');
+const DOC = Symbol.for('yaml.document');
+const MAP = Symbol.for('yaml.map');
+const PAIR = Symbol.for('yaml.pair');
+const SCALAR = Symbol.for('yaml.scalar');
+const SEQ = Symbol.for('yaml.seq');
+const NODE_TYPE = Symbol.for('yaml.node.type');
+const isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;
+const isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;
+const isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;
+const isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;
+const isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;
+const isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;
+function isCollection(node) {
+    if (node && typeof node === 'object')
+        switch (node[NODE_TYPE]) {
+            case MAP:
+            case SEQ:
+                return true;
+        }
+    return false;
+}
+function isNode(node) {
+    if (node && typeof node === 'object')
+        switch (node[NODE_TYPE]) {
+            case ALIAS:
+            case MAP:
+            case SCALAR:
+            case SEQ:
+                return true;
+        }
+    return false;
+}
+const hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;
+
+exports.ALIAS = ALIAS;
+exports.DOC = DOC;
+exports.MAP = MAP;
+exports.NODE_TYPE = NODE_TYPE;
+exports.PAIR = PAIR;
+exports.SCALAR = SCALAR;
+exports.SEQ = SEQ;
+exports.hasAnchor = hasAnchor;
+exports.isAlias = isAlias;
+exports.isCollection = isCollection;
+exports.isDocument = isDocument;
+exports.isMap = isMap;
+exports.isNode = isNode;
+exports.isPair = isPair;
+exports.isScalar = isScalar;
+exports.isSeq = isSeq;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/toJS.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/toJS.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/toJS.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,29 @@
+import type { Document } from '../doc/Document';
+import type { Node } from './Node';
+export interface AnchorData {
+    aliasCount: number;
+    count: number;
+    res: unknown;
+}
+export interface ToJSContext {
+    anchors: Map<Node, AnchorData>;
+    /** Cached anchor and alias nodes in the order they occur in the document */
+    aliasResolveCache?: Node[];
+    doc: Document<Node, boolean>;
+    keep: boolean;
+    mapAsMap: boolean;
+    mapKeyWarned: boolean;
+    maxAliasCount: number;
+    onCreate?: (res: unknown) => void;
+}
+/**
+ * Recursively convert any node or its contents to native JavaScript
+ *
+ * @param value - The input value
+ * @param arg - If `value` defines a `toJSON()` method, use this
+ *   as its first argument
+ * @param ctx - Conversion context, originally set in Document#toJS(). If
+ *   `{ keep: true }` is not set, output should be suitable for JSON
+ *   stringification.
+ */
+export declare function toJS(value: any, arg: string | null, ctx?: ToJSContext): any;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/toJS.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/toJS.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/nodes/toJS.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,39 @@
+'use strict';
+
+var identity = require('./identity.js');
+
+/**
+ * Recursively convert any node or its contents to native JavaScript
+ *
+ * @param value - The input value
+ * @param arg - If `value` defines a `toJSON()` method, use this
+ *   as its first argument
+ * @param ctx - Conversion context, originally set in Document#toJS(). If
+ *   `{ keep: true }` is not set, output should be suitable for JSON
+ *   stringification.
+ */
+function toJS(value, arg, ctx) {
+    // eslint-disable-next-line @typescript-eslint/no-unsafe-return
+    if (Array.isArray(value))
+        return value.map((v, i) => toJS(v, String(i), ctx));
+    if (value && typeof value.toJSON === 'function') {
+        // eslint-disable-next-line @typescript-eslint/no-unsafe-call
+        if (!ctx || !identity.hasAnchor(value))
+            return value.toJSON(arg, ctx);
+        const data = { aliasCount: 0, count: 1, res: undefined };
+        ctx.anchors.set(value, data);
+        ctx.onCreate = res => {
+            data.res = res;
+            delete ctx.onCreate;
+        };
+        const res = value.toJSON(arg, ctx);
+        if (ctx.onCreate)
+            ctx.onCreate(res);
+        return res;
+    }
+    if (typeof value === 'bigint' && !ctx?.keep)
+        return Number(value);
+    return value;
+}
+
+exports.toJS = toJS;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/options.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/options.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/options.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,350 @@
+import type { Reviver } from './doc/applyReviver';
+import type { Directives } from './doc/directives';
+import type { LogLevelId } from './log';
+import type { ParsedNode } from './nodes/Node';
+import type { Pair } from './nodes/Pair';
+import type { Scalar } from './nodes/Scalar';
+import type { LineCounter } from './parse/line-counter';
+import type { Schema } from './schema/Schema';
+import type { Tags } from './schema/tags';
+import type { CollectionTag, ScalarTag } from './schema/types';
+export type ParseOptions = {
+    /**
+     * Whether integers should be parsed into BigInt rather than number values.
+     *
+     * Default: `false`
+     *
+     * https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/BigInt
+     */
+    intAsBigInt?: boolean;
+    /**
+     * Include a `srcToken` value on each parsed `Node`, containing the CST token
+     * that was composed into this node.
+     *
+     * Default: `false`
+     */
+    keepSourceTokens?: boolean;
+    /**
+     * If set, newlines will be tracked, to allow for `lineCounter.linePos(offset)`
+     * to provide the `{ line, col }` positions within the input.
+     */
+    lineCounter?: LineCounter;
+    /**
+     * Include line/col position & node type directly in parse errors.
+     *
+     * Default: `true`
+     */
+    prettyErrors?: boolean;
+    /**
+     * Detect and report errors that are required by the YAML 1.2 spec,
+     * but are caused by unambiguous content.
+     *
+     * Default: `true`
+     */
+    strict?: boolean;
+    /**
+     * Parse all mapping keys as strings. Treat all non-scalar keys as errors.
+     *
+     * Default: `false`
+     */
+    stringKeys?: boolean;
+    /**
+     * YAML requires map keys to be unique. By default, this is checked by
+     * comparing scalar values with `===`; deep equality is not checked for
+     * aliases or collections. If merge keys are enabled by the schema,
+     * multiple `<<` keys are allowed.
+     *
+     * Set `false` to disable, or provide your own comparator function to
+     * customise. The comparator will be passed two `ParsedNode` values, and
+     * is expected to return a `boolean` indicating their equality.
+     *
+     * Default: `true`
+     */
+    uniqueKeys?: boolean | ((a: ParsedNode, b: ParsedNode) => boolean);
+};
+export type DocumentOptions = {
+    /**
+     * @internal
+     * Used internally by Composer. If set and includes an explicit version,
+     * that overrides the `version` option.
+     */
+    _directives?: Directives;
+    /**
+     * Control the logging level during parsing
+     *
+     * Default: `'warn'`
+     */
+    logLevel?: LogLevelId;
+    /**
+     * The YAML version used by documents without a `%YAML` directive.
+     *
+     * Default: `"1.2"`
+     */
+    version?: '1.1' | '1.2' | 'next';
+};
+export type SchemaOptions = {
+    /**
+     * When parsing, warn about compatibility issues with the given schema.
+     * When stringifying, use scalar styles that are parsed correctly
+     * by the `compat` schema as well as the actual schema.
+     *
+     * Default: `null`
+     */
+    compat?: string | Tags | null;
+    /**
+     * Array of additional tags to include in the schema, or a function that may
+     * modify the schema's base tag array.
+     */
+    customTags?: Tags | ((tags: Tags) => Tags) | null;
+    /**
+     * Enable support for `<<` merge keys.
+     *
+     * Default: `false` for YAML 1.2, `true` for earlier versions
+     */
+    merge?: boolean;
+    /**
+     * When using the `'core'` schema, support parsing values with these
+     * explicit YAML 1.1 tags:
+     *
+     * `!!binary`, `!!omap`, `!!pairs`, `!!set`, `!!timestamp`.
+     *
+     * Default `true`
+     */
+    resolveKnownTags?: boolean;
+    /**
+     * The base schema to use.
+     *
+     * The core library has built-in support for the following:
+     * - `'failsafe'`: A minimal schema that parses all scalars as strings
+     * - `'core'`: The YAML 1.2 core schema
+     * - `'json'`: The YAML 1.2 JSON schema, with minimal rules for JSON compatibility
+     * - `'yaml-1.1'`: The YAML 1.1 schema
+     *
+     * If using another (custom) schema, the `customTags` array needs to
+     * fully define the schema's tags.
+     *
+     * Default: `'core'` for YAML 1.2, `'yaml-1.1'` for earlier versions
+     */
+    schema?: string | Schema;
+    /**
+     * When adding to or stringifying a map, sort the entries.
+     * If `true`, sort by comparing key values with `<`.
+     * Does not affect item order when parsing.
+     *
+     * Default: `false`
+     */
+    sortMapEntries?: boolean | ((a: Pair, b: Pair) => number);
+    /**
+     * Override default values for `toString()` options.
+     */
+    toStringDefaults?: ToStringOptions;
+};
+export type CreateNodeOptions = {
+    /**
+     * During node construction, use anchors and aliases to keep strictly equal
+     * non-null objects as equivalent in YAML.
+     *
+     * Default: `true`
+     */
+    aliasDuplicateObjects?: boolean;
+    /**
+     * Default prefix for anchors.
+     *
+     * Default: `'a'`, resulting in anchors `a1`, `a2`, etc.
+     */
+    anchorPrefix?: string;
+    /** Force the top-level collection node to use flow style. */
+    flow?: boolean;
+    /**
+     * Keep `undefined` object values when creating mappings, rather than
+     * discarding them.
+     *
+     * Default: `false`
+     */
+    keepUndefined?: boolean | null;
+    onTagObj?: (tagObj: ScalarTag | CollectionTag) => void;
+    /**
+     * Specify the top-level collection type, e.g. `"!!omap"`. Note that this
+     * requires the corresponding tag to be available in this document's schema.
+     */
+    tag?: string;
+};
+export type ToJSOptions = {
+    /**
+     * Use Map rather than Object to represent mappings.
+     *
+     * Default: `false`
+     */
+    mapAsMap?: boolean;
+    /**
+     * Prevent exponential entity expansion attacks by limiting data aliasing count;
+     * set to `-1` to disable checks; `0` disallows all alias nodes.
+     *
+     * Default: `100`
+     */
+    maxAliasCount?: number;
+    /**
+     * If defined, called with the resolved `value` and reference `count` for
+     * each anchor in the document.
+     */
+    onAnchor?: (value: unknown, count: number) => void;
+    /**
+     * Optional function that may filter or modify the output JS value
+     *
+     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#using_the_reviver_parameter
+     */
+    reviver?: Reviver;
+};
+export type ToStringOptions = {
+    /**
+     * Use block quote styles for scalar values where applicable.
+     * Set to `false` to disable block quotes completely.
+     *
+     * Default: `true`
+     */
+    blockQuote?: boolean | 'folded' | 'literal';
+    /**
+     * Enforce `'block'` or `'flow'` style on maps and sequences.
+     * Empty collections will always be stringified as `{}` or `[]`.
+     *
+     * Default: `'any'`, allowing each node to set its style separately
+     * with its `flow: boolean` (default `false`) property.
+     */
+    collectionStyle?: 'any' | 'block' | 'flow';
+    /**
+     * Comment stringifier.
+     * Output should be valid for the current schema.
+     *
+     * By default, empty comment lines are left empty,
+     * lines consisting of a single space are replaced by `#`,
+     * and all other lines are prefixed with a `#`.
+     */
+    commentString?: (comment: string) => string;
+    /**
+     * The default type of string literal used to stringify implicit key values.
+     * Output may use other types if required to fully represent the value.
+     *
+     * If `null`, the value of `defaultStringType` is used.
+     *
+     * Default: `null`
+     */
+    defaultKeyType?: Scalar.Type | null;
+    /**
+     * The default type of string literal used to stringify values in general.
+     * Output may use other types if required to fully represent the value.
+     *
+     * Default: `'PLAIN'`
+     */
+    defaultStringType?: Scalar.Type;
+    /**
+     * Include directives in the output.
+     *
+     * - If `true`, at least the document-start marker `---` is always included.
+     *   This does not force the `%YAML` directive to be included. To do that,
+     *   set `doc.directives.yaml.explicit = true`.
+     * - If `false`, no directives or marker is ever included. If using the `%TAG`
+     *   directive, you are expected to include it manually in the stream before
+     *   its use.
+     * - If `null`, directives and marker may be included if required.
+     *
+     * Default: `null`
+     */
+    directives?: boolean | null;
+    /**
+     * Restrict double-quoted strings to use JSON-compatible syntax.
+     *
+     * Default: `false`
+     */
+    doubleQuotedAsJSON?: boolean;
+    /**
+     * Minimum length for double-quoted strings to use multiple lines to
+     * represent the value. Ignored if `doubleQuotedAsJSON` is set.
+     *
+     * Default: `40`
+     */
+    doubleQuotedMinMultiLineLength?: number;
+    /**
+     * String representation for `false`.
+     * With the core schema, use `'false'`, `'False'`, or `'FALSE'`.
+     *
+     * Default: `'false'`
+     */
+    falseStr?: string;
+    /**
+     * When true, a single space of padding will be added inside the delimiters
+     * of non-empty single-line flow collections.
+     *
+     * Default: `true`
+     */
+    flowCollectionPadding?: boolean;
+    /**
+     * The number of spaces to use when indenting code.
+     *
+     * Default: `2`
+     */
+    indent?: number;
+    /**
+     * Whether block sequences should be indented.
+     *
+     * Default: `true`
+     */
+    indentSeq?: boolean;
+    /**
+     * Maximum line width (set to `0` to disable folding).
+     *
+     * This is a soft limit, as only double-quoted semantics allow for inserting
+     * a line break in the middle of a word, as well as being influenced by the
+     * `minContentWidth` option.
+     *
+     * Default: `80`
+     */
+    lineWidth?: number;
+    /**
+     * Minimum line width for highly-indented content (set to `0` to disable).
+     *
+     * Default: `20`
+     */
+    minContentWidth?: number;
+    /**
+     * String representation for `null`.
+     * With the core schema, use `'null'`, `'Null'`, `'NULL'`, `'~'`, or an empty
+     * string `''`.
+     *
+     * Default: `'null'`
+     */
+    nullStr?: string;
+    /**
+     * Require keys to be scalars and to use implicit rather than explicit notation.
+     *
+     * Default: `false`
+     */
+    simpleKeys?: boolean;
+    /**
+     * Use 'single quote' rather than "double quote" where applicable.
+     * Set to `false` to disable single quotes completely.
+     *
+     * Default: `null`
+     */
+    singleQuote?: boolean | null;
+    /**
+     * Add a trailing comma after the last entry in a flow map or flow sequence that's split across multiple lines.
+     *
+     * Default: `'false'`
+     */
+    trailingComma?: boolean;
+    /**
+     * String representation for `true`.
+     * With the core schema, use `'true'`, `'True'`, or `'TRUE'`.
+     *
+     * Default: `'true'`
+     */
+    trueStr?: string;
+    /**
+     * The anchor used by an alias must be defined before the alias node. As it's
+     * possible for the document to be modified manually, the order may be
+     * verified during stringification.
+     *
+     * Default: `'true'`
+     */
+    verifyAliasOrder?: boolean;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-scalar.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-scalar.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,64 @@
+import type { ErrorCode } from '../errors';
+import type { Range } from '../nodes/Node';
+import type { Scalar } from '../nodes/Scalar';
+import type { BlockScalar, FlowScalar, SourceToken, Token } from './cst';
+/**
+ * If `token` is a CST flow or block scalar, determine its string value and a few other attributes.
+ * Otherwise, return `null`.
+ */
+export declare function resolveAsScalar(token: FlowScalar | BlockScalar, strict?: boolean, onError?: (offset: number, code: ErrorCode, message: string) => void): {
+    value: string;
+    type: Scalar.Type | null;
+    comment: string;
+    range: Range;
+};
+export declare function resolveAsScalar(token: Token | null | undefined, strict?: boolean, onError?: (offset: number, code: ErrorCode, message: string) => void): {
+    value: string;
+    type: Scalar.Type | null;
+    comment: string;
+    range: Range;
+} | null;
+/**
+ * Create a new scalar token with `value`
+ *
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
+ * as this function does not support any schema operations and won't check for such conflicts.
+ *
+ * @param value The string representation of the value, which will have its content properly indented.
+ * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
+ * @param context.indent The indent level of the token.
+ * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.
+ * @param context.offset The offset position of the token.
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
+ */
+export declare function createScalarToken(value: string, context: {
+    end?: SourceToken[];
+    implicitKey?: boolean;
+    indent: number;
+    inFlow?: boolean;
+    offset?: number;
+    type?: Scalar.Type;
+}): BlockScalar | FlowScalar;
+/**
+ * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.
+ *
+ * Best efforts are made to retain any comments previously associated with the `token`,
+ * though all contents within a collection's `items` will be overwritten.
+ *
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
+ * as this function does not support any schema operations and won't check for such conflicts.
+ *
+ * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.
+ * @param value The string representation of the value, which will have its content properly indented.
+ * @param context.afterKey In most cases, values after a key should have an additional level of indentation.
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
+ * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
+ */
+export declare function setScalarValue(token: Token, value: string, context?: {
+    afterKey?: boolean;
+    implicitKey?: boolean;
+    inFlow?: boolean;
+    type?: Scalar.Type;
+}): void;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-scalar.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-scalar.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,218 @@
+'use strict';
+
+var resolveBlockScalar = require('../compose/resolve-block-scalar.js');
+var resolveFlowScalar = require('../compose/resolve-flow-scalar.js');
+var errors = require('../errors.js');
+var stringifyString = require('../stringify/stringifyString.js');
+
+function resolveAsScalar(token, strict = true, onError) {
+    if (token) {
+        const _onError = (pos, code, message) => {
+            const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;
+            if (onError)
+                onError(offset, code, message);
+            else
+                throw new errors.YAMLParseError([offset, offset + 1], code, message);
+        };
+        switch (token.type) {
+            case 'scalar':
+            case 'single-quoted-scalar':
+            case 'double-quoted-scalar':
+                return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);
+            case 'block-scalar':
+                return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);
+        }
+    }
+    return null;
+}
+/**
+ * Create a new scalar token with `value`
+ *
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
+ * as this function does not support any schema operations and won't check for such conflicts.
+ *
+ * @param value The string representation of the value, which will have its content properly indented.
+ * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
+ * @param context.indent The indent level of the token.
+ * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.
+ * @param context.offset The offset position of the token.
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
+ */
+function createScalarToken(value, context) {
+    const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;
+    const source = stringifyString.stringifyString({ type, value }, {
+        implicitKey,
+        indent: indent > 0 ? ' '.repeat(indent) : '',
+        inFlow,
+        options: { blockQuote: true, lineWidth: -1 }
+    });
+    const end = context.end ?? [
+        { type: 'newline', offset: -1, indent, source: '\n' }
+    ];
+    switch (source[0]) {
+        case '|':
+        case '>': {
+            const he = source.indexOf('\n');
+            const head = source.substring(0, he);
+            const body = source.substring(he + 1) + '\n';
+            const props = [
+                { type: 'block-scalar-header', offset, indent, source: head }
+            ];
+            if (!addEndtoBlockProps(props, end))
+                props.push({ type: 'newline', offset: -1, indent, source: '\n' });
+            return { type: 'block-scalar', offset, indent, props, source: body };
+        }
+        case '"':
+            return { type: 'double-quoted-scalar', offset, indent, source, end };
+        case "'":
+            return { type: 'single-quoted-scalar', offset, indent, source, end };
+        default:
+            return { type: 'scalar', offset, indent, source, end };
+    }
+}
+/**
+ * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.
+ *
+ * Best efforts are made to retain any comments previously associated with the `token`,
+ * though all contents within a collection's `items` will be overwritten.
+ *
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
+ * as this function does not support any schema operations and won't check for such conflicts.
+ *
+ * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.
+ * @param value The string representation of the value, which will have its content properly indented.
+ * @param context.afterKey In most cases, values after a key should have an additional level of indentation.
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
+ * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
+ */
+function setScalarValue(token, value, context = {}) {
+    let { afterKey = false, implicitKey = false, inFlow = false, type } = context;
+    let indent = 'indent' in token ? token.indent : null;
+    if (afterKey && typeof indent === 'number')
+        indent += 2;
+    if (!type)
+        switch (token.type) {
+            case 'single-quoted-scalar':
+                type = 'QUOTE_SINGLE';
+                break;
+            case 'double-quoted-scalar':
+                type = 'QUOTE_DOUBLE';
+                break;
+            case 'block-scalar': {
+                const header = token.props[0];
+                if (header.type !== 'block-scalar-header')
+                    throw new Error('Invalid block scalar header');
+                type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';
+                break;
+            }
+            default:
+                type = 'PLAIN';
+        }
+    const source = stringifyString.stringifyString({ type, value }, {
+        implicitKey: implicitKey || indent === null,
+        indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',
+        inFlow,
+        options: { blockQuote: true, lineWidth: -1 }
+    });
+    switch (source[0]) {
+        case '|':
+        case '>':
+            setBlockScalarValue(token, source);
+            break;
+        case '"':
+            setFlowScalarValue(token, source, 'double-quoted-scalar');
+            break;
+        case "'":
+            setFlowScalarValue(token, source, 'single-quoted-scalar');
+            break;
+        default:
+            setFlowScalarValue(token, source, 'scalar');
+    }
+}
+function setBlockScalarValue(token, source) {
+    const he = source.indexOf('\n');
+    const head = source.substring(0, he);
+    const body = source.substring(he + 1) + '\n';
+    if (token.type === 'block-scalar') {
+        const header = token.props[0];
+        if (header.type !== 'block-scalar-header')
+            throw new Error('Invalid block scalar header');
+        header.source = head;
+        token.source = body;
+    }
+    else {
+        const { offset } = token;
+        const indent = 'indent' in token ? token.indent : -1;
+        const props = [
+            { type: 'block-scalar-header', offset, indent, source: head }
+        ];
+        if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))
+            props.push({ type: 'newline', offset: -1, indent, source: '\n' });
+        for (const key of Object.keys(token))
+            if (key !== 'type' && key !== 'offset')
+                delete token[key];
+        Object.assign(token, { type: 'block-scalar', indent, props, source: body });
+    }
+}
+/** @returns `true` if last token is a newline */
+function addEndtoBlockProps(props, end) {
+    if (end)
+        for (const st of end)
+            switch (st.type) {
+                case 'space':
+                case 'comment':
+                    props.push(st);
+                    break;
+                case 'newline':
+                    props.push(st);
+                    return true;
+            }
+    return false;
+}
+function setFlowScalarValue(token, source, type) {
+    switch (token.type) {
+        case 'scalar':
+        case 'double-quoted-scalar':
+        case 'single-quoted-scalar':
+            token.type = type;
+            token.source = source;
+            break;
+        case 'block-scalar': {
+            const end = token.props.slice(1);
+            let oa = source.length;
+            if (token.props[0].type === 'block-scalar-header')
+                oa -= token.props[0].source.length;
+            for (const tok of end)
+                tok.offset += oa;
+            delete token.props;
+            Object.assign(token, { type, source, end });
+            break;
+        }
+        case 'block-map':
+        case 'block-seq': {
+            const offset = token.offset + source.length;
+            const nl = { type: 'newline', offset, indent: token.indent, source: '\n' };
+            delete token.items;
+            Object.assign(token, { type, source, end: [nl] });
+            break;
+        }
+        default: {
+            const indent = 'indent' in token ? token.indent : -1;
+            const end = 'end' in token && Array.isArray(token.end)
+                ? token.end.filter(st => st.type === 'space' ||
+                    st.type === 'comment' ||
+                    st.type === 'newline')
+                : [];
+            for (const key of Object.keys(token))
+                if (key !== 'type' && key !== 'offset')
+                    delete token[key];
+            Object.assign(token, { type, indent, source, end });
+        }
+    }
+}
+
+exports.createScalarToken = createScalarToken;
+exports.resolveAsScalar = resolveAsScalar;
+exports.setScalarValue = setScalarValue;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-stringify.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-stringify.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-stringify.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,8 @@
+import type { CollectionItem, Token } from './cst';
+/**
+ * Stringify a CST document, token, or collection item
+ *
+ * Fair warning: This applies no validation whatsoever, and
+ * simply concatenates the sources in their logical order.
+ */
+export declare const stringify: (cst: Token | CollectionItem) => string;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-stringify.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,63 @@
+'use strict';
+
+/**
+ * Stringify a CST document, token, or collection item
+ *
+ * Fair warning: This applies no validation whatsoever, and
+ * simply concatenates the sources in their logical order.
+ */
+const stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);
+function stringifyToken(token) {
+    switch (token.type) {
+        case 'block-scalar': {
+            let res = '';
+            for (const tok of token.props)
+                res += stringifyToken(tok);
+            return res + token.source;
+        }
+        case 'block-map':
+        case 'block-seq': {
+            let res = '';
+            for (const item of token.items)
+                res += stringifyItem(item);
+            return res;
+        }
+        case 'flow-collection': {
+            let res = token.start.source;
+            for (const item of token.items)
+                res += stringifyItem(item);
+            for (const st of token.end)
+                res += st.source;
+            return res;
+        }
+        case 'document': {
+            let res = stringifyItem(token);
+            if (token.end)
+                for (const st of token.end)
+                    res += st.source;
+            return res;
+        }
+        default: {
+            let res = token.source;
+            if ('end' in token && token.end)
+                for (const st of token.end)
+                    res += st.source;
+            return res;
+        }
+    }
+}
+function stringifyItem({ start, key, sep, value }) {
+    let res = '';
+    for (const st of start)
+        res += st.source;
+    if (key)
+        res += stringifyToken(key);
+    if (sep)
+        for (const st of sep)
+            res += st.source;
+    if (value)
+        res += stringifyToken(value);
+    return res;
+}
+
+exports.stringify = stringify;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-visit.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-visit.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-visit.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,39 @@
+import type { BlockMap, BlockSequence, CollectionItem, Document, FlowCollection } from './cst';
+export type VisitPath = readonly ['key' | 'value', number][];
+export type Visitor = (item: CollectionItem, path: VisitPath) => number | symbol | Visitor | void;
+/**
+ * Apply a visitor to a CST document or item.
+ *
+ * Walks through the tree (depth-first) starting from the root, calling a
+ * `visitor` function with two arguments when entering each item:
+ *   - `item`: The current item, which included the following members:
+ *     - `start: SourceToken[]` – Source tokens before the key or value,
+ *       possibly including its anchor or tag.
+ *     - `key?: Token | null` – Set for pair values. May then be `null`, if
+ *       the key before the `:` separator is empty.
+ *     - `sep?: SourceToken[]` – Source tokens between the key and the value,
+ *       which should include the `:` map value indicator if `value` is set.
+ *     - `value?: Token` – The value of a sequence item, or of a map pair.
+ *   - `path`: The steps from the root to the current node, as an array of
+ *     `['key' | 'value', number]` tuples.
+ *
+ * The return value of the visitor may be used to control the traversal:
+ *   - `undefined` (default): Do nothing and continue
+ *   - `visit.SKIP`: Do not visit the children of this token, continue with
+ *      next sibling
+ *   - `visit.BREAK`: Terminate traversal completely
+ *   - `visit.REMOVE`: Remove the current item, then continue with the next one
+ *   - `number`: Set the index of the next step. This is useful especially if
+ *     the index of the current token has changed.
+ *   - `function`: Define the next visitor for this item. After the original
+ *     visitor is called on item entry, next visitors are called after handling
+ *     a non-empty `key` and when exiting the item.
+ */
+export declare function visit(cst: Document | CollectionItem, visitor: Visitor): void;
+export declare namespace visit {
+    var BREAK: symbol;
+    var SKIP: symbol;
+    var REMOVE: symbol;
+    var itemAtPath: (cst: Document | CollectionItem, path: VisitPath) => CollectionItem | undefined;
+    var parentCollection: (cst: Document | CollectionItem, path: VisitPath) => BlockMap | BlockSequence | FlowCollection;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-visit.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-visit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst-visit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,99 @@
+'use strict';
+
+const BREAK = Symbol('break visit');
+const SKIP = Symbol('skip children');
+const REMOVE = Symbol('remove item');
+/**
+ * Apply a visitor to a CST document or item.
+ *
+ * Walks through the tree (depth-first) starting from the root, calling a
+ * `visitor` function with two arguments when entering each item:
+ *   - `item`: The current item, which included the following members:
+ *     - `start: SourceToken[]` – Source tokens before the key or value,
+ *       possibly including its anchor or tag.
+ *     - `key?: Token | null` – Set for pair values. May then be `null`, if
+ *       the key before the `:` separator is empty.
+ *     - `sep?: SourceToken[]` – Source tokens between the key and the value,
+ *       which should include the `:` map value indicator if `value` is set.
+ *     - `value?: Token` – The value of a sequence item, or of a map pair.
+ *   - `path`: The steps from the root to the current node, as an array of
+ *     `['key' | 'value', number]` tuples.
+ *
+ * The return value of the visitor may be used to control the traversal:
+ *   - `undefined` (default): Do nothing and continue
+ *   - `visit.SKIP`: Do not visit the children of this token, continue with
+ *      next sibling
+ *   - `visit.BREAK`: Terminate traversal completely
+ *   - `visit.REMOVE`: Remove the current item, then continue with the next one
+ *   - `number`: Set the index of the next step. This is useful especially if
+ *     the index of the current token has changed.
+ *   - `function`: Define the next visitor for this item. After the original
+ *     visitor is called on item entry, next visitors are called after handling
+ *     a non-empty `key` and when exiting the item.
+ */
+function visit(cst, visitor) {
+    if ('type' in cst && cst.type === 'document')
+        cst = { start: cst.start, value: cst.value };
+    _visit(Object.freeze([]), cst, visitor);
+}
+// Without the `as symbol` casts, TS declares these in the `visit`
+// namespace using `var`, but then complains about that because
+// `unique symbol` must be `const`.
+/** Terminate visit traversal completely */
+visit.BREAK = BREAK;
+/** Do not visit the children of the current item */
+visit.SKIP = SKIP;
+/** Remove the current item */
+visit.REMOVE = REMOVE;
+/** Find the item at `path` from `cst` as the root */
+visit.itemAtPath = (cst, path) => {
+    let item = cst;
+    for (const [field, index] of path) {
+        const tok = item?.[field];
+        if (tok && 'items' in tok) {
+            item = tok.items[index];
+        }
+        else
+            return undefined;
+    }
+    return item;
+};
+/**
+ * Get the immediate parent collection of the item at `path` from `cst` as the root.
+ *
+ * Throws an error if the collection is not found, which should never happen if the item itself exists.
+ */
+visit.parentCollection = (cst, path) => {
+    const parent = visit.itemAtPath(cst, path.slice(0, -1));
+    const field = path[path.length - 1][0];
+    const coll = parent?.[field];
+    if (coll && 'items' in coll)
+        return coll;
+    throw new Error('Parent collection not found');
+};
+function _visit(path, item, visitor) {
+    let ctrl = visitor(item, path);
+    if (typeof ctrl === 'symbol')
+        return ctrl;
+    for (const field of ['key', 'value']) {
+        const token = item[field];
+        if (token && 'items' in token) {
+            for (let i = 0; i < token.items.length; ++i) {
+                const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);
+                if (typeof ci === 'number')
+                    i = ci - 1;
+                else if (ci === BREAK)
+                    return BREAK;
+                else if (ci === REMOVE) {
+                    token.items.splice(i, 1);
+                    i -= 1;
+                }
+            }
+            if (typeof ctrl === 'function' && field === 'key')
+                ctrl = ctrl(item, path);
+        }
+    }
+    return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;
+}
+
+exports.visit = visit;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,109 @@
+export { createScalarToken, resolveAsScalar, setScalarValue } from './cst-scalar';
+export { stringify } from './cst-stringify';
+export type { Visitor, VisitPath } from './cst-visit';
+export { visit } from './cst-visit';
+export interface SourceToken {
+    type: 'byte-order-mark' | 'doc-mode' | 'doc-start' | 'space' | 'comment' | 'newline' | 'directive-line' | 'anchor' | 'tag' | 'seq-item-ind' | 'explicit-key-ind' | 'map-value-ind' | 'flow-map-start' | 'flow-map-end' | 'flow-seq-start' | 'flow-seq-end' | 'flow-error-end' | 'comma' | 'block-scalar-header';
+    offset: number;
+    indent: number;
+    source: string;
+}
+export interface ErrorToken {
+    type: 'error';
+    offset: number;
+    source: string;
+    message: string;
+}
+export interface Directive {
+    type: 'directive';
+    offset: number;
+    source: string;
+}
+export interface Document {
+    type: 'document';
+    offset: number;
+    start: SourceToken[];
+    value?: Token;
+    end?: SourceToken[];
+}
+export interface DocumentEnd {
+    type: 'doc-end';
+    offset: number;
+    source: string;
+    end?: SourceToken[];
+}
+export interface FlowScalar {
+    type: 'alias' | 'scalar' | 'single-quoted-scalar' | 'double-quoted-scalar';
+    offset: number;
+    indent: number;
+    source: string;
+    end?: SourceToken[];
+}
+export interface BlockScalar {
+    type: 'block-scalar';
+    offset: number;
+    indent: number;
+    props: Token[];
+    source: string;
+}
+export interface BlockMap {
+    type: 'block-map';
+    offset: number;
+    indent: number;
+    items: Array<{
+        start: SourceToken[];
+        explicitKey?: true;
+        key?: never;
+        sep?: never;
+        value?: never;
+    } | {
+        start: SourceToken[];
+        explicitKey?: true;
+        key: Token | null;
+        sep: SourceToken[];
+        value?: Token;
+    }>;
+}
+export interface BlockSequence {
+    type: 'block-seq';
+    offset: number;
+    indent: number;
+    items: Array<{
+        start: SourceToken[];
+        key?: never;
+        sep?: never;
+        value?: Token;
+    }>;
+}
+export type CollectionItem = {
+    start: SourceToken[];
+    key?: Token | null;
+    sep?: SourceToken[];
+    value?: Token;
+};
+export interface FlowCollection {
+    type: 'flow-collection';
+    offset: number;
+    indent: number;
+    start: SourceToken;
+    items: CollectionItem[];
+    end: SourceToken[];
+}
+export type Token = SourceToken | ErrorToken | Directive | Document | DocumentEnd | FlowScalar | BlockScalar | BlockMap | BlockSequence | FlowCollection;
+export type TokenType = SourceToken['type'] | DocumentEnd['type'] | FlowScalar['type'];
+/** The byte order mark */
+export declare const BOM = "\uFEFF";
+/** Start of doc-mode */
+export declare const DOCUMENT = "\u0002";
+/** Unexpected end of flow-mode */
+export declare const FLOW_END = "\u0018";
+/** Next token is a scalar value */
+export declare const SCALAR = "\u001F";
+/** @returns `true` if `token` is a flow or block collection */
+export declare const isCollection: (token: Token | null | undefined) => token is BlockMap | BlockSequence | FlowCollection;
+/** @returns `true` if `token` is a flow or block scalar; not an alias */
+export declare const isScalar: (token: Token | null | undefined) => token is FlowScalar | BlockScalar;
+/** Get a printable representation of a lexer token */
+export declare function prettyToken(token: string): string;
+/** Identify the type of a lexer token. May return `null` for unknown tokens. */
+export declare function tokenType(source: string): TokenType | null;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/cst.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,112 @@
+'use strict';
+
+var cstScalar = require('./cst-scalar.js');
+var cstStringify = require('./cst-stringify.js');
+var cstVisit = require('./cst-visit.js');
+
+/** The byte order mark */
+const BOM = '\u{FEFF}';
+/** Start of doc-mode */
+const DOCUMENT = '\x02'; // C0: Start of Text
+/** Unexpected end of flow-mode */
+const FLOW_END = '\x18'; // C0: Cancel
+/** Next token is a scalar value */
+const SCALAR = '\x1f'; // C0: Unit Separator
+/** @returns `true` if `token` is a flow or block collection */
+const isCollection = (token) => !!token && 'items' in token;
+/** @returns `true` if `token` is a flow or block scalar; not an alias */
+const isScalar = (token) => !!token &&
+    (token.type === 'scalar' ||
+        token.type === 'single-quoted-scalar' ||
+        token.type === 'double-quoted-scalar' ||
+        token.type === 'block-scalar');
+/* istanbul ignore next */
+/** Get a printable representation of a lexer token */
+function prettyToken(token) {
+    switch (token) {
+        case BOM:
+            return '<BOM>';
+        case DOCUMENT:
+            return '<DOC>';
+        case FLOW_END:
+            return '<FLOW_END>';
+        case SCALAR:
+            return '<SCALAR>';
+        default:
+            return JSON.stringify(token);
+    }
+}
+/** Identify the type of a lexer token. May return `null` for unknown tokens. */
+function tokenType(source) {
+    switch (source) {
+        case BOM:
+            return 'byte-order-mark';
+        case DOCUMENT:
+            return 'doc-mode';
+        case FLOW_END:
+            return 'flow-error-end';
+        case SCALAR:
+            return 'scalar';
+        case '---':
+            return 'doc-start';
+        case '...':
+            return 'doc-end';
+        case '':
+        case '\n':
+        case '\r\n':
+            return 'newline';
+        case '-':
+            return 'seq-item-ind';
+        case '?':
+            return 'explicit-key-ind';
+        case ':':
+            return 'map-value-ind';
+        case '{':
+            return 'flow-map-start';
+        case '}':
+            return 'flow-map-end';
+        case '[':
+            return 'flow-seq-start';
+        case ']':
+            return 'flow-seq-end';
+        case ',':
+            return 'comma';
+    }
+    switch (source[0]) {
+        case ' ':
+        case '\t':
+            return 'space';
+        case '#':
+            return 'comment';
+        case '%':
+            return 'directive-line';
+        case '*':
+            return 'alias';
+        case '&':
+            return 'anchor';
+        case '!':
+            return 'tag';
+        case "'":
+            return 'single-quoted-scalar';
+        case '"':
+            return 'double-quoted-scalar';
+        case '|':
+        case '>':
+            return 'block-scalar-header';
+    }
+    return null;
+}
+
+exports.createScalarToken = cstScalar.createScalarToken;
+exports.resolveAsScalar = cstScalar.resolveAsScalar;
+exports.setScalarValue = cstScalar.setScalarValue;
+exports.stringify = cstStringify.stringify;
+exports.visit = cstVisit.visit;
+exports.BOM = BOM;
+exports.DOCUMENT = DOCUMENT;
+exports.FLOW_END = FLOW_END;
+exports.SCALAR = SCALAR;
+exports.isCollection = isCollection;
+exports.isScalar = isScalar;
+exports.prettyToken = prettyToken;
+exports.tokenType = tokenType;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/lexer.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/lexer.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/lexer.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,87 @@
+/**
+ * Splits an input string into lexical tokens, i.e. smaller strings that are
+ * easily identifiable by `tokens.tokenType()`.
+ *
+ * Lexing starts always in a "stream" context. Incomplete input may be buffered
+ * until a complete token can be emitted.
+ *
+ * In addition to slices of the original input, the following control characters
+ * may also be emitted:
+ *
+ * - `\x02` (Start of Text): A document starts with the next token
+ * - `\x18` (Cancel): Unexpected end of flow-mode (indicates an error)
+ * - `\x1f` (Unit Separator): Next token is a scalar value
+ * - `\u{FEFF}` (Byte order mark): Emitted separately outside documents
+ */
+export declare class Lexer {
+    /**
+     * Flag indicating whether the end of the current buffer marks the end of
+     * all input
+     */
+    private atEnd;
+    /**
+     * Explicit indent set in block scalar header, as an offset from the current
+     * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not
+     * explicitly set.
+     */
+    private blockScalarIndent;
+    /**
+     * Block scalars that include a + (keep) chomping indicator in their header
+     * include trailing empty lines, which are otherwise excluded from the
+     * scalar's contents.
+     */
+    private blockScalarKeep;
+    /** Current input */
+    private buffer;
+    /**
+     * Flag noting whether the map value indicator : can immediately follow this
+     * node within a flow context.
+     */
+    private flowKey;
+    /** Count of surrounding flow collection levels. */
+    private flowLevel;
+    /**
+     * Minimum level of indentation required for next lines to be parsed as a
+     * part of the current scalar value.
+     */
+    private indentNext;
+    /** Indentation level of the current line. */
+    private indentValue;
+    /** Position of the next \n character. */
+    private lineEndPos;
+    /** Stores the state of the lexer if reaching the end of incpomplete input */
+    private next;
+    /** A pointer to `buffer`; the current position of the lexer. */
+    private pos;
+    /**
+     * Generate YAML tokens from the `source` string. If `incomplete`,
+     * a part of the last line may be left as a buffer for the next call.
+     *
+     * @returns A generator of lexical tokens
+     */
+    lex(source: string, incomplete?: boolean): Generator<string, void>;
+    private atLineEnd;
+    private charAt;
+    private continueScalar;
+    private getLine;
+    private hasChars;
+    private setNext;
+    private peek;
+    private parseNext;
+    private parseStream;
+    private parseLineStart;
+    private parseBlockStart;
+    private parseDocument;
+    private parseFlowCollection;
+    private parseQuotedScalar;
+    private parseBlockScalarHeader;
+    private parseBlockScalar;
+    private parsePlainScalar;
+    private pushCount;
+    private pushToIndex;
+    private pushIndicators;
+    private pushTag;
+    private pushNewline;
+    private pushSpaces;
+    private pushUntil;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/lexer.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/lexer.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/lexer.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,723 @@
+'use strict';
+
+var cst = require('./cst.js');
+
+/*
+START -> stream
+
+stream
+  directive -> line-end -> stream
+  indent + line-end -> stream
+  [else] -> line-start
+
+line-end
+  comment -> line-end
+  newline -> .
+  input-end -> END
+
+line-start
+  doc-start -> doc
+  doc-end -> stream
+  [else] -> indent -> block-start
+
+block-start
+  seq-item-start -> block-start
+  explicit-key-start -> block-start
+  map-value-start -> block-start
+  [else] -> doc
+
+doc
+  line-end -> line-start
+  spaces -> doc
+  anchor -> doc
+  tag -> doc
+  flow-start -> flow -> doc
+  flow-end -> error -> doc
+  seq-item-start -> error -> doc
+  explicit-key-start -> error -> doc
+  map-value-start -> doc
+  alias -> doc
+  quote-start -> quoted-scalar -> doc
+  block-scalar-header -> line-end -> block-scalar(min) -> line-start
+  [else] -> plain-scalar(false, min) -> doc
+
+flow
+  line-end -> flow
+  spaces -> flow
+  anchor -> flow
+  tag -> flow
+  flow-start -> flow -> flow
+  flow-end -> .
+  seq-item-start -> error -> flow
+  explicit-key-start -> flow
+  map-value-start -> flow
+  alias -> flow
+  quote-start -> quoted-scalar -> flow
+  comma -> flow
+  [else] -> plain-scalar(true, 0) -> flow
+
+quoted-scalar
+  quote-end -> .
+  [else] -> quoted-scalar
+
+block-scalar(min)
+  newline + peek(indent < min) -> .
+  [else] -> block-scalar(min)
+
+plain-scalar(is-flow, min)
+  scalar-end(is-flow) -> .
+  peek(newline + (indent < min)) -> .
+  [else] -> plain-scalar(min)
+*/
+function isEmpty(ch) {
+    switch (ch) {
+        case undefined:
+        case ' ':
+        case '\n':
+        case '\r':
+        case '\t':
+            return true;
+        default:
+            return false;
+    }
+}
+const hexDigits = new Set('0123456789ABCDEFabcdef');
+const tagChars = new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()");
+const flowIndicatorChars = new Set(',[]{}');
+const invalidAnchorChars = new Set(' ,[]{}\n\r\t');
+const isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);
+/**
+ * Splits an input string into lexical tokens, i.e. smaller strings that are
+ * easily identifiable by `tokens.tokenType()`.
+ *
+ * Lexing starts always in a "stream" context. Incomplete input may be buffered
+ * until a complete token can be emitted.
+ *
+ * In addition to slices of the original input, the following control characters
+ * may also be emitted:
+ *
+ * - `\x02` (Start of Text): A document starts with the next token
+ * - `\x18` (Cancel): Unexpected end of flow-mode (indicates an error)
+ * - `\x1f` (Unit Separator): Next token is a scalar value
+ * - `\u{FEFF}` (Byte order mark): Emitted separately outside documents
+ */
+class Lexer {
+    constructor() {
+        /**
+         * Flag indicating whether the end of the current buffer marks the end of
+         * all input
+         */
+        this.atEnd = false;
+        /**
+         * Explicit indent set in block scalar header, as an offset from the current
+         * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not
+         * explicitly set.
+         */
+        this.blockScalarIndent = -1;
+        /**
+         * Block scalars that include a + (keep) chomping indicator in their header
+         * include trailing empty lines, which are otherwise excluded from the
+         * scalar's contents.
+         */
+        this.blockScalarKeep = false;
+        /** Current input */
+        this.buffer = '';
+        /**
+         * Flag noting whether the map value indicator : can immediately follow this
+         * node within a flow context.
+         */
+        this.flowKey = false;
+        /** Count of surrounding flow collection levels. */
+        this.flowLevel = 0;
+        /**
+         * Minimum level of indentation required for next lines to be parsed as a
+         * part of the current scalar value.
+         */
+        this.indentNext = 0;
+        /** Indentation level of the current line. */
+        this.indentValue = 0;
+        /** Position of the next \n character. */
+        this.lineEndPos = null;
+        /** Stores the state of the lexer if reaching the end of incpomplete input */
+        this.next = null;
+        /** A pointer to `buffer`; the current position of the lexer. */
+        this.pos = 0;
+    }
+    /**
+     * Generate YAML tokens from the `source` string. If `incomplete`,
+     * a part of the last line may be left as a buffer for the next call.
+     *
+     * @returns A generator of lexical tokens
+     */
+    *lex(source, incomplete = false) {
+        if (source) {
+            if (typeof source !== 'string')
+                throw TypeError('source is not a string');
+            this.buffer = this.buffer ? this.buffer + source : source;
+            this.lineEndPos = null;
+        }
+        this.atEnd = !incomplete;
+        let next = this.next ?? 'stream';
+        while (next && (incomplete || this.hasChars(1)))
+            next = yield* this.parseNext(next);
+    }
+    atLineEnd() {
+        let i = this.pos;
+        let ch = this.buffer[i];
+        while (ch === ' ' || ch === '\t')
+            ch = this.buffer[++i];
+        if (!ch || ch === '#' || ch === '\n')
+            return true;
+        if (ch === '\r')
+            return this.buffer[i + 1] === '\n';
+        return false;
+    }
+    charAt(n) {
+        return this.buffer[this.pos + n];
+    }
+    continueScalar(offset) {
+        let ch = this.buffer[offset];
+        if (this.indentNext > 0) {
+            let indent = 0;
+            while (ch === ' ')
+                ch = this.buffer[++indent + offset];
+            if (ch === '\r') {
+                const next = this.buffer[indent + offset + 1];
+                if (next === '\n' || (!next && !this.atEnd))
+                    return offset + indent + 1;
+            }
+            return ch === '\n' || indent >= this.indentNext || (!ch && !this.atEnd)
+                ? offset + indent
+                : -1;
+        }
+        if (ch === '-' || ch === '.') {
+            const dt = this.buffer.substr(offset, 3);
+            if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))
+                return -1;
+        }
+        return offset;
+    }
+    getLine() {
+        let end = this.lineEndPos;
+        if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {
+            end = this.buffer.indexOf('\n', this.pos);
+            this.lineEndPos = end;
+        }
+        if (end === -1)
+            return this.atEnd ? this.buffer.substring(this.pos) : null;
+        if (this.buffer[end - 1] === '\r')
+            end -= 1;
+        return this.buffer.substring(this.pos, end);
+    }
+    hasChars(n) {
+        return this.pos + n <= this.buffer.length;
+    }
+    setNext(state) {
+        this.buffer = this.buffer.substring(this.pos);
+        this.pos = 0;
+        this.lineEndPos = null;
+        this.next = state;
+        return null;
+    }
+    peek(n) {
+        return this.buffer.substr(this.pos, n);
+    }
+    *parseNext(next) {
+        switch (next) {
+            case 'stream':
+                return yield* this.parseStream();
+            case 'line-start':
+                return yield* this.parseLineStart();
+            case 'block-start':
+                return yield* this.parseBlockStart();
+            case 'doc':
+                return yield* this.parseDocument();
+            case 'flow':
+                return yield* this.parseFlowCollection();
+            case 'quoted-scalar':
+                return yield* this.parseQuotedScalar();
+            case 'block-scalar':
+                return yield* this.parseBlockScalar();
+            case 'plain-scalar':
+                return yield* this.parsePlainScalar();
+        }
+    }
+    *parseStream() {
+        let line = this.getLine();
+        if (line === null)
+            return this.setNext('stream');
+        if (line[0] === cst.BOM) {
+            yield* this.pushCount(1);
+            line = line.substring(1);
+        }
+        if (line[0] === '%') {
+            let dirEnd = line.length;
+            let cs = line.indexOf('#');
+            while (cs !== -1) {
+                const ch = line[cs - 1];
+                if (ch === ' ' || ch === '\t') {
+                    dirEnd = cs - 1;
+                    break;
+                }
+                else {
+                    cs = line.indexOf('#', cs + 1);
+                }
+            }
+            while (true) {
+                const ch = line[dirEnd - 1];
+                if (ch === ' ' || ch === '\t')
+                    dirEnd -= 1;
+                else
+                    break;
+            }
+            const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));
+            yield* this.pushCount(line.length - n); // possible comment
+            this.pushNewline();
+            return 'stream';
+        }
+        if (this.atLineEnd()) {
+            const sp = yield* this.pushSpaces(true);
+            yield* this.pushCount(line.length - sp);
+            yield* this.pushNewline();
+            return 'stream';
+        }
+        yield cst.DOCUMENT;
+        return yield* this.parseLineStart();
+    }
+    *parseLineStart() {
+        const ch = this.charAt(0);
+        if (!ch && !this.atEnd)
+            return this.setNext('line-start');
+        if (ch === '-' || ch === '.') {
+            if (!this.atEnd && !this.hasChars(4))
+                return this.setNext('line-start');
+            const s = this.peek(3);
+            if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {
+                yield* this.pushCount(3);
+                this.indentValue = 0;
+                this.indentNext = 0;
+                return s === '---' ? 'doc' : 'stream';
+            }
+        }
+        this.indentValue = yield* this.pushSpaces(false);
+        if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))
+            this.indentNext = this.indentValue;
+        return yield* this.parseBlockStart();
+    }
+    *parseBlockStart() {
+        const [ch0, ch1] = this.peek(2);
+        if (!ch1 && !this.atEnd)
+            return this.setNext('block-start');
+        if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {
+            const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));
+            this.indentNext = this.indentValue + 1;
+            this.indentValue += n;
+            return 'block-start';
+        }
+        return 'doc';
+    }
+    *parseDocument() {
+        yield* this.pushSpaces(true);
+        const line = this.getLine();
+        if (line === null)
+            return this.setNext('doc');
+        let n = yield* this.pushIndicators();
+        switch (line[n]) {
+            case '#':
+                yield* this.pushCount(line.length - n);
+            // fallthrough
+            case undefined:
+                yield* this.pushNewline();
+                return yield* this.parseLineStart();
+            case '{':
+            case '[':
+                yield* this.pushCount(1);
+                this.flowKey = false;
+                this.flowLevel = 1;
+                return 'flow';
+            case '}':
+            case ']':
+                // this is an error
+                yield* this.pushCount(1);
+                return 'doc';
+            case '*':
+                yield* this.pushUntil(isNotAnchorChar);
+                return 'doc';
+            case '"':
+            case "'":
+                return yield* this.parseQuotedScalar();
+            case '|':
+            case '>':
+                n += yield* this.parseBlockScalarHeader();
+                n += yield* this.pushSpaces(true);
+                yield* this.pushCount(line.length - n);
+                yield* this.pushNewline();
+                return yield* this.parseBlockScalar();
+            default:
+                return yield* this.parsePlainScalar();
+        }
+    }
+    *parseFlowCollection() {
+        let nl, sp;
+        let indent = -1;
+        do {
+            nl = yield* this.pushNewline();
+            if (nl > 0) {
+                sp = yield* this.pushSpaces(false);
+                this.indentValue = indent = sp;
+            }
+            else {
+                sp = 0;
+            }
+            sp += yield* this.pushSpaces(true);
+        } while (nl + sp > 0);
+        const line = this.getLine();
+        if (line === null)
+            return this.setNext('flow');
+        if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||
+            (indent === 0 &&
+                (line.startsWith('---') || line.startsWith('...')) &&
+                isEmpty(line[3]))) {
+            // Allowing for the terminal ] or } at the same (rather than greater)
+            // indent level as the initial [ or { is technically invalid, but
+            // failing here would be surprising to users.
+            const atFlowEndMarker = indent === this.indentNext - 1 &&
+                this.flowLevel === 1 &&
+                (line[0] === ']' || line[0] === '}');
+            if (!atFlowEndMarker) {
+                // this is an error
+                this.flowLevel = 0;
+                yield cst.FLOW_END;
+                return yield* this.parseLineStart();
+            }
+        }
+        let n = 0;
+        while (line[n] === ',') {
+            n += yield* this.pushCount(1);
+            n += yield* this.pushSpaces(true);
+            this.flowKey = false;
+        }
+        n += yield* this.pushIndicators();
+        switch (line[n]) {
+            case undefined:
+                return 'flow';
+            case '#':
+                yield* this.pushCount(line.length - n);
+                return 'flow';
+            case '{':
+            case '[':
+                yield* this.pushCount(1);
+                this.flowKey = false;
+                this.flowLevel += 1;
+                return 'flow';
+            case '}':
+            case ']':
+                yield* this.pushCount(1);
+                this.flowKey = true;
+                this.flowLevel -= 1;
+                return this.flowLevel ? 'flow' : 'doc';
+            case '*':
+                yield* this.pushUntil(isNotAnchorChar);
+                return 'flow';
+            case '"':
+            case "'":
+                this.flowKey = true;
+                return yield* this.parseQuotedScalar();
+            case ':': {
+                const next = this.charAt(1);
+                if (this.flowKey || isEmpty(next) || next === ',') {
+                    this.flowKey = false;
+                    yield* this.pushCount(1);
+                    yield* this.pushSpaces(true);
+                    return 'flow';
+                }
+            }
+            // fallthrough
+            default:
+                this.flowKey = false;
+                return yield* this.parsePlainScalar();
+        }
+    }
+    *parseQuotedScalar() {
+        const quote = this.charAt(0);
+        let end = this.buffer.indexOf(quote, this.pos + 1);
+        if (quote === "'") {
+            while (end !== -1 && this.buffer[end + 1] === "'")
+                end = this.buffer.indexOf("'", end + 2);
+        }
+        else {
+            // double-quote
+            while (end !== -1) {
+                let n = 0;
+                while (this.buffer[end - 1 - n] === '\\')
+                    n += 1;
+                if (n % 2 === 0)
+                    break;
+                end = this.buffer.indexOf('"', end + 1);
+            }
+        }
+        // Only looking for newlines within the quotes
+        const qb = this.buffer.substring(0, end);
+        let nl = qb.indexOf('\n', this.pos);
+        if (nl !== -1) {
+            while (nl !== -1) {
+                const cs = this.continueScalar(nl + 1);
+                if (cs === -1)
+                    break;
+                nl = qb.indexOf('\n', cs);
+            }
+            if (nl !== -1) {
+                // this is an error caused by an unexpected unindent
+                end = nl - (qb[nl - 1] === '\r' ? 2 : 1);
+            }
+        }
+        if (end === -1) {
+            if (!this.atEnd)
+                return this.setNext('quoted-scalar');
+            end = this.buffer.length;
+        }
+        yield* this.pushToIndex(end + 1, false);
+        return this.flowLevel ? 'flow' : 'doc';
+    }
+    *parseBlockScalarHeader() {
+        this.blockScalarIndent = -1;
+        this.blockScalarKeep = false;
+        let i = this.pos;
+        while (true) {
+            const ch = this.buffer[++i];
+            if (ch === '+')
+                this.blockScalarKeep = true;
+            else if (ch > '0' && ch <= '9')
+                this.blockScalarIndent = Number(ch) - 1;
+            else if (ch !== '-')
+                break;
+        }
+        return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');
+    }
+    *parseBlockScalar() {
+        let nl = this.pos - 1; // may be -1 if this.pos === 0
+        let indent = 0;
+        let ch;
+        loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {
+            switch (ch) {
+                case ' ':
+                    indent += 1;
+                    break;
+                case '\n':
+                    nl = i;
+                    indent = 0;
+                    break;
+                case '\r': {
+                    const next = this.buffer[i + 1];
+                    if (!next && !this.atEnd)
+                        return this.setNext('block-scalar');
+                    if (next === '\n')
+                        break;
+                } // fallthrough
+                default:
+                    break loop;
+            }
+        }
+        if (!ch && !this.atEnd)
+            return this.setNext('block-scalar');
+        if (indent >= this.indentNext) {
+            if (this.blockScalarIndent === -1)
+                this.indentNext = indent;
+            else {
+                this.indentNext =
+                    this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);
+            }
+            do {
+                const cs = this.continueScalar(nl + 1);
+                if (cs === -1)
+                    break;
+                nl = this.buffer.indexOf('\n', cs);
+            } while (nl !== -1);
+            if (nl === -1) {
+                if (!this.atEnd)
+                    return this.setNext('block-scalar');
+                nl = this.buffer.length;
+            }
+        }
+        // Trailing insufficiently indented tabs are invalid.
+        // To catch that during parsing, we include them in the block scalar value.
+        let i = nl + 1;
+        ch = this.buffer[i];
+        while (ch === ' ')
+            ch = this.buffer[++i];
+        if (ch === '\t') {
+            while (ch === '\t' || ch === ' ' || ch === '\r' || ch === '\n')
+                ch = this.buffer[++i];
+            nl = i - 1;
+        }
+        else if (!this.blockScalarKeep) {
+            do {
+                let i = nl - 1;
+                let ch = this.buffer[i];
+                if (ch === '\r')
+                    ch = this.buffer[--i];
+                const lastChar = i; // Drop the line if last char not more indented
+                while (ch === ' ')
+                    ch = this.buffer[--i];
+                if (ch === '\n' && i >= this.pos && i + 1 + indent > lastChar)
+                    nl = i;
+                else
+                    break;
+            } while (true);
+        }
+        yield cst.SCALAR;
+        yield* this.pushToIndex(nl + 1, true);
+        return yield* this.parseLineStart();
+    }
+    *parsePlainScalar() {
+        const inFlow = this.flowLevel > 0;
+        let end = this.pos - 1;
+        let i = this.pos - 1;
+        let ch;
+        while ((ch = this.buffer[++i])) {
+            if (ch === ':') {
+                const next = this.buffer[i + 1];
+                if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))
+                    break;
+                end = i;
+            }
+            else if (isEmpty(ch)) {
+                let next = this.buffer[i + 1];
+                if (ch === '\r') {
+                    if (next === '\n') {
+                        i += 1;
+                        ch = '\n';
+                        next = this.buffer[i + 1];
+                    }
+                    else
+                        end = i;
+                }
+                if (next === '#' || (inFlow && flowIndicatorChars.has(next)))
+                    break;
+                if (ch === '\n') {
+                    const cs = this.continueScalar(i + 1);
+                    if (cs === -1)
+                        break;
+                    i = Math.max(i, cs - 2); // to advance, but still account for ' #'
+                }
+            }
+            else {
+                if (inFlow && flowIndicatorChars.has(ch))
+                    break;
+                end = i;
+            }
+        }
+        if (!ch && !this.atEnd)
+            return this.setNext('plain-scalar');
+        yield cst.SCALAR;
+        yield* this.pushToIndex(end + 1, true);
+        return inFlow ? 'flow' : 'doc';
+    }
+    *pushCount(n) {
+        if (n > 0) {
+            yield this.buffer.substr(this.pos, n);
+            this.pos += n;
+            return n;
+        }
+        return 0;
+    }
+    *pushToIndex(i, allowEmpty) {
+        const s = this.buffer.slice(this.pos, i);
+        if (s) {
+            yield s;
+            this.pos += s.length;
+            return s.length;
+        }
+        else if (allowEmpty)
+            yield '';
+        return 0;
+    }
+    *pushIndicators() {
+        let n = 0;
+        loop: while (true) {
+            switch (this.charAt(0)) {
+                case '!':
+                    n += yield* this.pushTag();
+                    n += yield* this.pushSpaces(true);
+                    continue loop;
+                case '&':
+                    n += yield* this.pushUntil(isNotAnchorChar);
+                    n += yield* this.pushSpaces(true);
+                    continue loop;
+                case '-': // this is an error
+                case '?': // this is an error outside flow collections
+                case ':': {
+                    const inFlow = this.flowLevel > 0;
+                    const ch1 = this.charAt(1);
+                    if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {
+                        if (!inFlow)
+                            this.indentNext = this.indentValue + 1;
+                        else if (this.flowKey)
+                            this.flowKey = false;
+                        n += yield* this.pushCount(1);
+                        n += yield* this.pushSpaces(true);
+                        continue loop;
+                    }
+                }
+            }
+            break loop;
+        }
+        return n;
+    }
+    *pushTag() {
+        if (this.charAt(1) === '<') {
+            let i = this.pos + 2;
+            let ch = this.buffer[i];
+            while (!isEmpty(ch) && ch !== '>')
+                ch = this.buffer[++i];
+            return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);
+        }
+        else {
+            let i = this.pos + 1;
+            let ch = this.buffer[i];
+            while (ch) {
+                if (tagChars.has(ch))
+                    ch = this.buffer[++i];
+                else if (ch === '%' &&
+                    hexDigits.has(this.buffer[i + 1]) &&
+                    hexDigits.has(this.buffer[i + 2])) {
+                    ch = this.buffer[(i += 3)];
+                }
+                else
+                    break;
+            }
+            return yield* this.pushToIndex(i, false);
+        }
+    }
+    *pushNewline() {
+        const ch = this.buffer[this.pos];
+        if (ch === '\n')
+            return yield* this.pushCount(1);
+        else if (ch === '\r' && this.charAt(1) === '\n')
+            return yield* this.pushCount(2);
+        else
+            return 0;
+    }
+    *pushSpaces(allowTabs) {
+        let i = this.pos - 1;
+        let ch;
+        do {
+            ch = this.buffer[++i];
+        } while (ch === ' ' || (allowTabs && ch === '\t'));
+        const n = i - this.pos;
+        if (n > 0) {
+            yield this.buffer.substr(this.pos, n);
+            this.pos = i;
+        }
+        return n;
+    }
+    *pushUntil(test) {
+        let i = this.pos;
+        let ch = this.buffer[i];
+        while (!test(ch))
+            ch = this.buffer[++i];
+        return yield* this.pushToIndex(i, false);
+    }
+}
+
+exports.Lexer = Lexer;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/line-counter.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/line-counter.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/line-counter.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,22 @@
+/**
+ * Tracks newlines during parsing in order to provide an efficient API for
+ * determining the one-indexed `{ line, col }` position for any offset
+ * within the input.
+ */
+export declare class LineCounter {
+    lineStarts: number[];
+    /**
+     * Should be called in ascending order. Otherwise, call
+     * `lineCounter.lineStarts.sort()` before calling `linePos()`.
+     */
+    addNewLine: (offset: number) => number;
+    /**
+     * Performs a binary search and returns the 1-indexed { line, col }
+     * position of `offset`. If `line === 0`, `addNewLine` has never been
+     * called or `offset` is before the first known newline.
+     */
+    linePos: (offset: number) => {
+        line: number;
+        col: number;
+    };
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/line-counter.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/line-counter.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/line-counter.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,41 @@
+'use strict';
+
+/**
+ * Tracks newlines during parsing in order to provide an efficient API for
+ * determining the one-indexed `{ line, col }` position for any offset
+ * within the input.
+ */
+class LineCounter {
+    constructor() {
+        this.lineStarts = [];
+        /**
+         * Should be called in ascending order. Otherwise, call
+         * `lineCounter.lineStarts.sort()` before calling `linePos()`.
+         */
+        this.addNewLine = (offset) => this.lineStarts.push(offset);
+        /**
+         * Performs a binary search and returns the 1-indexed { line, col }
+         * position of `offset`. If `line === 0`, `addNewLine` has never been
+         * called or `offset` is before the first known newline.
+         */
+        this.linePos = (offset) => {
+            let low = 0;
+            let high = this.lineStarts.length;
+            while (low < high) {
+                const mid = (low + high) >> 1; // Math.floor((low + high) / 2)
+                if (this.lineStarts[mid] < offset)
+                    low = mid + 1;
+                else
+                    high = mid;
+            }
+            if (this.lineStarts[low] === offset)
+                return { line: low + 1, col: 1 };
+            if (low === 0)
+                return { line: 0, col: offset };
+            const start = this.lineStarts[low - 1];
+            return { line: low, col: offset - start + 1 };
+        };
+    }
+}
+
+exports.LineCounter = LineCounter;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/parser.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/parser.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/parser.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,84 @@
+import type { Token } from './cst';
+/**
+ * A YAML concrete syntax tree (CST) parser
+ *
+ * ```ts
+ * const src: string = ...
+ * for (const token of new Parser().parse(src)) {
+ *   // token: Token
+ * }
+ * ```
+ *
+ * To use the parser with a user-provided lexer:
+ *
+ * ```ts
+ * function* parse(source: string, lexer: Lexer) {
+ *   const parser = new Parser()
+ *   for (const lexeme of lexer.lex(source))
+ *     yield* parser.next(lexeme)
+ *   yield* parser.end()
+ * }
+ *
+ * const src: string = ...
+ * const lexer = new Lexer()
+ * for (const token of parse(src, lexer)) {
+ *   // token: Token
+ * }
+ * ```
+ */
+export declare class Parser {
+    private onNewLine?;
+    /** If true, space and sequence indicators count as indentation */
+    private atNewLine;
+    /** If true, next token is a scalar value */
+    private atScalar;
+    /** Current indentation level */
+    private indent;
+    /** Current offset since the start of parsing */
+    offset: number;
+    /** On the same line with a block map key */
+    private onKeyLine;
+    /** Top indicates the node that's currently being built */
+    stack: Token[];
+    /** The source of the current token, set in parse() */
+    private source;
+    /** The type of the current token, set in parse() */
+    private type;
+    /**
+     * @param onNewLine - If defined, called separately with the start position of
+     *   each new line (in `parse()`, including the start of input).
+     */
+    constructor(onNewLine?: (offset: number) => void);
+    /**
+     * Parse `source` as a YAML stream.
+     * If `incomplete`, a part of the last line may be left as a buffer for the next call.
+     *
+     * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.
+     *
+     * @returns A generator of tokens representing each directive, document, and other structure.
+     */
+    parse(source: string, incomplete?: boolean): Generator<Token, void>;
+    /**
+     * Advance the parser by the `source` of one lexical token.
+     */
+    next(source: string): Generator<Token, void>;
+    private lexer;
+    /** Call at end of input to push out any remaining constructions */
+    end(): Generator<Token, void>;
+    private get sourceToken();
+    private step;
+    private peek;
+    private pop;
+    private stream;
+    private document;
+    private scalar;
+    private blockScalar;
+    private blockMap;
+    private blockSequence;
+    private flowCollection;
+    private flowScalar;
+    private startBlockValue;
+    private atIndentedComment;
+    private documentEnd;
+    private lineEnd;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/parser.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/parser.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/parse/parser.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,980 @@
+'use strict';
+
+var node_process = require('process');
+var cst = require('./cst.js');
+var lexer = require('./lexer.js');
+
+function includesToken(list, type) {
+    for (let i = 0; i < list.length; ++i)
+        if (list[i].type === type)
+            return true;
+    return false;
+}
+function findNonEmptyIndex(list) {
+    for (let i = 0; i < list.length; ++i) {
+        switch (list[i].type) {
+            case 'space':
+            case 'comment':
+            case 'newline':
+                break;
+            default:
+                return i;
+        }
+    }
+    return -1;
+}
+function isFlowToken(token) {
+    switch (token?.type) {
+        case 'alias':
+        case 'scalar':
+        case 'single-quoted-scalar':
+        case 'double-quoted-scalar':
+        case 'flow-collection':
+            return true;
+        default:
+            return false;
+    }
+}
+function getPrevProps(parent) {
+    switch (parent.type) {
+        case 'document':
+            return parent.start;
+        case 'block-map': {
+            const it = parent.items[parent.items.length - 1];
+            return it.sep ?? it.start;
+        }
+        case 'block-seq':
+            return parent.items[parent.items.length - 1].start;
+        /* istanbul ignore next should not happen */
+        default:
+            return [];
+    }
+}
+/** Note: May modify input array */
+function getFirstKeyStartProps(prev) {
+    if (prev.length === 0)
+        return [];
+    let i = prev.length;
+    loop: while (--i >= 0) {
+        switch (prev[i].type) {
+            case 'doc-start':
+            case 'explicit-key-ind':
+            case 'map-value-ind':
+            case 'seq-item-ind':
+            case 'newline':
+                break loop;
+        }
+    }
+    while (prev[++i]?.type === 'space') {
+        /* loop */
+    }
+    return prev.splice(i, prev.length);
+}
+function arrayPushArray(target, source) {
+    // May exhaust call stack with large `source` array
+    if (source.length < 1e5)
+        Array.prototype.push.apply(target, source);
+    else
+        for (let i = 0; i < source.length; ++i)
+            target.push(source[i]);
+}
+function fixFlowSeqItems(fc) {
+    if (fc.start.type === 'flow-seq-start') {
+        for (const it of fc.items) {
+            if (it.sep &&
+                !it.value &&
+                !includesToken(it.start, 'explicit-key-ind') &&
+                !includesToken(it.sep, 'map-value-ind')) {
+                if (it.key)
+                    it.value = it.key;
+                delete it.key;
+                if (isFlowToken(it.value)) {
+                    if (it.value.end)
+                        arrayPushArray(it.value.end, it.sep);
+                    else
+                        it.value.end = it.sep;
+                }
+                else
+                    arrayPushArray(it.start, it.sep);
+                delete it.sep;
+            }
+        }
+    }
+}
+/**
+ * A YAML concrete syntax tree (CST) parser
+ *
+ * ```ts
+ * const src: string = ...
+ * for (const token of new Parser().parse(src)) {
+ *   // token: Token
+ * }
+ * ```
+ *
+ * To use the parser with a user-provided lexer:
+ *
+ * ```ts
+ * function* parse(source: string, lexer: Lexer) {
+ *   const parser = new Parser()
+ *   for (const lexeme of lexer.lex(source))
+ *     yield* parser.next(lexeme)
+ *   yield* parser.end()
+ * }
+ *
+ * const src: string = ...
+ * const lexer = new Lexer()
+ * for (const token of parse(src, lexer)) {
+ *   // token: Token
+ * }
+ * ```
+ */
+class Parser {
+    /**
+     * @param onNewLine - If defined, called separately with the start position of
+     *   each new line (in `parse()`, including the start of input).
+     */
+    constructor(onNewLine) {
+        /** If true, space and sequence indicators count as indentation */
+        this.atNewLine = true;
+        /** If true, next token is a scalar value */
+        this.atScalar = false;
+        /** Current indentation level */
+        this.indent = 0;
+        /** Current offset since the start of parsing */
+        this.offset = 0;
+        /** On the same line with a block map key */
+        this.onKeyLine = false;
+        /** Top indicates the node that's currently being built */
+        this.stack = [];
+        /** The source of the current token, set in parse() */
+        this.source = '';
+        /** The type of the current token, set in parse() */
+        this.type = '';
+        // Must be defined after `next()`
+        this.lexer = new lexer.Lexer();
+        this.onNewLine = onNewLine;
+    }
+    /**
+     * Parse `source` as a YAML stream.
+     * If `incomplete`, a part of the last line may be left as a buffer for the next call.
+     *
+     * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.
+     *
+     * @returns A generator of tokens representing each directive, document, and other structure.
+     */
+    *parse(source, incomplete = false) {
+        if (this.onNewLine && this.offset === 0)
+            this.onNewLine(0);
+        for (const lexeme of this.lexer.lex(source, incomplete))
+            yield* this.next(lexeme);
+        if (!incomplete)
+            yield* this.end();
+    }
+    /**
+     * Advance the parser by the `source` of one lexical token.
+     */
+    *next(source) {
+        this.source = source;
+        if (node_process.env.LOG_TOKENS)
+            console.log('|', cst.prettyToken(source));
+        if (this.atScalar) {
+            this.atScalar = false;
+            yield* this.step();
+            this.offset += source.length;
+            return;
+        }
+        const type = cst.tokenType(source);
+        if (!type) {
+            const message = `Not a YAML token: ${source}`;
+            yield* this.pop({ type: 'error', offset: this.offset, message, source });
+            this.offset += source.length;
+        }
+        else if (type === 'scalar') {
+            this.atNewLine = false;
+            this.atScalar = true;
+            this.type = 'scalar';
+        }
+        else {
+            this.type = type;
+            yield* this.step();
+            switch (type) {
+                case 'newline':
+                    this.atNewLine = true;
+                    this.indent = 0;
+                    if (this.onNewLine)
+                        this.onNewLine(this.offset + source.length);
+                    break;
+                case 'space':
+                    if (this.atNewLine && source[0] === ' ')
+                        this.indent += source.length;
+                    break;
+                case 'explicit-key-ind':
+                case 'map-value-ind':
+                case 'seq-item-ind':
+                    if (this.atNewLine)
+                        this.indent += source.length;
+                    break;
+                case 'doc-mode':
+                case 'flow-error-end':
+                    return;
+                default:
+                    this.atNewLine = false;
+            }
+            this.offset += source.length;
+        }
+    }
+    /** Call at end of input to push out any remaining constructions */
+    *end() {
+        while (this.stack.length > 0)
+            yield* this.pop();
+    }
+    get sourceToken() {
+        const st = {
+            type: this.type,
+            offset: this.offset,
+            indent: this.indent,
+            source: this.source
+        };
+        return st;
+    }
+    *step() {
+        const top = this.peek(1);
+        if (this.type === 'doc-end' && top?.type !== 'doc-end') {
+            while (this.stack.length > 0)
+                yield* this.pop();
+            this.stack.push({
+                type: 'doc-end',
+                offset: this.offset,
+                source: this.source
+            });
+            return;
+        }
+        if (!top)
+            return yield* this.stream();
+        switch (top.type) {
+            case 'document':
+                return yield* this.document(top);
+            case 'alias':
+            case 'scalar':
+            case 'single-quoted-scalar':
+            case 'double-quoted-scalar':
+                return yield* this.scalar(top);
+            case 'block-scalar':
+                return yield* this.blockScalar(top);
+            case 'block-map':
+                return yield* this.blockMap(top);
+            case 'block-seq':
+                return yield* this.blockSequence(top);
+            case 'flow-collection':
+                return yield* this.flowCollection(top);
+            case 'doc-end':
+                return yield* this.documentEnd(top);
+        }
+        /* istanbul ignore next should not happen */
+        yield* this.pop();
+    }
+    peek(n) {
+        return this.stack[this.stack.length - n];
+    }
+    *pop(error) {
+        const token = error ?? this.stack.pop();
+        /* istanbul ignore if should not happen */
+        if (!token) {
+            const message = 'Tried to pop an empty stack';
+            yield { type: 'error', offset: this.offset, source: '', message };
+        }
+        else if (this.stack.length === 0) {
+            yield token;
+        }
+        else {
+            const top = this.peek(1);
+            if (token.type === 'block-scalar') {
+                // Block scalars use their parent rather than header indent
+                token.indent = 'indent' in top ? top.indent : 0;
+            }
+            else if (token.type === 'flow-collection' && top.type === 'document') {
+                // Ignore all indent for top-level flow collections
+                token.indent = 0;
+            }
+            if (token.type === 'flow-collection')
+                fixFlowSeqItems(token);
+            switch (top.type) {
+                case 'document':
+                    top.value = token;
+                    break;
+                case 'block-scalar':
+                    top.props.push(token); // error
+                    break;
+                case 'block-map': {
+                    const it = top.items[top.items.length - 1];
+                    if (it.value) {
+                        top.items.push({ start: [], key: token, sep: [] });
+                        this.onKeyLine = true;
+                        return;
+                    }
+                    else if (it.sep) {
+                        it.value = token;
+                    }
+                    else {
+                        Object.assign(it, { key: token, sep: [] });
+                        this.onKeyLine = !it.explicitKey;
+                        return;
+                    }
+                    break;
+                }
+                case 'block-seq': {
+                    const it = top.items[top.items.length - 1];
+                    if (it.value)
+                        top.items.push({ start: [], value: token });
+                    else
+                        it.value = token;
+                    break;
+                }
+                case 'flow-collection': {
+                    const it = top.items[top.items.length - 1];
+                    if (!it || it.value)
+                        top.items.push({ start: [], key: token, sep: [] });
+                    else if (it.sep)
+                        it.value = token;
+                    else
+                        Object.assign(it, { key: token, sep: [] });
+                    return;
+                }
+                /* istanbul ignore next should not happen */
+                default:
+                    yield* this.pop();
+                    yield* this.pop(token);
+            }
+            if ((top.type === 'document' ||
+                top.type === 'block-map' ||
+                top.type === 'block-seq') &&
+                (token.type === 'block-map' || token.type === 'block-seq')) {
+                const last = token.items[token.items.length - 1];
+                if (last &&
+                    !last.sep &&
+                    !last.value &&
+                    last.start.length > 0 &&
+                    findNonEmptyIndex(last.start) === -1 &&
+                    (token.indent === 0 ||
+                        last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {
+                    if (top.type === 'document')
+                        top.end = last.start;
+                    else
+                        top.items.push({ start: last.start });
+                    token.items.splice(-1, 1);
+                }
+            }
+        }
+    }
+    *stream() {
+        switch (this.type) {
+            case 'directive-line':
+                yield { type: 'directive', offset: this.offset, source: this.source };
+                return;
+            case 'byte-order-mark':
+            case 'space':
+            case 'comment':
+            case 'newline':
+                yield this.sourceToken;
+                return;
+            case 'doc-mode':
+            case 'doc-start': {
+                const doc = {
+                    type: 'document',
+                    offset: this.offset,
+                    start: []
+                };
+                if (this.type === 'doc-start')
+                    doc.start.push(this.sourceToken);
+                this.stack.push(doc);
+                return;
+            }
+        }
+        yield {
+            type: 'error',
+            offset: this.offset,
+            message: `Unexpected ${this.type} token in YAML stream`,
+            source: this.source
+        };
+    }
+    *document(doc) {
+        if (doc.value)
+            return yield* this.lineEnd(doc);
+        switch (this.type) {
+            case 'doc-start': {
+                if (findNonEmptyIndex(doc.start) !== -1) {
+                    yield* this.pop();
+                    yield* this.step();
+                }
+                else
+                    doc.start.push(this.sourceToken);
+                return;
+            }
+            case 'anchor':
+            case 'tag':
+            case 'space':
+            case 'comment':
+            case 'newline':
+                doc.start.push(this.sourceToken);
+                return;
+        }
+        const bv = this.startBlockValue(doc);
+        if (bv)
+            this.stack.push(bv);
+        else {
+            yield {
+                type: 'error',
+                offset: this.offset,
+                message: `Unexpected ${this.type} token in YAML document`,
+                source: this.source
+            };
+        }
+    }
+    *scalar(scalar) {
+        if (this.type === 'map-value-ind') {
+            const prev = getPrevProps(this.peek(2));
+            const start = getFirstKeyStartProps(prev);
+            let sep;
+            if (scalar.end) {
+                sep = scalar.end;
+                sep.push(this.sourceToken);
+                delete scalar.end;
+            }
+            else
+                sep = [this.sourceToken];
+            const map = {
+                type: 'block-map',
+                offset: scalar.offset,
+                indent: scalar.indent,
+                items: [{ start, key: scalar, sep }]
+            };
+            this.onKeyLine = true;
+            this.stack[this.stack.length - 1] = map;
+        }
+        else
+            yield* this.lineEnd(scalar);
+    }
+    *blockScalar(scalar) {
+        switch (this.type) {
+            case 'space':
+            case 'comment':
+            case 'newline':
+                scalar.props.push(this.sourceToken);
+                return;
+            case 'scalar':
+                scalar.source = this.source;
+                // block-scalar source includes trailing newline
+                this.atNewLine = true;
+                this.indent = 0;
+                if (this.onNewLine) {
+                    let nl = this.source.indexOf('\n') + 1;
+                    while (nl !== 0) {
+                        this.onNewLine(this.offset + nl);
+                        nl = this.source.indexOf('\n', nl) + 1;
+                    }
+                }
+                yield* this.pop();
+                break;
+            /* istanbul ignore next should not happen */
+            default:
+                yield* this.pop();
+                yield* this.step();
+        }
+    }
+    *blockMap(map) {
+        const it = map.items[map.items.length - 1];
+        // it.sep is true-ish if pair already has key or : separator
+        switch (this.type) {
+            case 'newline':
+                this.onKeyLine = false;
+                if (it.value) {
+                    const end = 'end' in it.value ? it.value.end : undefined;
+                    const last = Array.isArray(end) ? end[end.length - 1] : undefined;
+                    if (last?.type === 'comment')
+                        end?.push(this.sourceToken);
+                    else
+                        map.items.push({ start: [this.sourceToken] });
+                }
+                else if (it.sep) {
+                    it.sep.push(this.sourceToken);
+                }
+                else {
+                    it.start.push(this.sourceToken);
+                }
+                return;
+            case 'space':
+            case 'comment':
+                if (it.value) {
+                    map.items.push({ start: [this.sourceToken] });
+                }
+                else if (it.sep) {
+                    it.sep.push(this.sourceToken);
+                }
+                else {
+                    if (this.atIndentedComment(it.start, map.indent)) {
+                        const prev = map.items[map.items.length - 2];
+                        const end = prev?.value?.end;
+                        if (Array.isArray(end)) {
+                            arrayPushArray(end, it.start);
+                            end.push(this.sourceToken);
+                            map.items.pop();
+                            return;
+                        }
+                    }
+                    it.start.push(this.sourceToken);
+                }
+                return;
+        }
+        if (this.indent >= map.indent) {
+            const atMapIndent = !this.onKeyLine && this.indent === map.indent;
+            const atNextItem = atMapIndent &&
+                (it.sep || it.explicitKey) &&
+                this.type !== 'seq-item-ind';
+            // For empty nodes, assign newline-separated not indented empty tokens to following node
+            let start = [];
+            if (atNextItem && it.sep && !it.value) {
+                const nl = [];
+                for (let i = 0; i < it.sep.length; ++i) {
+                    const st = it.sep[i];
+                    switch (st.type) {
+                        case 'newline':
+                            nl.push(i);
+                            break;
+                        case 'space':
+                            break;
+                        case 'comment':
+                            if (st.indent > map.indent)
+                                nl.length = 0;
+                            break;
+                        default:
+                            nl.length = 0;
+                    }
+                }
+                if (nl.length >= 2)
+                    start = it.sep.splice(nl[1]);
+            }
+            switch (this.type) {
+                case 'anchor':
+                case 'tag':
+                    if (atNextItem || it.value) {
+                        start.push(this.sourceToken);
+                        map.items.push({ start });
+                        this.onKeyLine = true;
+                    }
+                    else if (it.sep) {
+                        it.sep.push(this.sourceToken);
+                    }
+                    else {
+                        it.start.push(this.sourceToken);
+                    }
+                    return;
+                case 'explicit-key-ind':
+                    if (!it.sep && !it.explicitKey) {
+                        it.start.push(this.sourceToken);
+                        it.explicitKey = true;
+                    }
+                    else if (atNextItem || it.value) {
+                        start.push(this.sourceToken);
+                        map.items.push({ start, explicitKey: true });
+                    }
+                    else {
+                        this.stack.push({
+                            type: 'block-map',
+                            offset: this.offset,
+                            indent: this.indent,
+                            items: [{ start: [this.sourceToken], explicitKey: true }]
+                        });
+                    }
+                    this.onKeyLine = true;
+                    return;
+                case 'map-value-ind':
+                    if (it.explicitKey) {
+                        if (!it.sep) {
+                            if (includesToken(it.start, 'newline')) {
+                                Object.assign(it, { key: null, sep: [this.sourceToken] });
+                            }
+                            else {
+                                const start = getFirstKeyStartProps(it.start);
+                                this.stack.push({
+                                    type: 'block-map',
+                                    offset: this.offset,
+                                    indent: this.indent,
+                                    items: [{ start, key: null, sep: [this.sourceToken] }]
+                                });
+                            }
+                        }
+                        else if (it.value) {
+                            map.items.push({ start: [], key: null, sep: [this.sourceToken] });
+                        }
+                        else if (includesToken(it.sep, 'map-value-ind')) {
+                            this.stack.push({
+                                type: 'block-map',
+                                offset: this.offset,
+                                indent: this.indent,
+                                items: [{ start, key: null, sep: [this.sourceToken] }]
+                            });
+                        }
+                        else if (isFlowToken(it.key) &&
+                            !includesToken(it.sep, 'newline')) {
+                            const start = getFirstKeyStartProps(it.start);
+                            const key = it.key;
+                            const sep = it.sep;
+                            sep.push(this.sourceToken);
+                            // @ts-expect-error type guard is wrong here
+                            delete it.key;
+                            // @ts-expect-error type guard is wrong here
+                            delete it.sep;
+                            this.stack.push({
+                                type: 'block-map',
+                                offset: this.offset,
+                                indent: this.indent,
+                                items: [{ start, key, sep }]
+                            });
+                        }
+                        else if (start.length > 0) {
+                            // Not actually at next item
+                            it.sep = it.sep.concat(start, this.sourceToken);
+                        }
+                        else {
+                            it.sep.push(this.sourceToken);
+                        }
+                    }
+                    else {
+                        if (!it.sep) {
+                            Object.assign(it, { key: null, sep: [this.sourceToken] });
+                        }
+                        else if (it.value || atNextItem) {
+                            map.items.push({ start, key: null, sep: [this.sourceToken] });
+                        }
+                        else if (includesToken(it.sep, 'map-value-ind')) {
+                            this.stack.push({
+                                type: 'block-map',
+                                offset: this.offset,
+                                indent: this.indent,
+                                items: [{ start: [], key: null, sep: [this.sourceToken] }]
+                            });
+                        }
+                        else {
+                            it.sep.push(this.sourceToken);
+                        }
+                    }
+                    this.onKeyLine = true;
+                    return;
+                case 'alias':
+                case 'scalar':
+                case 'single-quoted-scalar':
+                case 'double-quoted-scalar': {
+                    const fs = this.flowScalar(this.type);
+                    if (atNextItem || it.value) {
+                        map.items.push({ start, key: fs, sep: [] });
+                        this.onKeyLine = true;
+                    }
+                    else if (it.sep) {
+                        this.stack.push(fs);
+                    }
+                    else {
+                        Object.assign(it, { key: fs, sep: [] });
+                        this.onKeyLine = true;
+                    }
+                    return;
+                }
+                default: {
+                    const bv = this.startBlockValue(map);
+                    if (bv) {
+                        if (bv.type === 'block-seq') {
+                            if (!it.explicitKey &&
+                                it.sep &&
+                                !includesToken(it.sep, 'newline')) {
+                                yield* this.pop({
+                                    type: 'error',
+                                    offset: this.offset,
+                                    message: 'Unexpected block-seq-ind on same line with key',
+                                    source: this.source
+                                });
+                                return;
+                            }
+                        }
+                        else if (atMapIndent) {
+                            map.items.push({ start });
+                        }
+                        this.stack.push(bv);
+                        return;
+                    }
+                }
+            }
+        }
+        yield* this.pop();
+        yield* this.step();
+    }
+    *blockSequence(seq) {
+        const it = seq.items[seq.items.length - 1];
+        switch (this.type) {
+            case 'newline':
+                if (it.value) {
+                    const end = 'end' in it.value ? it.value.end : undefined;
+                    const last = Array.isArray(end) ? end[end.length - 1] : undefined;
+                    if (last?.type === 'comment')
+                        end?.push(this.sourceToken);
+                    else
+                        seq.items.push({ start: [this.sourceToken] });
+                }
+                else
+                    it.start.push(this.sourceToken);
+                return;
+            case 'space':
+            case 'comment':
+                if (it.value)
+                    seq.items.push({ start: [this.sourceToken] });
+                else {
+                    if (this.atIndentedComment(it.start, seq.indent)) {
+                        const prev = seq.items[seq.items.length - 2];
+                        const end = prev?.value?.end;
+                        if (Array.isArray(end)) {
+                            arrayPushArray(end, it.start);
+                            end.push(this.sourceToken);
+                            seq.items.pop();
+                            return;
+                        }
+                    }
+                    it.start.push(this.sourceToken);
+                }
+                return;
+            case 'anchor':
+            case 'tag':
+                if (it.value || this.indent <= seq.indent)
+                    break;
+                it.start.push(this.sourceToken);
+                return;
+            case 'seq-item-ind':
+                if (this.indent !== seq.indent)
+                    break;
+                if (it.value || includesToken(it.start, 'seq-item-ind'))
+                    seq.items.push({ start: [this.sourceToken] });
+                else
+                    it.start.push(this.sourceToken);
+                return;
+        }
+        if (this.indent > seq.indent) {
+            const bv = this.startBlockValue(seq);
+            if (bv) {
+                this.stack.push(bv);
+                return;
+            }
+        }
+        yield* this.pop();
+        yield* this.step();
+    }
+    *flowCollection(fc) {
+        const it = fc.items[fc.items.length - 1];
+        if (this.type === 'flow-error-end') {
+            let top;
+            do {
+                yield* this.pop();
+                top = this.peek(1);
+            } while (top?.type === 'flow-collection');
+        }
+        else if (fc.end.length === 0) {
+            switch (this.type) {
+                case 'comma':
+                case 'explicit-key-ind':
+                    if (!it || it.sep)
+                        fc.items.push({ start: [this.sourceToken] });
+                    else
+                        it.start.push(this.sourceToken);
+                    return;
+                case 'map-value-ind':
+                    if (!it || it.value)
+                        fc.items.push({ start: [], key: null, sep: [this.sourceToken] });
+                    else if (it.sep)
+                        it.sep.push(this.sourceToken);
+                    else
+                        Object.assign(it, { key: null, sep: [this.sourceToken] });
+                    return;
+                case 'space':
+                case 'comment':
+                case 'newline':
+                case 'anchor':
+                case 'tag':
+                    if (!it || it.value)
+                        fc.items.push({ start: [this.sourceToken] });
+                    else if (it.sep)
+                        it.sep.push(this.sourceToken);
+                    else
+                        it.start.push(this.sourceToken);
+                    return;
+                case 'alias':
+                case 'scalar':
+                case 'single-quoted-scalar':
+                case 'double-quoted-scalar': {
+                    const fs = this.flowScalar(this.type);
+                    if (!it || it.value)
+                        fc.items.push({ start: [], key: fs, sep: [] });
+                    else if (it.sep)
+                        this.stack.push(fs);
+                    else
+                        Object.assign(it, { key: fs, sep: [] });
+                    return;
+                }
+                case 'flow-map-end':
+                case 'flow-seq-end':
+                    fc.end.push(this.sourceToken);
+                    return;
+            }
+            const bv = this.startBlockValue(fc);
+            /* istanbul ignore else should not happen */
+            if (bv)
+                this.stack.push(bv);
+            else {
+                yield* this.pop();
+                yield* this.step();
+            }
+        }
+        else {
+            const parent = this.peek(2);
+            if (parent.type === 'block-map' &&
+                ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||
+                    (this.type === 'newline' &&
+                        !parent.items[parent.items.length - 1].sep))) {
+                yield* this.pop();
+                yield* this.step();
+            }
+            else if (this.type === 'map-value-ind' &&
+                parent.type !== 'flow-collection') {
+                const prev = getPrevProps(parent);
+                const start = getFirstKeyStartProps(prev);
+                fixFlowSeqItems(fc);
+                const sep = fc.end.splice(1, fc.end.length);
+                sep.push(this.sourceToken);
+                const map = {
+                    type: 'block-map',
+                    offset: fc.offset,
+                    indent: fc.indent,
+                    items: [{ start, key: fc, sep }]
+                };
+                this.onKeyLine = true;
+                this.stack[this.stack.length - 1] = map;
+            }
+            else {
+                yield* this.lineEnd(fc);
+            }
+        }
+    }
+    flowScalar(type) {
+        if (this.onNewLine) {
+            let nl = this.source.indexOf('\n') + 1;
+            while (nl !== 0) {
+                this.onNewLine(this.offset + nl);
+                nl = this.source.indexOf('\n', nl) + 1;
+            }
+        }
+        return {
+            type,
+            offset: this.offset,
+            indent: this.indent,
+            source: this.source
+        };
+    }
+    startBlockValue(parent) {
+        switch (this.type) {
+            case 'alias':
+            case 'scalar':
+            case 'single-quoted-scalar':
+            case 'double-quoted-scalar':
+                return this.flowScalar(this.type);
+            case 'block-scalar-header':
+                return {
+                    type: 'block-scalar',
+                    offset: this.offset,
+                    indent: this.indent,
+                    props: [this.sourceToken],
+                    source: ''
+                };
+            case 'flow-map-start':
+            case 'flow-seq-start':
+                return {
+                    type: 'flow-collection',
+                    offset: this.offset,
+                    indent: this.indent,
+                    start: this.sourceToken,
+                    items: [],
+                    end: []
+                };
+            case 'seq-item-ind':
+                return {
+                    type: 'block-seq',
+                    offset: this.offset,
+                    indent: this.indent,
+                    items: [{ start: [this.sourceToken] }]
+                };
+            case 'explicit-key-ind': {
+                this.onKeyLine = true;
+                const prev = getPrevProps(parent);
+                const start = getFirstKeyStartProps(prev);
+                start.push(this.sourceToken);
+                return {
+                    type: 'block-map',
+                    offset: this.offset,
+                    indent: this.indent,
+                    items: [{ start, explicitKey: true }]
+                };
+            }
+            case 'map-value-ind': {
+                this.onKeyLine = true;
+                const prev = getPrevProps(parent);
+                const start = getFirstKeyStartProps(prev);
+                return {
+                    type: 'block-map',
+                    offset: this.offset,
+                    indent: this.indent,
+                    items: [{ start, key: null, sep: [this.sourceToken] }]
+                };
+            }
+        }
+        return null;
+    }
+    atIndentedComment(start, indent) {
+        if (this.type !== 'comment')
+            return false;
+        if (this.indent <= indent)
+            return false;
+        return start.every(st => st.type === 'newline' || st.type === 'space');
+    }
+    *documentEnd(docEnd) {
+        if (this.type !== 'doc-mode') {
+            if (docEnd.end)
+                docEnd.end.push(this.sourceToken);
+            else
+                docEnd.end = [this.sourceToken];
+            if (this.type === 'newline')
+                yield* this.pop();
+        }
+    }
+    *lineEnd(token) {
+        switch (this.type) {
+            case 'comma':
+            case 'doc-start':
+            case 'doc-end':
+            case 'flow-seq-end':
+            case 'flow-map-end':
+            case 'map-value-ind':
+                yield* this.pop();
+                yield* this.step();
+                break;
+            case 'newline':
+                this.onKeyLine = false;
+            // fallthrough
+            case 'space':
+            case 'comment':
+            default:
+                // all other values are errors
+                if (token.end)
+                    token.end.push(this.sourceToken);
+                else
+                    token.end = [this.sourceToken];
+                if (this.type === 'newline')
+                    yield* this.pop();
+        }
+    }
+}
+
+exports.Parser = Parser;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/public-api.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/public-api.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/public-api.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,44 @@
+import { Composer } from './compose/composer';
+import type { Reviver } from './doc/applyReviver';
+import type { Replacer } from './doc/Document';
+import { Document } from './doc/Document';
+import type { Node, ParsedNode } from './nodes/Node';
+import type { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToJSOptions, ToStringOptions } from './options';
+export interface EmptyStream extends Array<Document.Parsed>, ReturnType<Composer['streamInfo']> {
+    empty: true;
+}
+/**
+ * Parse the input as a stream of YAML documents.
+ *
+ * Documents should be separated from each other by `...` or `---` marker lines.
+ *
+ * @returns If an empty `docs` array is returned, it will be of type
+ *   EmptyStream and contain additional stream information. In
+ *   TypeScript, you should use `'empty' in docs` as a type guard for it.
+ */
+export declare function parseAllDocuments<Contents extends Node = ParsedNode, Strict extends boolean = true>(source: string, options?: ParseOptions & DocumentOptions & SchemaOptions): Array<Contents extends ParsedNode ? Document.Parsed<Contents, Strict> : Document<Contents, Strict>> | EmptyStream;
+/** Parse an input string into a single YAML.Document */
+export declare function parseDocument<Contents extends Node = ParsedNode, Strict extends boolean = true>(source: string, options?: ParseOptions & DocumentOptions & SchemaOptions): Contents extends ParsedNode ? Document.Parsed<Contents, Strict> : Document<Contents, Strict>;
+/**
+ * Parse an input string into JavaScript.
+ *
+ * Only supports input consisting of a single YAML document; for multi-document
+ * support you should use `YAML.parseAllDocuments`. May throw on error, and may
+ * log warnings using `console.warn`.
+ *
+ * @param str - A string with YAML formatting.
+ * @param reviver - A reviver function, as in `JSON.parse()`
+ * @returns The value will match the type of the root value of the parsed YAML
+ *   document, so Maps become objects, Sequences arrays, and scalars result in
+ *   nulls, booleans, numbers and strings.
+ */
+export declare function parse(src: string, options?: ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions): any;
+export declare function parse(src: string, reviver: Reviver, options?: ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions): any;
+/**
+ * Stringify a value as a YAML document.
+ *
+ * @param replacer - A replacer array or function, as in `JSON.stringify()`
+ * @returns Will always include `\n` as the last character, as is expected of YAML documents.
+ */
+export declare function stringify(value: any, options?: DocumentOptions & SchemaOptions & ParseOptions & CreateNodeOptions & ToStringOptions): string;
+export declare function stringify(value: any, replacer?: Replacer | null, options?: string | number | (DocumentOptions & SchemaOptions & ParseOptions & CreateNodeOptions & ToStringOptions)): string;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/public-api.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/public-api.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/public-api.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,107 @@
+'use strict';
+
+var composer = require('./compose/composer.js');
+var Document = require('./doc/Document.js');
+var errors = require('./errors.js');
+var log = require('./log.js');
+var identity = require('./nodes/identity.js');
+var lineCounter = require('./parse/line-counter.js');
+var parser = require('./parse/parser.js');
+
+function parseOptions(options) {
+    const prettyErrors = options.prettyErrors !== false;
+    const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;
+    return { lineCounter: lineCounter$1, prettyErrors };
+}
+/**
+ * Parse the input as a stream of YAML documents.
+ *
+ * Documents should be separated from each other by `...` or `---` marker lines.
+ *
+ * @returns If an empty `docs` array is returned, it will be of type
+ *   EmptyStream and contain additional stream information. In
+ *   TypeScript, you should use `'empty' in docs` as a type guard for it.
+ */
+function parseAllDocuments(source, options = {}) {
+    const { lineCounter, prettyErrors } = parseOptions(options);
+    const parser$1 = new parser.Parser(lineCounter?.addNewLine);
+    const composer$1 = new composer.Composer(options);
+    const docs = Array.from(composer$1.compose(parser$1.parse(source)));
+    if (prettyErrors && lineCounter)
+        for (const doc of docs) {
+            doc.errors.forEach(errors.prettifyError(source, lineCounter));
+            doc.warnings.forEach(errors.prettifyError(source, lineCounter));
+        }
+    if (docs.length > 0)
+        return docs;
+    return Object.assign([], { empty: true }, composer$1.streamInfo());
+}
+/** Parse an input string into a single YAML.Document */
+function parseDocument(source, options = {}) {
+    const { lineCounter, prettyErrors } = parseOptions(options);
+    const parser$1 = new parser.Parser(lineCounter?.addNewLine);
+    const composer$1 = new composer.Composer(options);
+    // `doc` is always set by compose.end(true) at the very latest
+    let doc = null;
+    for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {
+        if (!doc)
+            doc = _doc;
+        else if (doc.options.logLevel !== 'silent') {
+            doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));
+            break;
+        }
+    }
+    if (prettyErrors && lineCounter) {
+        doc.errors.forEach(errors.prettifyError(source, lineCounter));
+        doc.warnings.forEach(errors.prettifyError(source, lineCounter));
+    }
+    return doc;
+}
+function parse(src, reviver, options) {
+    let _reviver = undefined;
+    if (typeof reviver === 'function') {
+        _reviver = reviver;
+    }
+    else if (options === undefined && reviver && typeof reviver === 'object') {
+        options = reviver;
+    }
+    const doc = parseDocument(src, options);
+    if (!doc)
+        return null;
+    doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));
+    if (doc.errors.length > 0) {
+        if (doc.options.logLevel !== 'silent')
+            throw doc.errors[0];
+        else
+            doc.errors = [];
+    }
+    return doc.toJS(Object.assign({ reviver: _reviver }, options));
+}
+function stringify(value, replacer, options) {
+    let _replacer = null;
+    if (typeof replacer === 'function' || Array.isArray(replacer)) {
+        _replacer = replacer;
+    }
+    else if (options === undefined && replacer) {
+        options = replacer;
+    }
+    if (typeof options === 'string')
+        options = options.length;
+    if (typeof options === 'number') {
+        const indent = Math.round(options);
+        options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };
+    }
+    if (value === undefined) {
+        const { keepUndefined } = options ?? replacer ?? {};
+        if (!keepUndefined)
+            return undefined;
+    }
+    if (identity.isDocument(value) && !_replacer)
+        return value.toString(options);
+    return new Document.Document(value, _replacer, options).toString(options);
+}
+
+exports.parse = parse;
+exports.parseAllDocuments = parseAllDocuments;
+exports.parseDocument = parseDocument;
+exports.stringify = stringify;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/Schema.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/Schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/Schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+import { MAP, SCALAR, SEQ } from '../nodes/identity';
+import type { Pair } from '../nodes/Pair';
+import type { SchemaOptions, ToStringOptions } from '../options';
+import type { CollectionTag, ScalarTag } from './types';
+export declare class Schema {
+    compat: Array<CollectionTag | ScalarTag> | null;
+    knownTags: Record<string, CollectionTag | ScalarTag>;
+    name: string;
+    sortMapEntries: ((a: Pair, b: Pair) => number) | null;
+    tags: Array<CollectionTag | ScalarTag>;
+    toStringOptions: Readonly<ToStringOptions> | null;
+    readonly [MAP]: CollectionTag;
+    readonly [SCALAR]: ScalarTag;
+    readonly [SEQ]: CollectionTag;
+    constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }: SchemaOptions);
+    clone(): Schema;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/Schema.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/Schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/Schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,39 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+var map = require('./common/map.js');
+var seq = require('./common/seq.js');
+var string = require('./common/string.js');
+var tags = require('./tags.js');
+
+const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
+class Schema {
+    constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {
+        this.compat = Array.isArray(compat)
+            ? tags.getTags(compat, 'compat')
+            : compat
+                ? tags.getTags(null, compat)
+                : null;
+        this.name = (typeof schema === 'string' && schema) || 'core';
+        this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};
+        this.tags = tags.getTags(customTags, this.name, merge);
+        this.toStringOptions = toStringDefaults ?? null;
+        Object.defineProperty(this, identity.MAP, { value: map.map });
+        Object.defineProperty(this, identity.SCALAR, { value: string.string });
+        Object.defineProperty(this, identity.SEQ, { value: seq.seq });
+        // Used by createMap()
+        this.sortMapEntries =
+            typeof sortMapEntries === 'function'
+                ? sortMapEntries
+                : sortMapEntries === true
+                    ? sortMapEntriesByKey
+                    : null;
+    }
+    clone() {
+        const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));
+        copy.tags = this.tags.slice();
+        return copy;
+    }
+}
+
+exports.Schema = Schema;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/map.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/map.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/map.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { CollectionTag } from '../types';
+export declare const map: CollectionTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/map.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/map.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/map.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+'use strict';
+
+var identity = require('../../nodes/identity.js');
+var YAMLMap = require('../../nodes/YAMLMap.js');
+
+const map = {
+    collection: 'map',
+    default: true,
+    nodeClass: YAMLMap.YAMLMap,
+    tag: 'tag:yaml.org,2002:map',
+    resolve(map, onError) {
+        if (!identity.isMap(map))
+            onError('Expected a mapping for this tag');
+        return map;
+    },
+    createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)
+};
+
+exports.map = map;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/null.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/null.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/null.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { ScalarTag } from '../types';
+export declare const nullTag: ScalarTag & {
+    test: RegExp;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/null.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/null.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/null.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+'use strict';
+
+var Scalar = require('../../nodes/Scalar.js');
+
+const nullTag = {
+    identify: value => value == null,
+    createNode: () => new Scalar.Scalar(null),
+    default: true,
+    tag: 'tag:yaml.org,2002:null',
+    test: /^(?:~|[Nn]ull|NULL)?$/,
+    resolve: () => new Scalar.Scalar(null),
+    stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)
+        ? source
+        : ctx.options.nullStr
+};
+
+exports.nullTag = nullTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/seq.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/seq.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/seq.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { CollectionTag } from '../types';
+export declare const seq: CollectionTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/seq.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/seq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/seq.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+'use strict';
+
+var identity = require('../../nodes/identity.js');
+var YAMLSeq = require('../../nodes/YAMLSeq.js');
+
+const seq = {
+    collection: 'seq',
+    default: true,
+    nodeClass: YAMLSeq.YAMLSeq,
+    tag: 'tag:yaml.org,2002:seq',
+    resolve(seq, onError) {
+        if (!identity.isSeq(seq))
+            onError('Expected a sequence for this tag');
+        return seq;
+    },
+    createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)
+};
+
+exports.seq = seq;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/string.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/string.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/string.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { ScalarTag } from '../types';
+export declare const string: ScalarTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/string.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/string.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/common/string.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,16 @@
+'use strict';
+
+var stringifyString = require('../../stringify/stringifyString.js');
+
+const string = {
+    identify: value => typeof value === 'string',
+    default: true,
+    tag: 'tag:yaml.org,2002:str',
+    resolve: str => str,
+    stringify(item, ctx, onComment, onChompKeep) {
+        ctx = Object.assign({ actualString: true }, ctx);
+        return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);
+    }
+};
+
+exports.string = string;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/bool.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/bool.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/bool.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { ScalarTag } from '../types';
+export declare const boolTag: ScalarTag & {
+    test: RegExp;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/bool.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/bool.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/bool.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,21 @@
+'use strict';
+
+var Scalar = require('../../nodes/Scalar.js');
+
+const boolTag = {
+    identify: value => typeof value === 'boolean',
+    default: true,
+    tag: 'tag:yaml.org,2002:bool',
+    test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,
+    resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),
+    stringify({ source, value }, ctx) {
+        if (source && boolTag.test.test(source)) {
+            const sv = source[0] === 't' || source[0] === 'T';
+            if (value === sv)
+                return source;
+        }
+        return value ? ctx.options.trueStr : ctx.options.falseStr;
+    }
+};
+
+exports.boolTag = boolTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/float.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/float.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/float.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { ScalarTag } from '../types';
+export declare const floatNaN: ScalarTag;
+export declare const floatExp: ScalarTag;
+export declare const float: ScalarTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/float.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/float.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/float.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,47 @@
+'use strict';
+
+var Scalar = require('../../nodes/Scalar.js');
+var stringifyNumber = require('../../stringify/stringifyNumber.js');
+
+const floatNaN = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,
+    resolve: str => str.slice(-3).toLowerCase() === 'nan'
+        ? NaN
+        : str[0] === '-'
+            ? Number.NEGATIVE_INFINITY
+            : Number.POSITIVE_INFINITY,
+    stringify: stringifyNumber.stringifyNumber
+};
+const floatExp = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    format: 'EXP',
+    test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,
+    resolve: str => parseFloat(str),
+    stringify(node) {
+        const num = Number(node.value);
+        return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);
+    }
+};
+const float = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,
+    resolve(str) {
+        const node = new Scalar.Scalar(parseFloat(str));
+        const dot = str.indexOf('.');
+        if (dot !== -1 && str[str.length - 1] === '0')
+            node.minFractionDigits = str.length - dot - 1;
+        return node;
+    },
+    stringify: stringifyNumber.stringifyNumber
+};
+
+exports.float = float;
+exports.floatExp = floatExp;
+exports.floatNaN = floatNaN;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/int.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/int.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/int.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { ScalarTag } from '../types';
+export declare const intOct: ScalarTag;
+export declare const int: ScalarTag;
+export declare const intHex: ScalarTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/int.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/int.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/int.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,42 @@
+'use strict';
+
+var stringifyNumber = require('../../stringify/stringifyNumber.js');
+
+const intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);
+const intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));
+function intStringify(node, radix, prefix) {
+    const { value } = node;
+    if (intIdentify(value) && value >= 0)
+        return prefix + value.toString(radix);
+    return stringifyNumber.stringifyNumber(node);
+}
+const intOct = {
+    identify: value => intIdentify(value) && value >= 0,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'OCT',
+    test: /^0o[0-7]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),
+    stringify: node => intStringify(node, 8, '0o')
+};
+const int = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    test: /^[-+]?[0-9]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),
+    stringify: stringifyNumber.stringifyNumber
+};
+const intHex = {
+    identify: value => intIdentify(value) && value >= 0,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'HEX',
+    test: /^0x[0-9a-fA-F]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),
+    stringify: node => intStringify(node, 16, '0x')
+};
+
+exports.int = int;
+exports.intHex = intHex;
+exports.intOct = intOct;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/schema.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export declare const schema: (import('../types').CollectionTag | import('../types').ScalarTag)[];
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/schema.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/core/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,25 @@
+'use strict';
+
+var map = require('../common/map.js');
+var _null = require('../common/null.js');
+var seq = require('../common/seq.js');
+var string = require('../common/string.js');
+var bool = require('./bool.js');
+var float = require('./float.js');
+var int = require('./int.js');
+
+const schema = [
+    map.map,
+    seq.seq,
+    string.string,
+    _null.nullTag,
+    bool.boolTag,
+    int.intOct,
+    int.int,
+    int.intHex,
+    float.floatNaN,
+    float.floatExp,
+    float.float
+];
+
+exports.schema = schema;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/json-schema.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/json-schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/json-schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,69 @@
+type JsonSchema = boolean | ArraySchema | ObjectSchema | NumberSchema | StringSchema;
+type JsonType = 'array' | 'object' | 'string' | 'number' | 'integer' | 'boolean' | 'null';
+interface CommonSchema {
+    type?: JsonType | JsonType[];
+    const?: unknown;
+    enum?: unknown[];
+    format?: string;
+    allOf?: JsonSchema[];
+    anyOf?: JsonSchema[];
+    oneOf?: JsonSchema[];
+    not?: JsonSchema;
+    if?: JsonSchema;
+    then?: JsonSchema;
+    else?: JsonSchema;
+    $id?: string;
+    $defs?: Record<string, JsonSchema>;
+    $anchor?: string;
+    $dynamicAnchor?: string;
+    $ref?: string;
+    $dynamicRef?: string;
+    $schema?: string;
+    $vocabulary?: Record<string, boolean>;
+    $comment?: string;
+    default?: unknown;
+    deprecated?: boolean;
+    readOnly?: boolean;
+    writeOnly?: boolean;
+    title?: string;
+    description?: string;
+    examples?: unknown[];
+}
+interface ArraySchema extends CommonSchema {
+    prefixItems?: JsonSchema[];
+    items?: JsonSchema;
+    contains?: JsonSchema;
+    unevaluatedItems?: JsonSchema;
+    maxItems?: number;
+    minItems?: number;
+    uniqueItems?: boolean;
+    maxContains?: number;
+    minContains?: number;
+}
+interface ObjectSchema extends CommonSchema {
+    properties?: Record<string, JsonSchema>;
+    patternProperties?: Record<string, JsonSchema>;
+    additionalProperties?: JsonSchema;
+    propertyNames?: JsonSchema;
+    unevaluatedProperties?: JsonSchema;
+    maxProperties?: number;
+    minProperties?: number;
+    required?: string[];
+    dependentRequired?: Record<string, string[]>;
+    dependentSchemas?: Record<string, JsonSchema>;
+}
+interface StringSchema extends CommonSchema {
+    maxLength?: number;
+    minLength?: number;
+    patter?: string;
+    contentEncoding?: string;
+    contentMediaType?: string;
+    contentSchema?: JsonSchema;
+}
+interface NumberSchema extends CommonSchema {
+    multipleOf?: number;
+    maximum?: number;
+    exclusiveMaximum?: number;
+    minimum?: number;
+    exclusiveMinimum?: number;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/json/schema.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/json/schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/json/schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { CollectionTag, ScalarTag } from '../types';
+export declare const schema: (CollectionTag | ScalarTag)[];
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/json/schema.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/json/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/json/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,64 @@
+'use strict';
+
+var Scalar = require('../../nodes/Scalar.js');
+var map = require('../common/map.js');
+var seq = require('../common/seq.js');
+
+function intIdentify(value) {
+    return typeof value === 'bigint' || Number.isInteger(value);
+}
+const stringifyJSON = ({ value }) => JSON.stringify(value);
+const jsonScalars = [
+    {
+        identify: value => typeof value === 'string',
+        default: true,
+        tag: 'tag:yaml.org,2002:str',
+        resolve: str => str,
+        stringify: stringifyJSON
+    },
+    {
+        identify: value => value == null,
+        createNode: () => new Scalar.Scalar(null),
+        default: true,
+        tag: 'tag:yaml.org,2002:null',
+        test: /^null$/,
+        resolve: () => null,
+        stringify: stringifyJSON
+    },
+    {
+        identify: value => typeof value === 'boolean',
+        default: true,
+        tag: 'tag:yaml.org,2002:bool',
+        test: /^true$|^false$/,
+        resolve: str => str === 'true',
+        stringify: stringifyJSON
+    },
+    {
+        identify: intIdentify,
+        default: true,
+        tag: 'tag:yaml.org,2002:int',
+        test: /^-?(?:0|[1-9][0-9]*)$/,
+        resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),
+        stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)
+    },
+    {
+        identify: value => typeof value === 'number',
+        default: true,
+        tag: 'tag:yaml.org,2002:float',
+        test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,
+        resolve: str => parseFloat(str),
+        stringify: stringifyJSON
+    }
+];
+const jsonError = {
+    default: true,
+    tag: '',
+    test: /^/,
+    resolve(str, onError) {
+        onError(`Unresolved plain scalar ${JSON.stringify(str)}`);
+        return str;
+    }
+};
+const schema = [map.map, seq.seq].concat(jsonScalars, jsonError);
+
+exports.schema = schema;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/tags.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/tags.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/tags.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,48 @@
+import type { SchemaOptions } from '../options';
+import type { CollectionTag, ScalarTag } from './types';
+declare const tagsByName: {
+    binary: ScalarTag;
+    bool: ScalarTag & {
+        test: RegExp;
+    };
+    float: ScalarTag;
+    floatExp: ScalarTag;
+    floatNaN: ScalarTag;
+    floatTime: ScalarTag;
+    int: ScalarTag;
+    intHex: ScalarTag;
+    intOct: ScalarTag;
+    intTime: ScalarTag;
+    map: CollectionTag;
+    merge: ScalarTag & {
+        identify(value: unknown): boolean;
+        test: RegExp;
+    };
+    null: ScalarTag & {
+        test: RegExp;
+    };
+    omap: CollectionTag;
+    pairs: CollectionTag;
+    seq: CollectionTag;
+    set: CollectionTag;
+    timestamp: ScalarTag & {
+        test: RegExp;
+    };
+};
+export type TagId = keyof typeof tagsByName;
+export type Tags = Array<ScalarTag | CollectionTag | TagId>;
+export declare const coreKnownTags: {
+    'tag:yaml.org,2002:binary': ScalarTag;
+    'tag:yaml.org,2002:merge': ScalarTag & {
+        identify(value: unknown): boolean;
+        test: RegExp;
+    };
+    'tag:yaml.org,2002:omap': CollectionTag;
+    'tag:yaml.org,2002:pairs': CollectionTag;
+    'tag:yaml.org,2002:set': CollectionTag;
+    'tag:yaml.org,2002:timestamp': ScalarTag & {
+        test: RegExp;
+    };
+};
+export declare function getTags(customTags: SchemaOptions['customTags'] | undefined, schemaName: string, addMergeTag?: boolean): (CollectionTag | ScalarTag)[];
+export {};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/tags.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/tags.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/tags.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,99 @@
+'use strict';
+
+var map = require('./common/map.js');
+var _null = require('./common/null.js');
+var seq = require('./common/seq.js');
+var string = require('./common/string.js');
+var bool = require('./core/bool.js');
+var float = require('./core/float.js');
+var int = require('./core/int.js');
+var schema = require('./core/schema.js');
+var schema$1 = require('./json/schema.js');
+var binary = require('./yaml-1.1/binary.js');
+var merge = require('./yaml-1.1/merge.js');
+var omap = require('./yaml-1.1/omap.js');
+var pairs = require('./yaml-1.1/pairs.js');
+var schema$2 = require('./yaml-1.1/schema.js');
+var set = require('./yaml-1.1/set.js');
+var timestamp = require('./yaml-1.1/timestamp.js');
+
+const schemas = new Map([
+    ['core', schema.schema],
+    ['failsafe', [map.map, seq.seq, string.string]],
+    ['json', schema$1.schema],
+    ['yaml11', schema$2.schema],
+    ['yaml-1.1', schema$2.schema]
+]);
+const tagsByName = {
+    binary: binary.binary,
+    bool: bool.boolTag,
+    float: float.float,
+    floatExp: float.floatExp,
+    floatNaN: float.floatNaN,
+    floatTime: timestamp.floatTime,
+    int: int.int,
+    intHex: int.intHex,
+    intOct: int.intOct,
+    intTime: timestamp.intTime,
+    map: map.map,
+    merge: merge.merge,
+    null: _null.nullTag,
+    omap: omap.omap,
+    pairs: pairs.pairs,
+    seq: seq.seq,
+    set: set.set,
+    timestamp: timestamp.timestamp
+};
+const coreKnownTags = {
+    'tag:yaml.org,2002:binary': binary.binary,
+    'tag:yaml.org,2002:merge': merge.merge,
+    'tag:yaml.org,2002:omap': omap.omap,
+    'tag:yaml.org,2002:pairs': pairs.pairs,
+    'tag:yaml.org,2002:set': set.set,
+    'tag:yaml.org,2002:timestamp': timestamp.timestamp
+};
+function getTags(customTags, schemaName, addMergeTag) {
+    const schemaTags = schemas.get(schemaName);
+    if (schemaTags && !customTags) {
+        return addMergeTag && !schemaTags.includes(merge.merge)
+            ? schemaTags.concat(merge.merge)
+            : schemaTags.slice();
+    }
+    let tags = schemaTags;
+    if (!tags) {
+        if (Array.isArray(customTags))
+            tags = [];
+        else {
+            const keys = Array.from(schemas.keys())
+                .filter(key => key !== 'yaml11')
+                .map(key => JSON.stringify(key))
+                .join(', ');
+            throw new Error(`Unknown schema "${schemaName}"; use one of ${keys} or define customTags array`);
+        }
+    }
+    if (Array.isArray(customTags)) {
+        for (const tag of customTags)
+            tags = tags.concat(tag);
+    }
+    else if (typeof customTags === 'function') {
+        tags = customTags(tags.slice());
+    }
+    if (addMergeTag)
+        tags = tags.concat(merge.merge);
+    return tags.reduce((tags, tag) => {
+        const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;
+        if (!tagObj) {
+            const tagName = JSON.stringify(tag);
+            const keys = Object.keys(tagsByName)
+                .map(key => JSON.stringify(key))
+                .join(', ');
+            throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);
+        }
+        if (!tags.includes(tagObj))
+            tags.push(tagObj);
+        return tags;
+    }, []);
+}
+
+exports.coreKnownTags = coreKnownTags;
+exports.getTags = getTags;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/types.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/types.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/types.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,92 @@
+import type { CreateNodeContext } from '../doc/createNode';
+import type { Node } from '../nodes/Node';
+import type { Scalar } from '../nodes/Scalar';
+import type { YAMLMap } from '../nodes/YAMLMap';
+import type { YAMLSeq } from '../nodes/YAMLSeq';
+import type { ParseOptions } from '../options';
+import type { StringifyContext } from '../stringify/stringify';
+import type { Schema } from './Schema';
+interface TagBase {
+    /**
+     * An optional factory function, used e.g. by collections when wrapping JS objects as AST nodes.
+     */
+    createNode?: (schema: Schema, value: unknown, ctx: CreateNodeContext) => Node;
+    /**
+     * If `true`, allows for values to be stringified without
+     * an explicit tag together with `test`.
+     * If `'key'`, this only applies if the value is used as a mapping key.
+     * For most cases, it's unlikely that you'll actually want to use this,
+     * even if you first think you do.
+     */
+    default?: boolean | 'key';
+    /**
+     * If a tag has multiple forms that should be parsed and/or stringified
+     * differently, use `format` to identify them.
+     */
+    format?: string;
+    /**
+     * Used by `YAML.createNode` to detect your data type, e.g. using `typeof` or
+     * `instanceof`.
+     */
+    identify?: (value: unknown) => boolean;
+    /**
+     * The identifier for your data type, with which its stringified form will be
+     * prefixed. Should either be a !-prefixed local `!tag`, or a fully qualified
+     * `tag:domain,date:foo`.
+     */
+    tag: string;
+}
+export interface ScalarTag extends TagBase {
+    collection?: never;
+    nodeClass?: never;
+    /**
+     * Turns a value into an AST node.
+     * If returning a non-`Node` value, the output will be wrapped as a `Scalar`.
+     */
+    resolve(value: string, onError: (message: string) => void, options: ParseOptions): unknown;
+    /**
+     * Optional function stringifying a Scalar node. If your data includes a
+     * suitable `.toString()` method, you can probably leave this undefined and
+     * use the default stringifier.
+     *
+     * @param item The node being stringified.
+     * @param ctx Contains the stringifying context variables.
+     * @param onComment Callback to signal that the stringifier includes the
+     *   item's comment in its output.
+     * @param onChompKeep Callback to signal that the output uses a block scalar
+     *   type with the `+` chomping indicator.
+     */
+    stringify?: (item: Scalar, ctx: StringifyContext, onComment?: () => void, onChompKeep?: () => void) => string;
+    /**
+     * Together with `default` allows for values to be stringified without an
+     * explicit tag and detected using a regular expression. For most cases, it's
+     * unlikely that you'll actually want to use these, even if you first think
+     * you do.
+     */
+    test?: RegExp;
+}
+export interface CollectionTag extends TagBase {
+    stringify?: never;
+    test?: never;
+    /** The source collection type supported by this tag. */
+    collection: 'map' | 'seq';
+    /**
+     * The `Node` child class that implements this tag.
+     * If set, used to select this tag when stringifying.
+     *
+     * If the class provides a static `from` method, then that
+     * will be used if the tag object doesn't have a `createNode` method.
+     */
+    nodeClass?: {
+        new (schema?: Schema): Node;
+        from?: (schema: Schema, obj: unknown, ctx: CreateNodeContext) => Node;
+    };
+    /**
+     * Turns a value into an AST node.
+     * If returning a non-`Node` value, the output will be wrapped as a `Scalar`.
+     *
+     * Note: this is required if nodeClass is not provided.
+     */
+    resolve?: (value: YAMLMap.Parsed | YAMLSeq.Parsed, onError: (message: string) => void, options: ParseOptions) => unknown;
+}
+export {};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { ScalarTag } from '../types';
+export declare const binary: ScalarTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/binary.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/binary.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/binary.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,70 @@
+'use strict';
+
+var node_buffer = require('buffer');
+var Scalar = require('../../nodes/Scalar.js');
+var stringifyString = require('../../stringify/stringifyString.js');
+
+const binary = {
+    identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array
+    default: false,
+    tag: 'tag:yaml.org,2002:binary',
+    /**
+     * Returns a Buffer in node and an Uint8Array in browsers
+     *
+     * To use the resulting buffer as an image, you'll want to do something like:
+     *
+     *   const blob = new Blob([buffer], { type: 'image/jpeg' })
+     *   document.querySelector('#photo').src = URL.createObjectURL(blob)
+     */
+    resolve(src, onError) {
+        if (typeof node_buffer.Buffer === 'function') {
+            return node_buffer.Buffer.from(src, 'base64');
+        }
+        else if (typeof atob === 'function') {
+            // On IE 11, atob() can't handle newlines
+            const str = atob(src.replace(/[\n\r]/g, ''));
+            const buffer = new Uint8Array(str.length);
+            for (let i = 0; i < str.length; ++i)
+                buffer[i] = str.charCodeAt(i);
+            return buffer;
+        }
+        else {
+            onError('This environment does not support reading binary tags; either Buffer or atob is required');
+            return src;
+        }
+    },
+    stringify({ comment, type, value }, ctx, onComment, onChompKeep) {
+        if (!value)
+            return '';
+        const buf = value; // checked earlier by binary.identify()
+        let str;
+        if (typeof node_buffer.Buffer === 'function') {
+            str =
+                buf instanceof node_buffer.Buffer
+                    ? buf.toString('base64')
+                    : node_buffer.Buffer.from(buf.buffer).toString('base64');
+        }
+        else if (typeof btoa === 'function') {
+            let s = '';
+            for (let i = 0; i < buf.length; ++i)
+                s += String.fromCharCode(buf[i]);
+            str = btoa(s);
+        }
+        else {
+            throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');
+        }
+        type ?? (type = Scalar.Scalar.BLOCK_LITERAL);
+        if (type !== Scalar.Scalar.QUOTE_DOUBLE) {
+            const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);
+            const n = Math.ceil(str.length / lineWidth);
+            const lines = new Array(n);
+            for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {
+                lines[i] = str.substr(o, lineWidth);
+            }
+            str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\n' : ' ');
+        }
+        return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);
+    }
+};
+
+exports.binary = binary;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,7 @@
+import type { ScalarTag } from '../types';
+export declare const trueTag: ScalarTag & {
+    test: RegExp;
+};
+export declare const falseTag: ScalarTag & {
+    test: RegExp;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/bool.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/bool.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/bool.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,29 @@
+'use strict';
+
+var Scalar = require('../../nodes/Scalar.js');
+
+function boolStringify({ value, source }, ctx) {
+    const boolObj = value ? trueTag : falseTag;
+    if (source && boolObj.test.test(source))
+        return source;
+    return value ? ctx.options.trueStr : ctx.options.falseStr;
+}
+const trueTag = {
+    identify: value => value === true,
+    default: true,
+    tag: 'tag:yaml.org,2002:bool',
+    test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,
+    resolve: () => new Scalar.Scalar(true),
+    stringify: boolStringify
+};
+const falseTag = {
+    identify: value => value === false,
+    default: true,
+    tag: 'tag:yaml.org,2002:bool',
+    test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,
+    resolve: () => new Scalar.Scalar(false),
+    stringify: boolStringify
+};
+
+exports.falseTag = falseTag;
+exports.trueTag = trueTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { ScalarTag } from '../types';
+export declare const floatNaN: ScalarTag;
+export declare const floatExp: ScalarTag;
+export declare const float: ScalarTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/float.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/float.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/float.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,50 @@
+'use strict';
+
+var Scalar = require('../../nodes/Scalar.js');
+var stringifyNumber = require('../../stringify/stringifyNumber.js');
+
+const floatNaN = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,
+    resolve: (str) => str.slice(-3).toLowerCase() === 'nan'
+        ? NaN
+        : str[0] === '-'
+            ? Number.NEGATIVE_INFINITY
+            : Number.POSITIVE_INFINITY,
+    stringify: stringifyNumber.stringifyNumber
+};
+const floatExp = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    format: 'EXP',
+    test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,
+    resolve: (str) => parseFloat(str.replace(/_/g, '')),
+    stringify(node) {
+        const num = Number(node.value);
+        return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);
+    }
+};
+const float = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,
+    resolve(str) {
+        const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));
+        const dot = str.indexOf('.');
+        if (dot !== -1) {
+            const f = str.substring(dot + 1).replace(/_/g, '');
+            if (f[f.length - 1] === '0')
+                node.minFractionDigits = f.length;
+        }
+        return node;
+    },
+    stringify: stringifyNumber.stringifyNumber
+};
+
+exports.float = float;
+exports.floatExp = floatExp;
+exports.floatNaN = floatNaN;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,5 @@
+import type { ScalarTag } from '../types';
+export declare const intBin: ScalarTag;
+export declare const intOct: ScalarTag;
+export declare const int: ScalarTag;
+export declare const intHex: ScalarTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/int.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/int.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/int.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,76 @@
+'use strict';
+
+var stringifyNumber = require('../../stringify/stringifyNumber.js');
+
+const intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);
+function intResolve(str, offset, radix, { intAsBigInt }) {
+    const sign = str[0];
+    if (sign === '-' || sign === '+')
+        offset += 1;
+    str = str.substring(offset).replace(/_/g, '');
+    if (intAsBigInt) {
+        switch (radix) {
+            case 2:
+                str = `0b${str}`;
+                break;
+            case 8:
+                str = `0o${str}`;
+                break;
+            case 16:
+                str = `0x${str}`;
+                break;
+        }
+        const n = BigInt(str);
+        return sign === '-' ? BigInt(-1) * n : n;
+    }
+    const n = parseInt(str, radix);
+    return sign === '-' ? -1 * n : n;
+}
+function intStringify(node, radix, prefix) {
+    const { value } = node;
+    if (intIdentify(value)) {
+        const str = value.toString(radix);
+        return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;
+    }
+    return stringifyNumber.stringifyNumber(node);
+}
+const intBin = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'BIN',
+    test: /^[-+]?0b[0-1_]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),
+    stringify: node => intStringify(node, 2, '0b')
+};
+const intOct = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'OCT',
+    test: /^[-+]?0[0-7_]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),
+    stringify: node => intStringify(node, 8, '0')
+};
+const int = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    test: /^[-+]?[0-9][0-9_]*$/,
+    resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),
+    stringify: stringifyNumber.stringifyNumber
+};
+const intHex = {
+    identify: intIdentify,
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'HEX',
+    test: /^[-+]?0x[0-9a-fA-F_]+$/,
+    resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),
+    stringify: node => intStringify(node, 16, '0x')
+};
+
+exports.int = int;
+exports.intBin = intBin;
+exports.intHex = intHex;
+exports.intOct = intOct;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,9 @@
+import type { ToJSContext } from '../../nodes/toJS';
+import type { MapLike } from '../../nodes/YAMLMap';
+import type { ScalarTag } from '../types';
+export declare const merge: ScalarTag & {
+    identify(value: unknown): boolean;
+    test: RegExp;
+};
+export declare const isMergeKey: (ctx: ToJSContext | undefined, key: unknown) => boolean | undefined;
+export declare function addMergeToJSMap(ctx: ToJSContext | undefined, map: MapLike, value: unknown): void;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/merge.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/merge.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/merge.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,71 @@
+'use strict';
+
+var identity = require('../../nodes/identity.js');
+var Scalar = require('../../nodes/Scalar.js');
+
+// If the value associated with a merge key is a single mapping node, each of
+// its key/value pairs is inserted into the current mapping, unless the key
+// already exists in it. If the value associated with the merge key is a
+// sequence, then this sequence is expected to contain mapping nodes and each
+// of these nodes is merged in turn according to its order in the sequence.
+// Keys in mapping nodes earlier in the sequence override keys specified in
+// later mapping nodes. -- http://yaml.org/type/merge.html
+const MERGE_KEY = '<<';
+const merge = {
+    identify: value => value === MERGE_KEY ||
+        (typeof value === 'symbol' && value.description === MERGE_KEY),
+    default: 'key',
+    tag: 'tag:yaml.org,2002:merge',
+    test: /^<<$/,
+    resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {
+        addToJSMap: addMergeToJSMap
+    }),
+    stringify: () => MERGE_KEY
+};
+const isMergeKey = (ctx, key) => (merge.identify(key) ||
+    (identity.isScalar(key) &&
+        (!key.type || key.type === Scalar.Scalar.PLAIN) &&
+        merge.identify(key.value))) &&
+    ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);
+function addMergeToJSMap(ctx, map, value) {
+    const source = resolveAliasValue(ctx, value);
+    if (identity.isSeq(source))
+        for (const it of source.items)
+            mergeValue(ctx, map, it);
+    else if (Array.isArray(source))
+        for (const it of source)
+            mergeValue(ctx, map, it);
+    else
+        mergeValue(ctx, map, source);
+}
+function mergeValue(ctx, map, value) {
+    const source = resolveAliasValue(ctx, value);
+    if (!identity.isMap(source))
+        throw new Error('Merge sources must be maps or map aliases');
+    const srcMap = source.toJSON(null, ctx, Map);
+    for (const [key, value] of srcMap) {
+        if (map instanceof Map) {
+            if (!map.has(key))
+                map.set(key, value);
+        }
+        else if (map instanceof Set) {
+            map.add(key);
+        }
+        else if (!Object.prototype.hasOwnProperty.call(map, key)) {
+            Object.defineProperty(map, key, {
+                value,
+                writable: true,
+                enumerable: true,
+                configurable: true
+            });
+        }
+    }
+    return map;
+}
+function resolveAliasValue(ctx, value) {
+    return ctx && identity.isAlias(value) ? value.resolve(ctx.doc, ctx) : value;
+}
+
+exports.addMergeToJSMap = addMergeToJSMap;
+exports.isMergeKey = isMergeKey;
+exports.merge = merge;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,22 @@
+import type { ToJSContext } from '../../nodes/toJS';
+import { YAMLMap } from '../../nodes/YAMLMap';
+import { YAMLSeq } from '../../nodes/YAMLSeq';
+import type { CreateNodeContext } from '../../util';
+import type { Schema } from '../Schema';
+import type { CollectionTag } from '../types';
+export declare class YAMLOMap extends YAMLSeq {
+    static tag: string;
+    constructor();
+    add: typeof YAMLMap.prototype.add;
+    delete: typeof YAMLMap.prototype.delete;
+    get: typeof YAMLMap.prototype.get;
+    has: typeof YAMLMap.prototype.has;
+    set: typeof YAMLMap.prototype.set;
+    /**
+     * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,
+     * but TypeScript won't allow widening the signature of a child method.
+     */
+    toJSON(_?: unknown, ctx?: ToJSContext): unknown[];
+    static from(schema: Schema, iterable: unknown, ctx: CreateNodeContext): YAMLOMap;
+}
+export declare const omap: CollectionTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/omap.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/omap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/omap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,77 @@
+'use strict';
+
+var identity = require('../../nodes/identity.js');
+var toJS = require('../../nodes/toJS.js');
+var YAMLMap = require('../../nodes/YAMLMap.js');
+var YAMLSeq = require('../../nodes/YAMLSeq.js');
+var pairs = require('./pairs.js');
+
+class YAMLOMap extends YAMLSeq.YAMLSeq {
+    constructor() {
+        super();
+        this.add = YAMLMap.YAMLMap.prototype.add.bind(this);
+        this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);
+        this.get = YAMLMap.YAMLMap.prototype.get.bind(this);
+        this.has = YAMLMap.YAMLMap.prototype.has.bind(this);
+        this.set = YAMLMap.YAMLMap.prototype.set.bind(this);
+        this.tag = YAMLOMap.tag;
+    }
+    /**
+     * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,
+     * but TypeScript won't allow widening the signature of a child method.
+     */
+    toJSON(_, ctx) {
+        if (!ctx)
+            return super.toJSON(_);
+        const map = new Map();
+        if (ctx?.onCreate)
+            ctx.onCreate(map);
+        for (const pair of this.items) {
+            let key, value;
+            if (identity.isPair(pair)) {
+                key = toJS.toJS(pair.key, '', ctx);
+                value = toJS.toJS(pair.value, key, ctx);
+            }
+            else {
+                key = toJS.toJS(pair, '', ctx);
+            }
+            if (map.has(key))
+                throw new Error('Ordered maps must not include duplicate keys');
+            map.set(key, value);
+        }
+        return map;
+    }
+    static from(schema, iterable, ctx) {
+        const pairs$1 = pairs.createPairs(schema, iterable, ctx);
+        const omap = new this();
+        omap.items = pairs$1.items;
+        return omap;
+    }
+}
+YAMLOMap.tag = 'tag:yaml.org,2002:omap';
+const omap = {
+    collection: 'seq',
+    identify: value => value instanceof Map,
+    nodeClass: YAMLOMap,
+    default: false,
+    tag: 'tag:yaml.org,2002:omap',
+    resolve(seq, onError) {
+        const pairs$1 = pairs.resolvePairs(seq, onError);
+        const seenKeys = [];
+        for (const { key } of pairs$1.items) {
+            if (identity.isScalar(key)) {
+                if (seenKeys.includes(key.value)) {
+                    onError(`Ordered maps must not include duplicate keys: ${key.value}`);
+                }
+                else {
+                    seenKeys.push(key.value);
+                }
+            }
+        }
+        return Object.assign(new YAMLOMap(), pairs$1);
+    },
+    createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)
+};
+
+exports.YAMLOMap = YAMLOMap;
+exports.omap = omap;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,10 @@
+import type { CreateNodeContext } from '../../doc/createNode';
+import type { ParsedNode } from '../../nodes/Node';
+import { Pair } from '../../nodes/Pair';
+import type { YAMLMap } from '../../nodes/YAMLMap';
+import { YAMLSeq } from '../../nodes/YAMLSeq';
+import type { Schema } from '../../schema/Schema';
+import type { CollectionTag } from '../types';
+export declare function resolvePairs(seq: YAMLSeq.Parsed<ParsedNode | Pair<ParsedNode, ParsedNode | null>> | YAMLMap.Parsed, onError: (message: string) => void): YAMLSeq.Parsed<Pair<ParsedNode, ParsedNode | null>>;
+export declare function createPairs(schema: Schema, iterable: unknown, ctx: CreateNodeContext): YAMLSeq<unknown>;
+export declare const pairs: CollectionTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/pairs.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/pairs.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,82 @@
+'use strict';
+
+var identity = require('../../nodes/identity.js');
+var Pair = require('../../nodes/Pair.js');
+var Scalar = require('../../nodes/Scalar.js');
+var YAMLSeq = require('../../nodes/YAMLSeq.js');
+
+function resolvePairs(seq, onError) {
+    if (identity.isSeq(seq)) {
+        for (let i = 0; i < seq.items.length; ++i) {
+            let item = seq.items[i];
+            if (identity.isPair(item))
+                continue;
+            else if (identity.isMap(item)) {
+                if (item.items.length > 1)
+                    onError('Each pair must have its own sequence indicator');
+                const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));
+                if (item.commentBefore)
+                    pair.key.commentBefore = pair.key.commentBefore
+                        ? `${item.commentBefore}\n${pair.key.commentBefore}`
+                        : item.commentBefore;
+                if (item.comment) {
+                    const cn = pair.value ?? pair.key;
+                    cn.comment = cn.comment
+                        ? `${item.comment}\n${cn.comment}`
+                        : item.comment;
+                }
+                item = pair;
+            }
+            seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);
+        }
+    }
+    else
+        onError('Expected a sequence for this tag');
+    return seq;
+}
+function createPairs(schema, iterable, ctx) {
+    const { replacer } = ctx;
+    const pairs = new YAMLSeq.YAMLSeq(schema);
+    pairs.tag = 'tag:yaml.org,2002:pairs';
+    let i = 0;
+    if (iterable && Symbol.iterator in Object(iterable))
+        for (let it of iterable) {
+            if (typeof replacer === 'function')
+                it = replacer.call(iterable, String(i++), it);
+            let key, value;
+            if (Array.isArray(it)) {
+                if (it.length === 2) {
+                    key = it[0];
+                    value = it[1];
+                }
+                else
+                    throw new TypeError(`Expected [key, value] tuple: ${it}`);
+            }
+            else if (it && it instanceof Object) {
+                const keys = Object.keys(it);
+                if (keys.length === 1) {
+                    key = keys[0];
+                    value = it[key];
+                }
+                else {
+                    throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);
+                }
+            }
+            else {
+                key = it;
+            }
+            pairs.items.push(Pair.createPair(key, value, ctx));
+        }
+    return pairs;
+}
+const pairs = {
+    collection: 'seq',
+    default: false,
+    tag: 'tag:yaml.org,2002:pairs',
+    resolve: resolvePairs,
+    createNode: createPairs
+};
+
+exports.createPairs = createPairs;
+exports.pairs = pairs;
+exports.resolvePairs = resolvePairs;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export declare const schema: (import('../types').CollectionTag | import('../types').ScalarTag)[];
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/schema.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/schema.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,41 @@
+'use strict';
+
+var map = require('../common/map.js');
+var _null = require('../common/null.js');
+var seq = require('../common/seq.js');
+var string = require('../common/string.js');
+var binary = require('./binary.js');
+var bool = require('./bool.js');
+var float = require('./float.js');
+var int = require('./int.js');
+var merge = require('./merge.js');
+var omap = require('./omap.js');
+var pairs = require('./pairs.js');
+var set = require('./set.js');
+var timestamp = require('./timestamp.js');
+
+const schema = [
+    map.map,
+    seq.seq,
+    string.string,
+    _null.nullTag,
+    bool.trueTag,
+    bool.falseTag,
+    int.intBin,
+    int.intOct,
+    int.int,
+    int.intHex,
+    float.floatNaN,
+    float.floatExp,
+    float.float,
+    binary.binary,
+    merge.merge,
+    omap.omap,
+    pairs.pairs,
+    set.set,
+    timestamp.intTime,
+    timestamp.floatTime,
+    timestamp.timestamp
+];
+
+exports.schema = schema;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,28 @@
+import { Pair } from '../../nodes/Pair';
+import type { Scalar } from '../../nodes/Scalar';
+import type { ToJSContext } from '../../nodes/toJS';
+import { YAMLMap } from '../../nodes/YAMLMap';
+import type { Schema } from '../../schema/Schema';
+import type { StringifyContext } from '../../stringify/stringify';
+import type { CreateNodeContext } from '../../util';
+import type { CollectionTag } from '../types';
+export declare class YAMLSet<T = unknown> extends YAMLMap<T, Scalar<null> | null> {
+    static tag: string;
+    constructor(schema?: Schema);
+    add(key: T | Pair<T, Scalar<null> | null> | {
+        key: T;
+        value: Scalar<null> | null;
+    }): void;
+    /**
+     * If `keepPair` is `true`, returns the Pair matching `key`.
+     * Otherwise, returns the value of that Pair's key.
+     */
+    get(key: unknown, keepPair?: boolean): any;
+    set(key: T, value: boolean): void;
+    /** @deprecated Will throw; `value` must be boolean */
+    set(key: T, value: null): void;
+    toJSON(_?: unknown, ctx?: ToJSContext): any;
+    toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
+    static from(schema: Schema, iterable: unknown, ctx: CreateNodeContext): YAMLSet;
+}
+export declare const set: CollectionTag;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/set.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/set.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/set.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,96 @@
+'use strict';
+
+var identity = require('../../nodes/identity.js');
+var Pair = require('../../nodes/Pair.js');
+var YAMLMap = require('../../nodes/YAMLMap.js');
+
+class YAMLSet extends YAMLMap.YAMLMap {
+    constructor(schema) {
+        super(schema);
+        this.tag = YAMLSet.tag;
+    }
+    add(key) {
+        let pair;
+        if (identity.isPair(key))
+            pair = key;
+        else if (key &&
+            typeof key === 'object' &&
+            'key' in key &&
+            'value' in key &&
+            key.value === null)
+            pair = new Pair.Pair(key.key, null);
+        else
+            pair = new Pair.Pair(key, null);
+        const prev = YAMLMap.findPair(this.items, pair.key);
+        if (!prev)
+            this.items.push(pair);
+    }
+    /**
+     * If `keepPair` is `true`, returns the Pair matching `key`.
+     * Otherwise, returns the value of that Pair's key.
+     */
+    get(key, keepPair) {
+        const pair = YAMLMap.findPair(this.items, key);
+        return !keepPair && identity.isPair(pair)
+            ? identity.isScalar(pair.key)
+                ? pair.key.value
+                : pair.key
+            : pair;
+    }
+    set(key, value) {
+        if (typeof value !== 'boolean')
+            throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);
+        const prev = YAMLMap.findPair(this.items, key);
+        if (prev && !value) {
+            this.items.splice(this.items.indexOf(prev), 1);
+        }
+        else if (!prev && value) {
+            this.items.push(new Pair.Pair(key));
+        }
+    }
+    toJSON(_, ctx) {
+        return super.toJSON(_, ctx, Set);
+    }
+    toString(ctx, onComment, onChompKeep) {
+        if (!ctx)
+            return JSON.stringify(this);
+        if (this.hasAllNullValues(true))
+            return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);
+        else
+            throw new Error('Set items must all have null values');
+    }
+    static from(schema, iterable, ctx) {
+        const { replacer } = ctx;
+        const set = new this(schema);
+        if (iterable && Symbol.iterator in Object(iterable))
+            for (let value of iterable) {
+                if (typeof replacer === 'function')
+                    value = replacer.call(iterable, value, value);
+                set.items.push(Pair.createPair(value, null, ctx));
+            }
+        return set;
+    }
+}
+YAMLSet.tag = 'tag:yaml.org,2002:set';
+const set = {
+    collection: 'map',
+    identify: value => value instanceof Set,
+    nodeClass: YAMLSet,
+    default: false,
+    tag: 'tag:yaml.org,2002:set',
+    createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),
+    resolve(map, onError) {
+        if (identity.isMap(map)) {
+            if (map.hasAllNullValues(true))
+                return Object.assign(new YAMLSet(), map);
+            else
+                onError('Set items must all have null values');
+        }
+        else
+            onError('Expected a mapping for this tag');
+        return map;
+    }
+};
+
+exports.YAMLSet = YAMLSet;
+exports.set = set;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,6 @@
+import type { ScalarTag } from '../types';
+export declare const intTime: ScalarTag;
+export declare const floatTime: ScalarTag;
+export declare const timestamp: ScalarTag & {
+    test: RegExp;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,105 @@
+'use strict';
+
+var stringifyNumber = require('../../stringify/stringifyNumber.js');
+
+/** Internal types handle bigint as number, because TS can't figure it out. */
+function parseSexagesimal(str, asBigInt) {
+    const sign = str[0];
+    const parts = sign === '-' || sign === '+' ? str.substring(1) : str;
+    const num = (n) => asBigInt ? BigInt(n) : Number(n);
+    const res = parts
+        .replace(/_/g, '')
+        .split(':')
+        .reduce((res, p) => res * num(60) + num(p), num(0));
+    return (sign === '-' ? num(-1) * res : res);
+}
+/**
+ * hhhh:mm:ss.sss
+ *
+ * Internal types handle bigint as number, because TS can't figure it out.
+ */
+function stringifySexagesimal(node) {
+    let { value } = node;
+    let num = (n) => n;
+    if (typeof value === 'bigint')
+        num = n => BigInt(n);
+    else if (isNaN(value) || !isFinite(value))
+        return stringifyNumber.stringifyNumber(node);
+    let sign = '';
+    if (value < 0) {
+        sign = '-';
+        value *= num(-1);
+    }
+    const _60 = num(60);
+    const parts = [value % _60]; // seconds, including ms
+    if (value < 60) {
+        parts.unshift(0); // at least one : is required
+    }
+    else {
+        value = (value - parts[0]) / _60;
+        parts.unshift(value % _60); // minutes
+        if (value >= 60) {
+            value = (value - parts[0]) / _60;
+            parts.unshift(value); // hours
+        }
+    }
+    return (sign +
+        parts
+            .map(n => String(n).padStart(2, '0'))
+            .join(':')
+            .replace(/000000\d*$/, '') // % 60 may introduce error
+    );
+}
+const intTime = {
+    identify: value => typeof value === 'bigint' || Number.isInteger(value),
+    default: true,
+    tag: 'tag:yaml.org,2002:int',
+    format: 'TIME',
+    test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,
+    resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),
+    stringify: stringifySexagesimal
+};
+const floatTime = {
+    identify: value => typeof value === 'number',
+    default: true,
+    tag: 'tag:yaml.org,2002:float',
+    format: 'TIME',
+    test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,
+    resolve: str => parseSexagesimal(str, false),
+    stringify: stringifySexagesimal
+};
+const timestamp = {
+    identify: value => value instanceof Date,
+    default: true,
+    tag: 'tag:yaml.org,2002:timestamp',
+    // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part
+    // may be omitted altogether, resulting in a date format. In such a case, the time part is
+    // assumed to be 00:00:00Z (start of day, UTC).
+    test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd
+        '(?:' + // time is optional
+        '(?:t|T|[ \\t]+)' + // t | T | whitespace
+        '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?
+        '(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30
+        ')?$'),
+    resolve(str) {
+        const match = str.match(timestamp.test);
+        if (!match)
+            throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');
+        const [, year, month, day, hour, minute, second] = match.map(Number);
+        const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;
+        let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);
+        const tz = match[8];
+        if (tz && tz !== 'Z') {
+            let d = parseSexagesimal(tz, false);
+            if (Math.abs(d) < 30)
+                d *= 60;
+            date -= 60000 * d;
+        }
+        return new Date(date);
+    },
+    stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\.000Z$/, '') ?? ''
+};
+
+exports.floatTime = floatTime;
+exports.intTime = intTime;
+exports.timestamp = timestamp;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/foldFlowLines.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/foldFlowLines.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/foldFlowLines.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,34 @@
+export declare const FOLD_FLOW = "flow";
+export declare const FOLD_BLOCK = "block";
+export declare const FOLD_QUOTED = "quoted";
+/**
+ * `'block'` prevents more-indented lines from being folded;
+ * `'quoted'` allows for `\` escapes, including escaped newlines
+ */
+export type FoldMode = 'flow' | 'block' | 'quoted';
+export interface FoldOptions {
+    /**
+     * Accounts for leading contents on the first line, defaulting to
+     * `indent.length`
+     */
+    indentAtStart?: number;
+    /** Default: `80` */
+    lineWidth?: number;
+    /**
+     * Allow highly indented lines to stretch the line width or indent content
+     * from the start.
+     *
+     * Default: `20`
+     */
+    minContentWidth?: number;
+    /** Called once if the text is folded */
+    onFold?: () => void;
+    /** Called once if any line of text exceeds lineWidth characters */
+    onOverflow?: () => void;
+}
+/**
+ * Tries to keep input at up to `lineWidth` characters, splitting only on spaces
+ * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are
+ * terminated with `\n` and started with `indent`.
+ */
+export declare function foldFlowLines(text: string, indent: string, mode?: FoldMode, { indentAtStart, lineWidth, minContentWidth, onFold, onOverflow }?: FoldOptions): string;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/foldFlowLines.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/foldFlowLines.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/foldFlowLines.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,151 @@
+'use strict';
+
+const FOLD_FLOW = 'flow';
+const FOLD_BLOCK = 'block';
+const FOLD_QUOTED = 'quoted';
+/**
+ * Tries to keep input at up to `lineWidth` characters, splitting only on spaces
+ * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are
+ * terminated with `\n` and started with `indent`.
+ */
+function foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {
+    if (!lineWidth || lineWidth < 0)
+        return text;
+    if (lineWidth < minContentWidth)
+        minContentWidth = 0;
+    const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);
+    if (text.length <= endStep)
+        return text;
+    const folds = [];
+    const escapedFolds = {};
+    let end = lineWidth - indent.length;
+    if (typeof indentAtStart === 'number') {
+        if (indentAtStart > lineWidth - Math.max(2, minContentWidth))
+            folds.push(0);
+        else
+            end = lineWidth - indentAtStart;
+    }
+    let split = undefined;
+    let prev = undefined;
+    let overflow = false;
+    let i = -1;
+    let escStart = -1;
+    let escEnd = -1;
+    if (mode === FOLD_BLOCK) {
+        i = consumeMoreIndentedLines(text, i, indent.length);
+        if (i !== -1)
+            end = i + endStep;
+    }
+    for (let ch; (ch = text[(i += 1)]);) {
+        if (mode === FOLD_QUOTED && ch === '\\') {
+            escStart = i;
+            switch (text[i + 1]) {
+                case 'x':
+                    i += 3;
+                    break;
+                case 'u':
+                    i += 5;
+                    break;
+                case 'U':
+                    i += 9;
+                    break;
+                default:
+                    i += 1;
+            }
+            escEnd = i;
+        }
+        if (ch === '\n') {
+            if (mode === FOLD_BLOCK)
+                i = consumeMoreIndentedLines(text, i, indent.length);
+            end = i + indent.length + endStep;
+            split = undefined;
+        }
+        else {
+            if (ch === ' ' &&
+                prev &&
+                prev !== ' ' &&
+                prev !== '\n' &&
+                prev !== '\t') {
+                // space surrounded by non-space can be replaced with newline + indent
+                const next = text[i + 1];
+                if (next && next !== ' ' && next !== '\n' && next !== '\t')
+                    split = i;
+            }
+            if (i >= end) {
+                if (split) {
+                    folds.push(split);
+                    end = split + endStep;
+                    split = undefined;
+                }
+                else if (mode === FOLD_QUOTED) {
+                    // white-space collected at end may stretch past lineWidth
+                    while (prev === ' ' || prev === '\t') {
+                        prev = ch;
+                        ch = text[(i += 1)];
+                        overflow = true;
+                    }
+                    // Account for newline escape, but don't break preceding escape
+                    const j = i > escEnd + 1 ? i - 2 : escStart - 1;
+                    // Bail out if lineWidth & minContentWidth are shorter than an escape string
+                    if (escapedFolds[j])
+                        return text;
+                    folds.push(j);
+                    escapedFolds[j] = true;
+                    end = j + endStep;
+                    split = undefined;
+                }
+                else {
+                    overflow = true;
+                }
+            }
+        }
+        prev = ch;
+    }
+    if (overflow && onOverflow)
+        onOverflow();
+    if (folds.length === 0)
+        return text;
+    if (onFold)
+        onFold();
+    let res = text.slice(0, folds[0]);
+    for (let i = 0; i < folds.length; ++i) {
+        const fold = folds[i];
+        const end = folds[i + 1] || text.length;
+        if (fold === 0)
+            res = `\n${indent}${text.slice(0, end)}`;
+        else {
+            if (mode === FOLD_QUOTED && escapedFolds[fold])
+                res += `${text[fold]}\\`;
+            res += `\n${indent}${text.slice(fold + 1, end)}`;
+        }
+    }
+    return res;
+}
+/**
+ * Presumes `i + 1` is at the start of a line
+ * @returns index of last newline in more-indented block
+ */
+function consumeMoreIndentedLines(text, i, indent) {
+    let end = i;
+    let start = i + 1;
+    let ch = text[start];
+    while (ch === ' ' || ch === '\t') {
+        if (i < start + indent) {
+            ch = text[++i];
+        }
+        else {
+            do {
+                ch = text[++i];
+            } while (ch && ch !== '\n');
+            end = i;
+            start = i + 1;
+            ch = text[start];
+        }
+    }
+    return end;
+}
+
+exports.FOLD_BLOCK = FOLD_BLOCK;
+exports.FOLD_FLOW = FOLD_FLOW;
+exports.FOLD_QUOTED = FOLD_QUOTED;
+exports.foldFlowLines = foldFlowLines;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringify.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringify.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringify.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,21 @@
+import type { Document } from '../doc/Document';
+import type { Alias } from '../nodes/Alias';
+import type { ToStringOptions } from '../options';
+export type StringifyContext = {
+    actualString?: boolean;
+    allNullValues?: boolean;
+    anchors: Set<string>;
+    doc: Document;
+    forceBlockIndent?: boolean;
+    implicitKey?: boolean;
+    indent: string;
+    indentStep: string;
+    indentAtStart?: number;
+    inFlow: boolean | null;
+    inStringifyKey?: boolean;
+    flowCollectionPadding: string;
+    options: Readonly<Required<Omit<ToStringOptions, 'collectionStyle' | 'indent'>>>;
+    resolvedAliases?: Set<Alias>;
+};
+export declare function createStringifyContext(doc: Document, options: ToStringOptions): StringifyContext;
+export declare function stringify(item: unknown, ctx: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringify.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,132 @@
+'use strict';
+
+var anchors = require('../doc/anchors.js');
+var identity = require('../nodes/identity.js');
+var stringifyComment = require('./stringifyComment.js');
+var stringifyString = require('./stringifyString.js');
+
+function createStringifyContext(doc, options) {
+    const opt = Object.assign({
+        blockQuote: true,
+        commentString: stringifyComment.stringifyComment,
+        defaultKeyType: null,
+        defaultStringType: 'PLAIN',
+        directives: null,
+        doubleQuotedAsJSON: false,
+        doubleQuotedMinMultiLineLength: 40,
+        falseStr: 'false',
+        flowCollectionPadding: true,
+        indentSeq: true,
+        lineWidth: 80,
+        minContentWidth: 20,
+        nullStr: 'null',
+        simpleKeys: false,
+        singleQuote: null,
+        trailingComma: false,
+        trueStr: 'true',
+        verifyAliasOrder: true
+    }, doc.schema.toStringOptions, options);
+    let inFlow;
+    switch (opt.collectionStyle) {
+        case 'block':
+            inFlow = false;
+            break;
+        case 'flow':
+            inFlow = true;
+            break;
+        default:
+            inFlow = null;
+    }
+    return {
+        anchors: new Set(),
+        doc,
+        flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',
+        indent: '',
+        indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : '  ',
+        inFlow,
+        options: opt
+    };
+}
+function getTagObject(tags, item) {
+    if (item.tag) {
+        const match = tags.filter(t => t.tag === item.tag);
+        if (match.length > 0)
+            return match.find(t => t.format === item.format) ?? match[0];
+    }
+    let tagObj = undefined;
+    let obj;
+    if (identity.isScalar(item)) {
+        obj = item.value;
+        let match = tags.filter(t => t.identify?.(obj));
+        if (match.length > 1) {
+            const testMatch = match.filter(t => t.test);
+            if (testMatch.length > 0)
+                match = testMatch;
+        }
+        tagObj =
+            match.find(t => t.format === item.format) ?? match.find(t => !t.format);
+    }
+    else {
+        obj = item;
+        tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);
+    }
+    if (!tagObj) {
+        const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);
+        throw new Error(`Tag not resolved for ${name} value`);
+    }
+    return tagObj;
+}
+// needs to be called before value stringifier to allow for circular anchor refs
+function stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {
+    if (!doc.directives)
+        return '';
+    const props = [];
+    const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;
+    if (anchor && anchors.anchorIsValid(anchor)) {
+        anchors$1.add(anchor);
+        props.push(`&${anchor}`);
+    }
+    const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);
+    if (tag)
+        props.push(doc.directives.tagString(tag));
+    return props.join(' ');
+}
+function stringify(item, ctx, onComment, onChompKeep) {
+    if (identity.isPair(item))
+        return item.toString(ctx, onComment, onChompKeep);
+    if (identity.isAlias(item)) {
+        if (ctx.doc.directives)
+            return item.toString(ctx);
+        if (ctx.resolvedAliases?.has(item)) {
+            throw new TypeError(`Cannot stringify circular structure without alias nodes`);
+        }
+        else {
+            if (ctx.resolvedAliases)
+                ctx.resolvedAliases.add(item);
+            else
+                ctx.resolvedAliases = new Set([item]);
+            item = item.resolve(ctx.doc);
+        }
+    }
+    let tagObj = undefined;
+    const node = identity.isNode(item)
+        ? item
+        : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });
+    tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));
+    const props = stringifyProps(node, tagObj, ctx);
+    if (props.length > 0)
+        ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;
+    const str = typeof tagObj.stringify === 'function'
+        ? tagObj.stringify(node, ctx, onComment, onChompKeep)
+        : identity.isScalar(node)
+            ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)
+            : node.toString(ctx, onComment, onChompKeep);
+    if (!props)
+        return str;
+    return identity.isScalar(node) || str[0] === '{' || str[0] === '['
+        ? `${props} ${str}`
+        : `${props}\n${ctx.indent}${str}`;
+}
+
+exports.createStringifyContext = createStringifyContext;
+exports.stringify = stringify;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyCollection.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyCollection.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyCollection.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+import type { Collection } from '../nodes/Collection';
+import type { StringifyContext } from './stringify';
+interface StringifyCollectionOptions {
+    blockItemPrefix: string;
+    flowChars: {
+        start: '{';
+        end: '}';
+    } | {
+        start: '[';
+        end: ']';
+    };
+    itemIndent: string;
+    onChompKeep?: () => void;
+    onComment?: () => void;
+}
+export declare function stringifyCollection(collection: Readonly<Collection>, ctx: StringifyContext, options: StringifyCollectionOptions): string;
+export {};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyCollection.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyCollection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyCollection.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,155 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+var stringify = require('./stringify.js');
+var stringifyComment = require('./stringifyComment.js');
+
+function stringifyCollection(collection, ctx, options) {
+    const flow = ctx.inFlow ?? collection.flow;
+    const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;
+    return stringify(collection, ctx, options);
+}
+function stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {
+    const { indent, options: { commentString } } = ctx;
+    const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });
+    let chompKeep = false; // flag for the preceding node's status
+    const lines = [];
+    for (let i = 0; i < items.length; ++i) {
+        const item = items[i];
+        let comment = null;
+        if (identity.isNode(item)) {
+            if (!chompKeep && item.spaceBefore)
+                lines.push('');
+            addCommentBefore(ctx, lines, item.commentBefore, chompKeep);
+            if (item.comment)
+                comment = item.comment;
+        }
+        else if (identity.isPair(item)) {
+            const ik = identity.isNode(item.key) ? item.key : null;
+            if (ik) {
+                if (!chompKeep && ik.spaceBefore)
+                    lines.push('');
+                addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);
+            }
+        }
+        chompKeep = false;
+        let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));
+        if (comment)
+            str += stringifyComment.lineComment(str, itemIndent, commentString(comment));
+        if (chompKeep && comment)
+            chompKeep = false;
+        lines.push(blockItemPrefix + str);
+    }
+    let str;
+    if (lines.length === 0) {
+        str = flowChars.start + flowChars.end;
+    }
+    else {
+        str = lines[0];
+        for (let i = 1; i < lines.length; ++i) {
+            const line = lines[i];
+            str += line ? `\n${indent}${line}` : '\n';
+        }
+    }
+    if (comment) {
+        str += '\n' + stringifyComment.indentComment(commentString(comment), indent);
+        if (onComment)
+            onComment();
+    }
+    else if (chompKeep && onChompKeep)
+        onChompKeep();
+    return str;
+}
+function stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {
+    const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;
+    itemIndent += indentStep;
+    const itemCtx = Object.assign({}, ctx, {
+        indent: itemIndent,
+        inFlow: true,
+        type: null
+    });
+    let reqNewline = false;
+    let linesAtValue = 0;
+    const lines = [];
+    for (let i = 0; i < items.length; ++i) {
+        const item = items[i];
+        let comment = null;
+        if (identity.isNode(item)) {
+            if (item.spaceBefore)
+                lines.push('');
+            addCommentBefore(ctx, lines, item.commentBefore, false);
+            if (item.comment)
+                comment = item.comment;
+        }
+        else if (identity.isPair(item)) {
+            const ik = identity.isNode(item.key) ? item.key : null;
+            if (ik) {
+                if (ik.spaceBefore)
+                    lines.push('');
+                addCommentBefore(ctx, lines, ik.commentBefore, false);
+                if (ik.comment)
+                    reqNewline = true;
+            }
+            const iv = identity.isNode(item.value) ? item.value : null;
+            if (iv) {
+                if (iv.comment)
+                    comment = iv.comment;
+                if (iv.commentBefore)
+                    reqNewline = true;
+            }
+            else if (item.value == null && ik?.comment) {
+                comment = ik.comment;
+            }
+        }
+        if (comment)
+            reqNewline = true;
+        let str = stringify.stringify(item, itemCtx, () => (comment = null));
+        reqNewline || (reqNewline = lines.length > linesAtValue || str.includes('\n'));
+        if (i < items.length - 1) {
+            str += ',';
+        }
+        else if (ctx.options.trailingComma) {
+            if (ctx.options.lineWidth > 0) {
+                reqNewline || (reqNewline = lines.reduce((sum, line) => sum + line.length + 2, 2) +
+                    (str.length + 2) >
+                    ctx.options.lineWidth);
+            }
+            if (reqNewline) {
+                str += ',';
+            }
+        }
+        if (comment)
+            str += stringifyComment.lineComment(str, itemIndent, commentString(comment));
+        lines.push(str);
+        linesAtValue = lines.length;
+    }
+    const { start, end } = flowChars;
+    if (lines.length === 0) {
+        return start + end;
+    }
+    else {
+        if (!reqNewline) {
+            const len = lines.reduce((sum, line) => sum + line.length + 2, 2);
+            reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;
+        }
+        if (reqNewline) {
+            let str = start;
+            for (const line of lines)
+                str += line ? `\n${indentStep}${indent}${line}` : '\n';
+            return `${str}\n${indent}${end}`;
+        }
+        else {
+            return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;
+        }
+    }
+}
+function addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {
+    if (comment && chompKeep)
+        comment = comment.replace(/^\n+/, '');
+    if (comment) {
+        const ic = stringifyComment.indentComment(commentString(comment), indent);
+        lines.push(ic.trimStart()); // Avoid double indent on first line
+    }
+}
+
+exports.stringifyCollection = stringifyCollection;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyComment.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyComment.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyComment.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,10 @@
+/**
+ * Stringifies a comment.
+ *
+ * Empty comment lines are left empty,
+ * lines consisting of a single space are replaced by `#`,
+ * and all other lines are prefixed with a `#`.
+ */
+export declare const stringifyComment: (str: string) => string;
+export declare function indentComment(comment: string, indent: string): string;
+export declare const lineComment: (str: string, indent: string, comment: string) => string;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyComment.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyComment.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyComment.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,24 @@
+'use strict';
+
+/**
+ * Stringifies a comment.
+ *
+ * Empty comment lines are left empty,
+ * lines consisting of a single space are replaced by `#`,
+ * and all other lines are prefixed with a `#`.
+ */
+const stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');
+function indentComment(comment, indent) {
+    if (/^\n+$/.test(comment))
+        return comment.substring(1);
+    return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;
+}
+const lineComment = (str, indent, comment) => str.endsWith('\n')
+    ? indentComment(comment, indent)
+    : comment.includes('\n')
+        ? '\n' + indentComment(comment, indent)
+        : (str.endsWith(' ') ? '' : ' ') + comment;
+
+exports.indentComment = indentComment;
+exports.lineComment = lineComment;
+exports.stringifyComment = stringifyComment;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyDocument.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyDocument.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyDocument.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import type { Document } from '../doc/Document';
+import type { Node } from '../nodes/Node';
+import type { ToStringOptions } from '../options';
+export declare function stringifyDocument(doc: Readonly<Document<Node, boolean>>, options: ToStringOptions): string;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyDocument.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyDocument.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyDocument.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,87 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+var stringify = require('./stringify.js');
+var stringifyComment = require('./stringifyComment.js');
+
+function stringifyDocument(doc, options) {
+    const lines = [];
+    let hasDirectives = options.directives === true;
+    if (options.directives !== false && doc.directives) {
+        const dir = doc.directives.toString(doc);
+        if (dir) {
+            lines.push(dir);
+            hasDirectives = true;
+        }
+        else if (doc.directives.docStart)
+            hasDirectives = true;
+    }
+    if (hasDirectives)
+        lines.push('---');
+    const ctx = stringify.createStringifyContext(doc, options);
+    const { commentString } = ctx.options;
+    if (doc.commentBefore) {
+        if (lines.length !== 1)
+            lines.unshift('');
+        const cs = commentString(doc.commentBefore);
+        lines.unshift(stringifyComment.indentComment(cs, ''));
+    }
+    let chompKeep = false;
+    let contentComment = null;
+    if (doc.contents) {
+        if (identity.isNode(doc.contents)) {
+            if (doc.contents.spaceBefore && hasDirectives)
+                lines.push('');
+            if (doc.contents.commentBefore) {
+                const cs = commentString(doc.contents.commentBefore);
+                lines.push(stringifyComment.indentComment(cs, ''));
+            }
+            // top-level block scalars need to be indented if followed by a comment
+            ctx.forceBlockIndent = !!doc.comment;
+            contentComment = doc.contents.comment;
+        }
+        const onChompKeep = contentComment ? undefined : () => (chompKeep = true);
+        let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);
+        if (contentComment)
+            body += stringifyComment.lineComment(body, '', commentString(contentComment));
+        if ((body[0] === '|' || body[0] === '>') &&
+            lines[lines.length - 1] === '---') {
+            // Top-level block scalars with a preceding doc marker ought to use the
+            // same line for their header.
+            lines[lines.length - 1] = `--- ${body}`;
+        }
+        else
+            lines.push(body);
+    }
+    else {
+        lines.push(stringify.stringify(doc.contents, ctx));
+    }
+    if (doc.directives?.docEnd) {
+        if (doc.comment) {
+            const cs = commentString(doc.comment);
+            if (cs.includes('\n')) {
+                lines.push('...');
+                lines.push(stringifyComment.indentComment(cs, ''));
+            }
+            else {
+                lines.push(`... ${cs}`);
+            }
+        }
+        else {
+            lines.push('...');
+        }
+    }
+    else {
+        let dc = doc.comment;
+        if (dc && chompKeep)
+            dc = dc.replace(/^\n+/, '');
+        if (dc) {
+            if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')
+                lines.push('');
+            lines.push(stringifyComment.indentComment(commentString(dc), ''));
+        }
+    }
+    return lines.join('\n') + '\n';
+}
+
+exports.stringifyDocument = stringifyDocument;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyNumber.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyNumber.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyNumber.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import type { Scalar } from '../nodes/Scalar';
+export declare function stringifyNumber({ format, minFractionDigits, tag, value }: Scalar): string;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyNumber.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyNumber.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyNumber.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,27 @@
+'use strict';
+
+function stringifyNumber({ format, minFractionDigits, tag, value }) {
+    if (typeof value === 'bigint')
+        return String(value);
+    const num = typeof value === 'number' ? value : Number(value);
+    if (!isFinite(num))
+        return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';
+    let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);
+    if (!format &&
+        minFractionDigits &&
+        (!tag || tag === 'tag:yaml.org,2002:float') &&
+        /^-?\d/.test(n) &&
+        !n.includes('e')) {
+        let i = n.indexOf('.');
+        if (i < 0) {
+            i = n.length;
+            n += '.';
+        }
+        let d = minFractionDigits - (n.length - i - 1);
+        while (d-- > 0)
+            n += '0';
+    }
+    return n;
+}
+
+exports.stringifyNumber = stringifyNumber;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyPair.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyPair.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyPair.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { Pair } from '../nodes/Pair';
+import type { StringifyContext } from './stringify';
+export declare function stringifyPair({ key, value }: Readonly<Pair>, ctx: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyPair.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyPair.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyPair.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,152 @@
+'use strict';
+
+var identity = require('../nodes/identity.js');
+var Scalar = require('../nodes/Scalar.js');
+var stringify = require('./stringify.js');
+var stringifyComment = require('./stringifyComment.js');
+
+function stringifyPair({ key, value }, ctx, onComment, onChompKeep) {
+    const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;
+    let keyComment = (identity.isNode(key) && key.comment) || null;
+    if (simpleKeys) {
+        if (keyComment) {
+            throw new Error('With simple keys, key nodes cannot have comments');
+        }
+        if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {
+            const msg = 'With simple keys, collection cannot be used as a key value';
+            throw new Error(msg);
+        }
+    }
+    let explicitKey = !simpleKeys &&
+        (!key ||
+            (keyComment && value == null && !ctx.inFlow) ||
+            identity.isCollection(key) ||
+            (identity.isScalar(key)
+                ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL
+                : typeof key === 'object'));
+    ctx = Object.assign({}, ctx, {
+        allNullValues: false,
+        implicitKey: !explicitKey && (simpleKeys || !allNullValues),
+        indent: indent + indentStep
+    });
+    let keyCommentDone = false;
+    let chompKeep = false;
+    let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));
+    if (!explicitKey && !ctx.inFlow && str.length > 1024) {
+        if (simpleKeys)
+            throw new Error('With simple keys, single line scalar must not span more than 1024 characters');
+        explicitKey = true;
+    }
+    if (ctx.inFlow) {
+        if (allNullValues || value == null) {
+            if (keyCommentDone && onComment)
+                onComment();
+            return str === '' ? '?' : explicitKey ? `? ${str}` : str;
+        }
+    }
+    else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {
+        str = `? ${str}`;
+        if (keyComment && !keyCommentDone) {
+            str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));
+        }
+        else if (chompKeep && onChompKeep)
+            onChompKeep();
+        return str;
+    }
+    if (keyCommentDone)
+        keyComment = null;
+    if (explicitKey) {
+        if (keyComment)
+            str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));
+        str = `? ${str}\n${indent}:`;
+    }
+    else {
+        str = `${str}:`;
+        if (keyComment)
+            str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));
+    }
+    let vsb, vcb, valueComment;
+    if (identity.isNode(value)) {
+        vsb = !!value.spaceBefore;
+        vcb = value.commentBefore;
+        valueComment = value.comment;
+    }
+    else {
+        vsb = false;
+        vcb = null;
+        valueComment = null;
+        if (value && typeof value === 'object')
+            value = doc.createNode(value);
+    }
+    ctx.implicitKey = false;
+    if (!explicitKey && !keyComment && identity.isScalar(value))
+        ctx.indentAtStart = str.length + 1;
+    chompKeep = false;
+    if (!indentSeq &&
+        indentStep.length >= 2 &&
+        !ctx.inFlow &&
+        !explicitKey &&
+        identity.isSeq(value) &&
+        !value.flow &&
+        !value.tag &&
+        !value.anchor) {
+        // If indentSeq === false, consider '- ' as part of indentation where possible
+        ctx.indent = ctx.indent.substring(2);
+    }
+    let valueCommentDone = false;
+    const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));
+    let ws = ' ';
+    if (keyComment || vsb || vcb) {
+        ws = vsb ? '\n' : '';
+        if (vcb) {
+            const cs = commentString(vcb);
+            ws += `\n${stringifyComment.indentComment(cs, ctx.indent)}`;
+        }
+        if (valueStr === '' && !ctx.inFlow) {
+            if (ws === '\n' && valueComment)
+                ws = '\n\n';
+        }
+        else {
+            ws += `\n${ctx.indent}`;
+        }
+    }
+    else if (!explicitKey && identity.isCollection(value)) {
+        const vs0 = valueStr[0];
+        const nl0 = valueStr.indexOf('\n');
+        const hasNewline = nl0 !== -1;
+        const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;
+        if (hasNewline || !flow) {
+            let hasPropsLine = false;
+            if (hasNewline && (vs0 === '&' || vs0 === '!')) {
+                let sp0 = valueStr.indexOf(' ');
+                if (vs0 === '&' &&
+                    sp0 !== -1 &&
+                    sp0 < nl0 &&
+                    valueStr[sp0 + 1] === '!') {
+                    sp0 = valueStr.indexOf(' ', sp0 + 1);
+                }
+                if (sp0 === -1 || nl0 < sp0)
+                    hasPropsLine = true;
+            }
+            if (!hasPropsLine)
+                ws = `\n${ctx.indent}`;
+        }
+    }
+    else if (valueStr === '' || valueStr[0] === '\n') {
+        ws = '';
+    }
+    str += ws + valueStr;
+    if (ctx.inFlow) {
+        if (valueCommentDone && onComment)
+            onComment();
+    }
+    else if (valueComment && !valueCommentDone) {
+        str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));
+    }
+    else if (chompKeep && onChompKeep) {
+        onChompKeep();
+    }
+    return str;
+}
+
+exports.stringifyPair = stringifyPair;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyString.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyString.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyString.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,9 @@
+import { Scalar } from '../nodes/Scalar';
+import type { StringifyContext } from './stringify';
+interface StringifyScalar {
+    value: string;
+    comment?: string | null;
+    type?: string;
+}
+export declare function stringifyString(item: Scalar | StringifyScalar, ctx: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
+export {};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyString.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyString.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/stringify/stringifyString.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,338 @@
+'use strict';
+
+var Scalar = require('../nodes/Scalar.js');
+var foldFlowLines = require('./foldFlowLines.js');
+
+const getFoldOptions = (ctx, isBlock) => ({
+    indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,
+    lineWidth: ctx.options.lineWidth,
+    minContentWidth: ctx.options.minContentWidth
+});
+// Also checks for lines starting with %, as parsing the output as YAML 1.1 will
+// presume that's starting a new document.
+const containsDocumentMarker = (str) => /^(%|---|\.\.\.)/m.test(str);
+function lineLengthOverLimit(str, lineWidth, indentLength) {
+    if (!lineWidth || lineWidth < 0)
+        return false;
+    const limit = lineWidth - indentLength;
+    const strLen = str.length;
+    if (strLen <= limit)
+        return false;
+    for (let i = 0, start = 0; i < strLen; ++i) {
+        if (str[i] === '\n') {
+            if (i - start > limit)
+                return true;
+            start = i + 1;
+            if (strLen - start <= limit)
+                return false;
+        }
+    }
+    return true;
+}
+function doubleQuotedString(value, ctx) {
+    const json = JSON.stringify(value);
+    if (ctx.options.doubleQuotedAsJSON)
+        return json;
+    const { implicitKey } = ctx;
+    const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;
+    const indent = ctx.indent || (containsDocumentMarker(value) ? '  ' : '');
+    let str = '';
+    let start = 0;
+    for (let i = 0, ch = json[i]; ch; ch = json[++i]) {
+        if (ch === ' ' && json[i + 1] === '\\' && json[i + 2] === 'n') {
+            // space before newline needs to be escaped to not be folded
+            str += json.slice(start, i) + '\\ ';
+            i += 1;
+            start = i;
+            ch = '\\';
+        }
+        if (ch === '\\')
+            switch (json[i + 1]) {
+                case 'u':
+                    {
+                        str += json.slice(start, i);
+                        const code = json.substr(i + 2, 4);
+                        switch (code) {
+                            case '0000':
+                                str += '\\0';
+                                break;
+                            case '0007':
+                                str += '\\a';
+                                break;
+                            case '000b':
+                                str += '\\v';
+                                break;
+                            case '001b':
+                                str += '\\e';
+                                break;
+                            case '0085':
+                                str += '\\N';
+                                break;
+                            case '00a0':
+                                str += '\\_';
+                                break;
+                            case '2028':
+                                str += '\\L';
+                                break;
+                            case '2029':
+                                str += '\\P';
+                                break;
+                            default:
+                                if (code.substr(0, 2) === '00')
+                                    str += '\\x' + code.substr(2);
+                                else
+                                    str += json.substr(i, 6);
+                        }
+                        i += 5;
+                        start = i + 1;
+                    }
+                    break;
+                case 'n':
+                    if (implicitKey ||
+                        json[i + 2] === '"' ||
+                        json.length < minMultiLineLength) {
+                        i += 1;
+                    }
+                    else {
+                        // folding will eat first newline
+                        str += json.slice(start, i) + '\n\n';
+                        while (json[i + 2] === '\\' &&
+                            json[i + 3] === 'n' &&
+                            json[i + 4] !== '"') {
+                            str += '\n';
+                            i += 2;
+                        }
+                        str += indent;
+                        // space after newline needs to be escaped to not be folded
+                        if (json[i + 2] === ' ')
+                            str += '\\';
+                        i += 1;
+                        start = i + 1;
+                    }
+                    break;
+                default:
+                    i += 1;
+            }
+    }
+    str = start ? str + json.slice(start) : json;
+    return implicitKey
+        ? str
+        : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));
+}
+function singleQuotedString(value, ctx) {
+    if (ctx.options.singleQuote === false ||
+        (ctx.implicitKey && value.includes('\n')) ||
+        /[ \t]\n|\n[ \t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline
+    )
+        return doubleQuotedString(value, ctx);
+    const indent = ctx.indent || (containsDocumentMarker(value) ? '  ' : '');
+    const res = "'" + value.replace(/'/g, "''").replace(/\n+/g, `$&\n${indent}`) + "'";
+    return ctx.implicitKey
+        ? res
+        : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));
+}
+function quotedString(value, ctx) {
+    const { singleQuote } = ctx.options;
+    let qs;
+    if (singleQuote === false)
+        qs = doubleQuotedString;
+    else {
+        const hasDouble = value.includes('"');
+        const hasSingle = value.includes("'");
+        if (hasDouble && !hasSingle)
+            qs = singleQuotedString;
+        else if (hasSingle && !hasDouble)
+            qs = doubleQuotedString;
+        else
+            qs = singleQuote ? singleQuotedString : doubleQuotedString;
+    }
+    return qs(value, ctx);
+}
+// The negative lookbehind avoids a polynomial search,
+// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind
+let blockEndNewlines;
+try {
+    blockEndNewlines = new RegExp('(^|(?<!\n))\n+(?!\n|$)', 'g');
+}
+catch {
+    blockEndNewlines = /\n+(?!\n|$)/g;
+}
+function blockString({ comment, type, value }, ctx, onComment, onChompKeep) {
+    const { blockQuote, commentString, lineWidth } = ctx.options;
+    // 1. Block can't end in whitespace unless the last line is non-empty.
+    // 2. Strings consisting of only whitespace are best rendered explicitly.
+    if (!blockQuote || /\n[\t ]+$/.test(value)) {
+        return quotedString(value, ctx);
+    }
+    const indent = ctx.indent ||
+        (ctx.forceBlockIndent || containsDocumentMarker(value) ? '  ' : '');
+    const literal = blockQuote === 'literal'
+        ? true
+        : blockQuote === 'folded' || type === Scalar.Scalar.BLOCK_FOLDED
+            ? false
+            : type === Scalar.Scalar.BLOCK_LITERAL
+                ? true
+                : !lineLengthOverLimit(value, lineWidth, indent.length);
+    if (!value)
+        return literal ? '|\n' : '>\n';
+    // determine chomping from whitespace at value end
+    let chomp;
+    let endStart;
+    for (endStart = value.length; endStart > 0; --endStart) {
+        const ch = value[endStart - 1];
+        if (ch !== '\n' && ch !== '\t' && ch !== ' ')
+            break;
+    }
+    let end = value.substring(endStart);
+    const endNlPos = end.indexOf('\n');
+    if (endNlPos === -1) {
+        chomp = '-'; // strip
+    }
+    else if (value === end || endNlPos !== end.length - 1) {
+        chomp = '+'; // keep
+        if (onChompKeep)
+            onChompKeep();
+    }
+    else {
+        chomp = ''; // clip
+    }
+    if (end) {
+        value = value.slice(0, -end.length);
+        if (end[end.length - 1] === '\n')
+            end = end.slice(0, -1);
+        end = end.replace(blockEndNewlines, `$&${indent}`);
+    }
+    // determine indent indicator from whitespace at value start
+    let startWithSpace = false;
+    let startEnd;
+    let startNlPos = -1;
+    for (startEnd = 0; startEnd < value.length; ++startEnd) {
+        const ch = value[startEnd];
+        if (ch === ' ')
+            startWithSpace = true;
+        else if (ch === '\n')
+            startNlPos = startEnd;
+        else
+            break;
+    }
+    let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);
+    if (start) {
+        value = value.substring(start.length);
+        start = start.replace(/\n+/g, `$&${indent}`);
+    }
+    const indentSize = indent ? '2' : '1'; // root is at -1
+    // Leading | or > is added later
+    let header = (startWithSpace ? indentSize : '') + chomp;
+    if (comment) {
+        header += ' ' + commentString(comment.replace(/ ?[\r\n]+/g, ' '));
+        if (onComment)
+            onComment();
+    }
+    if (!literal) {
+        const foldedValue = value
+            .replace(/\n+/g, '\n$&')
+            .replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, '$1$2') // more-indented lines aren't folded
+            //                ^ more-ind. ^ empty     ^ capture next empty lines only at end of indent
+            .replace(/\n+/g, `$&${indent}`);
+        let literalFallback = false;
+        const foldOptions = getFoldOptions(ctx, true);
+        if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {
+            foldOptions.onOverflow = () => {
+                literalFallback = true;
+            };
+        }
+        const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);
+        if (!literalFallback)
+            return `>${header}\n${indent}${body}`;
+    }
+    value = value.replace(/\n+/g, `$&${indent}`);
+    return `|${header}\n${indent}${start}${value}${end}`;
+}
+function plainString(item, ctx, onComment, onChompKeep) {
+    const { type, value } = item;
+    const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;
+    if ((implicitKey && value.includes('\n')) ||
+        (inFlow && /[[\]{},]/.test(value))) {
+        return quotedString(value, ctx);
+    }
+    if (/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) {
+        // not allowed:
+        // - '-' or '?'
+        // - start with an indicator character (except [?:-]) or /[?-] /
+        // - '\n ', ': ' or ' \n' anywhere
+        // - '#' not preceded by a non-space char
+        // - end with ' ' or ':'
+        return implicitKey || inFlow || !value.includes('\n')
+            ? quotedString(value, ctx)
+            : blockString(item, ctx, onComment, onChompKeep);
+    }
+    if (!implicitKey &&
+        !inFlow &&
+        type !== Scalar.Scalar.PLAIN &&
+        value.includes('\n')) {
+        // Where allowed & type not set explicitly, prefer block style for multiline strings
+        return blockString(item, ctx, onComment, onChompKeep);
+    }
+    if (containsDocumentMarker(value)) {
+        if (indent === '') {
+            ctx.forceBlockIndent = true;
+            return blockString(item, ctx, onComment, onChompKeep);
+        }
+        else if (implicitKey && indent === indentStep) {
+            return quotedString(value, ctx);
+        }
+    }
+    const str = value.replace(/\n+/g, `$&\n${indent}`);
+    // Verify that output will be parsed as a string, as e.g. plain numbers and
+    // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),
+    // and others in v1.1.
+    if (actualString) {
+        const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);
+        const { compat, tags } = ctx.doc.schema;
+        if (tags.some(test) || compat?.some(test))
+            return quotedString(value, ctx);
+    }
+    return implicitKey
+        ? str
+        : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));
+}
+function stringifyString(item, ctx, onComment, onChompKeep) {
+    const { implicitKey, inFlow } = ctx;
+    const ss = typeof item.value === 'string'
+        ? item
+        : Object.assign({}, item, { value: String(item.value) });
+    let { type } = item;
+    if (type !== Scalar.Scalar.QUOTE_DOUBLE) {
+        // force double quotes on control characters & unpaired surrogates
+        if (/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(ss.value))
+            type = Scalar.Scalar.QUOTE_DOUBLE;
+    }
+    const _stringify = (_type) => {
+        switch (_type) {
+            case Scalar.Scalar.BLOCK_FOLDED:
+            case Scalar.Scalar.BLOCK_LITERAL:
+                return implicitKey || inFlow
+                    ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers
+                    : blockString(ss, ctx, onComment, onChompKeep);
+            case Scalar.Scalar.QUOTE_DOUBLE:
+                return doubleQuotedString(ss.value, ctx);
+            case Scalar.Scalar.QUOTE_SINGLE:
+                return singleQuotedString(ss.value, ctx);
+            case Scalar.Scalar.PLAIN:
+                return plainString(ss, ctx, onComment, onChompKeep);
+            default:
+                return null;
+        }
+    };
+    let res = _stringify(type);
+    if (res === null) {
+        const { defaultKeyType, defaultStringType } = ctx.options;
+        const t = (implicitKey && defaultKeyType) || defaultStringType;
+        res = _stringify(t);
+        if (res === null)
+            throw new Error(`Unsupported default string type ${t}`);
+    }
+    return res;
+}
+
+exports.stringifyString = stringifyString;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/test-events.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/test-events.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/test-events.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+export declare function testEvents(src: string): {
+    events: string[];
+    error: unknown;
+};
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/test-events.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/test-events.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/test-events.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,134 @@
+'use strict';
+
+var identity = require('./nodes/identity.js');
+var publicApi = require('./public-api.js');
+var visit = require('./visit.js');
+
+const scalarChar = {
+    BLOCK_FOLDED: '>',
+    BLOCK_LITERAL: '|',
+    PLAIN: ':',
+    QUOTE_DOUBLE: '"',
+    QUOTE_SINGLE: "'"
+};
+function anchorExists(doc, anchor) {
+    let found = false;
+    visit.visit(doc, {
+        Value(_key, node) {
+            if (node.anchor === anchor) {
+                found = true;
+                return visit.visit.BREAK;
+            }
+        }
+    });
+    return found;
+}
+// test harness for yaml-test-suite event tests
+function testEvents(src) {
+    const docs = publicApi.parseAllDocuments(src);
+    const errDoc = docs.find(doc => doc.errors.length > 0);
+    const error = errDoc ? errDoc.errors[0].message : null;
+    const events = ['+STR'];
+    try {
+        for (let i = 0; i < docs.length; ++i) {
+            const doc = docs[i];
+            let root = doc.contents;
+            if (Array.isArray(root))
+                root = root[0];
+            const [rootStart] = doc.range || [0];
+            const error = doc.errors[0];
+            if (error && (!error.pos || error.pos[0] < rootStart))
+                throw new Error();
+            let docStart = '+DOC';
+            if (doc.directives.docStart)
+                docStart += ' ---';
+            else if (doc.contents &&
+                doc.contents.range[2] === doc.contents.range[0] &&
+                !doc.contents.anchor &&
+                !doc.contents.tag)
+                continue;
+            events.push(docStart);
+            addEvents(events, doc, error?.pos[0] ?? -1, root);
+            let docEnd = '-DOC';
+            if (doc.directives.docEnd)
+                docEnd += ' ...';
+            events.push(docEnd);
+        }
+    }
+    catch (e) {
+        return { events, error: error ?? e };
+    }
+    events.push('-STR');
+    return { events, error };
+}
+function addEvents(events, doc, errPos, node) {
+    if (!node) {
+        events.push('=VAL :');
+        return;
+    }
+    if (errPos !== -1 && identity.isNode(node) && node.range[0] >= errPos)
+        throw new Error();
+    let props = '';
+    let anchor = identity.isScalar(node) || identity.isCollection(node) ? node.anchor : undefined;
+    if (anchor) {
+        if (/\d$/.test(anchor)) {
+            const alt = anchor.replace(/\d$/, '');
+            if (anchorExists(doc, alt))
+                anchor = alt;
+        }
+        props = ` &${anchor}`;
+    }
+    if (identity.isNode(node) && node.tag)
+        props += ` <${node.tag}>`;
+    if (identity.isMap(node)) {
+        const ev = node.flow ? '+MAP {}' : '+MAP';
+        events.push(`${ev}${props}`);
+        node.items.forEach(({ key, value }) => {
+            addEvents(events, doc, errPos, key);
+            addEvents(events, doc, errPos, value);
+        });
+        events.push('-MAP');
+    }
+    else if (identity.isSeq(node)) {
+        const ev = node.flow ? '+SEQ []' : '+SEQ';
+        events.push(`${ev}${props}`);
+        node.items.forEach(item => {
+            addEvents(events, doc, errPos, item);
+        });
+        events.push('-SEQ');
+    }
+    else if (identity.isPair(node)) {
+        events.push(`+MAP${props}`);
+        addEvents(events, doc, errPos, node.key);
+        addEvents(events, doc, errPos, node.value);
+        events.push('-MAP');
+    }
+    else if (identity.isAlias(node)) {
+        let alias = node.source;
+        if (alias && /\d$/.test(alias)) {
+            const alt = alias.replace(/\d$/, '');
+            if (anchorExists(doc, alt))
+                alias = alt;
+        }
+        events.push(`=ALI${props} *${alias}`);
+    }
+    else {
+        const scalar = scalarChar[String(node.type)];
+        if (!scalar)
+            throw new Error(`Unexpected node type ${node.type}`);
+        const value = node.source
+            .replace(/\\/g, '\\\\')
+            .replace(/\0/g, '\\0')
+            .replace(/\x07/g, '\\a')
+            .replace(/\x08/g, '\\b')
+            .replace(/\t/g, '\\t')
+            .replace(/\n/g, '\\n')
+            .replace(/\v/g, '\\v')
+            .replace(/\f/g, '\\f')
+            .replace(/\r/g, '\\r')
+            .replace(/\x1b/g, '\\e');
+        events.push(`=VAL${props} ${scalar}${value}`);
+    }
+}
+
+exports.testEvents = testEvents;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/util.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/util.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/util.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,16 @@
+export { createNode } from './doc/createNode';
+export type { CreateNodeContext } from './doc/createNode';
+export { debug, warn } from './log';
+export type { LogLevelId } from './log';
+export { createPair } from './nodes/Pair';
+export { toJS } from './nodes/toJS';
+export type { ToJSContext } from './nodes/toJS';
+export { findPair } from './nodes/YAMLMap';
+export { map as mapTag } from './schema/common/map';
+export { seq as seqTag } from './schema/common/seq';
+export { string as stringTag } from './schema/common/string';
+export { foldFlowLines } from './stringify/foldFlowLines';
+export type { FoldOptions } from './stringify/foldFlowLines';
+export type { StringifyContext } from './stringify/stringify';
+export { stringifyNumber } from './stringify/stringifyNumber';
+export { stringifyString } from './stringify/stringifyString';
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/util.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/util.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/util.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,28 @@
+'use strict';
+
+var createNode = require('./doc/createNode.js');
+var log = require('./log.js');
+var Pair = require('./nodes/Pair.js');
+var toJS = require('./nodes/toJS.js');
+var YAMLMap = require('./nodes/YAMLMap.js');
+var map = require('./schema/common/map.js');
+var seq = require('./schema/common/seq.js');
+var string = require('./schema/common/string.js');
+var foldFlowLines = require('./stringify/foldFlowLines.js');
+var stringifyNumber = require('./stringify/stringifyNumber.js');
+var stringifyString = require('./stringify/stringifyString.js');
+
+
+
+exports.createNode = createNode.createNode;
+exports.debug = log.debug;
+exports.warn = log.warn;
+exports.createPair = Pair.createPair;
+exports.toJS = toJS.toJS;
+exports.findPair = YAMLMap.findPair;
+exports.mapTag = map.map;
+exports.seqTag = seq.seq;
+exports.stringTag = string.string;
+exports.foldFlowLines = foldFlowLines.foldFlowLines;
+exports.stringifyNumber = stringifyNumber.stringifyNumber;
+exports.stringifyString = stringifyString.stringifyString;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/visit.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/visit.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/visit.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,102 @@
+import type { Document } from './doc/Document';
+import type { Alias } from './nodes/Alias';
+import type { Node } from './nodes/Node';
+import type { Pair } from './nodes/Pair';
+import type { Scalar } from './nodes/Scalar';
+import type { YAMLMap } from './nodes/YAMLMap';
+import type { YAMLSeq } from './nodes/YAMLSeq';
+export type visitorFn<T> = (key: number | 'key' | 'value' | null, node: T, path: readonly (Document | Node | Pair)[]) => void | symbol | number | Node | Pair;
+export type visitor = visitorFn<unknown> | {
+    Alias?: visitorFn<Alias>;
+    Collection?: visitorFn<YAMLMap | YAMLSeq>;
+    Map?: visitorFn<YAMLMap>;
+    Node?: visitorFn<Alias | Scalar | YAMLMap | YAMLSeq>;
+    Pair?: visitorFn<Pair>;
+    Scalar?: visitorFn<Scalar>;
+    Seq?: visitorFn<YAMLSeq>;
+    Value?: visitorFn<Scalar | YAMLMap | YAMLSeq>;
+};
+export type asyncVisitorFn<T> = (key: number | 'key' | 'value' | null, node: T, path: readonly (Document | Node | Pair)[]) => void | symbol | number | Node | Pair | Promise<void | symbol | number | Node | Pair>;
+export type asyncVisitor = asyncVisitorFn<unknown> | {
+    Alias?: asyncVisitorFn<Alias>;
+    Collection?: asyncVisitorFn<YAMLMap | YAMLSeq>;
+    Map?: asyncVisitorFn<YAMLMap>;
+    Node?: asyncVisitorFn<Alias | Scalar | YAMLMap | YAMLSeq>;
+    Pair?: asyncVisitorFn<Pair>;
+    Scalar?: asyncVisitorFn<Scalar>;
+    Seq?: asyncVisitorFn<YAMLSeq>;
+    Value?: asyncVisitorFn<Scalar | YAMLMap | YAMLSeq>;
+};
+/**
+ * Apply a visitor to an AST node or document.
+ *
+ * Walks through the tree (depth-first) starting from `node`, calling a
+ * `visitor` function with three arguments:
+ *   - `key`: For sequence values and map `Pair`, the node's index in the
+ *     collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.
+ *     `null` for the root node.
+ *   - `node`: The current node.
+ *   - `path`: The ancestry of the current node.
+ *
+ * The return value of the visitor may be used to control the traversal:
+ *   - `undefined` (default): Do nothing and continue
+ *   - `visit.SKIP`: Do not visit the children of this node, continue with next
+ *     sibling
+ *   - `visit.BREAK`: Terminate traversal completely
+ *   - `visit.REMOVE`: Remove the current node, then continue with the next one
+ *   - `Node`: Replace the current node, then continue by visiting it
+ *   - `number`: While iterating the items of a sequence or map, set the index
+ *     of the next step. This is useful especially if the index of the current
+ *     node has changed.
+ *
+ * If `visitor` is a single function, it will be called with all values
+ * encountered in the tree, including e.g. `null` values. Alternatively,
+ * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,
+ * `Alias` and `Scalar` node. To define the same visitor function for more than
+ * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)
+ * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most
+ * specific defined one will be used for each node.
+ */
+export declare function visit(node: Node | Document | null, visitor: visitor): void;
+export declare namespace visit {
+    var BREAK: symbol;
+    var SKIP: symbol;
+    var REMOVE: symbol;
+}
+/**
+ * Apply an async visitor to an AST node or document.
+ *
+ * Walks through the tree (depth-first) starting from `node`, calling a
+ * `visitor` function with three arguments:
+ *   - `key`: For sequence values and map `Pair`, the node's index in the
+ *     collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.
+ *     `null` for the root node.
+ *   - `node`: The current node.
+ *   - `path`: The ancestry of the current node.
+ *
+ * The return value of the visitor may be used to control the traversal:
+ *   - `Promise`: Must resolve to one of the following values
+ *   - `undefined` (default): Do nothing and continue
+ *   - `visit.SKIP`: Do not visit the children of this node, continue with next
+ *     sibling
+ *   - `visit.BREAK`: Terminate traversal completely
+ *   - `visit.REMOVE`: Remove the current node, then continue with the next one
+ *   - `Node`: Replace the current node, then continue by visiting it
+ *   - `number`: While iterating the items of a sequence or map, set the index
+ *     of the next step. This is useful especially if the index of the current
+ *     node has changed.
+ *
+ * If `visitor` is a single function, it will be called with all values
+ * encountered in the tree, including e.g. `null` values. Alternatively,
+ * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,
+ * `Alias` and `Scalar` node. To define the same visitor function for more than
+ * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)
+ * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most
+ * specific defined one will be used for each node.
+ */
+export declare function visitAsync(node: Node | Document | null, visitor: asyncVisitor): Promise<void>;
+export declare namespace visitAsync {
+    var BREAK: symbol;
+    var SKIP: symbol;
+    var REMOVE: symbol;
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/dist/visit.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/dist/visit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/dist/visit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,236 @@
+'use strict';
+
+var identity = require('./nodes/identity.js');
+
+const BREAK = Symbol('break visit');
+const SKIP = Symbol('skip children');
+const REMOVE = Symbol('remove node');
+/**
+ * Apply a visitor to an AST node or document.
+ *
+ * Walks through the tree (depth-first) starting from `node`, calling a
+ * `visitor` function with three arguments:
+ *   - `key`: For sequence values and map `Pair`, the node's index in the
+ *     collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.
+ *     `null` for the root node.
+ *   - `node`: The current node.
+ *   - `path`: The ancestry of the current node.
+ *
+ * The return value of the visitor may be used to control the traversal:
+ *   - `undefined` (default): Do nothing and continue
+ *   - `visit.SKIP`: Do not visit the children of this node, continue with next
+ *     sibling
+ *   - `visit.BREAK`: Terminate traversal completely
+ *   - `visit.REMOVE`: Remove the current node, then continue with the next one
+ *   - `Node`: Replace the current node, then continue by visiting it
+ *   - `number`: While iterating the items of a sequence or map, set the index
+ *     of the next step. This is useful especially if the index of the current
+ *     node has changed.
+ *
+ * If `visitor` is a single function, it will be called with all values
+ * encountered in the tree, including e.g. `null` values. Alternatively,
+ * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,
+ * `Alias` and `Scalar` node. To define the same visitor function for more than
+ * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)
+ * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most
+ * specific defined one will be used for each node.
+ */
+function visit(node, visitor) {
+    const visitor_ = initVisitor(visitor);
+    if (identity.isDocument(node)) {
+        const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));
+        if (cd === REMOVE)
+            node.contents = null;
+    }
+    else
+        visit_(null, node, visitor_, Object.freeze([]));
+}
+// Without the `as symbol` casts, TS declares these in the `visit`
+// namespace using `var`, but then complains about that because
+// `unique symbol` must be `const`.
+/** Terminate visit traversal completely */
+visit.BREAK = BREAK;
+/** Do not visit the children of the current node */
+visit.SKIP = SKIP;
+/** Remove the current node */
+visit.REMOVE = REMOVE;
+function visit_(key, node, visitor, path) {
+    const ctrl = callVisitor(key, node, visitor, path);
+    if (identity.isNode(ctrl) || identity.isPair(ctrl)) {
+        replaceNode(key, path, ctrl);
+        return visit_(key, ctrl, visitor, path);
+    }
+    if (typeof ctrl !== 'symbol') {
+        if (identity.isCollection(node)) {
+            path = Object.freeze(path.concat(node));
+            for (let i = 0; i < node.items.length; ++i) {
+                const ci = visit_(i, node.items[i], visitor, path);
+                if (typeof ci === 'number')
+                    i = ci - 1;
+                else if (ci === BREAK)
+                    return BREAK;
+                else if (ci === REMOVE) {
+                    node.items.splice(i, 1);
+                    i -= 1;
+                }
+            }
+        }
+        else if (identity.isPair(node)) {
+            path = Object.freeze(path.concat(node));
+            const ck = visit_('key', node.key, visitor, path);
+            if (ck === BREAK)
+                return BREAK;
+            else if (ck === REMOVE)
+                node.key = null;
+            const cv = visit_('value', node.value, visitor, path);
+            if (cv === BREAK)
+                return BREAK;
+            else if (cv === REMOVE)
+                node.value = null;
+        }
+    }
+    return ctrl;
+}
+/**
+ * Apply an async visitor to an AST node or document.
+ *
+ * Walks through the tree (depth-first) starting from `node`, calling a
+ * `visitor` function with three arguments:
+ *   - `key`: For sequence values and map `Pair`, the node's index in the
+ *     collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.
+ *     `null` for the root node.
+ *   - `node`: The current node.
+ *   - `path`: The ancestry of the current node.
+ *
+ * The return value of the visitor may be used to control the traversal:
+ *   - `Promise`: Must resolve to one of the following values
+ *   - `undefined` (default): Do nothing and continue
+ *   - `visit.SKIP`: Do not visit the children of this node, continue with next
+ *     sibling
+ *   - `visit.BREAK`: Terminate traversal completely
+ *   - `visit.REMOVE`: Remove the current node, then continue with the next one
+ *   - `Node`: Replace the current node, then continue by visiting it
+ *   - `number`: While iterating the items of a sequence or map, set the index
+ *     of the next step. This is useful especially if the index of the current
+ *     node has changed.
+ *
+ * If `visitor` is a single function, it will be called with all values
+ * encountered in the tree, including e.g. `null` values. Alternatively,
+ * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,
+ * `Alias` and `Scalar` node. To define the same visitor function for more than
+ * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)
+ * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most
+ * specific defined one will be used for each node.
+ */
+async function visitAsync(node, visitor) {
+    const visitor_ = initVisitor(visitor);
+    if (identity.isDocument(node)) {
+        const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));
+        if (cd === REMOVE)
+            node.contents = null;
+    }
+    else
+        await visitAsync_(null, node, visitor_, Object.freeze([]));
+}
+// Without the `as symbol` casts, TS declares these in the `visit`
+// namespace using `var`, but then complains about that because
+// `unique symbol` must be `const`.
+/** Terminate visit traversal completely */
+visitAsync.BREAK = BREAK;
+/** Do not visit the children of the current node */
+visitAsync.SKIP = SKIP;
+/** Remove the current node */
+visitAsync.REMOVE = REMOVE;
+async function visitAsync_(key, node, visitor, path) {
+    const ctrl = await callVisitor(key, node, visitor, path);
+    if (identity.isNode(ctrl) || identity.isPair(ctrl)) {
+        replaceNode(key, path, ctrl);
+        return visitAsync_(key, ctrl, visitor, path);
+    }
+    if (typeof ctrl !== 'symbol') {
+        if (identity.isCollection(node)) {
+            path = Object.freeze(path.concat(node));
+            for (let i = 0; i < node.items.length; ++i) {
+                const ci = await visitAsync_(i, node.items[i], visitor, path);
+                if (typeof ci === 'number')
+                    i = ci - 1;
+                else if (ci === BREAK)
+                    return BREAK;
+                else if (ci === REMOVE) {
+                    node.items.splice(i, 1);
+                    i -= 1;
+                }
+            }
+        }
+        else if (identity.isPair(node)) {
+            path = Object.freeze(path.concat(node));
+            const ck = await visitAsync_('key', node.key, visitor, path);
+            if (ck === BREAK)
+                return BREAK;
+            else if (ck === REMOVE)
+                node.key = null;
+            const cv = await visitAsync_('value', node.value, visitor, path);
+            if (cv === BREAK)
+                return BREAK;
+            else if (cv === REMOVE)
+                node.value = null;
+        }
+    }
+    return ctrl;
+}
+function initVisitor(visitor) {
+    if (typeof visitor === 'object' &&
+        (visitor.Collection || visitor.Node || visitor.Value)) {
+        return Object.assign({
+            Alias: visitor.Node,
+            Map: visitor.Node,
+            Scalar: visitor.Node,
+            Seq: visitor.Node
+        }, visitor.Value && {
+            Map: visitor.Value,
+            Scalar: visitor.Value,
+            Seq: visitor.Value
+        }, visitor.Collection && {
+            Map: visitor.Collection,
+            Seq: visitor.Collection
+        }, visitor);
+    }
+    return visitor;
+}
+function callVisitor(key, node, visitor, path) {
+    if (typeof visitor === 'function')
+        return visitor(key, node, path);
+    if (identity.isMap(node))
+        return visitor.Map?.(key, node, path);
+    if (identity.isSeq(node))
+        return visitor.Seq?.(key, node, path);
+    if (identity.isPair(node))
+        return visitor.Pair?.(key, node, path);
+    if (identity.isScalar(node))
+        return visitor.Scalar?.(key, node, path);
+    if (identity.isAlias(node))
+        return visitor.Alias?.(key, node, path);
+    return undefined;
+}
+function replaceNode(key, path, node) {
+    const parent = path[path.length - 1];
+    if (identity.isCollection(parent)) {
+        parent.items[key] = node;
+    }
+    else if (identity.isPair(parent)) {
+        if (key === 'key')
+            parent.key = node;
+        else
+            parent.value = node;
+    }
+    else if (identity.isDocument(parent)) {
+        parent.contents = node;
+    }
+    else {
+        const pt = identity.isAlias(parent) ? 'alias' : 'scalar';
+        throw new Error(`Cannot replace node with ${pt} parent`);
+    }
+}
+
+exports.visit = visit;
+exports.visitAsync = visitAsync;
Index: frontend/node_modules/tailwindcss/node_modules/yaml/package.json
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,97 @@
+{
+  "name": "yaml",
+  "version": "2.9.0",
+  "license": "ISC",
+  "author": "Eemeli Aro <eemeli@gmail.com>",
+  "funding": "https://github.com/sponsors/eemeli",
+  "repository": "github:eemeli/yaml",
+  "description": "JavaScript parser and stringifier for YAML",
+  "keywords": [
+    "YAML",
+    "parser",
+    "stringifier"
+  ],
+  "homepage": "https://eemeli.org/yaml/",
+  "files": [
+    "browser/",
+    "dist/",
+    "util.js"
+  ],
+  "type": "commonjs",
+  "main": "./dist/index.js",
+  "bin": "./bin.mjs",
+  "browser": {
+    "./dist/index.js": "./browser/index.js",
+    "./dist/util.js": "./browser/dist/util.js",
+    "./util.js": "./browser/dist/util.js"
+  },
+  "exports": {
+    ".": {
+      "types": "./dist/index.d.ts",
+      "node": "./dist/index.js",
+      "default": "./browser/index.js"
+    },
+    "./package.json": "./package.json",
+    "./util": {
+      "types": "./dist/util.d.ts",
+      "node": "./dist/util.js",
+      "default": "./browser/dist/util.js"
+    }
+  },
+  "scripts": {
+    "build": "npm run build:node && npm run build:browser",
+    "build:browser": "rollup -c config/rollup.browser-config.mjs",
+    "build:node": "rollup -c config/rollup.node-config.mjs",
+    "clean": "git clean -fdxe node_modules",
+    "lint": "eslint config/ src/",
+    "prettier": "prettier --write .",
+    "prestart": "rollup --sourcemap -c config/rollup.node-config.mjs",
+    "start": "node --enable-source-maps -i -e 'YAML=require(\"./dist/index.js\");const{parse,parseDocument,parseAllDocuments}=YAML'",
+    "test": "jest --config config/jest.config.js",
+    "test:all": "npm test && npm run test:types && npm run test:dist && npm run test:dist:types",
+    "test:browsers": "cd playground && npm test",
+    "test:dist": "npm run build:node && jest --config config/jest.config.js",
+    "test:dist:types": "tsc --allowJs --moduleResolution node --noEmit --target es5 dist/index.js",
+    "test:types": "tsc --noEmit && tsc --noEmit -p tests/tsconfig.json",
+    "docs:install": "cd docs-slate && bundle install",
+    "predocs:deploy": "node docs/prepare-docs.mjs",
+    "docs:deploy": "cd docs-slate && ./deploy.sh",
+    "predocs": "node docs/prepare-docs.mjs",
+    "docs": "cd docs-slate && bundle exec middleman server",
+    "preversion": "npm test && npm run build",
+    "prepublishOnly": "npm run clean && npm test && npm run build"
+  },
+  "browserslist": "defaults, not ie 11",
+  "prettier": {
+    "arrowParens": "avoid",
+    "semi": false,
+    "singleQuote": true,
+    "trailingComma": "none"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.12.10",
+    "@babel/plugin-transform-typescript": "^7.12.17",
+    "@babel/preset-env": "^7.12.11",
+    "@eslint/js": "^9.9.1",
+    "@rollup/plugin-babel": "^6.0.3",
+    "@rollup/plugin-replace": "^6.0.3",
+    "@rollup/plugin-typescript": "^12.1.1",
+    "@types/jest": "^29.2.4",
+    "@types/node": "^20.11.20",
+    "babel-jest": "^29.0.1",
+    "eslint": "^9.9.1",
+    "eslint-config-prettier": "^10.1.8",
+    "fast-check": "^2.12.0",
+    "jest": "^29.0.1",
+    "jest-resolve": "^29.7.0",
+    "jest-ts-webcompat-resolver": "^1.0.0",
+    "prettier": "^3.0.2",
+    "rollup": "^4.12.0",
+    "tslib": "^2.8.1",
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.4.0"
+  },
+  "engines": {
+    "node": ">= 14.6"
+  }
+}
Index: frontend/node_modules/tailwindcss/node_modules/yaml/util.js
===================================================================
--- frontend/node_modules/tailwindcss/node_modules/yaml/util.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/node_modules/yaml/util.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+// Re-exporter for Node.js < 12.16.0
+module.exports = require('./dist/util.js')
Index: frontend/node_modules/tailwindcss/package.json
===================================================================
--- frontend/node_modules/tailwindcss/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/package.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,124 @@
+{
+  "name": "tailwindcss",
+  "version": "3.4.19",
+  "description": "A utility-first CSS framework for rapidly building custom user interfaces.",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "types": "types/index.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/tailwindlabs/tailwindcss.git#v3"
+  },
+  "bugs": "https://github.com/tailwindlabs/tailwindcss/issues",
+  "homepage": "https://tailwindcss.com",
+  "bin": {
+    "tailwind": "lib/cli.js",
+    "tailwindcss": "lib/cli.js"
+  },
+  "scripts": {
+    "prebuild": "npm run generate && rimraf lib",
+    "build": "swc src --out-dir lib --copy-files",
+    "postbuild": "esbuild lib/cli-peer-dependencies.js --bundle --platform=node --outfile=peers/index.js --define:process.env.CSS_TRANSFORMER_WASM=false",
+    "rebuild-fixtures": "npm run build && node -r @swc/register scripts/rebuildFixtures.js",
+    "style": "eslint .",
+    "pretest": "npm run generate",
+    "test": "jest",
+    "test:integrations": "npm run test --prefix ./integrations",
+    "install:integrations": "node scripts/install-integrations.js",
+    "generate:plugin-list": "node -r @swc/register scripts/create-plugin-list.js",
+    "generate:types": "node -r @swc/register scripts/generate-types.js",
+    "generate": "npm run generate:plugin-list && npm run generate:types",
+    "release-channel": "node ./scripts/release-channel.js",
+    "release-notes": "node ./scripts/release-notes.js",
+    "prepublishOnly": "npm install --force && npm run build"
+  },
+  "publishConfig": {
+    "provenance": true
+  },
+  "files": [
+    "src/*",
+    "cli/*",
+    "lib/*",
+    "peers/*",
+    "scripts/*.js",
+    "stubs/*",
+    "nesting/*",
+    "types/**/*",
+    "*.d.ts",
+    "*.css",
+    "*.js"
+  ],
+  "devDependencies": {
+    "@swc/cli": "0.1.62",
+    "@swc/core": "1.3.55",
+    "@swc/jest": "0.2.26",
+    "@swc/register": "0.1.10",
+    "autoprefixer": "^10.4.20",
+    "browserslist": "^4.24.0",
+    "concurrently": "^8.2.2",
+    "cssnano": "^6.1.2",
+    "esbuild": "^0.24.0",
+    "eslint": "^8.57.1",
+    "eslint-config-prettier": "^8.10.0",
+    "eslint-plugin-prettier": "^4.2.1",
+    "jest": "^29.7.0",
+    "jest-diff": "^29.7.0",
+    "lightningcss": "1.27.0",
+    "prettier": "^2.8.8",
+    "rimraf": "^5.0.10",
+    "source-map-js": "^1.2.1",
+    "turbo": "^1.13.4"
+  },
+  "dependencies": {
+    "@alloc/quick-lru": "^5.2.0",
+    "arg": "^5.0.2",
+    "chokidar": "^3.6.0",
+    "didyoumean": "^1.2.2",
+    "dlv": "^1.1.3",
+    "fast-glob": "^3.3.2",
+    "glob-parent": "^6.0.2",
+    "is-glob": "^4.0.3",
+    "jiti": "^1.21.7",
+    "lilconfig": "^3.1.3",
+    "micromatch": "^4.0.8",
+    "normalize-path": "^3.0.0",
+    "object-hash": "^3.0.0",
+    "picocolors": "^1.1.1",
+    "postcss": "^8.4.47",
+    "postcss-import": "^15.1.0",
+    "postcss-js": "^4.0.1",
+    "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0",
+    "postcss-nested": "^6.2.0",
+    "postcss-selector-parser": "^6.1.2",
+    "resolve": "^1.22.8",
+    "sucrase": "^3.35.0"
+  },
+  "browserslist": [
+    "> 1%",
+    "not edge <= 18",
+    "not ie 11",
+    "not op_mini all"
+  ],
+  "jest": {
+    "testTimeout": 30000,
+    "setupFilesAfterEnv": [
+      "<rootDir>/jest/customMatchers.js"
+    ],
+    "testPathIgnorePatterns": [
+      "/node_modules/",
+      "/integrations/",
+      "/standalone-cli/",
+      "\\.test\\.skip\\.js$"
+    ],
+    "transformIgnorePatterns": [
+      "node_modules/(?!lightningcss)"
+    ],
+    "transform": {
+      "\\.js$": "@swc/jest",
+      "\\.ts$": "@swc/jest"
+    }
+  },
+  "engines": {
+    "node": ">=14.0.0"
+  }
+}
Index: frontend/node_modules/tailwindcss/peers/index.js
===================================================================
--- frontend/node_modules/tailwindcss/peers/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/peers/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,97871 @@
+"use strict";
+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/picocolors/picocolors.js
+var require_picocolors = __commonJS({
+  "node_modules/picocolors/picocolors.js"(exports2, module2) {
+    var p = process || {};
+    var argv = p.argv || [];
+    var env = p.env || {};
+    var isColorSupported = !(!!env.NO_COLOR || argv.includes("--no-color")) && (!!env.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || (p.stdout || {}).isTTY && env.TERM !== "dumb" || !!env.CI);
+    var formatter = (open, close, replace = open) => (input) => {
+      let string = "" + input, index = string.indexOf(close, open.length);
+      return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
+    };
+    var replaceClose = (string, close, replace, index) => {
+      let result = "", cursor = 0;
+      do {
+        result += string.substring(cursor, index) + replace;
+        cursor = index + close.length;
+        index = string.indexOf(close, cursor);
+      } while (~index);
+      return result + string.substring(cursor);
+    };
+    var createColors = (enabled = isColorSupported) => {
+      let f = enabled ? formatter : () => String;
+      return {
+        isColorSupported: enabled,
+        reset: f("\x1B[0m", "\x1B[0m"),
+        bold: f("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m"),
+        dim: f("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m"),
+        italic: f("\x1B[3m", "\x1B[23m"),
+        underline: f("\x1B[4m", "\x1B[24m"),
+        inverse: f("\x1B[7m", "\x1B[27m"),
+        hidden: f("\x1B[8m", "\x1B[28m"),
+        strikethrough: f("\x1B[9m", "\x1B[29m"),
+        black: f("\x1B[30m", "\x1B[39m"),
+        red: f("\x1B[31m", "\x1B[39m"),
+        green: f("\x1B[32m", "\x1B[39m"),
+        yellow: f("\x1B[33m", "\x1B[39m"),
+        blue: f("\x1B[34m", "\x1B[39m"),
+        magenta: f("\x1B[35m", "\x1B[39m"),
+        cyan: f("\x1B[36m", "\x1B[39m"),
+        white: f("\x1B[37m", "\x1B[39m"),
+        gray: f("\x1B[90m", "\x1B[39m"),
+        bgBlack: f("\x1B[40m", "\x1B[49m"),
+        bgRed: f("\x1B[41m", "\x1B[49m"),
+        bgGreen: f("\x1B[42m", "\x1B[49m"),
+        bgYellow: f("\x1B[43m", "\x1B[49m"),
+        bgBlue: f("\x1B[44m", "\x1B[49m"),
+        bgMagenta: f("\x1B[45m", "\x1B[49m"),
+        bgCyan: f("\x1B[46m", "\x1B[49m"),
+        bgWhite: f("\x1B[47m", "\x1B[49m"),
+        blackBright: f("\x1B[90m", "\x1B[39m"),
+        redBright: f("\x1B[91m", "\x1B[39m"),
+        greenBright: f("\x1B[92m", "\x1B[39m"),
+        yellowBright: f("\x1B[93m", "\x1B[39m"),
+        blueBright: f("\x1B[94m", "\x1B[39m"),
+        magentaBright: f("\x1B[95m", "\x1B[39m"),
+        cyanBright: f("\x1B[96m", "\x1B[39m"),
+        whiteBright: f("\x1B[97m", "\x1B[39m"),
+        bgBlackBright: f("\x1B[100m", "\x1B[49m"),
+        bgRedBright: f("\x1B[101m", "\x1B[49m"),
+        bgGreenBright: f("\x1B[102m", "\x1B[49m"),
+        bgYellowBright: f("\x1B[103m", "\x1B[49m"),
+        bgBlueBright: f("\x1B[104m", "\x1B[49m"),
+        bgMagentaBright: f("\x1B[105m", "\x1B[49m"),
+        bgCyanBright: f("\x1B[106m", "\x1B[49m"),
+        bgWhiteBright: f("\x1B[107m", "\x1B[49m")
+      };
+    };
+    module2.exports = createColors();
+    module2.exports.createColors = createColors;
+  }
+});
+
+// node_modules/postcss/lib/tokenize.js
+var require_tokenize = __commonJS({
+  "node_modules/postcss/lib/tokenize.js"(exports2, module2) {
+    "use strict";
+    var SINGLE_QUOTE = "'".charCodeAt(0);
+    var DOUBLE_QUOTE = '"'.charCodeAt(0);
+    var BACKSLASH = "\\".charCodeAt(0);
+    var SLASH = "/".charCodeAt(0);
+    var NEWLINE = "\n".charCodeAt(0);
+    var SPACE = " ".charCodeAt(0);
+    var FEED = "\f".charCodeAt(0);
+    var TAB = "	".charCodeAt(0);
+    var CR = "\r".charCodeAt(0);
+    var OPEN_SQUARE = "[".charCodeAt(0);
+    var CLOSE_SQUARE = "]".charCodeAt(0);
+    var OPEN_PARENTHESES = "(".charCodeAt(0);
+    var CLOSE_PARENTHESES = ")".charCodeAt(0);
+    var OPEN_CURLY = "{".charCodeAt(0);
+    var CLOSE_CURLY = "}".charCodeAt(0);
+    var SEMICOLON = ";".charCodeAt(0);
+    var ASTERISK = "*".charCodeAt(0);
+    var COLON = ":".charCodeAt(0);
+    var AT = "@".charCodeAt(0);
+    var RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g;
+    var RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g;
+    var RE_BAD_BRACKET = /.[\r\n"'(/\\]/;
+    var RE_HEX_ESCAPE = /[\da-f]/i;
+    module2.exports = function tokenizer(input, options = {}) {
+      let css = input.css.valueOf();
+      let ignore = options.ignoreErrors;
+      let code, content, escape, next, quote;
+      let currentToken, escaped, escapePos, n, prev;
+      let length = css.length;
+      let pos = 0;
+      let buffer = [];
+      let returned = [];
+      function position() {
+        return pos;
+      }
+      function unclosed(what) {
+        throw input.error("Unclosed " + what, pos);
+      }
+      function endOfFile() {
+        return returned.length === 0 && pos >= length;
+      }
+      function nextToken(opts) {
+        if (returned.length) return returned.pop();
+        if (pos >= length) return;
+        let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;
+        code = css.charCodeAt(pos);
+        switch (code) {
+          case NEWLINE:
+          case SPACE:
+          case TAB:
+          case CR:
+          case FEED: {
+            next = pos;
+            do {
+              next += 1;
+              code = css.charCodeAt(next);
+            } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);
+            currentToken = ["space", css.slice(pos, next)];
+            pos = next - 1;
+            break;
+          }
+          case OPEN_SQUARE:
+          case CLOSE_SQUARE:
+          case OPEN_CURLY:
+          case CLOSE_CURLY:
+          case COLON:
+          case SEMICOLON:
+          case CLOSE_PARENTHESES: {
+            let controlChar = String.fromCharCode(code);
+            currentToken = [controlChar, controlChar, pos];
+            break;
+          }
+          case OPEN_PARENTHESES: {
+            prev = buffer.length ? buffer.pop()[1] : "";
+            n = css.charCodeAt(pos + 1);
+            if (prev === "url" && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {
+              next = pos;
+              do {
+                escaped = false;
+                next = css.indexOf(")", next + 1);
+                if (next === -1) {
+                  if (ignore || ignoreUnclosed) {
+                    next = pos;
+                    break;
+                  } else {
+                    unclosed("bracket");
+                  }
+                }
+                escapePos = next;
+                while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
+                  escapePos -= 1;
+                  escaped = !escaped;
+                }
+              } while (escaped);
+              currentToken = ["brackets", css.slice(pos, next + 1), pos, next];
+              pos = next;
+            } else {
+              next = css.indexOf(")", pos + 1);
+              content = css.slice(pos, next + 1);
+              if (next === -1 || RE_BAD_BRACKET.test(content)) {
+                currentToken = ["(", "(", pos];
+              } else {
+                currentToken = ["brackets", content, pos, next];
+                pos = next;
+              }
+            }
+            break;
+          }
+          case SINGLE_QUOTE:
+          case DOUBLE_QUOTE: {
+            quote = code === SINGLE_QUOTE ? "'" : '"';
+            next = pos;
+            do {
+              escaped = false;
+              next = css.indexOf(quote, next + 1);
+              if (next === -1) {
+                if (ignore || ignoreUnclosed) {
+                  next = pos + 1;
+                  break;
+                } else {
+                  unclosed("string");
+                }
+              }
+              escapePos = next;
+              while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
+                escapePos -= 1;
+                escaped = !escaped;
+              }
+            } while (escaped);
+            currentToken = ["string", css.slice(pos, next + 1), pos, next];
+            pos = next;
+            break;
+          }
+          case AT: {
+            RE_AT_END.lastIndex = pos + 1;
+            RE_AT_END.test(css);
+            if (RE_AT_END.lastIndex === 0) {
+              next = css.length - 1;
+            } else {
+              next = RE_AT_END.lastIndex - 2;
+            }
+            currentToken = ["at-word", css.slice(pos, next + 1), pos, next];
+            pos = next;
+            break;
+          }
+          case BACKSLASH: {
+            next = pos;
+            escape = true;
+            while (css.charCodeAt(next + 1) === BACKSLASH) {
+              next += 1;
+              escape = !escape;
+            }
+            code = css.charCodeAt(next + 1);
+            if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {
+              next += 1;
+              if (RE_HEX_ESCAPE.test(css.charAt(next))) {
+                while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {
+                  next += 1;
+                }
+                if (css.charCodeAt(next + 1) === SPACE) {
+                  next += 1;
+                }
+              }
+            }
+            currentToken = ["word", css.slice(pos, next + 1), pos, next];
+            pos = next;
+            break;
+          }
+          default: {
+            if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {
+              next = css.indexOf("*/", pos + 2) + 1;
+              if (next === 0) {
+                if (ignore || ignoreUnclosed) {
+                  next = css.length;
+                } else {
+                  unclosed("comment");
+                }
+              }
+              currentToken = ["comment", css.slice(pos, next + 1), pos, next];
+              pos = next;
+            } else {
+              RE_WORD_END.lastIndex = pos + 1;
+              RE_WORD_END.test(css);
+              if (RE_WORD_END.lastIndex === 0) {
+                next = css.length - 1;
+              } else {
+                next = RE_WORD_END.lastIndex - 2;
+              }
+              currentToken = ["word", css.slice(pos, next + 1), pos, next];
+              buffer.push(currentToken);
+              pos = next;
+            }
+            break;
+          }
+        }
+        pos++;
+        return currentToken;
+      }
+      function back(token) {
+        returned.push(token);
+      }
+      return {
+        back,
+        endOfFile,
+        nextToken,
+        position
+      };
+    };
+  }
+});
+
+// node_modules/postcss/lib/terminal-highlight.js
+var require_terminal_highlight = __commonJS({
+  "node_modules/postcss/lib/terminal-highlight.js"(exports2, module2) {
+    "use strict";
+    var pico = require_picocolors();
+    var tokenizer = require_tokenize();
+    var Input;
+    function registerInput(dependant) {
+      Input = dependant;
+    }
+    var HIGHLIGHT_THEME = {
+      ";": pico.yellow,
+      ":": pico.yellow,
+      "(": pico.cyan,
+      ")": pico.cyan,
+      "[": pico.yellow,
+      "]": pico.yellow,
+      "{": pico.yellow,
+      "}": pico.yellow,
+      "at-word": pico.cyan,
+      "brackets": pico.cyan,
+      "call": pico.cyan,
+      "class": pico.yellow,
+      "comment": pico.gray,
+      "hash": pico.magenta,
+      "string": pico.green
+    };
+    function getTokenType([type, value], processor) {
+      if (type === "word") {
+        if (value[0] === ".") {
+          return "class";
+        }
+        if (value[0] === "#") {
+          return "hash";
+        }
+      }
+      if (!processor.endOfFile()) {
+        let next = processor.nextToken();
+        processor.back(next);
+        if (next[0] === "brackets" || next[0] === "(") return "call";
+      }
+      return type;
+    }
+    function terminalHighlight(css) {
+      let processor = tokenizer(new Input(css), { ignoreErrors: true });
+      let result = "";
+      while (!processor.endOfFile()) {
+        let token = processor.nextToken();
+        let color = HIGHLIGHT_THEME[getTokenType(token, processor)];
+        if (color) {
+          result += token[1].split(/\r?\n/).map((i) => color(i)).join("\n");
+        } else {
+          result += token[1];
+        }
+      }
+      return result;
+    }
+    terminalHighlight.registerInput = registerInput;
+    module2.exports = terminalHighlight;
+  }
+});
+
+// node_modules/postcss/lib/css-syntax-error.js
+var require_css_syntax_error = __commonJS({
+  "node_modules/postcss/lib/css-syntax-error.js"(exports2, module2) {
+    "use strict";
+    var pico = require_picocolors();
+    var terminalHighlight = require_terminal_highlight();
+    var CssSyntaxError = class _CssSyntaxError extends Error {
+      constructor(message, line, column, source, file, plugin) {
+        super(message);
+        this.name = "CssSyntaxError";
+        this.reason = message;
+        if (file) {
+          this.file = file;
+        }
+        if (source) {
+          this.source = source;
+        }
+        if (plugin) {
+          this.plugin = plugin;
+        }
+        if (typeof line !== "undefined" && typeof column !== "undefined") {
+          if (typeof line === "number") {
+            this.line = line;
+            this.column = column;
+          } else {
+            this.line = line.line;
+            this.column = line.column;
+            this.endLine = column.line;
+            this.endColumn = column.column;
+          }
+        }
+        this.setMessage();
+        if (Error.captureStackTrace) {
+          Error.captureStackTrace(this, _CssSyntaxError);
+        }
+      }
+      setMessage() {
+        this.message = this.plugin ? this.plugin + ": " : "";
+        this.message += this.file ? this.file : "<css input>";
+        if (typeof this.line !== "undefined") {
+          this.message += ":" + this.line + ":" + this.column;
+        }
+        this.message += ": " + this.reason;
+      }
+      showSourceCode(color) {
+        if (!this.source) return "";
+        let css = this.source;
+        if (color == null) color = pico.isColorSupported;
+        let aside = (text) => text;
+        let mark = (text) => text;
+        let highlight = (text) => text;
+        if (color) {
+          let { bold, gray, red } = pico.createColors(true);
+          mark = (text) => bold(red(text));
+          aside = (text) => gray(text);
+          if (terminalHighlight) {
+            highlight = (text) => terminalHighlight(text);
+          }
+        }
+        let lines = css.split(/\r?\n/);
+        let start = Math.max(this.line - 3, 0);
+        let end = Math.min(this.line + 2, lines.length);
+        let maxWidth = String(end).length;
+        return lines.slice(start, end).map((line, index) => {
+          let number = start + 1 + index;
+          let gutter = " " + (" " + number).slice(-maxWidth) + " | ";
+          if (number === this.line) {
+            if (line.length > 160) {
+              let padding = 20;
+              let subLineStart = Math.max(0, this.column - padding);
+              let subLineEnd = Math.max(
+                this.column + padding,
+                this.endColumn + padding
+              );
+              let subLine = line.slice(subLineStart, subLineEnd);
+              let spacing2 = aside(gutter.replace(/\d/g, " ")) + line.slice(0, Math.min(this.column - 1, padding - 1)).replace(/[^\t]/g, " ");
+              return mark(">") + aside(gutter) + highlight(subLine) + "\n " + spacing2 + mark("^");
+            }
+            let spacing = aside(gutter.replace(/\d/g, " ")) + line.slice(0, this.column - 1).replace(/[^\t]/g, " ");
+            return mark(">") + aside(gutter) + highlight(line) + "\n " + spacing + mark("^");
+          }
+          return " " + aside(gutter) + highlight(line);
+        }).join("\n");
+      }
+      toString() {
+        let code = this.showSourceCode();
+        if (code) {
+          code = "\n\n" + code + "\n";
+        }
+        return this.name + ": " + this.message + code;
+      }
+    };
+    module2.exports = CssSyntaxError;
+    CssSyntaxError.default = CssSyntaxError;
+  }
+});
+
+// node_modules/postcss/lib/stringifier.js
+var require_stringifier = __commonJS({
+  "node_modules/postcss/lib/stringifier.js"(exports2, module2) {
+    "use strict";
+    var DEFAULT_RAW = {
+      after: "\n",
+      beforeClose: "\n",
+      beforeComment: "\n",
+      beforeDecl: "\n",
+      beforeOpen: " ",
+      beforeRule: "\n",
+      colon: ": ",
+      commentLeft: " ",
+      commentRight: " ",
+      emptyBody: "",
+      indent: "    ",
+      semicolon: false
+    };
+    function capitalize(str) {
+      return str[0].toUpperCase() + str.slice(1);
+    }
+    var Stringifier = class {
+      constructor(builder) {
+        this.builder = builder;
+      }
+      atrule(node, semicolon) {
+        let name = "@" + node.name;
+        let params = node.params ? this.rawValue(node, "params") : "";
+        if (typeof node.raws.afterName !== "undefined") {
+          name += node.raws.afterName;
+        } else if (params) {
+          name += " ";
+        }
+        if (node.nodes) {
+          this.block(node, name + params);
+        } else {
+          let end = (node.raws.between || "") + (semicolon ? ";" : "");
+          this.builder(name + params + end, node);
+        }
+      }
+      beforeAfter(node, detect) {
+        let value;
+        if (node.type === "decl") {
+          value = this.raw(node, null, "beforeDecl");
+        } else if (node.type === "comment") {
+          value = this.raw(node, null, "beforeComment");
+        } else if (detect === "before") {
+          value = this.raw(node, null, "beforeRule");
+        } else {
+          value = this.raw(node, null, "beforeClose");
+        }
+        let buf = node.parent;
+        let depth = 0;
+        while (buf && buf.type !== "root") {
+          depth += 1;
+          buf = buf.parent;
+        }
+        if (value.includes("\n")) {
+          let indent = this.raw(node, null, "indent");
+          if (indent.length) {
+            for (let step = 0; step < depth; step++) value += indent;
+          }
+        }
+        return value;
+      }
+      block(node, start) {
+        let between = this.raw(node, "between", "beforeOpen");
+        this.builder(start + between + "{", node, "start");
+        let after;
+        if (node.nodes && node.nodes.length) {
+          this.body(node);
+          after = this.raw(node, "after");
+        } else {
+          after = this.raw(node, "after", "emptyBody");
+        }
+        if (after) this.builder(after);
+        this.builder("}", node, "end");
+      }
+      body(node) {
+        let last = node.nodes.length - 1;
+        while (last > 0) {
+          if (node.nodes[last].type !== "comment") break;
+          last -= 1;
+        }
+        let semicolon = this.raw(node, "semicolon");
+        for (let i = 0; i < node.nodes.length; i++) {
+          let child = node.nodes[i];
+          let before = this.raw(child, "before");
+          if (before) this.builder(before);
+          this.stringify(child, last !== i || semicolon);
+        }
+      }
+      comment(node) {
+        let left = this.raw(node, "left", "commentLeft");
+        let right = this.raw(node, "right", "commentRight");
+        this.builder("/*" + left + node.text + right + "*/", node);
+      }
+      decl(node, semicolon) {
+        let between = this.raw(node, "between", "colon");
+        let string = node.prop + between + this.rawValue(node, "value");
+        if (node.important) {
+          string += node.raws.important || " !important";
+        }
+        if (semicolon) string += ";";
+        this.builder(string, node);
+      }
+      document(node) {
+        this.body(node);
+      }
+      raw(node, own, detect) {
+        let value;
+        if (!detect) detect = own;
+        if (own) {
+          value = node.raws[own];
+          if (typeof value !== "undefined") return value;
+        }
+        let parent = node.parent;
+        if (detect === "before") {
+          if (!parent || parent.type === "root" && parent.first === node) {
+            return "";
+          }
+          if (parent && parent.type === "document") {
+            return "";
+          }
+        }
+        if (!parent) return DEFAULT_RAW[detect];
+        let root = node.root();
+        if (!root.rawCache) root.rawCache = {};
+        if (typeof root.rawCache[detect] !== "undefined") {
+          return root.rawCache[detect];
+        }
+        if (detect === "before" || detect === "after") {
+          return this.beforeAfter(node, detect);
+        } else {
+          let method = "raw" + capitalize(detect);
+          if (this[method]) {
+            value = this[method](root, node);
+          } else {
+            root.walk((i) => {
+              value = i.raws[own];
+              if (typeof value !== "undefined") return false;
+            });
+          }
+        }
+        if (typeof value === "undefined") value = DEFAULT_RAW[detect];
+        root.rawCache[detect] = value;
+        return value;
+      }
+      rawBeforeClose(root) {
+        let value;
+        root.walk((i) => {
+          if (i.nodes && i.nodes.length > 0) {
+            if (typeof i.raws.after !== "undefined") {
+              value = i.raws.after;
+              if (value.includes("\n")) {
+                value = value.replace(/[^\n]+$/, "");
+              }
+              return false;
+            }
+          }
+        });
+        if (value) value = value.replace(/\S/g, "");
+        return value;
+      }
+      rawBeforeComment(root, node) {
+        let value;
+        root.walkComments((i) => {
+          if (typeof i.raws.before !== "undefined") {
+            value = i.raws.before;
+            if (value.includes("\n")) {
+              value = value.replace(/[^\n]+$/, "");
+            }
+            return false;
+          }
+        });
+        if (typeof value === "undefined") {
+          value = this.raw(node, null, "beforeDecl");
+        } else if (value) {
+          value = value.replace(/\S/g, "");
+        }
+        return value;
+      }
+      rawBeforeDecl(root, node) {
+        let value;
+        root.walkDecls((i) => {
+          if (typeof i.raws.before !== "undefined") {
+            value = i.raws.before;
+            if (value.includes("\n")) {
+              value = value.replace(/[^\n]+$/, "");
+            }
+            return false;
+          }
+        });
+        if (typeof value === "undefined") {
+          value = this.raw(node, null, "beforeRule");
+        } else if (value) {
+          value = value.replace(/\S/g, "");
+        }
+        return value;
+      }
+      rawBeforeOpen(root) {
+        let value;
+        root.walk((i) => {
+          if (i.type !== "decl") {
+            value = i.raws.between;
+            if (typeof value !== "undefined") return false;
+          }
+        });
+        return value;
+      }
+      rawBeforeRule(root) {
+        let value;
+        root.walk((i) => {
+          if (i.nodes && (i.parent !== root || root.first !== i)) {
+            if (typeof i.raws.before !== "undefined") {
+              value = i.raws.before;
+              if (value.includes("\n")) {
+                value = value.replace(/[^\n]+$/, "");
+              }
+              return false;
+            }
+          }
+        });
+        if (value) value = value.replace(/\S/g, "");
+        return value;
+      }
+      rawColon(root) {
+        let value;
+        root.walkDecls((i) => {
+          if (typeof i.raws.between !== "undefined") {
+            value = i.raws.between.replace(/[^\s:]/g, "");
+            return false;
+          }
+        });
+        return value;
+      }
+      rawEmptyBody(root) {
+        let value;
+        root.walk((i) => {
+          if (i.nodes && i.nodes.length === 0) {
+            value = i.raws.after;
+            if (typeof value !== "undefined") return false;
+          }
+        });
+        return value;
+      }
+      rawIndent(root) {
+        if (root.raws.indent) return root.raws.indent;
+        let value;
+        root.walk((i) => {
+          let p = i.parent;
+          if (p && p !== root && p.parent && p.parent === root) {
+            if (typeof i.raws.before !== "undefined") {
+              let parts = i.raws.before.split("\n");
+              value = parts[parts.length - 1];
+              value = value.replace(/\S/g, "");
+              return false;
+            }
+          }
+        });
+        return value;
+      }
+      rawSemicolon(root) {
+        let value;
+        root.walk((i) => {
+          if (i.nodes && i.nodes.length && i.last.type === "decl") {
+            value = i.raws.semicolon;
+            if (typeof value !== "undefined") return false;
+          }
+        });
+        return value;
+      }
+      rawValue(node, prop) {
+        let value = node[prop];
+        let raw = node.raws[prop];
+        if (raw && raw.value === value) {
+          return raw.raw;
+        }
+        return value;
+      }
+      root(node) {
+        this.body(node);
+        if (node.raws.after) this.builder(node.raws.after);
+      }
+      rule(node) {
+        this.block(node, this.rawValue(node, "selector"));
+        if (node.raws.ownSemicolon) {
+          this.builder(node.raws.ownSemicolon, node, "end");
+        }
+      }
+      stringify(node, semicolon) {
+        if (!this[node.type]) {
+          throw new Error(
+            "Unknown AST node type " + node.type + ". Maybe you need to change PostCSS stringifier."
+          );
+        }
+        this[node.type](node, semicolon);
+      }
+    };
+    module2.exports = Stringifier;
+    Stringifier.default = Stringifier;
+  }
+});
+
+// node_modules/postcss/lib/stringify.js
+var require_stringify = __commonJS({
+  "node_modules/postcss/lib/stringify.js"(exports2, module2) {
+    "use strict";
+    var Stringifier = require_stringifier();
+    function stringify(node, builder) {
+      let str = new Stringifier(builder);
+      str.stringify(node);
+    }
+    module2.exports = stringify;
+    stringify.default = stringify;
+  }
+});
+
+// node_modules/postcss/lib/symbols.js
+var require_symbols = __commonJS({
+  "node_modules/postcss/lib/symbols.js"(exports2, module2) {
+    "use strict";
+    module2.exports.isClean = Symbol("isClean");
+    module2.exports.my = Symbol("my");
+  }
+});
+
+// node_modules/postcss/lib/node.js
+var require_node = __commonJS({
+  "node_modules/postcss/lib/node.js"(exports2, module2) {
+    "use strict";
+    var CssSyntaxError = require_css_syntax_error();
+    var Stringifier = require_stringifier();
+    var stringify = require_stringify();
+    var { isClean, my } = require_symbols();
+    function cloneNode(obj, parent) {
+      let cloned = new obj.constructor();
+      for (let i in obj) {
+        if (!Object.prototype.hasOwnProperty.call(obj, i)) {
+          continue;
+        }
+        if (i === "proxyCache") continue;
+        let value = obj[i];
+        let type = typeof value;
+        if (i === "parent" && type === "object") {
+          if (parent) cloned[i] = parent;
+        } else if (i === "source") {
+          cloned[i] = value;
+        } else if (Array.isArray(value)) {
+          cloned[i] = value.map((j) => cloneNode(j, cloned));
+        } else {
+          if (type === "object" && value !== null) value = cloneNode(value);
+          cloned[i] = value;
+        }
+      }
+      return cloned;
+    }
+    var Node = class {
+      constructor(defaults = {}) {
+        this.raws = {};
+        this[isClean] = false;
+        this[my] = true;
+        for (let name in defaults) {
+          if (name === "nodes") {
+            this.nodes = [];
+            for (let node of defaults[name]) {
+              if (typeof node.clone === "function") {
+                this.append(node.clone());
+              } else {
+                this.append(node);
+              }
+            }
+          } else {
+            this[name] = defaults[name];
+          }
+        }
+      }
+      addToError(error) {
+        error.postcssNode = this;
+        if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) {
+          let s = this.source;
+          error.stack = error.stack.replace(
+            /\n\s{4}at /,
+            `$&${s.input.from}:${s.start.line}:${s.start.column}$&`
+          );
+        }
+        return error;
+      }
+      after(add) {
+        this.parent.insertAfter(this, add);
+        return this;
+      }
+      assign(overrides = {}) {
+        for (let name in overrides) {
+          this[name] = overrides[name];
+        }
+        return this;
+      }
+      before(add) {
+        this.parent.insertBefore(this, add);
+        return this;
+      }
+      cleanRaws(keepBetween) {
+        delete this.raws.before;
+        delete this.raws.after;
+        if (!keepBetween) delete this.raws.between;
+      }
+      clone(overrides = {}) {
+        let cloned = cloneNode(this);
+        for (let name in overrides) {
+          cloned[name] = overrides[name];
+        }
+        return cloned;
+      }
+      cloneAfter(overrides = {}) {
+        let cloned = this.clone(overrides);
+        this.parent.insertAfter(this, cloned);
+        return cloned;
+      }
+      cloneBefore(overrides = {}) {
+        let cloned = this.clone(overrides);
+        this.parent.insertBefore(this, cloned);
+        return cloned;
+      }
+      error(message, opts = {}) {
+        if (this.source) {
+          let { end, start } = this.rangeBy(opts);
+          return this.source.input.error(
+            message,
+            { column: start.column, line: start.line },
+            { column: end.column, line: end.line },
+            opts
+          );
+        }
+        return new CssSyntaxError(message);
+      }
+      getProxyProcessor() {
+        return {
+          get(node, prop) {
+            if (prop === "proxyOf") {
+              return node;
+            } else if (prop === "root") {
+              return () => node.root().toProxy();
+            } else {
+              return node[prop];
+            }
+          },
+          set(node, prop, value) {
+            if (node[prop] === value) return true;
+            node[prop] = value;
+            if (prop === "prop" || prop === "value" || prop === "name" || prop === "params" || prop === "important" || /* c8 ignore next */
+            prop === "text") {
+              node.markDirty();
+            }
+            return true;
+          }
+        };
+      }
+      /* c8 ignore next 3 */
+      markClean() {
+        this[isClean] = true;
+      }
+      markDirty() {
+        if (this[isClean]) {
+          this[isClean] = false;
+          let next = this;
+          while (next = next.parent) {
+            next[isClean] = false;
+          }
+        }
+      }
+      next() {
+        if (!this.parent) return void 0;
+        let index = this.parent.index(this);
+        return this.parent.nodes[index + 1];
+      }
+      positionBy(opts, stringRepresentation) {
+        let pos = this.source.start;
+        if (opts.index) {
+          pos = this.positionInside(opts.index, stringRepresentation);
+        } else if (opts.word) {
+          stringRepresentation = this.toString();
+          let index = stringRepresentation.indexOf(opts.word);
+          if (index !== -1) pos = this.positionInside(index, stringRepresentation);
+        }
+        return pos;
+      }
+      positionInside(index, stringRepresentation) {
+        let string = stringRepresentation || this.toString();
+        let column = this.source.start.column;
+        let line = this.source.start.line;
+        for (let i = 0; i < index; i++) {
+          if (string[i] === "\n") {
+            column = 1;
+            line += 1;
+          } else {
+            column += 1;
+          }
+        }
+        return { column, line };
+      }
+      prev() {
+        if (!this.parent) return void 0;
+        let index = this.parent.index(this);
+        return this.parent.nodes[index - 1];
+      }
+      rangeBy(opts) {
+        let start = {
+          column: this.source.start.column,
+          line: this.source.start.line
+        };
+        let end = this.source.end ? {
+          column: this.source.end.column + 1,
+          line: this.source.end.line
+        } : {
+          column: start.column + 1,
+          line: start.line
+        };
+        if (opts.word) {
+          let stringRepresentation = this.toString();
+          let index = stringRepresentation.indexOf(opts.word);
+          if (index !== -1) {
+            start = this.positionInside(index, stringRepresentation);
+            end = this.positionInside(
+              index + opts.word.length,
+              stringRepresentation
+            );
+          }
+        } else {
+          if (opts.start) {
+            start = {
+              column: opts.start.column,
+              line: opts.start.line
+            };
+          } else if (opts.index) {
+            start = this.positionInside(opts.index);
+          }
+          if (opts.end) {
+            end = {
+              column: opts.end.column,
+              line: opts.end.line
+            };
+          } else if (typeof opts.endIndex === "number") {
+            end = this.positionInside(opts.endIndex);
+          } else if (opts.index) {
+            end = this.positionInside(opts.index + 1);
+          }
+        }
+        if (end.line < start.line || end.line === start.line && end.column <= start.column) {
+          end = { column: start.column + 1, line: start.line };
+        }
+        return { end, start };
+      }
+      raw(prop, defaultType) {
+        let str = new Stringifier();
+        return str.raw(this, prop, defaultType);
+      }
+      remove() {
+        if (this.parent) {
+          this.parent.removeChild(this);
+        }
+        this.parent = void 0;
+        return this;
+      }
+      replaceWith(...nodes) {
+        if (this.parent) {
+          let bookmark = this;
+          let foundSelf = false;
+          for (let node of nodes) {
+            if (node === this) {
+              foundSelf = true;
+            } else if (foundSelf) {
+              this.parent.insertAfter(bookmark, node);
+              bookmark = node;
+            } else {
+              this.parent.insertBefore(bookmark, node);
+            }
+          }
+          if (!foundSelf) {
+            this.remove();
+          }
+        }
+        return this;
+      }
+      root() {
+        let result = this;
+        while (result.parent && result.parent.type !== "document") {
+          result = result.parent;
+        }
+        return result;
+      }
+      toJSON(_, inputs) {
+        let fixed = {};
+        let emitInputs = inputs == null;
+        inputs = inputs || /* @__PURE__ */ new Map();
+        let inputsNextIndex = 0;
+        for (let name in this) {
+          if (!Object.prototype.hasOwnProperty.call(this, name)) {
+            continue;
+          }
+          if (name === "parent" || name === "proxyCache") continue;
+          let value = this[name];
+          if (Array.isArray(value)) {
+            fixed[name] = value.map((i) => {
+              if (typeof i === "object" && i.toJSON) {
+                return i.toJSON(null, inputs);
+              } else {
+                return i;
+              }
+            });
+          } else if (typeof value === "object" && value.toJSON) {
+            fixed[name] = value.toJSON(null, inputs);
+          } else if (name === "source") {
+            let inputId = inputs.get(value.input);
+            if (inputId == null) {
+              inputId = inputsNextIndex;
+              inputs.set(value.input, inputsNextIndex);
+              inputsNextIndex++;
+            }
+            fixed[name] = {
+              end: value.end,
+              inputId,
+              start: value.start
+            };
+          } else {
+            fixed[name] = value;
+          }
+        }
+        if (emitInputs) {
+          fixed.inputs = [...inputs.keys()].map((input) => input.toJSON());
+        }
+        return fixed;
+      }
+      toProxy() {
+        if (!this.proxyCache) {
+          this.proxyCache = new Proxy(this, this.getProxyProcessor());
+        }
+        return this.proxyCache;
+      }
+      toString(stringifier = stringify) {
+        if (stringifier.stringify) stringifier = stringifier.stringify;
+        let result = "";
+        stringifier(this, (i) => {
+          result += i;
+        });
+        return result;
+      }
+      warn(result, text, opts) {
+        let data = { node: this };
+        for (let i in opts) data[i] = opts[i];
+        return result.warn(text, data);
+      }
+      get proxyOf() {
+        return this;
+      }
+    };
+    module2.exports = Node;
+    Node.default = Node;
+  }
+});
+
+// node_modules/postcss/lib/comment.js
+var require_comment = __commonJS({
+  "node_modules/postcss/lib/comment.js"(exports2, module2) {
+    "use strict";
+    var Node = require_node();
+    var Comment = class extends Node {
+      constructor(defaults) {
+        super(defaults);
+        this.type = "comment";
+      }
+    };
+    module2.exports = Comment;
+    Comment.default = Comment;
+  }
+});
+
+// node_modules/postcss/lib/declaration.js
+var require_declaration = __commonJS({
+  "node_modules/postcss/lib/declaration.js"(exports2, module2) {
+    "use strict";
+    var Node = require_node();
+    var Declaration = class extends Node {
+      constructor(defaults) {
+        if (defaults && typeof defaults.value !== "undefined" && typeof defaults.value !== "string") {
+          defaults = { ...defaults, value: String(defaults.value) };
+        }
+        super(defaults);
+        this.type = "decl";
+      }
+      get variable() {
+        return this.prop.startsWith("--") || this.prop[0] === "$";
+      }
+    };
+    module2.exports = Declaration;
+    Declaration.default = Declaration;
+  }
+});
+
+// node_modules/postcss/lib/container.js
+var require_container = __commonJS({
+  "node_modules/postcss/lib/container.js"(exports2, module2) {
+    "use strict";
+    var Comment = require_comment();
+    var Declaration = require_declaration();
+    var Node = require_node();
+    var { isClean, my } = require_symbols();
+    var AtRule;
+    var parse;
+    var Root;
+    var Rule;
+    function cleanSource(nodes) {
+      return nodes.map((i) => {
+        if (i.nodes) i.nodes = cleanSource(i.nodes);
+        delete i.source;
+        return i;
+      });
+    }
+    function markTreeDirty(node) {
+      node[isClean] = false;
+      if (node.proxyOf.nodes) {
+        for (let i of node.proxyOf.nodes) {
+          markTreeDirty(i);
+        }
+      }
+    }
+    var Container = class _Container extends Node {
+      append(...children) {
+        for (let child of children) {
+          let nodes = this.normalize(child, this.last);
+          for (let node of nodes) this.proxyOf.nodes.push(node);
+        }
+        this.markDirty();
+        return this;
+      }
+      cleanRaws(keepBetween) {
+        super.cleanRaws(keepBetween);
+        if (this.nodes) {
+          for (let node of this.nodes) node.cleanRaws(keepBetween);
+        }
+      }
+      each(callback) {
+        if (!this.proxyOf.nodes) return void 0;
+        let iterator = this.getIterator();
+        let index, result;
+        while (this.indexes[iterator] < this.proxyOf.nodes.length) {
+          index = this.indexes[iterator];
+          result = callback(this.proxyOf.nodes[index], index);
+          if (result === false) break;
+          this.indexes[iterator] += 1;
+        }
+        delete this.indexes[iterator];
+        return result;
+      }
+      every(condition) {
+        return this.nodes.every(condition);
+      }
+      getIterator() {
+        if (!this.lastEach) this.lastEach = 0;
+        if (!this.indexes) this.indexes = {};
+        this.lastEach += 1;
+        let iterator = this.lastEach;
+        this.indexes[iterator] = 0;
+        return iterator;
+      }
+      getProxyProcessor() {
+        return {
+          get(node, prop) {
+            if (prop === "proxyOf") {
+              return node;
+            } else if (!node[prop]) {
+              return node[prop];
+            } else if (prop === "each" || typeof prop === "string" && prop.startsWith("walk")) {
+              return (...args) => {
+                return node[prop](
+                  ...args.map((i) => {
+                    if (typeof i === "function") {
+                      return (child, index) => i(child.toProxy(), index);
+                    } else {
+                      return i;
+                    }
+                  })
+                );
+              };
+            } else if (prop === "every" || prop === "some") {
+              return (cb) => {
+                return node[prop](
+                  (child, ...other) => cb(child.toProxy(), ...other)
+                );
+              };
+            } else if (prop === "root") {
+              return () => node.root().toProxy();
+            } else if (prop === "nodes") {
+              return node.nodes.map((i) => i.toProxy());
+            } else if (prop === "first" || prop === "last") {
+              return node[prop].toProxy();
+            } else {
+              return node[prop];
+            }
+          },
+          set(node, prop, value) {
+            if (node[prop] === value) return true;
+            node[prop] = value;
+            if (prop === "name" || prop === "params" || prop === "selector") {
+              node.markDirty();
+            }
+            return true;
+          }
+        };
+      }
+      index(child) {
+        if (typeof child === "number") return child;
+        if (child.proxyOf) child = child.proxyOf;
+        return this.proxyOf.nodes.indexOf(child);
+      }
+      insertAfter(exist, add) {
+        let existIndex = this.index(exist);
+        let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();
+        existIndex = this.index(exist);
+        for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node);
+        let index;
+        for (let id in this.indexes) {
+          index = this.indexes[id];
+          if (existIndex < index) {
+            this.indexes[id] = index + nodes.length;
+          }
+        }
+        this.markDirty();
+        return this;
+      }
+      insertBefore(exist, add) {
+        let existIndex = this.index(exist);
+        let type = existIndex === 0 ? "prepend" : false;
+        let nodes = this.normalize(
+          add,
+          this.proxyOf.nodes[existIndex],
+          type
+        ).reverse();
+        existIndex = this.index(exist);
+        for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node);
+        let index;
+        for (let id in this.indexes) {
+          index = this.indexes[id];
+          if (existIndex <= index) {
+            this.indexes[id] = index + nodes.length;
+          }
+        }
+        this.markDirty();
+        return this;
+      }
+      normalize(nodes, sample) {
+        if (typeof nodes === "string") {
+          nodes = cleanSource(parse(nodes).nodes);
+        } else if (typeof nodes === "undefined") {
+          nodes = [];
+        } else if (Array.isArray(nodes)) {
+          nodes = nodes.slice(0);
+          for (let i of nodes) {
+            if (i.parent) i.parent.removeChild(i, "ignore");
+          }
+        } else if (nodes.type === "root" && this.type !== "document") {
+          nodes = nodes.nodes.slice(0);
+          for (let i of nodes) {
+            if (i.parent) i.parent.removeChild(i, "ignore");
+          }
+        } else if (nodes.type) {
+          nodes = [nodes];
+        } else if (nodes.prop) {
+          if (typeof nodes.value === "undefined") {
+            throw new Error("Value field is missed in node creation");
+          } else if (typeof nodes.value !== "string") {
+            nodes.value = String(nodes.value);
+          }
+          nodes = [new Declaration(nodes)];
+        } else if (nodes.selector || nodes.selectors) {
+          nodes = [new Rule(nodes)];
+        } else if (nodes.name) {
+          nodes = [new AtRule(nodes)];
+        } else if (nodes.text) {
+          nodes = [new Comment(nodes)];
+        } else {
+          throw new Error("Unknown node type in node creation");
+        }
+        let processed = nodes.map((i) => {
+          if (!i[my]) _Container.rebuild(i);
+          i = i.proxyOf;
+          if (i.parent) i.parent.removeChild(i);
+          if (i[isClean]) markTreeDirty(i);
+          if (!i.raws) i.raws = {};
+          if (typeof i.raws.before === "undefined") {
+            if (sample && typeof sample.raws.before !== "undefined") {
+              i.raws.before = sample.raws.before.replace(/\S/g, "");
+            }
+          }
+          i.parent = this.proxyOf;
+          return i;
+        });
+        return processed;
+      }
+      prepend(...children) {
+        children = children.reverse();
+        for (let child of children) {
+          let nodes = this.normalize(child, this.first, "prepend").reverse();
+          for (let node of nodes) this.proxyOf.nodes.unshift(node);
+          for (let id in this.indexes) {
+            this.indexes[id] = this.indexes[id] + nodes.length;
+          }
+        }
+        this.markDirty();
+        return this;
+      }
+      push(child) {
+        child.parent = this;
+        this.proxyOf.nodes.push(child);
+        return this;
+      }
+      removeAll() {
+        for (let node of this.proxyOf.nodes) node.parent = void 0;
+        this.proxyOf.nodes = [];
+        this.markDirty();
+        return this;
+      }
+      removeChild(child) {
+        child = this.index(child);
+        this.proxyOf.nodes[child].parent = void 0;
+        this.proxyOf.nodes.splice(child, 1);
+        let index;
+        for (let id in this.indexes) {
+          index = this.indexes[id];
+          if (index >= child) {
+            this.indexes[id] = index - 1;
+          }
+        }
+        this.markDirty();
+        return this;
+      }
+      replaceValues(pattern, opts, callback) {
+        if (!callback) {
+          callback = opts;
+          opts = {};
+        }
+        this.walkDecls((decl) => {
+          if (opts.props && !opts.props.includes(decl.prop)) return;
+          if (opts.fast && !decl.value.includes(opts.fast)) return;
+          decl.value = decl.value.replace(pattern, callback);
+        });
+        this.markDirty();
+        return this;
+      }
+      some(condition) {
+        return this.nodes.some(condition);
+      }
+      walk(callback) {
+        return this.each((child, i) => {
+          let result;
+          try {
+            result = callback(child, i);
+          } catch (e) {
+            throw child.addToError(e);
+          }
+          if (result !== false && child.walk) {
+            result = child.walk(callback);
+          }
+          return result;
+        });
+      }
+      walkAtRules(name, callback) {
+        if (!callback) {
+          callback = name;
+          return this.walk((child, i) => {
+            if (child.type === "atrule") {
+              return callback(child, i);
+            }
+          });
+        }
+        if (name instanceof RegExp) {
+          return this.walk((child, i) => {
+            if (child.type === "atrule" && name.test(child.name)) {
+              return callback(child, i);
+            }
+          });
+        }
+        return this.walk((child, i) => {
+          if (child.type === "atrule" && child.name === name) {
+            return callback(child, i);
+          }
+        });
+      }
+      walkComments(callback) {
+        return this.walk((child, i) => {
+          if (child.type === "comment") {
+            return callback(child, i);
+          }
+        });
+      }
+      walkDecls(prop, callback) {
+        if (!callback) {
+          callback = prop;
+          return this.walk((child, i) => {
+            if (child.type === "decl") {
+              return callback(child, i);
+            }
+          });
+        }
+        if (prop instanceof RegExp) {
+          return this.walk((child, i) => {
+            if (child.type === "decl" && prop.test(child.prop)) {
+              return callback(child, i);
+            }
+          });
+        }
+        return this.walk((child, i) => {
+          if (child.type === "decl" && child.prop === prop) {
+            return callback(child, i);
+          }
+        });
+      }
+      walkRules(selector, callback) {
+        if (!callback) {
+          callback = selector;
+          return this.walk((child, i) => {
+            if (child.type === "rule") {
+              return callback(child, i);
+            }
+          });
+        }
+        if (selector instanceof RegExp) {
+          return this.walk((child, i) => {
+            if (child.type === "rule" && selector.test(child.selector)) {
+              return callback(child, i);
+            }
+          });
+        }
+        return this.walk((child, i) => {
+          if (child.type === "rule" && child.selector === selector) {
+            return callback(child, i);
+          }
+        });
+      }
+      get first() {
+        if (!this.proxyOf.nodes) return void 0;
+        return this.proxyOf.nodes[0];
+      }
+      get last() {
+        if (!this.proxyOf.nodes) return void 0;
+        return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];
+      }
+    };
+    Container.registerParse = (dependant) => {
+      parse = dependant;
+    };
+    Container.registerRule = (dependant) => {
+      Rule = dependant;
+    };
+    Container.registerAtRule = (dependant) => {
+      AtRule = dependant;
+    };
+    Container.registerRoot = (dependant) => {
+      Root = dependant;
+    };
+    module2.exports = Container;
+    Container.default = Container;
+    Container.rebuild = (node) => {
+      if (node.type === "atrule") {
+        Object.setPrototypeOf(node, AtRule.prototype);
+      } else if (node.type === "rule") {
+        Object.setPrototypeOf(node, Rule.prototype);
+      } else if (node.type === "decl") {
+        Object.setPrototypeOf(node, Declaration.prototype);
+      } else if (node.type === "comment") {
+        Object.setPrototypeOf(node, Comment.prototype);
+      } else if (node.type === "root") {
+        Object.setPrototypeOf(node, Root.prototype);
+      }
+      node[my] = true;
+      if (node.nodes) {
+        node.nodes.forEach((child) => {
+          Container.rebuild(child);
+        });
+      }
+    };
+  }
+});
+
+// node_modules/postcss/lib/at-rule.js
+var require_at_rule = __commonJS({
+  "node_modules/postcss/lib/at-rule.js"(exports2, module2) {
+    "use strict";
+    var Container = require_container();
+    var AtRule = class extends Container {
+      constructor(defaults) {
+        super(defaults);
+        this.type = "atrule";
+      }
+      append(...children) {
+        if (!this.proxyOf.nodes) this.nodes = [];
+        return super.append(...children);
+      }
+      prepend(...children) {
+        if (!this.proxyOf.nodes) this.nodes = [];
+        return super.prepend(...children);
+      }
+    };
+    module2.exports = AtRule;
+    AtRule.default = AtRule;
+    Container.registerAtRule(AtRule);
+  }
+});
+
+// node_modules/postcss/lib/document.js
+var require_document = __commonJS({
+  "node_modules/postcss/lib/document.js"(exports2, module2) {
+    "use strict";
+    var Container = require_container();
+    var LazyResult;
+    var Processor;
+    var Document = class extends Container {
+      constructor(defaults) {
+        super({ type: "document", ...defaults });
+        if (!this.nodes) {
+          this.nodes = [];
+        }
+      }
+      toResult(opts = {}) {
+        let lazy = new LazyResult(new Processor(), this, opts);
+        return lazy.stringify();
+      }
+    };
+    Document.registerLazyResult = (dependant) => {
+      LazyResult = dependant;
+    };
+    Document.registerProcessor = (dependant) => {
+      Processor = dependant;
+    };
+    module2.exports = Document;
+    Document.default = Document;
+  }
+});
+
+// node_modules/nanoid/non-secure/index.cjs
+var require_non_secure = __commonJS({
+  "node_modules/nanoid/non-secure/index.cjs"(exports2, module2) {
+    var urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
+    var customAlphabet = (alphabet, defaultSize = 21) => {
+      return (size = defaultSize) => {
+        let id = "";
+        let i = size;
+        while (i--) {
+          id += alphabet[Math.random() * alphabet.length | 0];
+        }
+        return id;
+      };
+    };
+    var nanoid = (size = 21) => {
+      let id = "";
+      let i = size;
+      while (i--) {
+        id += urlAlphabet[Math.random() * 64 | 0];
+      }
+      return id;
+    };
+    module2.exports = { nanoid, customAlphabet };
+  }
+});
+
+// node_modules/source-map-js/lib/base64.js
+var require_base64 = __commonJS({
+  "node_modules/source-map-js/lib/base64.js"(exports2) {
+    var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
+    exports2.encode = function(number) {
+      if (0 <= number && number < intToCharMap.length) {
+        return intToCharMap[number];
+      }
+      throw new TypeError("Must be between 0 and 63: " + number);
+    };
+    exports2.decode = function(charCode) {
+      var bigA = 65;
+      var bigZ = 90;
+      var littleA = 97;
+      var littleZ = 122;
+      var zero = 48;
+      var nine = 57;
+      var plus = 43;
+      var slash = 47;
+      var littleOffset = 26;
+      var numberOffset = 52;
+      if (bigA <= charCode && charCode <= bigZ) {
+        return charCode - bigA;
+      }
+      if (littleA <= charCode && charCode <= littleZ) {
+        return charCode - littleA + littleOffset;
+      }
+      if (zero <= charCode && charCode <= nine) {
+        return charCode - zero + numberOffset;
+      }
+      if (charCode == plus) {
+        return 62;
+      }
+      if (charCode == slash) {
+        return 63;
+      }
+      return -1;
+    };
+  }
+});
+
+// node_modules/source-map-js/lib/base64-vlq.js
+var require_base64_vlq = __commonJS({
+  "node_modules/source-map-js/lib/base64-vlq.js"(exports2) {
+    var base64 = require_base64();
+    var VLQ_BASE_SHIFT = 5;
+    var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+    var VLQ_BASE_MASK = VLQ_BASE - 1;
+    var VLQ_CONTINUATION_BIT = VLQ_BASE;
+    function toVLQSigned(aValue) {
+      return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0;
+    }
+    function fromVLQSigned(aValue) {
+      var isNegative = (aValue & 1) === 1;
+      var shifted = aValue >> 1;
+      return isNegative ? -shifted : shifted;
+    }
+    exports2.encode = function base64VLQ_encode(aValue) {
+      var encoded = "";
+      var digit;
+      var vlq = toVLQSigned(aValue);
+      do {
+        digit = vlq & VLQ_BASE_MASK;
+        vlq >>>= VLQ_BASE_SHIFT;
+        if (vlq > 0) {
+          digit |= VLQ_CONTINUATION_BIT;
+        }
+        encoded += base64.encode(digit);
+      } while (vlq > 0);
+      return encoded;
+    };
+    exports2.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+      var strLen = aStr.length;
+      var result = 0;
+      var shift = 0;
+      var continuation, digit;
+      do {
+        if (aIndex >= strLen) {
+          throw new Error("Expected more digits in base 64 VLQ value.");
+        }
+        digit = base64.decode(aStr.charCodeAt(aIndex++));
+        if (digit === -1) {
+          throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+        }
+        continuation = !!(digit & VLQ_CONTINUATION_BIT);
+        digit &= VLQ_BASE_MASK;
+        result = result + (digit << shift);
+        shift += VLQ_BASE_SHIFT;
+      } while (continuation);
+      aOutParam.value = fromVLQSigned(result);
+      aOutParam.rest = aIndex;
+    };
+  }
+});
+
+// node_modules/source-map-js/lib/util.js
+var require_util = __commonJS({
+  "node_modules/source-map-js/lib/util.js"(exports2) {
+    function getArg(aArgs, aName, aDefaultValue) {
+      if (aName in aArgs) {
+        return aArgs[aName];
+      } else if (arguments.length === 3) {
+        return aDefaultValue;
+      } else {
+        throw new Error('"' + aName + '" is a required argument.');
+      }
+    }
+    exports2.getArg = getArg;
+    var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
+    var dataUrlRegexp = /^data:.+\,.+$/;
+    function urlParse(aUrl) {
+      var match = aUrl.match(urlRegexp);
+      if (!match) {
+        return null;
+      }
+      return {
+        scheme: match[1],
+        auth: match[2],
+        host: match[3],
+        port: match[4],
+        path: match[5]
+      };
+    }
+    exports2.urlParse = urlParse;
+    function urlGenerate(aParsedUrl) {
+      var url = "";
+      if (aParsedUrl.scheme) {
+        url += aParsedUrl.scheme + ":";
+      }
+      url += "//";
+      if (aParsedUrl.auth) {
+        url += aParsedUrl.auth + "@";
+      }
+      if (aParsedUrl.host) {
+        url += aParsedUrl.host;
+      }
+      if (aParsedUrl.port) {
+        url += ":" + aParsedUrl.port;
+      }
+      if (aParsedUrl.path) {
+        url += aParsedUrl.path;
+      }
+      return url;
+    }
+    exports2.urlGenerate = urlGenerate;
+    var MAX_CACHED_INPUTS = 32;
+    function lruMemoize(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 = exports2.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;
+    });
+    exports2.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;
+    }
+    exports2.join = join;
+    exports2.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);
+    }
+    exports2.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;
+    }
+    exports2.toSetString = supportsNullProto ? identity : toSetString;
+    function fromSetString(aStr) {
+      if (isProtoString(aStr)) {
+        return aStr.slice(1);
+      }
+      return aStr;
+    }
+    exports2.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);
+    }
+    exports2.compareByOriginalPositions = compareByOriginalPositions;
+    function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {
+      var cmp;
+      cmp = mappingA.originalLine - mappingB.originalLine;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.originalColumn - mappingB.originalColumn;
+      if (cmp !== 0 || onlyCompareOriginal) {
+        return cmp;
+      }
+      cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.generatedLine - mappingB.generatedLine;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      return strcmp(mappingA.name, mappingB.name);
+    }
+    exports2.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
+    function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+      var cmp = mappingA.generatedLine - mappingB.generatedLine;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+      if (cmp !== 0 || onlyCompareGenerated) {
+        return cmp;
+      }
+      cmp = strcmp(mappingA.source, mappingB.source);
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.originalLine - mappingB.originalLine;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.originalColumn - mappingB.originalColumn;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      return strcmp(mappingA.name, mappingB.name);
+    }
+    exports2.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+    function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {
+      var cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+      if (cmp !== 0 || onlyCompareGenerated) {
+        return cmp;
+      }
+      cmp = strcmp(mappingA.source, mappingB.source);
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.originalLine - mappingB.originalLine;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.originalColumn - mappingB.originalColumn;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      return strcmp(mappingA.name, mappingB.name);
+    }
+    exports2.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
+    function strcmp(aStr1, aStr2) {
+      if (aStr1 === aStr2) {
+        return 0;
+      }
+      if (aStr1 === null) {
+        return 1;
+      }
+      if (aStr2 === null) {
+        return -1;
+      }
+      if (aStr1 > aStr2) {
+        return 1;
+      }
+      return -1;
+    }
+    function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+      var cmp = mappingA.generatedLine - mappingB.generatedLine;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = strcmp(mappingA.source, mappingB.source);
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.originalLine - mappingB.originalLine;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      cmp = mappingA.originalColumn - mappingB.originalColumn;
+      if (cmp !== 0) {
+        return cmp;
+      }
+      return strcmp(mappingA.name, mappingB.name);
+    }
+    exports2.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+    function parseSourceMapInput(str) {
+      return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ""));
+    }
+    exports2.parseSourceMapInput = parseSourceMapInput;
+    function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
+      sourceURL = sourceURL || "";
+      if (sourceRoot) {
+        if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") {
+          sourceRoot += "/";
+        }
+        sourceURL = sourceRoot + sourceURL;
+      }
+      if (sourceMapURL) {
+        var parsed = urlParse(sourceMapURL);
+        if (!parsed) {
+          throw new Error("sourceMapURL could not be parsed");
+        }
+        if (parsed.path) {
+          var index = parsed.path.lastIndexOf("/");
+          if (index >= 0) {
+            parsed.path = parsed.path.substring(0, index + 1);
+          }
+        }
+        sourceURL = join(urlGenerate(parsed), sourceURL);
+      }
+      return normalize(sourceURL);
+    }
+    exports2.computeSourceURL = computeSourceURL;
+  }
+});
+
+// node_modules/source-map-js/lib/array-set.js
+var require_array_set = __commonJS({
+  "node_modules/source-map-js/lib/array-set.js"(exports2) {
+    var 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();
+    };
+    exports2.ArraySet = ArraySet;
+  }
+});
+
+// node_modules/source-map-js/lib/mapping-list.js
+var require_mapping_list = __commonJS({
+  "node_modules/source-map-js/lib/mapping-list.js"(exports2) {
+    var 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;
+    };
+    exports2.MappingList = MappingList;
+  }
+});
+
+// node_modules/source-map-js/lib/source-map-generator.js
+var require_source_map_generator = __commonJS({
+  "node_modules/source-map-js/lib/source-map-generator.js"(exports2) {
+    var base64VLQ = require_base64_vlq();
+    var 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._ignoreInvalidMapping = util.getArg(aArgs, "ignoreInvalidMapping", false);
+      this._sources = new ArraySet();
+      this._names = new ArraySet();
+      this._mappings = new MappingList();
+      this._sourcesContents = null;
+    }
+    SourceMapGenerator.prototype._version = 3;
+    SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) {
+      var sourceRoot = aSourceMapConsumer.sourceRoot;
+      var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, {
+        file: aSourceMapConsumer.file,
+        sourceRoot
+      }));
+      aSourceMapConsumer.eachMapping(function(mapping) {
+        var newMapping = {
+          generated: {
+            line: mapping.generatedLine,
+            column: mapping.generatedColumn
+          }
+        };
+        if (mapping.source != null) {
+          newMapping.source = mapping.source;
+          if (sourceRoot != null) {
+            newMapping.source = 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) {
+        if (this._validateMapping(generated, original, source, name) === false) {
+          return;
+        }
+      }
+      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") {
+        var message = "original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.";
+        if (this._ignoreInvalidMapping) {
+          if (typeof console !== "undefined" && console.warn) {
+            console.warn(message);
+          }
+          return false;
+        } else {
+          throw new Error(message);
+        }
+      }
+      if (aGenerated && "line" in aGenerated && "column" in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) {
+        return;
+      } else if (aGenerated && "line" in aGenerated && "column" in aGenerated && aOriginal && "line" in aOriginal && "column" in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) {
+        return;
+      } else {
+        var message = "Invalid mapping: " + JSON.stringify({
+          generated: aGenerated,
+          source: aSource,
+          original: aOriginal,
+          name: aName
+        });
+        if (this._ignoreInvalidMapping) {
+          if (typeof console !== "undefined" && console.warn) {
+            console.warn(message);
+          }
+          return false;
+        } else {
+          throw new Error(message);
+        }
+      }
+    };
+    SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() {
+      var previousGeneratedColumn = 0;
+      var previousGeneratedLine = 1;
+      var previousOriginalColumn = 0;
+      var previousOriginalLine = 0;
+      var previousName = 0;
+      var previousSource = 0;
+      var result = "";
+      var next;
+      var mapping;
+      var nameIdx;
+      var sourceIdx;
+      var mappings = this._mappings.toArray();
+      for (var 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());
+    };
+    exports2.SourceMapGenerator = SourceMapGenerator;
+  }
+});
+
+// node_modules/source-map-js/lib/binary-search.js
+var require_binary_search = __commonJS({
+  "node_modules/source-map-js/lib/binary-search.js"(exports2) {
+    exports2.GREATEST_LOWER_BOUND = 1;
+    exports2.LEAST_UPPER_BOUND = 2;
+    function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+      var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+      var cmp = aCompare(aNeedle, aHaystack[mid], true);
+      if (cmp === 0) {
+        return mid;
+      } else if (cmp > 0) {
+        if (aHigh - mid > 1) {
+          return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+        }
+        if (aBias == exports2.LEAST_UPPER_BOUND) {
+          return aHigh < aHaystack.length ? aHigh : -1;
+        } else {
+          return mid;
+        }
+      } else {
+        if (mid - aLow > 1) {
+          return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+        }
+        if (aBias == exports2.LEAST_UPPER_BOUND) {
+          return mid;
+        } else {
+          return aLow < 0 ? -1 : aLow;
+        }
+      }
+    }
+    exports2.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+      if (aHaystack.length === 0) {
+        return -1;
+      }
+      var index = recursiveSearch(
+        -1,
+        aHaystack.length,
+        aNeedle,
+        aHaystack,
+        aCompare,
+        aBias || exports2.GREATEST_LOWER_BOUND
+      );
+      if (index < 0) {
+        return -1;
+      }
+      while (index - 1 >= 0) {
+        if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+          break;
+        }
+        --index;
+      }
+      return index;
+    };
+  }
+});
+
+// node_modules/source-map-js/lib/quick-sort.js
+var require_quick_sort = __commonJS({
+  "node_modules/source-map-js/lib/quick-sort.js"(exports2) {
+    function SortTemplate(comparator) {
+      function swap(ary, x, y) {
+        var temp = ary[x];
+        ary[x] = ary[y];
+        ary[y] = temp;
+      }
+      function randomIntInRange(low, high) {
+        return Math.round(low + Math.random() * (high - low));
+      }
+      function doQuickSort(ary, comparator2, p, r) {
+        if (p < r) {
+          var pivotIndex = randomIntInRange(p, r);
+          var i = p - 1;
+          swap(ary, pivotIndex, r);
+          var pivot = ary[r];
+          for (var j = p; j < r; j++) {
+            if (comparator2(ary[j], pivot, false) <= 0) {
+              i += 1;
+              swap(ary, i, j);
+            }
+          }
+          swap(ary, i + 1, j);
+          var q = i + 1;
+          doQuickSort(ary, comparator2, p, q - 1);
+          doQuickSort(ary, comparator2, q + 1, r);
+        }
+      }
+      return doQuickSort;
+    }
+    function cloneSort(comparator) {
+      let template = SortTemplate.toString();
+      let templateFn = new Function(`return ${template}`)();
+      return templateFn(comparator);
+    }
+    var sortCache = /* @__PURE__ */ new WeakMap();
+    exports2.quickSort = function(ary, comparator, start = 0) {
+      let doQuickSort = sortCache.get(comparator);
+      if (doQuickSort === void 0) {
+        doQuickSort = cloneSort(comparator);
+        sortCache.set(comparator, doQuickSort);
+      }
+      doQuickSort(ary, comparator, start, ary.length - 1);
+    };
+  }
+});
+
+// node_modules/source-map-js/lib/source-map-consumer.js
+var require_source_map_consumer = __commonJS({
+  "node_modules/source-map-js/lib/source-map-consumer.js"(exports2) {
+    var util = require_util();
+    var binarySearch = require_binary_search();
+    var ArraySet = require_array_set().ArraySet;
+    var base64VLQ = require_base64_vlq();
+    var quickSort = require_quick_sort().quickSort;
+    function SourceMapConsumer(aSourceMap, aSourceMapURL) {
+      var sourceMap = aSourceMap;
+      if (typeof aSourceMap === "string") {
+        sourceMap = util.parseSourceMapInput(aSourceMap);
+      }
+      return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
+    }
+    SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
+      return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
+    };
+    SourceMapConsumer.prototype._version = 3;
+    SourceMapConsumer.prototype.__generatedMappings = null;
+    Object.defineProperty(SourceMapConsumer.prototype, "_generatedMappings", {
+      configurable: true,
+      enumerable: true,
+      get: function() {
+        if (!this.__generatedMappings) {
+          this._parseMappings(this._mappings, this.sourceRoot);
+        }
+        return this.__generatedMappings;
+      }
+    });
+    SourceMapConsumer.prototype.__originalMappings = null;
+    Object.defineProperty(SourceMapConsumer.prototype, "_originalMappings", {
+      configurable: true,
+      enumerable: true,
+      get: function() {
+        if (!this.__originalMappings) {
+          this._parseMappings(this._mappings, this.sourceRoot);
+        }
+        return this.__originalMappings;
+      }
+    });
+    SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+      var c = aStr.charAt(index);
+      return c === ";" || c === ",";
+    };
+    SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+      throw new Error("Subclasses must implement _parseMappings");
+    };
+    SourceMapConsumer.GENERATED_ORDER = 1;
+    SourceMapConsumer.ORIGINAL_ORDER = 2;
+    SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+    SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+    SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+      var context = aContext || null;
+      var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+      var mappings;
+      switch (order) {
+        case SourceMapConsumer.GENERATED_ORDER:
+          mappings = this._generatedMappings;
+          break;
+        case SourceMapConsumer.ORIGINAL_ORDER:
+          mappings = this._originalMappings;
+          break;
+        default:
+          throw new Error("Unknown order of iteration.");
+      }
+      var sourceRoot = this.sourceRoot;
+      var boundCallback = aCallback.bind(context);
+      var names = this._names;
+      var sources = this._sources;
+      var sourceMapURL = this._sourceMapURL;
+      for (var i = 0, n = mappings.length; i < n; i++) {
+        var mapping = mappings[i];
+        var source = mapping.source === null ? null : sources.at(mapping.source);
+        if (source !== null) {
+          source = util.computeSourceURL(sourceRoot, source, sourceMapURL);
+        }
+        boundCallback({
+          source,
+          generatedLine: mapping.generatedLine,
+          generatedColumn: mapping.generatedColumn,
+          originalLine: mapping.originalLine,
+          originalColumn: mapping.originalColumn,
+          name: mapping.name === null ? null : names.at(mapping.name)
+        });
+      }
+    };
+    SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+      var line = util.getArg(aArgs, "line");
+      var needle = {
+        source: util.getArg(aArgs, "source"),
+        originalLine: line,
+        originalColumn: util.getArg(aArgs, "column", 0)
+      };
+      needle.source = this._findSourceIndex(needle.source);
+      if (needle.source < 0) {
+        return [];
+      }
+      var mappings = [];
+      var index = this._findMapping(
+        needle,
+        this._originalMappings,
+        "originalLine",
+        "originalColumn",
+        util.compareByOriginalPositions,
+        binarySearch.LEAST_UPPER_BOUND
+      );
+      if (index >= 0) {
+        var mapping = this._originalMappings[index];
+        if (aArgs.column === void 0) {
+          var originalLine = mapping.originalLine;
+          while (mapping && mapping.originalLine === originalLine) {
+            mappings.push({
+              line: util.getArg(mapping, "generatedLine", null),
+              column: util.getArg(mapping, "generatedColumn", null),
+              lastColumn: util.getArg(mapping, "lastGeneratedColumn", null)
+            });
+            mapping = this._originalMappings[++index];
+          }
+        } else {
+          var originalColumn = mapping.originalColumn;
+          while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) {
+            mappings.push({
+              line: util.getArg(mapping, "generatedLine", null),
+              column: util.getArg(mapping, "generatedColumn", null),
+              lastColumn: util.getArg(mapping, "lastGeneratedColumn", null)
+            });
+            mapping = this._originalMappings[++index];
+          }
+        }
+      }
+      return mappings;
+    };
+    exports2.SourceMapConsumer = SourceMapConsumer;
+    function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
+      var sourceMap = aSourceMap;
+      if (typeof aSourceMap === "string") {
+        sourceMap = util.parseSourceMapInput(aSourceMap);
+      }
+      var version = util.getArg(sourceMap, "version");
+      var sources = util.getArg(sourceMap, "sources");
+      var names = util.getArg(sourceMap, "names", []);
+      var sourceRoot = util.getArg(sourceMap, "sourceRoot", null);
+      var sourcesContent = util.getArg(sourceMap, "sourcesContent", null);
+      var mappings = util.getArg(sourceMap, "mappings");
+      var file = util.getArg(sourceMap, "file", null);
+      if (version != this._version) {
+        throw new Error("Unsupported version: " + version);
+      }
+      if (sourceRoot) {
+        sourceRoot = util.normalize(sourceRoot);
+      }
+      sources = sources.map(String).map(util.normalize).map(function(source) {
+        return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source;
+      });
+      this._names = ArraySet.fromArray(names.map(String), true);
+      this._sources = ArraySet.fromArray(sources, true);
+      this._absoluteSources = this._sources.toArray().map(function(s) {
+        return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
+      });
+      this.sourceRoot = sourceRoot;
+      this.sourcesContent = sourcesContent;
+      this._mappings = mappings;
+      this._sourceMapURL = aSourceMapURL;
+      this.file = file;
+    }
+    BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+    BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+    BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {
+      var relativeSource = aSource;
+      if (this.sourceRoot != null) {
+        relativeSource = util.relative(this.sourceRoot, relativeSource);
+      }
+      if (this._sources.has(relativeSource)) {
+        return this._sources.indexOf(relativeSource);
+      }
+      var i;
+      for (i = 0; i < this._absoluteSources.length; ++i) {
+        if (this._absoluteSources[i] == aSource) {
+          return i;
+        }
+      }
+      return -1;
+    };
+    BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {
+      var smc = Object.create(BasicSourceMapConsumer.prototype);
+      var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+      var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+      smc.sourceRoot = aSourceMap._sourceRoot;
+      smc.sourcesContent = aSourceMap._generateSourcesContent(
+        smc._sources.toArray(),
+        smc.sourceRoot
+      );
+      smc.file = aSourceMap._file;
+      smc._sourceMapURL = aSourceMapURL;
+      smc._absoluteSources = smc._sources.toArray().map(function(s) {
+        return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);
+      });
+      var generatedMappings = aSourceMap._mappings.toArray().slice();
+      var destGeneratedMappings = smc.__generatedMappings = [];
+      var destOriginalMappings = smc.__originalMappings = [];
+      for (var i = 0, length = generatedMappings.length; i < length; i++) {
+        var srcMapping = generatedMappings[i];
+        var destMapping = new Mapping();
+        destMapping.generatedLine = srcMapping.generatedLine;
+        destMapping.generatedColumn = srcMapping.generatedColumn;
+        if (srcMapping.source) {
+          destMapping.source = sources.indexOf(srcMapping.source);
+          destMapping.originalLine = srcMapping.originalLine;
+          destMapping.originalColumn = srcMapping.originalColumn;
+          if (srcMapping.name) {
+            destMapping.name = names.indexOf(srcMapping.name);
+          }
+          destOriginalMappings.push(destMapping);
+        }
+        destGeneratedMappings.push(destMapping);
+      }
+      quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+      return smc;
+    };
+    BasicSourceMapConsumer.prototype._version = 3;
+    Object.defineProperty(BasicSourceMapConsumer.prototype, "sources", {
+      get: function() {
+        return this._absoluteSources.slice();
+      }
+    });
+    function Mapping() {
+      this.generatedLine = 0;
+      this.generatedColumn = 0;
+      this.source = null;
+      this.originalLine = null;
+      this.originalColumn = null;
+      this.name = null;
+    }
+    var compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine;
+    function sortGenerated(array, start) {
+      let l = array.length;
+      let n = array.length - start;
+      if (n <= 1) {
+        return;
+      } else if (n == 2) {
+        let a = array[start];
+        let b = array[start + 1];
+        if (compareGenerated(a, b) > 0) {
+          array[start] = b;
+          array[start + 1] = a;
+        }
+      } else if (n < 20) {
+        for (let i = start; i < l; i++) {
+          for (let j = i; j > start; j--) {
+            let a = array[j - 1];
+            let b = array[j];
+            if (compareGenerated(a, b) <= 0) {
+              break;
+            }
+            array[j - 1] = b;
+            array[j] = a;
+          }
+        }
+      } else {
+        quickSort(array, compareGenerated, start);
+      }
+    }
+    BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+      var generatedLine = 1;
+      var previousGeneratedColumn = 0;
+      var previousOriginalLine = 0;
+      var previousOriginalColumn = 0;
+      var previousSource = 0;
+      var previousName = 0;
+      var length = aStr.length;
+      var index = 0;
+      var cachedSegments = {};
+      var temp = {};
+      var originalMappings = [];
+      var generatedMappings = [];
+      var mapping, str, segment, end, value;
+      let subarrayStart = 0;
+      while (index < length) {
+        if (aStr.charAt(index) === ";") {
+          generatedLine++;
+          index++;
+          previousGeneratedColumn = 0;
+          sortGenerated(generatedMappings, subarrayStart);
+          subarrayStart = generatedMappings.length;
+        } else if (aStr.charAt(index) === ",") {
+          index++;
+        } else {
+          mapping = new Mapping();
+          mapping.generatedLine = generatedLine;
+          for (end = index; end < length; end++) {
+            if (this._charIsMappingSeparator(aStr, end)) {
+              break;
+            }
+          }
+          str = aStr.slice(index, end);
+          segment = [];
+          while (index < end) {
+            base64VLQ.decode(aStr, index, temp);
+            value = temp.value;
+            index = temp.rest;
+            segment.push(value);
+          }
+          if (segment.length === 2) {
+            throw new Error("Found a source, but no line and column");
+          }
+          if (segment.length === 3) {
+            throw new Error("Found a source and line, but no column");
+          }
+          mapping.generatedColumn = previousGeneratedColumn + segment[0];
+          previousGeneratedColumn = mapping.generatedColumn;
+          if (segment.length > 1) {
+            mapping.source = previousSource + segment[1];
+            previousSource += segment[1];
+            mapping.originalLine = previousOriginalLine + segment[2];
+            previousOriginalLine = mapping.originalLine;
+            mapping.originalLine += 1;
+            mapping.originalColumn = previousOriginalColumn + segment[3];
+            previousOriginalColumn = mapping.originalColumn;
+            if (segment.length > 4) {
+              mapping.name = previousName + segment[4];
+              previousName += segment[4];
+            }
+          }
+          generatedMappings.push(mapping);
+          if (typeof mapping.originalLine === "number") {
+            let currentSource = mapping.source;
+            while (originalMappings.length <= currentSource) {
+              originalMappings.push(null);
+            }
+            if (originalMappings[currentSource] === null) {
+              originalMappings[currentSource] = [];
+            }
+            originalMappings[currentSource].push(mapping);
+          }
+        }
+      }
+      sortGenerated(generatedMappings, subarrayStart);
+      this.__generatedMappings = generatedMappings;
+      for (var i = 0; i < originalMappings.length; i++) {
+        if (originalMappings[i] != null) {
+          quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource);
+        }
+      }
+      this.__originalMappings = [].concat(...originalMappings);
+    };
+    BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) {
+      if (aNeedle[aLineName] <= 0) {
+        throw new TypeError("Line must be greater than or equal to 1, got " + aNeedle[aLineName]);
+      }
+      if (aNeedle[aColumnName] < 0) {
+        throw new TypeError("Column must be greater than or equal to 0, got " + aNeedle[aColumnName]);
+      }
+      return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+    };
+    BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() {
+      for (var index = 0; index < this._generatedMappings.length; ++index) {
+        var mapping = this._generatedMappings[index];
+        if (index + 1 < this._generatedMappings.length) {
+          var nextMapping = this._generatedMappings[index + 1];
+          if (mapping.generatedLine === nextMapping.generatedLine) {
+            mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+            continue;
+          }
+        }
+        mapping.lastGeneratedColumn = Infinity;
+      }
+    };
+    BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) {
+      var needle = {
+        generatedLine: util.getArg(aArgs, "line"),
+        generatedColumn: util.getArg(aArgs, "column")
+      };
+      var index = this._findMapping(
+        needle,
+        this._generatedMappings,
+        "generatedLine",
+        "generatedColumn",
+        util.compareByGeneratedPositionsDeflated,
+        util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND)
+      );
+      if (index >= 0) {
+        var mapping = this._generatedMappings[index];
+        if (mapping.generatedLine === needle.generatedLine) {
+          var source = util.getArg(mapping, "source", null);
+          if (source !== null) {
+            source = this._sources.at(source);
+            source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);
+          }
+          var name = util.getArg(mapping, "name", null);
+          if (name !== null) {
+            name = this._names.at(name);
+          }
+          return {
+            source,
+            line: util.getArg(mapping, "originalLine", null),
+            column: util.getArg(mapping, "originalColumn", null),
+            name
+          };
+        }
+      }
+      return {
+        source: null,
+        line: null,
+        column: null,
+        name: null
+      };
+    };
+    BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() {
+      if (!this.sourcesContent) {
+        return false;
+      }
+      return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function(sc) {
+        return sc == null;
+      });
+    };
+    BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+      if (!this.sourcesContent) {
+        return null;
+      }
+      var index = this._findSourceIndex(aSource);
+      if (index >= 0) {
+        return this.sourcesContent[index];
+      }
+      var relativeSource = aSource;
+      if (this.sourceRoot != null) {
+        relativeSource = util.relative(this.sourceRoot, relativeSource);
+      }
+      var url;
+      if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) {
+        var fileUriAbsPath = relativeSource.replace(/^file:\/\//, "");
+        if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) {
+          return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];
+        }
+        if ((!url.path || url.path == "/") && this._sources.has("/" + relativeSource)) {
+          return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
+        }
+      }
+      if (nullOnMissing) {
+        return null;
+      } else {
+        throw new Error('"' + relativeSource + '" is not in the SourceMap.');
+      }
+    };
+    BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) {
+      var source = util.getArg(aArgs, "source");
+      source = this._findSourceIndex(source);
+      if (source < 0) {
+        return {
+          line: null,
+          column: null,
+          lastColumn: null
+        };
+      }
+      var needle = {
+        source,
+        originalLine: util.getArg(aArgs, "line"),
+        originalColumn: util.getArg(aArgs, "column")
+      };
+      var index = this._findMapping(
+        needle,
+        this._originalMappings,
+        "originalLine",
+        "originalColumn",
+        util.compareByOriginalPositions,
+        util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND)
+      );
+      if (index >= 0) {
+        var mapping = this._originalMappings[index];
+        if (mapping.source === needle.source) {
+          return {
+            line: util.getArg(mapping, "generatedLine", null),
+            column: util.getArg(mapping, "generatedColumn", null),
+            lastColumn: util.getArg(mapping, "lastGeneratedColumn", null)
+          };
+        }
+      }
+      return {
+        line: null,
+        column: null,
+        lastColumn: null
+      };
+    };
+    exports2.BasicSourceMapConsumer = BasicSourceMapConsumer;
+    function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
+      var sourceMap = aSourceMap;
+      if (typeof aSourceMap === "string") {
+        sourceMap = util.parseSourceMapInput(aSourceMap);
+      }
+      var version = util.getArg(sourceMap, "version");
+      var sections = util.getArg(sourceMap, "sections");
+      if (version != this._version) {
+        throw new Error("Unsupported version: " + version);
+      }
+      this._sources = new ArraySet();
+      this._names = new ArraySet();
+      var lastOffset = {
+        line: -1,
+        column: 0
+      };
+      this._sections = sections.map(function(s) {
+        if (s.url) {
+          throw new Error("Support for url field in sections not implemented.");
+        }
+        var offset = util.getArg(s, "offset");
+        var offsetLine = util.getArg(offset, "line");
+        var offsetColumn = util.getArg(offset, "column");
+        if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) {
+          throw new Error("Section offsets must be ordered and non-overlapping.");
+        }
+        lastOffset = offset;
+        return {
+          generatedOffset: {
+            // The offset fields are 0-based, but we use 1-based indices when
+            // encoding/decoding from VLQ.
+            generatedLine: offsetLine + 1,
+            generatedColumn: offsetColumn + 1
+          },
+          consumer: new SourceMapConsumer(util.getArg(s, "map"), aSourceMapURL)
+        };
+      });
+    }
+    IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+    IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+    IndexedSourceMapConsumer.prototype._version = 3;
+    Object.defineProperty(IndexedSourceMapConsumer.prototype, "sources", {
+      get: function() {
+        var sources = [];
+        for (var i = 0; i < this._sections.length; i++) {
+          for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+            sources.push(this._sections[i].consumer.sources[j]);
+          }
+        }
+        return sources;
+      }
+    });
+    IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+      var needle = {
+        generatedLine: util.getArg(aArgs, "line"),
+        generatedColumn: util.getArg(aArgs, "column")
+      };
+      var sectionIndex = binarySearch.search(
+        needle,
+        this._sections,
+        function(needle2, section2) {
+          var cmp = needle2.generatedLine - section2.generatedOffset.generatedLine;
+          if (cmp) {
+            return cmp;
+          }
+          return needle2.generatedColumn - section2.generatedOffset.generatedColumn;
+        }
+      );
+      var section = this._sections[sectionIndex];
+      if (!section) {
+        return {
+          source: null,
+          line: null,
+          column: null,
+          name: null
+        };
+      }
+      return section.consumer.originalPositionFor({
+        line: needle.generatedLine - (section.generatedOffset.generatedLine - 1),
+        column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),
+        bias: aArgs.bias
+      });
+    };
+    IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+      return this._sections.every(function(s) {
+        return s.consumer.hasContentsOfAllSources();
+      });
+    };
+    IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+      for (var i = 0; i < this._sections.length; i++) {
+        var section = this._sections[i];
+        var content = section.consumer.sourceContentFor(aSource, true);
+        if (content || content === "") {
+          return content;
+        }
+      }
+      if (nullOnMissing) {
+        return null;
+      } else {
+        throw new Error('"' + aSource + '" is not in the SourceMap.');
+      }
+    };
+    IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+      for (var i = 0; i < this._sections.length; i++) {
+        var section = this._sections[i];
+        if (section.consumer._findSourceIndex(util.getArg(aArgs, "source")) === -1) {
+          continue;
+        }
+        var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+        if (generatedPosition) {
+          var ret = {
+            line: generatedPosition.line + (section.generatedOffset.generatedLine - 1),
+            column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0)
+          };
+          return ret;
+        }
+      }
+      return {
+        line: null,
+        column: null
+      };
+    };
+    IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+      this.__generatedMappings = [];
+      this.__originalMappings = [];
+      for (var i = 0; i < this._sections.length; i++) {
+        var section = this._sections[i];
+        var sectionMappings = section.consumer._generatedMappings;
+        for (var j = 0; j < sectionMappings.length; j++) {
+          var mapping = sectionMappings[j];
+          var source = section.consumer._sources.at(mapping.source);
+          if (source !== null) {
+            source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);
+          }
+          this._sources.add(source);
+          source = this._sources.indexOf(source);
+          var name = null;
+          if (mapping.name) {
+            name = section.consumer._names.at(mapping.name);
+            this._names.add(name);
+            name = this._names.indexOf(name);
+          }
+          var adjustedMapping = {
+            source,
+            generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1),
+            generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),
+            originalLine: mapping.originalLine,
+            originalColumn: mapping.originalColumn,
+            name
+          };
+          this.__generatedMappings.push(adjustedMapping);
+          if (typeof adjustedMapping.originalLine === "number") {
+            this.__originalMappings.push(adjustedMapping);
+          }
+        }
+      }
+      quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+      quickSort(this.__originalMappings, util.compareByOriginalPositions);
+    };
+    exports2.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+  }
+});
+
+// node_modules/source-map-js/lib/source-node.js
+var require_source_node = __commonJS({
+  "node_modules/source-map-js/lib/source-node.js"(exports2) {
+    var SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
+    var util = require_util();
+    var REGEX_NEWLINE = /(\r?\n)/;
+    var NEWLINE_CODE = 10;
+    var isSourceNode = "$$$isSourceNode$$$";
+    function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+      this.children = [];
+      this.sourceContents = {};
+      this.line = aLine == null ? null : aLine;
+      this.column = aColumn == null ? null : aColumn;
+      this.source = aSource == null ? null : aSource;
+      this.name = aName == null ? null : aName;
+      this[isSourceNode] = true;
+      if (aChunks != null) this.add(aChunks);
+    }
+    SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+      var node = new SourceNode();
+      var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+      var remainingLinesIndex = 0;
+      var shiftNextLine = function() {
+        var lineContents = getNextLine();
+        var newLine = getNextLine() || "";
+        return lineContents + newLine;
+        function getNextLine() {
+          return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : void 0;
+        }
+      };
+      var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+      var lastMapping = null;
+      aSourceMapConsumer.eachMapping(function(mapping) {
+        if (lastMapping !== null) {
+          if (lastGeneratedLine < mapping.generatedLine) {
+            addMappingWithCode(lastMapping, shiftNextLine());
+            lastGeneratedLine++;
+            lastGeneratedColumn = 0;
+          } else {
+            var nextLine = remainingLines[remainingLinesIndex] || "";
+            var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn);
+            remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn);
+            lastGeneratedColumn = mapping.generatedColumn;
+            addMappingWithCode(lastMapping, code);
+            lastMapping = mapping;
+            return;
+          }
+        }
+        while (lastGeneratedLine < mapping.generatedLine) {
+          node.add(shiftNextLine());
+          lastGeneratedLine++;
+        }
+        if (lastGeneratedColumn < mapping.generatedColumn) {
+          var nextLine = remainingLines[remainingLinesIndex] || "";
+          node.add(nextLine.substr(0, mapping.generatedColumn));
+          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
+          lastGeneratedColumn = mapping.generatedColumn;
+        }
+        lastMapping = mapping;
+      }, this);
+      if (remainingLinesIndex < remainingLines.length) {
+        if (lastMapping) {
+          addMappingWithCode(lastMapping, shiftNextLine());
+        }
+        node.add(remainingLines.splice(remainingLinesIndex).join(""));
+      }
+      aSourceMapConsumer.sources.forEach(function(sourceFile) {
+        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+        if (content != null) {
+          if (aRelativePath != null) {
+            sourceFile = util.join(aRelativePath, sourceFile);
+          }
+          node.setSourceContent(sourceFile, content);
+        }
+      });
+      return node;
+      function addMappingWithCode(mapping, code) {
+        if (mapping === null || mapping.source === void 0) {
+          node.add(code);
+        } else {
+          var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source;
+          node.add(new SourceNode(
+            mapping.originalLine,
+            mapping.originalColumn,
+            source,
+            code,
+            mapping.name
+          ));
+        }
+      }
+    };
+    SourceNode.prototype.add = function SourceNode_add(aChunk) {
+      if (Array.isArray(aChunk)) {
+        aChunk.forEach(function(chunk) {
+          this.add(chunk);
+        }, this);
+      } else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+        if (aChunk) {
+          this.children.push(aChunk);
+        }
+      } else {
+        throw new TypeError(
+          "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+        );
+      }
+      return this;
+    };
+    SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+      if (Array.isArray(aChunk)) {
+        for (var i = aChunk.length - 1; i >= 0; i--) {
+          this.prepend(aChunk[i]);
+        }
+      } else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+        this.children.unshift(aChunk);
+      } else {
+        throw new TypeError(
+          "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+        );
+      }
+      return this;
+    };
+    SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+      var chunk;
+      for (var i = 0, len = this.children.length; i < len; i++) {
+        chunk = this.children[i];
+        if (chunk[isSourceNode]) {
+          chunk.walk(aFn);
+        } else {
+          if (chunk !== "") {
+            aFn(chunk, {
+              source: this.source,
+              line: this.line,
+              column: this.column,
+              name: this.name
+            });
+          }
+        }
+      }
+    };
+    SourceNode.prototype.join = function SourceNode_join(aSep) {
+      var newChildren;
+      var i;
+      var len = this.children.length;
+      if (len > 0) {
+        newChildren = [];
+        for (i = 0; i < len - 1; i++) {
+          newChildren.push(this.children[i]);
+          newChildren.push(aSep);
+        }
+        newChildren.push(this.children[i]);
+        this.children = newChildren;
+      }
+      return this;
+    };
+    SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+      var lastChild = this.children[this.children.length - 1];
+      if (lastChild[isSourceNode]) {
+        lastChild.replaceRight(aPattern, aReplacement);
+      } else if (typeof lastChild === "string") {
+        this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+      } else {
+        this.children.push("".replace(aPattern, aReplacement));
+      }
+      return this;
+    };
+    SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+      this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+    };
+    SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) {
+      for (var i = 0, len = this.children.length; i < len; i++) {
+        if (this.children[i][isSourceNode]) {
+          this.children[i].walkSourceContents(aFn);
+        }
+      }
+      var sources = Object.keys(this.sourceContents);
+      for (var i = 0, len = sources.length; i < len; i++) {
+        aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+      }
+    };
+    SourceNode.prototype.toString = function SourceNode_toString() {
+      var str = "";
+      this.walk(function(chunk) {
+        str += chunk;
+      });
+      return str;
+    };
+    SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+      var generated = {
+        code: "",
+        line: 1,
+        column: 0
+      };
+      var map = new SourceMapGenerator(aArgs);
+      var sourceMappingActive = false;
+      var lastOriginalSource = null;
+      var lastOriginalLine = null;
+      var lastOriginalColumn = null;
+      var lastOriginalName = null;
+      this.walk(function(chunk, original) {
+        generated.code += chunk;
+        if (original.source !== null && original.line !== null && original.column !== null) {
+          if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) {
+            map.addMapping({
+              source: original.source,
+              original: {
+                line: original.line,
+                column: original.column
+              },
+              generated: {
+                line: generated.line,
+                column: generated.column
+              },
+              name: original.name
+            });
+          }
+          lastOriginalSource = original.source;
+          lastOriginalLine = original.line;
+          lastOriginalColumn = original.column;
+          lastOriginalName = original.name;
+          sourceMappingActive = true;
+        } else if (sourceMappingActive) {
+          map.addMapping({
+            generated: {
+              line: generated.line,
+              column: generated.column
+            }
+          });
+          lastOriginalSource = null;
+          sourceMappingActive = false;
+        }
+        for (var idx = 0, length = chunk.length; idx < length; idx++) {
+          if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+            generated.line++;
+            generated.column = 0;
+            if (idx + 1 === length) {
+              lastOriginalSource = null;
+              sourceMappingActive = false;
+            } else if (sourceMappingActive) {
+              map.addMapping({
+                source: original.source,
+                original: {
+                  line: original.line,
+                  column: original.column
+                },
+                generated: {
+                  line: generated.line,
+                  column: generated.column
+                },
+                name: original.name
+              });
+            }
+          } else {
+            generated.column++;
+          }
+        }
+      });
+      this.walkSourceContents(function(sourceFile, sourceContent) {
+        map.setSourceContent(sourceFile, sourceContent);
+      });
+      return { code: generated.code, map };
+    };
+    exports2.SourceNode = SourceNode;
+  }
+});
+
+// node_modules/source-map-js/source-map.js
+var require_source_map = __commonJS({
+  "node_modules/source-map-js/source-map.js"(exports2) {
+    exports2.SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
+    exports2.SourceMapConsumer = require_source_map_consumer().SourceMapConsumer;
+    exports2.SourceNode = require_source_node().SourceNode;
+  }
+});
+
+// node_modules/postcss/lib/previous-map.js
+var require_previous_map = __commonJS({
+  "node_modules/postcss/lib/previous-map.js"(exports2, module2) {
+    "use strict";
+    var { existsSync, readFileSync } = require("fs");
+    var { dirname, join } = require("path");
+    var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
+    function fromBase64(str) {
+      if (Buffer) {
+        return Buffer.from(str, "base64").toString();
+      } else {
+        return window.atob(str);
+      }
+    }
+    var PreviousMap = class {
+      constructor(css, opts) {
+        if (opts.map === false) return;
+        this.loadAnnotation(css);
+        this.inline = this.startWith(this.annotation, "data:");
+        let prev = opts.map ? opts.map.prev : void 0;
+        let text = this.loadMap(opts.from, prev);
+        if (!this.mapFile && opts.from) {
+          this.mapFile = opts.from;
+        }
+        if (this.mapFile) this.root = dirname(this.mapFile);
+        if (text) this.text = text;
+      }
+      consumer() {
+        if (!this.consumerCache) {
+          this.consumerCache = new SourceMapConsumer(this.text);
+        }
+        return this.consumerCache;
+      }
+      decodeInline(text) {
+        let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/;
+        let baseUri = /^data:application\/json;base64,/;
+        let charsetUri = /^data:application\/json;charset=utf-?8,/;
+        let uri = /^data:application\/json,/;
+        let uriMatch = text.match(charsetUri) || text.match(uri);
+        if (uriMatch) {
+          return decodeURIComponent(text.substr(uriMatch[0].length));
+        }
+        let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri);
+        if (baseUriMatch) {
+          return fromBase64(text.substr(baseUriMatch[0].length));
+        }
+        let encoding = text.match(/data:application\/json;([^,]+),/)[1];
+        throw new Error("Unsupported source map encoding " + encoding);
+      }
+      getAnnotationURL(sourceMapString) {
+        return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, "").trim();
+      }
+      isMap(map) {
+        if (typeof map !== "object") return false;
+        return typeof map.mappings === "string" || typeof map._mappings === "string" || Array.isArray(map.sections);
+      }
+      loadAnnotation(css) {
+        let comments = css.match(/\/\*\s*# sourceMappingURL=/g);
+        if (!comments) return;
+        let start = css.lastIndexOf(comments.pop());
+        let end = css.indexOf("*/", start);
+        if (start > -1 && end > -1) {
+          this.annotation = this.getAnnotationURL(css.substring(start, end));
+        }
+      }
+      loadFile(path) {
+        this.root = dirname(path);
+        if (existsSync(path)) {
+          this.mapFile = path;
+          return readFileSync(path, "utf-8").toString().trim();
+        }
+      }
+      loadMap(file, prev) {
+        if (prev === false) return false;
+        if (prev) {
+          if (typeof prev === "string") {
+            return prev;
+          } else if (typeof prev === "function") {
+            let prevPath = prev(file);
+            if (prevPath) {
+              let map = this.loadFile(prevPath);
+              if (!map) {
+                throw new Error(
+                  "Unable to load previous source map: " + prevPath.toString()
+                );
+              }
+              return map;
+            }
+          } else if (prev instanceof SourceMapConsumer) {
+            return SourceMapGenerator.fromSourceMap(prev).toString();
+          } else if (prev instanceof SourceMapGenerator) {
+            return prev.toString();
+          } else if (this.isMap(prev)) {
+            return JSON.stringify(prev);
+          } else {
+            throw new Error(
+              "Unsupported previous source map format: " + prev.toString()
+            );
+          }
+        } else if (this.inline) {
+          return this.decodeInline(this.annotation);
+        } else if (this.annotation) {
+          let map = this.annotation;
+          if (file) map = join(dirname(file), map);
+          return this.loadFile(map);
+        }
+      }
+      startWith(string, start) {
+        if (!string) return false;
+        return string.substr(0, start.length) === start;
+      }
+      withContent() {
+        return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);
+      }
+    };
+    module2.exports = PreviousMap;
+    PreviousMap.default = PreviousMap;
+  }
+});
+
+// node_modules/postcss/lib/input.js
+var require_input = __commonJS({
+  "node_modules/postcss/lib/input.js"(exports2, module2) {
+    "use strict";
+    var { nanoid } = require_non_secure();
+    var { isAbsolute, resolve } = require("path");
+    var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
+    var { fileURLToPath, pathToFileURL } = require("url");
+    var CssSyntaxError = require_css_syntax_error();
+    var PreviousMap = require_previous_map();
+    var terminalHighlight = require_terminal_highlight();
+    var fromOffsetCache = Symbol("fromOffsetCache");
+    var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);
+    var pathAvailable = Boolean(resolve && isAbsolute);
+    var Input = class {
+      constructor(css, opts = {}) {
+        if (css === null || typeof css === "undefined" || typeof css === "object" && !css.toString) {
+          throw new Error(`PostCSS received ${css} instead of CSS string`);
+        }
+        this.css = css.toString();
+        if (this.css[0] === "\uFEFF" || this.css[0] === "\uFFFE") {
+          this.hasBOM = true;
+          this.css = this.css.slice(1);
+        } else {
+          this.hasBOM = false;
+        }
+        if (opts.from) {
+          if (!pathAvailable || /^\w+:\/\//.test(opts.from) || isAbsolute(opts.from)) {
+            this.file = opts.from;
+          } else {
+            this.file = resolve(opts.from);
+          }
+        }
+        if (pathAvailable && sourceMapAvailable) {
+          let map = new PreviousMap(this.css, opts);
+          if (map.text) {
+            this.map = map;
+            let file = map.consumer().file;
+            if (!this.file && file) this.file = this.mapResolve(file);
+          }
+        }
+        if (!this.file) {
+          this.id = "<input css " + nanoid(6) + ">";
+        }
+        if (this.map) this.map.file = this.from;
+      }
+      error(message, line, column, opts = {}) {
+        let endColumn, endLine, result;
+        if (line && typeof line === "object") {
+          let start = line;
+          let end = column;
+          if (typeof start.offset === "number") {
+            let pos = this.fromOffset(start.offset);
+            line = pos.line;
+            column = pos.col;
+          } else {
+            line = start.line;
+            column = start.column;
+          }
+          if (typeof end.offset === "number") {
+            let pos = this.fromOffset(end.offset);
+            endLine = pos.line;
+            endColumn = pos.col;
+          } else {
+            endLine = end.line;
+            endColumn = end.column;
+          }
+        } else if (!column) {
+          let pos = this.fromOffset(line);
+          line = pos.line;
+          column = pos.col;
+        }
+        let origin = this.origin(line, column, endLine, endColumn);
+        if (origin) {
+          result = new CssSyntaxError(
+            message,
+            origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },
+            origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },
+            origin.source,
+            origin.file,
+            opts.plugin
+          );
+        } else {
+          result = new CssSyntaxError(
+            message,
+            endLine === void 0 ? line : { column, line },
+            endLine === void 0 ? column : { column: endColumn, line: endLine },
+            this.css,
+            this.file,
+            opts.plugin
+          );
+        }
+        result.input = { column, endColumn, endLine, line, source: this.css };
+        if (this.file) {
+          if (pathToFileURL) {
+            result.input.url = pathToFileURL(this.file).toString();
+          }
+          result.input.file = this.file;
+        }
+        return result;
+      }
+      fromOffset(offset) {
+        let lastLine, lineToIndex;
+        if (!this[fromOffsetCache]) {
+          let lines = this.css.split("\n");
+          lineToIndex = new Array(lines.length);
+          let prevIndex = 0;
+          for (let i = 0, l = lines.length; i < l; i++) {
+            lineToIndex[i] = prevIndex;
+            prevIndex += lines[i].length + 1;
+          }
+          this[fromOffsetCache] = lineToIndex;
+        } else {
+          lineToIndex = this[fromOffsetCache];
+        }
+        lastLine = lineToIndex[lineToIndex.length - 1];
+        let min = 0;
+        if (offset >= lastLine) {
+          min = lineToIndex.length - 1;
+        } else {
+          let max = lineToIndex.length - 2;
+          let mid;
+          while (min < max) {
+            mid = min + (max - min >> 1);
+            if (offset < lineToIndex[mid]) {
+              max = mid - 1;
+            } else if (offset >= lineToIndex[mid + 1]) {
+              min = mid + 1;
+            } else {
+              min = mid;
+              break;
+            }
+          }
+        }
+        return {
+          col: offset - lineToIndex[min] + 1,
+          line: min + 1
+        };
+      }
+      mapResolve(file) {
+        if (/^\w+:\/\//.test(file)) {
+          return file;
+        }
+        return resolve(this.map.consumer().sourceRoot || this.map.root || ".", file);
+      }
+      origin(line, column, endLine, endColumn) {
+        if (!this.map) return false;
+        let consumer = this.map.consumer();
+        let from = consumer.originalPositionFor({ column, line });
+        if (!from.source) return false;
+        let to;
+        if (typeof endLine === "number") {
+          to = consumer.originalPositionFor({ column: endColumn, line: endLine });
+        }
+        let fromUrl;
+        if (isAbsolute(from.source)) {
+          fromUrl = pathToFileURL(from.source);
+        } else {
+          fromUrl = new URL(
+            from.source,
+            this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)
+          );
+        }
+        let result = {
+          column: from.column,
+          endColumn: to && to.column,
+          endLine: to && to.line,
+          line: from.line,
+          url: fromUrl.toString()
+        };
+        if (fromUrl.protocol === "file:") {
+          if (fileURLToPath) {
+            result.file = fileURLToPath(fromUrl);
+          } else {
+            throw new Error(`file: protocol is not available in this PostCSS build`);
+          }
+        }
+        let source = consumer.sourceContentFor(from.source);
+        if (source) result.source = source;
+        return result;
+      }
+      toJSON() {
+        let json = {};
+        for (let name of ["hasBOM", "css", "file", "id"]) {
+          if (this[name] != null) {
+            json[name] = this[name];
+          }
+        }
+        if (this.map) {
+          json.map = { ...this.map };
+          if (json.map.consumerCache) {
+            json.map.consumerCache = void 0;
+          }
+        }
+        return json;
+      }
+      get from() {
+        return this.file || this.id;
+      }
+    };
+    module2.exports = Input;
+    Input.default = Input;
+    if (terminalHighlight && terminalHighlight.registerInput) {
+      terminalHighlight.registerInput(Input);
+    }
+  }
+});
+
+// node_modules/postcss/lib/root.js
+var require_root = __commonJS({
+  "node_modules/postcss/lib/root.js"(exports2, module2) {
+    "use strict";
+    var Container = require_container();
+    var LazyResult;
+    var Processor;
+    var Root = class extends Container {
+      constructor(defaults) {
+        super(defaults);
+        this.type = "root";
+        if (!this.nodes) this.nodes = [];
+      }
+      normalize(child, sample, type) {
+        let nodes = super.normalize(child);
+        if (sample) {
+          if (type === "prepend") {
+            if (this.nodes.length > 1) {
+              sample.raws.before = this.nodes[1].raws.before;
+            } else {
+              delete sample.raws.before;
+            }
+          } else if (this.first !== sample) {
+            for (let node of nodes) {
+              node.raws.before = sample.raws.before;
+            }
+          }
+        }
+        return nodes;
+      }
+      removeChild(child, ignore) {
+        let index = this.index(child);
+        if (!ignore && index === 0 && this.nodes.length > 1) {
+          this.nodes[1].raws.before = this.nodes[index].raws.before;
+        }
+        return super.removeChild(child);
+      }
+      toResult(opts = {}) {
+        let lazy = new LazyResult(new Processor(), this, opts);
+        return lazy.stringify();
+      }
+    };
+    Root.registerLazyResult = (dependant) => {
+      LazyResult = dependant;
+    };
+    Root.registerProcessor = (dependant) => {
+      Processor = dependant;
+    };
+    module2.exports = Root;
+    Root.default = Root;
+    Container.registerRoot(Root);
+  }
+});
+
+// node_modules/postcss/lib/list.js
+var require_list = __commonJS({
+  "node_modules/postcss/lib/list.js"(exports2, module2) {
+    "use strict";
+    var list = {
+      comma(string) {
+        return list.split(string, [","], true);
+      },
+      space(string) {
+        let spaces = [" ", "\n", "	"];
+        return list.split(string, spaces);
+      },
+      split(string, separators, last) {
+        let array = [];
+        let current = "";
+        let split = false;
+        let func = 0;
+        let inQuote = false;
+        let prevQuote = "";
+        let escape = false;
+        for (let letter of string) {
+          if (escape) {
+            escape = false;
+          } else if (letter === "\\") {
+            escape = true;
+          } else if (inQuote) {
+            if (letter === prevQuote) {
+              inQuote = false;
+            }
+          } else if (letter === '"' || letter === "'") {
+            inQuote = true;
+            prevQuote = letter;
+          } else if (letter === "(") {
+            func += 1;
+          } else if (letter === ")") {
+            if (func > 0) func -= 1;
+          } else if (func === 0) {
+            if (separators.includes(letter)) split = true;
+          }
+          if (split) {
+            if (current !== "") array.push(current.trim());
+            current = "";
+            split = false;
+          } else {
+            current += letter;
+          }
+        }
+        if (last || current !== "") array.push(current.trim());
+        return array;
+      }
+    };
+    module2.exports = list;
+    list.default = list;
+  }
+});
+
+// node_modules/postcss/lib/rule.js
+var require_rule = __commonJS({
+  "node_modules/postcss/lib/rule.js"(exports2, module2) {
+    "use strict";
+    var Container = require_container();
+    var list = require_list();
+    var Rule = class extends Container {
+      constructor(defaults) {
+        super(defaults);
+        this.type = "rule";
+        if (!this.nodes) this.nodes = [];
+      }
+      get selectors() {
+        return list.comma(this.selector);
+      }
+      set selectors(values) {
+        let match = this.selector ? this.selector.match(/,\s*/) : null;
+        let sep = match ? match[0] : "," + this.raw("between", "beforeOpen");
+        this.selector = values.join(sep);
+      }
+    };
+    module2.exports = Rule;
+    Rule.default = Rule;
+    Container.registerRule(Rule);
+  }
+});
+
+// node_modules/postcss/lib/fromJSON.js
+var require_fromJSON = __commonJS({
+  "node_modules/postcss/lib/fromJSON.js"(exports2, module2) {
+    "use strict";
+    var AtRule = require_at_rule();
+    var Comment = require_comment();
+    var Declaration = require_declaration();
+    var Input = require_input();
+    var PreviousMap = require_previous_map();
+    var Root = require_root();
+    var Rule = require_rule();
+    function fromJSON(json, inputs) {
+      if (Array.isArray(json)) return json.map((n) => fromJSON(n));
+      let { inputs: ownInputs, ...defaults } = json;
+      if (ownInputs) {
+        inputs = [];
+        for (let input of ownInputs) {
+          let inputHydrated = { ...input, __proto__: Input.prototype };
+          if (inputHydrated.map) {
+            inputHydrated.map = {
+              ...inputHydrated.map,
+              __proto__: PreviousMap.prototype
+            };
+          }
+          inputs.push(inputHydrated);
+        }
+      }
+      if (defaults.nodes) {
+        defaults.nodes = json.nodes.map((n) => fromJSON(n, inputs));
+      }
+      if (defaults.source) {
+        let { inputId, ...source } = defaults.source;
+        defaults.source = source;
+        if (inputId != null) {
+          defaults.source.input = inputs[inputId];
+        }
+      }
+      if (defaults.type === "root") {
+        return new Root(defaults);
+      } else if (defaults.type === "decl") {
+        return new Declaration(defaults);
+      } else if (defaults.type === "rule") {
+        return new Rule(defaults);
+      } else if (defaults.type === "comment") {
+        return new Comment(defaults);
+      } else if (defaults.type === "atrule") {
+        return new AtRule(defaults);
+      } else {
+        throw new Error("Unknown node type: " + json.type);
+      }
+    }
+    module2.exports = fromJSON;
+    fromJSON.default = fromJSON;
+  }
+});
+
+// node_modules/postcss/lib/map-generator.js
+var require_map_generator = __commonJS({
+  "node_modules/postcss/lib/map-generator.js"(exports2, module2) {
+    "use strict";
+    var { dirname, relative, resolve, sep } = require("path");
+    var { SourceMapConsumer, SourceMapGenerator } = require_source_map();
+    var { pathToFileURL } = require("url");
+    var Input = require_input();
+    var sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);
+    var pathAvailable = Boolean(dirname && resolve && relative && sep);
+    var MapGenerator = class {
+      constructor(stringify, root, opts, cssString) {
+        this.stringify = stringify;
+        this.mapOpts = opts.map || {};
+        this.root = root;
+        this.opts = opts;
+        this.css = cssString;
+        this.originalCSS = cssString;
+        this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;
+        this.memoizedFileURLs = /* @__PURE__ */ new Map();
+        this.memoizedPaths = /* @__PURE__ */ new Map();
+        this.memoizedURLs = /* @__PURE__ */ new Map();
+      }
+      addAnnotation() {
+        let content;
+        if (this.isInline()) {
+          content = "data:application/json;base64," + this.toBase64(this.map.toString());
+        } else if (typeof this.mapOpts.annotation === "string") {
+          content = this.mapOpts.annotation;
+        } else if (typeof this.mapOpts.annotation === "function") {
+          content = this.mapOpts.annotation(this.opts.to, this.root);
+        } else {
+          content = this.outputFile() + ".map";
+        }
+        let eol = "\n";
+        if (this.css.includes("\r\n")) eol = "\r\n";
+        this.css += eol + "/*# sourceMappingURL=" + content + " */";
+      }
+      applyPrevMaps() {
+        for (let prev of this.previous()) {
+          let from = this.toUrl(this.path(prev.file));
+          let root = prev.root || dirname(prev.file);
+          let map;
+          if (this.mapOpts.sourcesContent === false) {
+            map = new SourceMapConsumer(prev.text);
+            if (map.sourcesContent) {
+              map.sourcesContent = null;
+            }
+          } else {
+            map = prev.consumer();
+          }
+          this.map.applySourceMap(map, from, this.toUrl(this.path(root)));
+        }
+      }
+      clearAnnotation() {
+        if (this.mapOpts.annotation === false) return;
+        if (this.root) {
+          let node;
+          for (let i = this.root.nodes.length - 1; i >= 0; i--) {
+            node = this.root.nodes[i];
+            if (node.type !== "comment") continue;
+            if (node.text.startsWith("# sourceMappingURL=")) {
+              this.root.removeChild(i);
+            }
+          }
+        } else if (this.css) {
+          this.css = this.css.replace(/\n*\/\*#[\S\s]*?\*\/$/gm, "");
+        }
+      }
+      generate() {
+        this.clearAnnotation();
+        if (pathAvailable && sourceMapAvailable && this.isMap()) {
+          return this.generateMap();
+        } else {
+          let result = "";
+          this.stringify(this.root, (i) => {
+            result += i;
+          });
+          return [result];
+        }
+      }
+      generateMap() {
+        if (this.root) {
+          this.generateString();
+        } else if (this.previous().length === 1) {
+          let prev = this.previous()[0].consumer();
+          prev.file = this.outputFile();
+          this.map = SourceMapGenerator.fromSourceMap(prev, {
+            ignoreInvalidMapping: true
+          });
+        } else {
+          this.map = new SourceMapGenerator({
+            file: this.outputFile(),
+            ignoreInvalidMapping: true
+          });
+          this.map.addMapping({
+            generated: { column: 0, line: 1 },
+            original: { column: 0, line: 1 },
+            source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : "<no source>"
+          });
+        }
+        if (this.isSourcesContent()) this.setSourcesContent();
+        if (this.root && this.previous().length > 0) this.applyPrevMaps();
+        if (this.isAnnotation()) this.addAnnotation();
+        if (this.isInline()) {
+          return [this.css];
+        } else {
+          return [this.css, this.map];
+        }
+      }
+      generateString() {
+        this.css = "";
+        this.map = new SourceMapGenerator({
+          file: this.outputFile(),
+          ignoreInvalidMapping: true
+        });
+        let line = 1;
+        let column = 1;
+        let noSource = "<no source>";
+        let mapping = {
+          generated: { column: 0, line: 0 },
+          original: { column: 0, line: 0 },
+          source: ""
+        };
+        let last, lines;
+        this.stringify(this.root, (str, node, type) => {
+          this.css += str;
+          if (node && type !== "end") {
+            mapping.generated.line = line;
+            mapping.generated.column = column - 1;
+            if (node.source && node.source.start) {
+              mapping.source = this.sourcePath(node);
+              mapping.original.line = node.source.start.line;
+              mapping.original.column = node.source.start.column - 1;
+              this.map.addMapping(mapping);
+            } else {
+              mapping.source = noSource;
+              mapping.original.line = 1;
+              mapping.original.column = 0;
+              this.map.addMapping(mapping);
+            }
+          }
+          lines = str.match(/\n/g);
+          if (lines) {
+            line += lines.length;
+            last = str.lastIndexOf("\n");
+            column = str.length - last;
+          } else {
+            column += str.length;
+          }
+          if (node && type !== "start") {
+            let p = node.parent || { raws: {} };
+            let childless = node.type === "decl" || node.type === "atrule" && !node.nodes;
+            if (!childless || node !== p.last || p.raws.semicolon) {
+              if (node.source && node.source.end) {
+                mapping.source = this.sourcePath(node);
+                mapping.original.line = node.source.end.line;
+                mapping.original.column = node.source.end.column - 1;
+                mapping.generated.line = line;
+                mapping.generated.column = column - 2;
+                this.map.addMapping(mapping);
+              } else {
+                mapping.source = noSource;
+                mapping.original.line = 1;
+                mapping.original.column = 0;
+                mapping.generated.line = line;
+                mapping.generated.column = column - 1;
+                this.map.addMapping(mapping);
+              }
+            }
+          }
+        });
+      }
+      isAnnotation() {
+        if (this.isInline()) {
+          return true;
+        }
+        if (typeof this.mapOpts.annotation !== "undefined") {
+          return this.mapOpts.annotation;
+        }
+        if (this.previous().length) {
+          return this.previous().some((i) => i.annotation);
+        }
+        return true;
+      }
+      isInline() {
+        if (typeof this.mapOpts.inline !== "undefined") {
+          return this.mapOpts.inline;
+        }
+        let annotation = this.mapOpts.annotation;
+        if (typeof annotation !== "undefined" && annotation !== true) {
+          return false;
+        }
+        if (this.previous().length) {
+          return this.previous().some((i) => i.inline);
+        }
+        return true;
+      }
+      isMap() {
+        if (typeof this.opts.map !== "undefined") {
+          return !!this.opts.map;
+        }
+        return this.previous().length > 0;
+      }
+      isSourcesContent() {
+        if (typeof this.mapOpts.sourcesContent !== "undefined") {
+          return this.mapOpts.sourcesContent;
+        }
+        if (this.previous().length) {
+          return this.previous().some((i) => i.withContent());
+        }
+        return true;
+      }
+      outputFile() {
+        if (this.opts.to) {
+          return this.path(this.opts.to);
+        } else if (this.opts.from) {
+          return this.path(this.opts.from);
+        } else {
+          return "to.css";
+        }
+      }
+      path(file) {
+        if (this.mapOpts.absolute) return file;
+        if (file.charCodeAt(0) === 60) return file;
+        if (/^\w+:\/\//.test(file)) return file;
+        let cached = this.memoizedPaths.get(file);
+        if (cached) return cached;
+        let from = this.opts.to ? dirname(this.opts.to) : ".";
+        if (typeof this.mapOpts.annotation === "string") {
+          from = dirname(resolve(from, this.mapOpts.annotation));
+        }
+        let path = relative(from, file);
+        this.memoizedPaths.set(file, path);
+        return path;
+      }
+      previous() {
+        if (!this.previousMaps) {
+          this.previousMaps = [];
+          if (this.root) {
+            this.root.walk((node) => {
+              if (node.source && node.source.input.map) {
+                let map = node.source.input.map;
+                if (!this.previousMaps.includes(map)) {
+                  this.previousMaps.push(map);
+                }
+              }
+            });
+          } else {
+            let input = new Input(this.originalCSS, this.opts);
+            if (input.map) this.previousMaps.push(input.map);
+          }
+        }
+        return this.previousMaps;
+      }
+      setSourcesContent() {
+        let already = {};
+        if (this.root) {
+          this.root.walk((node) => {
+            if (node.source) {
+              let from = node.source.input.from;
+              if (from && !already[from]) {
+                already[from] = true;
+                let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));
+                this.map.setSourceContent(fromUrl, node.source.input.css);
+              }
+            }
+          });
+        } else if (this.css) {
+          let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : "<no source>";
+          this.map.setSourceContent(from, this.css);
+        }
+      }
+      sourcePath(node) {
+        if (this.mapOpts.from) {
+          return this.toUrl(this.mapOpts.from);
+        } else if (this.usesFileUrls) {
+          return this.toFileUrl(node.source.input.from);
+        } else {
+          return this.toUrl(this.path(node.source.input.from));
+        }
+      }
+      toBase64(str) {
+        if (Buffer) {
+          return Buffer.from(str).toString("base64");
+        } else {
+          return window.btoa(unescape(encodeURIComponent(str)));
+        }
+      }
+      toFileUrl(path) {
+        let cached = this.memoizedFileURLs.get(path);
+        if (cached) return cached;
+        if (pathToFileURL) {
+          let fileURL = pathToFileURL(path).toString();
+          this.memoizedFileURLs.set(path, fileURL);
+          return fileURL;
+        } else {
+          throw new Error(
+            "`map.absolute` option is not available in this PostCSS build"
+          );
+        }
+      }
+      toUrl(path) {
+        let cached = this.memoizedURLs.get(path);
+        if (cached) return cached;
+        if (sep === "\\") {
+          path = path.replace(/\\/g, "/");
+        }
+        let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);
+        this.memoizedURLs.set(path, url);
+        return url;
+      }
+    };
+    module2.exports = MapGenerator;
+  }
+});
+
+// node_modules/postcss/lib/parser.js
+var require_parser = __commonJS({
+  "node_modules/postcss/lib/parser.js"(exports2, module2) {
+    "use strict";
+    var AtRule = require_at_rule();
+    var Comment = require_comment();
+    var Declaration = require_declaration();
+    var Root = require_root();
+    var Rule = require_rule();
+    var tokenizer = require_tokenize();
+    var SAFE_COMMENT_NEIGHBOR = {
+      empty: true,
+      space: true
+    };
+    function findLastWithPosition(tokens) {
+      for (let i = tokens.length - 1; i >= 0; i--) {
+        let token = tokens[i];
+        let pos = token[3] || token[2];
+        if (pos) return pos;
+      }
+    }
+    var Parser = class {
+      constructor(input) {
+        this.input = input;
+        this.root = new Root();
+        this.current = this.root;
+        this.spaces = "";
+        this.semicolon = false;
+        this.createTokenizer();
+        this.root.source = { input, start: { column: 1, line: 1, offset: 0 } };
+      }
+      atrule(token) {
+        let node = new AtRule();
+        node.name = token[1].slice(1);
+        if (node.name === "") {
+          this.unnamedAtrule(node, token);
+        }
+        this.init(node, token[2]);
+        let type;
+        let prev;
+        let shift;
+        let last = false;
+        let open = false;
+        let params = [];
+        let brackets = [];
+        while (!this.tokenizer.endOfFile()) {
+          token = this.tokenizer.nextToken();
+          type = token[0];
+          if (type === "(" || type === "[") {
+            brackets.push(type === "(" ? ")" : "]");
+          } else if (type === "{" && brackets.length > 0) {
+            brackets.push("}");
+          } else if (type === brackets[brackets.length - 1]) {
+            brackets.pop();
+          }
+          if (brackets.length === 0) {
+            if (type === ";") {
+              node.source.end = this.getPosition(token[2]);
+              node.source.end.offset++;
+              this.semicolon = true;
+              break;
+            } else if (type === "{") {
+              open = true;
+              break;
+            } else if (type === "}") {
+              if (params.length > 0) {
+                shift = params.length - 1;
+                prev = params[shift];
+                while (prev && prev[0] === "space") {
+                  prev = params[--shift];
+                }
+                if (prev) {
+                  node.source.end = this.getPosition(prev[3] || prev[2]);
+                  node.source.end.offset++;
+                }
+              }
+              this.end(token);
+              break;
+            } else {
+              params.push(token);
+            }
+          } else {
+            params.push(token);
+          }
+          if (this.tokenizer.endOfFile()) {
+            last = true;
+            break;
+          }
+        }
+        node.raws.between = this.spacesAndCommentsFromEnd(params);
+        if (params.length) {
+          node.raws.afterName = this.spacesAndCommentsFromStart(params);
+          this.raw(node, "params", params);
+          if (last) {
+            token = params[params.length - 1];
+            node.source.end = this.getPosition(token[3] || token[2]);
+            node.source.end.offset++;
+            this.spaces = node.raws.between;
+            node.raws.between = "";
+          }
+        } else {
+          node.raws.afterName = "";
+          node.params = "";
+        }
+        if (open) {
+          node.nodes = [];
+          this.current = node;
+        }
+      }
+      checkMissedSemicolon(tokens) {
+        let colon = this.colon(tokens);
+        if (colon === false) return;
+        let founded = 0;
+        let token;
+        for (let j = colon - 1; j >= 0; j--) {
+          token = tokens[j];
+          if (token[0] !== "space") {
+            founded += 1;
+            if (founded === 2) break;
+          }
+        }
+        throw this.input.error(
+          "Missed semicolon",
+          token[0] === "word" ? token[3] + 1 : token[2]
+        );
+      }
+      colon(tokens) {
+        let brackets = 0;
+        let prev, token, type;
+        for (let [i, element] of tokens.entries()) {
+          token = element;
+          type = token[0];
+          if (type === "(") {
+            brackets += 1;
+          }
+          if (type === ")") {
+            brackets -= 1;
+          }
+          if (brackets === 0 && type === ":") {
+            if (!prev) {
+              this.doubleColon(token);
+            } else if (prev[0] === "word" && prev[1] === "progid") {
+              continue;
+            } else {
+              return i;
+            }
+          }
+          prev = token;
+        }
+        return false;
+      }
+      comment(token) {
+        let node = new Comment();
+        this.init(node, token[2]);
+        node.source.end = this.getPosition(token[3] || token[2]);
+        node.source.end.offset++;
+        let text = token[1].slice(2, -2);
+        if (/^\s*$/.test(text)) {
+          node.text = "";
+          node.raws.left = text;
+          node.raws.right = "";
+        } else {
+          let match = text.match(/^(\s*)([^]*\S)(\s*)$/);
+          node.text = match[2];
+          node.raws.left = match[1];
+          node.raws.right = match[3];
+        }
+      }
+      createTokenizer() {
+        this.tokenizer = tokenizer(this.input);
+      }
+      decl(tokens, customProperty) {
+        let node = new Declaration();
+        this.init(node, tokens[0][2]);
+        let last = tokens[tokens.length - 1];
+        if (last[0] === ";") {
+          this.semicolon = true;
+          tokens.pop();
+        }
+        node.source.end = this.getPosition(
+          last[3] || last[2] || findLastWithPosition(tokens)
+        );
+        node.source.end.offset++;
+        while (tokens[0][0] !== "word") {
+          if (tokens.length === 1) this.unknownWord(tokens);
+          node.raws.before += tokens.shift()[1];
+        }
+        node.source.start = this.getPosition(tokens[0][2]);
+        node.prop = "";
+        while (tokens.length) {
+          let type = tokens[0][0];
+          if (type === ":" || type === "space" || type === "comment") {
+            break;
+          }
+          node.prop += tokens.shift()[1];
+        }
+        node.raws.between = "";
+        let token;
+        while (tokens.length) {
+          token = tokens.shift();
+          if (token[0] === ":") {
+            node.raws.between += token[1];
+            break;
+          } else {
+            if (token[0] === "word" && /\w/.test(token[1])) {
+              this.unknownWord([token]);
+            }
+            node.raws.between += token[1];
+          }
+        }
+        if (node.prop[0] === "_" || node.prop[0] === "*") {
+          node.raws.before += node.prop[0];
+          node.prop = node.prop.slice(1);
+        }
+        let firstSpaces = [];
+        let next;
+        while (tokens.length) {
+          next = tokens[0][0];
+          if (next !== "space" && next !== "comment") break;
+          firstSpaces.push(tokens.shift());
+        }
+        this.precheckMissedSemicolon(tokens);
+        for (let i = tokens.length - 1; i >= 0; i--) {
+          token = tokens[i];
+          if (token[1].toLowerCase() === "!important") {
+            node.important = true;
+            let string = this.stringFrom(tokens, i);
+            string = this.spacesFromEnd(tokens) + string;
+            if (string !== " !important") node.raws.important = string;
+            break;
+          } else if (token[1].toLowerCase() === "important") {
+            let cache = tokens.slice(0);
+            let str = "";
+            for (let j = i; j > 0; j--) {
+              let type = cache[j][0];
+              if (str.trim().startsWith("!") && type !== "space") {
+                break;
+              }
+              str = cache.pop()[1] + str;
+            }
+            if (str.trim().startsWith("!")) {
+              node.important = true;
+              node.raws.important = str;
+              tokens = cache;
+            }
+          }
+          if (token[0] !== "space" && token[0] !== "comment") {
+            break;
+          }
+        }
+        let hasWord = tokens.some((i) => i[0] !== "space" && i[0] !== "comment");
+        if (hasWord) {
+          node.raws.between += firstSpaces.map((i) => i[1]).join("");
+          firstSpaces = [];
+        }
+        this.raw(node, "value", firstSpaces.concat(tokens), customProperty);
+        if (node.value.includes(":") && !customProperty) {
+          this.checkMissedSemicolon(tokens);
+        }
+      }
+      doubleColon(token) {
+        throw this.input.error(
+          "Double colon",
+          { offset: token[2] },
+          { offset: token[2] + token[1].length }
+        );
+      }
+      emptyRule(token) {
+        let node = new Rule();
+        this.init(node, token[2]);
+        node.selector = "";
+        node.raws.between = "";
+        this.current = node;
+      }
+      end(token) {
+        if (this.current.nodes && this.current.nodes.length) {
+          this.current.raws.semicolon = this.semicolon;
+        }
+        this.semicolon = false;
+        this.current.raws.after = (this.current.raws.after || "") + this.spaces;
+        this.spaces = "";
+        if (this.current.parent) {
+          this.current.source.end = this.getPosition(token[2]);
+          this.current.source.end.offset++;
+          this.current = this.current.parent;
+        } else {
+          this.unexpectedClose(token);
+        }
+      }
+      endFile() {
+        if (this.current.parent) this.unclosedBlock();
+        if (this.current.nodes && this.current.nodes.length) {
+          this.current.raws.semicolon = this.semicolon;
+        }
+        this.current.raws.after = (this.current.raws.after || "") + this.spaces;
+        this.root.source.end = this.getPosition(this.tokenizer.position());
+      }
+      freeSemicolon(token) {
+        this.spaces += token[1];
+        if (this.current.nodes) {
+          let prev = this.current.nodes[this.current.nodes.length - 1];
+          if (prev && prev.type === "rule" && !prev.raws.ownSemicolon) {
+            prev.raws.ownSemicolon = this.spaces;
+            this.spaces = "";
+          }
+        }
+      }
+      // Helpers
+      getPosition(offset) {
+        let pos = this.input.fromOffset(offset);
+        return {
+          column: pos.col,
+          line: pos.line,
+          offset
+        };
+      }
+      init(node, offset) {
+        this.current.push(node);
+        node.source = {
+          input: this.input,
+          start: this.getPosition(offset)
+        };
+        node.raws.before = this.spaces;
+        this.spaces = "";
+        if (node.type !== "comment") this.semicolon = false;
+      }
+      other(start) {
+        let end = false;
+        let type = null;
+        let colon = false;
+        let bracket = null;
+        let brackets = [];
+        let customProperty = start[1].startsWith("--");
+        let tokens = [];
+        let token = start;
+        while (token) {
+          type = token[0];
+          tokens.push(token);
+          if (type === "(" || type === "[") {
+            if (!bracket) bracket = token;
+            brackets.push(type === "(" ? ")" : "]");
+          } else if (customProperty && colon && type === "{") {
+            if (!bracket) bracket = token;
+            brackets.push("}");
+          } else if (brackets.length === 0) {
+            if (type === ";") {
+              if (colon) {
+                this.decl(tokens, customProperty);
+                return;
+              } else {
+                break;
+              }
+            } else if (type === "{") {
+              this.rule(tokens);
+              return;
+            } else if (type === "}") {
+              this.tokenizer.back(tokens.pop());
+              end = true;
+              break;
+            } else if (type === ":") {
+              colon = true;
+            }
+          } else if (type === brackets[brackets.length - 1]) {
+            brackets.pop();
+            if (brackets.length === 0) bracket = null;
+          }
+          token = this.tokenizer.nextToken();
+        }
+        if (this.tokenizer.endOfFile()) end = true;
+        if (brackets.length > 0) this.unclosedBracket(bracket);
+        if (end && colon) {
+          if (!customProperty) {
+            while (tokens.length) {
+              token = tokens[tokens.length - 1][0];
+              if (token !== "space" && token !== "comment") break;
+              this.tokenizer.back(tokens.pop());
+            }
+          }
+          this.decl(tokens, customProperty);
+        } else {
+          this.unknownWord(tokens);
+        }
+      }
+      parse() {
+        let token;
+        while (!this.tokenizer.endOfFile()) {
+          token = this.tokenizer.nextToken();
+          switch (token[0]) {
+            case "space":
+              this.spaces += token[1];
+              break;
+            case ";":
+              this.freeSemicolon(token);
+              break;
+            case "}":
+              this.end(token);
+              break;
+            case "comment":
+              this.comment(token);
+              break;
+            case "at-word":
+              this.atrule(token);
+              break;
+            case "{":
+              this.emptyRule(token);
+              break;
+            default:
+              this.other(token);
+              break;
+          }
+        }
+        this.endFile();
+      }
+      precheckMissedSemicolon() {
+      }
+      raw(node, prop, tokens, customProperty) {
+        let token, type;
+        let length = tokens.length;
+        let value = "";
+        let clean = true;
+        let next, prev;
+        for (let i = 0; i < length; i += 1) {
+          token = tokens[i];
+          type = token[0];
+          if (type === "space" && i === length - 1 && !customProperty) {
+            clean = false;
+          } else if (type === "comment") {
+            prev = tokens[i - 1] ? tokens[i - 1][0] : "empty";
+            next = tokens[i + 1] ? tokens[i + 1][0] : "empty";
+            if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {
+              if (value.slice(-1) === ",") {
+                clean = false;
+              } else {
+                value += token[1];
+              }
+            } else {
+              clean = false;
+            }
+          } else {
+            value += token[1];
+          }
+        }
+        if (!clean) {
+          let raw = tokens.reduce((all, i) => all + i[1], "");
+          node.raws[prop] = { raw, value };
+        }
+        node[prop] = value;
+      }
+      rule(tokens) {
+        tokens.pop();
+        let node = new Rule();
+        this.init(node, tokens[0][2]);
+        node.raws.between = this.spacesAndCommentsFromEnd(tokens);
+        this.raw(node, "selector", tokens);
+        this.current = node;
+      }
+      spacesAndCommentsFromEnd(tokens) {
+        let lastTokenType;
+        let spaces = "";
+        while (tokens.length) {
+          lastTokenType = tokens[tokens.length - 1][0];
+          if (lastTokenType !== "space" && lastTokenType !== "comment") break;
+          spaces = tokens.pop()[1] + spaces;
+        }
+        return spaces;
+      }
+      // Errors
+      spacesAndCommentsFromStart(tokens) {
+        let next;
+        let spaces = "";
+        while (tokens.length) {
+          next = tokens[0][0];
+          if (next !== "space" && next !== "comment") break;
+          spaces += tokens.shift()[1];
+        }
+        return spaces;
+      }
+      spacesFromEnd(tokens) {
+        let lastTokenType;
+        let spaces = "";
+        while (tokens.length) {
+          lastTokenType = tokens[tokens.length - 1][0];
+          if (lastTokenType !== "space") break;
+          spaces = tokens.pop()[1] + spaces;
+        }
+        return spaces;
+      }
+      stringFrom(tokens, from) {
+        let result = "";
+        for (let i = from; i < tokens.length; i++) {
+          result += tokens[i][1];
+        }
+        tokens.splice(from, tokens.length - from);
+        return result;
+      }
+      unclosedBlock() {
+        let pos = this.current.source.start;
+        throw this.input.error("Unclosed block", pos.line, pos.column);
+      }
+      unclosedBracket(bracket) {
+        throw this.input.error(
+          "Unclosed bracket",
+          { offset: bracket[2] },
+          { offset: bracket[2] + 1 }
+        );
+      }
+      unexpectedClose(token) {
+        throw this.input.error(
+          "Unexpected }",
+          { offset: token[2] },
+          { offset: token[2] + 1 }
+        );
+      }
+      unknownWord(tokens) {
+        throw this.input.error(
+          "Unknown word",
+          { offset: tokens[0][2] },
+          { offset: tokens[0][2] + tokens[0][1].length }
+        );
+      }
+      unnamedAtrule(node, token) {
+        throw this.input.error(
+          "At-rule without name",
+          { offset: token[2] },
+          { offset: token[2] + token[1].length }
+        );
+      }
+    };
+    module2.exports = Parser;
+  }
+});
+
+// node_modules/postcss/lib/parse.js
+var require_parse = __commonJS({
+  "node_modules/postcss/lib/parse.js"(exports2, module2) {
+    "use strict";
+    var Container = require_container();
+    var Input = require_input();
+    var Parser = require_parser();
+    function parse(css, opts) {
+      let input = new Input(css, opts);
+      let parser = new Parser(input);
+      try {
+        parser.parse();
+      } catch (e) {
+        if (process.env.NODE_ENV !== "production") {
+          if (e.name === "CssSyntaxError" && opts && opts.from) {
+            if (/\.scss$/i.test(opts.from)) {
+              e.message += "\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser";
+            } else if (/\.sass/i.test(opts.from)) {
+              e.message += "\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser";
+            } else if (/\.less$/i.test(opts.from)) {
+              e.message += "\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser";
+            }
+          }
+        }
+        throw e;
+      }
+      return parser.root;
+    }
+    module2.exports = parse;
+    parse.default = parse;
+    Container.registerParse(parse);
+  }
+});
+
+// node_modules/postcss/lib/warning.js
+var require_warning = __commonJS({
+  "node_modules/postcss/lib/warning.js"(exports2, module2) {
+    "use strict";
+    var Warning = class {
+      constructor(text, opts = {}) {
+        this.type = "warning";
+        this.text = text;
+        if (opts.node && opts.node.source) {
+          let range = opts.node.rangeBy(opts);
+          this.line = range.start.line;
+          this.column = range.start.column;
+          this.endLine = range.end.line;
+          this.endColumn = range.end.column;
+        }
+        for (let opt in opts) this[opt] = opts[opt];
+      }
+      toString() {
+        if (this.node) {
+          return this.node.error(this.text, {
+            index: this.index,
+            plugin: this.plugin,
+            word: this.word
+          }).message;
+        }
+        if (this.plugin) {
+          return this.plugin + ": " + this.text;
+        }
+        return this.text;
+      }
+    };
+    module2.exports = Warning;
+    Warning.default = Warning;
+  }
+});
+
+// node_modules/postcss/lib/result.js
+var require_result = __commonJS({
+  "node_modules/postcss/lib/result.js"(exports2, module2) {
+    "use strict";
+    var Warning = require_warning();
+    var Result = class {
+      constructor(processor, root, opts) {
+        this.processor = processor;
+        this.messages = [];
+        this.root = root;
+        this.opts = opts;
+        this.css = void 0;
+        this.map = void 0;
+      }
+      toString() {
+        return this.css;
+      }
+      warn(text, opts = {}) {
+        if (!opts.plugin) {
+          if (this.lastPlugin && this.lastPlugin.postcssPlugin) {
+            opts.plugin = this.lastPlugin.postcssPlugin;
+          }
+        }
+        let warning = new Warning(text, opts);
+        this.messages.push(warning);
+        return warning;
+      }
+      warnings() {
+        return this.messages.filter((i) => i.type === "warning");
+      }
+      get content() {
+        return this.css;
+      }
+    };
+    module2.exports = Result;
+    Result.default = Result;
+  }
+});
+
+// node_modules/postcss/lib/warn-once.js
+var require_warn_once = __commonJS({
+  "node_modules/postcss/lib/warn-once.js"(exports2, module2) {
+    "use strict";
+    var printed = {};
+    module2.exports = function warnOnce(message) {
+      if (printed[message]) return;
+      printed[message] = true;
+      if (typeof console !== "undefined" && console.warn) {
+        console.warn(message);
+      }
+    };
+  }
+});
+
+// node_modules/postcss/lib/lazy-result.js
+var require_lazy_result = __commonJS({
+  "node_modules/postcss/lib/lazy-result.js"(exports2, module2) {
+    "use strict";
+    var Container = require_container();
+    var Document = require_document();
+    var MapGenerator = require_map_generator();
+    var parse = require_parse();
+    var Result = require_result();
+    var Root = require_root();
+    var stringify = require_stringify();
+    var { isClean, my } = require_symbols();
+    var warnOnce = require_warn_once();
+    var TYPE_TO_CLASS_NAME = {
+      atrule: "AtRule",
+      comment: "Comment",
+      decl: "Declaration",
+      document: "Document",
+      root: "Root",
+      rule: "Rule"
+    };
+    var PLUGIN_PROPS = {
+      AtRule: true,
+      AtRuleExit: true,
+      Comment: true,
+      CommentExit: true,
+      Declaration: true,
+      DeclarationExit: true,
+      Document: true,
+      DocumentExit: true,
+      Once: true,
+      OnceExit: true,
+      postcssPlugin: true,
+      prepare: true,
+      Root: true,
+      RootExit: true,
+      Rule: true,
+      RuleExit: true
+    };
+    var NOT_VISITORS = {
+      Once: true,
+      postcssPlugin: true,
+      prepare: true
+    };
+    var CHILDREN = 0;
+    function isPromise(obj) {
+      return typeof obj === "object" && typeof obj.then === "function";
+    }
+    function getEvents(node) {
+      let key = false;
+      let type = TYPE_TO_CLASS_NAME[node.type];
+      if (node.type === "decl") {
+        key = node.prop.toLowerCase();
+      } else if (node.type === "atrule") {
+        key = node.name.toLowerCase();
+      }
+      if (key && node.append) {
+        return [
+          type,
+          type + "-" + key,
+          CHILDREN,
+          type + "Exit",
+          type + "Exit-" + key
+        ];
+      } else if (key) {
+        return [type, type + "-" + key, type + "Exit", type + "Exit-" + key];
+      } else if (node.append) {
+        return [type, CHILDREN, type + "Exit"];
+      } else {
+        return [type, type + "Exit"];
+      }
+    }
+    function toStack(node) {
+      let events;
+      if (node.type === "document") {
+        events = ["Document", CHILDREN, "DocumentExit"];
+      } else if (node.type === "root") {
+        events = ["Root", CHILDREN, "RootExit"];
+      } else {
+        events = getEvents(node);
+      }
+      return {
+        eventIndex: 0,
+        events,
+        iterator: 0,
+        node,
+        visitorIndex: 0,
+        visitors: []
+      };
+    }
+    function cleanMarks(node) {
+      node[isClean] = false;
+      if (node.nodes) node.nodes.forEach((i) => cleanMarks(i));
+      return node;
+    }
+    var postcss = {};
+    var LazyResult = class _LazyResult {
+      constructor(processor, css, opts) {
+        this.stringified = false;
+        this.processed = false;
+        let root;
+        if (typeof css === "object" && css !== null && (css.type === "root" || css.type === "document")) {
+          root = cleanMarks(css);
+        } else if (css instanceof _LazyResult || css instanceof Result) {
+          root = cleanMarks(css.root);
+          if (css.map) {
+            if (typeof opts.map === "undefined") opts.map = {};
+            if (!opts.map.inline) opts.map.inline = false;
+            opts.map.prev = css.map;
+          }
+        } else {
+          let parser = parse;
+          if (opts.syntax) parser = opts.syntax.parse;
+          if (opts.parser) parser = opts.parser;
+          if (parser.parse) parser = parser.parse;
+          try {
+            root = parser(css, opts);
+          } catch (error) {
+            this.processed = true;
+            this.error = error;
+          }
+          if (root && !root[my]) {
+            Container.rebuild(root);
+          }
+        }
+        this.result = new Result(processor, root, opts);
+        this.helpers = { ...postcss, postcss, result: this.result };
+        this.plugins = this.processor.plugins.map((plugin) => {
+          if (typeof plugin === "object" && plugin.prepare) {
+            return { ...plugin, ...plugin.prepare(this.result) };
+          } else {
+            return plugin;
+          }
+        });
+      }
+      async() {
+        if (this.error) return Promise.reject(this.error);
+        if (this.processed) return Promise.resolve(this.result);
+        if (!this.processing) {
+          this.processing = this.runAsync();
+        }
+        return this.processing;
+      }
+      catch(onRejected) {
+        return this.async().catch(onRejected);
+      }
+      finally(onFinally) {
+        return this.async().then(onFinally, onFinally);
+      }
+      getAsyncError() {
+        throw new Error("Use process(css).then(cb) to work with async plugins");
+      }
+      handleError(error, node) {
+        let plugin = this.result.lastPlugin;
+        try {
+          if (node) node.addToError(error);
+          this.error = error;
+          if (error.name === "CssSyntaxError" && !error.plugin) {
+            error.plugin = plugin.postcssPlugin;
+            error.setMessage();
+          } else if (plugin.postcssVersion) {
+            if (process.env.NODE_ENV !== "production") {
+              let pluginName = plugin.postcssPlugin;
+              let pluginVer = plugin.postcssVersion;
+              let runtimeVer = this.result.processor.version;
+              let a = pluginVer.split(".");
+              let b = runtimeVer.split(".");
+              if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {
+                console.error(
+                  "Unknown error from PostCSS plugin. Your current PostCSS version is " + runtimeVer + ", but " + pluginName + " uses " + pluginVer + ". Perhaps this is the source of the error below."
+                );
+              }
+            }
+          }
+        } catch (err) {
+          if (console && console.error) console.error(err);
+        }
+        return error;
+      }
+      prepareVisitors() {
+        this.listeners = {};
+        let add = (plugin, type, cb) => {
+          if (!this.listeners[type]) this.listeners[type] = [];
+          this.listeners[type].push([plugin, cb]);
+        };
+        for (let plugin of this.plugins) {
+          if (typeof plugin === "object") {
+            for (let event in plugin) {
+              if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {
+                throw new Error(
+                  `Unknown event ${event} in ${plugin.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`
+                );
+              }
+              if (!NOT_VISITORS[event]) {
+                if (typeof plugin[event] === "object") {
+                  for (let filter in plugin[event]) {
+                    if (filter === "*") {
+                      add(plugin, event, plugin[event][filter]);
+                    } else {
+                      add(
+                        plugin,
+                        event + "-" + filter.toLowerCase(),
+                        plugin[event][filter]
+                      );
+                    }
+                  }
+                } else if (typeof plugin[event] === "function") {
+                  add(plugin, event, plugin[event]);
+                }
+              }
+            }
+          }
+        }
+        this.hasListener = Object.keys(this.listeners).length > 0;
+      }
+      async runAsync() {
+        this.plugin = 0;
+        for (let i = 0; i < this.plugins.length; i++) {
+          let plugin = this.plugins[i];
+          let promise = this.runOnRoot(plugin);
+          if (isPromise(promise)) {
+            try {
+              await promise;
+            } catch (error) {
+              throw this.handleError(error);
+            }
+          }
+        }
+        this.prepareVisitors();
+        if (this.hasListener) {
+          let root = this.result.root;
+          while (!root[isClean]) {
+            root[isClean] = true;
+            let stack = [toStack(root)];
+            while (stack.length > 0) {
+              let promise = this.visitTick(stack);
+              if (isPromise(promise)) {
+                try {
+                  await promise;
+                } catch (e) {
+                  let node = stack[stack.length - 1].node;
+                  throw this.handleError(e, node);
+                }
+              }
+            }
+          }
+          if (this.listeners.OnceExit) {
+            for (let [plugin, visitor] of this.listeners.OnceExit) {
+              this.result.lastPlugin = plugin;
+              try {
+                if (root.type === "document") {
+                  let roots = root.nodes.map(
+                    (subRoot) => visitor(subRoot, this.helpers)
+                  );
+                  await Promise.all(roots);
+                } else {
+                  await visitor(root, this.helpers);
+                }
+              } catch (e) {
+                throw this.handleError(e);
+              }
+            }
+          }
+        }
+        this.processed = true;
+        return this.stringify();
+      }
+      runOnRoot(plugin) {
+        this.result.lastPlugin = plugin;
+        try {
+          if (typeof plugin === "object" && plugin.Once) {
+            if (this.result.root.type === "document") {
+              let roots = this.result.root.nodes.map(
+                (root) => plugin.Once(root, this.helpers)
+              );
+              if (isPromise(roots[0])) {
+                return Promise.all(roots);
+              }
+              return roots;
+            }
+            return plugin.Once(this.result.root, this.helpers);
+          } else if (typeof plugin === "function") {
+            return plugin(this.result.root, this.result);
+          }
+        } catch (error) {
+          throw this.handleError(error);
+        }
+      }
+      stringify() {
+        if (this.error) throw this.error;
+        if (this.stringified) return this.result;
+        this.stringified = true;
+        this.sync();
+        let opts = this.result.opts;
+        let str = stringify;
+        if (opts.syntax) str = opts.syntax.stringify;
+        if (opts.stringifier) str = opts.stringifier;
+        if (str.stringify) str = str.stringify;
+        let map = new MapGenerator(str, this.result.root, this.result.opts);
+        let data = map.generate();
+        this.result.css = data[0];
+        this.result.map = data[1];
+        return this.result;
+      }
+      sync() {
+        if (this.error) throw this.error;
+        if (this.processed) return this.result;
+        this.processed = true;
+        if (this.processing) {
+          throw this.getAsyncError();
+        }
+        for (let plugin of this.plugins) {
+          let promise = this.runOnRoot(plugin);
+          if (isPromise(promise)) {
+            throw this.getAsyncError();
+          }
+        }
+        this.prepareVisitors();
+        if (this.hasListener) {
+          let root = this.result.root;
+          while (!root[isClean]) {
+            root[isClean] = true;
+            this.walkSync(root);
+          }
+          if (this.listeners.OnceExit) {
+            if (root.type === "document") {
+              for (let subRoot of root.nodes) {
+                this.visitSync(this.listeners.OnceExit, subRoot);
+              }
+            } else {
+              this.visitSync(this.listeners.OnceExit, root);
+            }
+          }
+        }
+        return this.result;
+      }
+      then(onFulfilled, onRejected) {
+        if (process.env.NODE_ENV !== "production") {
+          if (!("from" in this.opts)) {
+            warnOnce(
+              "Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning."
+            );
+          }
+        }
+        return this.async().then(onFulfilled, onRejected);
+      }
+      toString() {
+        return this.css;
+      }
+      visitSync(visitors, node) {
+        for (let [plugin, visitor] of visitors) {
+          this.result.lastPlugin = plugin;
+          let promise;
+          try {
+            promise = visitor(node, this.helpers);
+          } catch (e) {
+            throw this.handleError(e, node.proxyOf);
+          }
+          if (node.type !== "root" && node.type !== "document" && !node.parent) {
+            return true;
+          }
+          if (isPromise(promise)) {
+            throw this.getAsyncError();
+          }
+        }
+      }
+      visitTick(stack) {
+        let visit = stack[stack.length - 1];
+        let { node, visitors } = visit;
+        if (node.type !== "root" && node.type !== "document" && !node.parent) {
+          stack.pop();
+          return;
+        }
+        if (visitors.length > 0 && visit.visitorIndex < visitors.length) {
+          let [plugin, visitor] = visitors[visit.visitorIndex];
+          visit.visitorIndex += 1;
+          if (visit.visitorIndex === visitors.length) {
+            visit.visitors = [];
+            visit.visitorIndex = 0;
+          }
+          this.result.lastPlugin = plugin;
+          try {
+            return visitor(node.toProxy(), this.helpers);
+          } catch (e) {
+            throw this.handleError(e, node);
+          }
+        }
+        if (visit.iterator !== 0) {
+          let iterator = visit.iterator;
+          let child;
+          while (child = node.nodes[node.indexes[iterator]]) {
+            node.indexes[iterator] += 1;
+            if (!child[isClean]) {
+              child[isClean] = true;
+              stack.push(toStack(child));
+              return;
+            }
+          }
+          visit.iterator = 0;
+          delete node.indexes[iterator];
+        }
+        let events = visit.events;
+        while (visit.eventIndex < events.length) {
+          let event = events[visit.eventIndex];
+          visit.eventIndex += 1;
+          if (event === CHILDREN) {
+            if (node.nodes && node.nodes.length) {
+              node[isClean] = true;
+              visit.iterator = node.getIterator();
+            }
+            return;
+          } else if (this.listeners[event]) {
+            visit.visitors = this.listeners[event];
+            return;
+          }
+        }
+        stack.pop();
+      }
+      walkSync(node) {
+        node[isClean] = true;
+        let events = getEvents(node);
+        for (let event of events) {
+          if (event === CHILDREN) {
+            if (node.nodes) {
+              node.each((child) => {
+                if (!child[isClean]) this.walkSync(child);
+              });
+            }
+          } else {
+            let visitors = this.listeners[event];
+            if (visitors) {
+              if (this.visitSync(visitors, node.toProxy())) return;
+            }
+          }
+        }
+      }
+      warnings() {
+        return this.sync().warnings();
+      }
+      get content() {
+        return this.stringify().content;
+      }
+      get css() {
+        return this.stringify().css;
+      }
+      get map() {
+        return this.stringify().map;
+      }
+      get messages() {
+        return this.sync().messages;
+      }
+      get opts() {
+        return this.result.opts;
+      }
+      get processor() {
+        return this.result.processor;
+      }
+      get root() {
+        return this.sync().root;
+      }
+      get [Symbol.toStringTag]() {
+        return "LazyResult";
+      }
+    };
+    LazyResult.registerPostcss = (dependant) => {
+      postcss = dependant;
+    };
+    module2.exports = LazyResult;
+    LazyResult.default = LazyResult;
+    Root.registerLazyResult(LazyResult);
+    Document.registerLazyResult(LazyResult);
+  }
+});
+
+// node_modules/postcss/lib/no-work-result.js
+var require_no_work_result = __commonJS({
+  "node_modules/postcss/lib/no-work-result.js"(exports2, module2) {
+    "use strict";
+    var MapGenerator = require_map_generator();
+    var parse = require_parse();
+    var Result = require_result();
+    var stringify = require_stringify();
+    var warnOnce = require_warn_once();
+    var NoWorkResult = class {
+      constructor(processor, css, opts) {
+        css = css.toString();
+        this.stringified = false;
+        this._processor = processor;
+        this._css = css;
+        this._opts = opts;
+        this._map = void 0;
+        let root;
+        let str = stringify;
+        this.result = new Result(this._processor, root, this._opts);
+        this.result.css = css;
+        let self2 = this;
+        Object.defineProperty(this.result, "root", {
+          get() {
+            return self2.root;
+          }
+        });
+        let map = new MapGenerator(str, root, this._opts, css);
+        if (map.isMap()) {
+          let [generatedCSS, generatedMap] = map.generate();
+          if (generatedCSS) {
+            this.result.css = generatedCSS;
+          }
+          if (generatedMap) {
+            this.result.map = generatedMap;
+          }
+        } else {
+          map.clearAnnotation();
+          this.result.css = map.css;
+        }
+      }
+      async() {
+        if (this.error) return Promise.reject(this.error);
+        return Promise.resolve(this.result);
+      }
+      catch(onRejected) {
+        return this.async().catch(onRejected);
+      }
+      finally(onFinally) {
+        return this.async().then(onFinally, onFinally);
+      }
+      sync() {
+        if (this.error) throw this.error;
+        return this.result;
+      }
+      then(onFulfilled, onRejected) {
+        if (process.env.NODE_ENV !== "production") {
+          if (!("from" in this._opts)) {
+            warnOnce(
+              "Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning."
+            );
+          }
+        }
+        return this.async().then(onFulfilled, onRejected);
+      }
+      toString() {
+        return this._css;
+      }
+      warnings() {
+        return [];
+      }
+      get content() {
+        return this.result.css;
+      }
+      get css() {
+        return this.result.css;
+      }
+      get map() {
+        return this.result.map;
+      }
+      get messages() {
+        return [];
+      }
+      get opts() {
+        return this.result.opts;
+      }
+      get processor() {
+        return this.result.processor;
+      }
+      get root() {
+        if (this._root) {
+          return this._root;
+        }
+        let root;
+        let parser = parse;
+        try {
+          root = parser(this._css, this._opts);
+        } catch (error) {
+          this.error = error;
+        }
+        if (this.error) {
+          throw this.error;
+        } else {
+          this._root = root;
+          return root;
+        }
+      }
+      get [Symbol.toStringTag]() {
+        return "NoWorkResult";
+      }
+    };
+    module2.exports = NoWorkResult;
+    NoWorkResult.default = NoWorkResult;
+  }
+});
+
+// node_modules/postcss/lib/processor.js
+var require_processor = __commonJS({
+  "node_modules/postcss/lib/processor.js"(exports2, module2) {
+    "use strict";
+    var Document = require_document();
+    var LazyResult = require_lazy_result();
+    var NoWorkResult = require_no_work_result();
+    var Root = require_root();
+    var Processor = class {
+      constructor(plugins = []) {
+        this.version = "8.4.47";
+        this.plugins = this.normalize(plugins);
+      }
+      normalize(plugins) {
+        let normalized = [];
+        for (let i of plugins) {
+          if (i.postcss === true) {
+            i = i();
+          } else if (i.postcss) {
+            i = i.postcss;
+          }
+          if (typeof i === "object" && Array.isArray(i.plugins)) {
+            normalized = normalized.concat(i.plugins);
+          } else if (typeof i === "object" && i.postcssPlugin) {
+            normalized.push(i);
+          } else if (typeof i === "function") {
+            normalized.push(i);
+          } else if (typeof i === "object" && (i.parse || i.stringify)) {
+            if (process.env.NODE_ENV !== "production") {
+              throw new Error(
+                "PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation."
+              );
+            }
+          } else {
+            throw new Error(i + " is not a PostCSS plugin");
+          }
+        }
+        return normalized;
+      }
+      process(css, opts = {}) {
+        if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {
+          return new NoWorkResult(this, css, opts);
+        } else {
+          return new LazyResult(this, css, opts);
+        }
+      }
+      use(plugin) {
+        this.plugins = this.plugins.concat(this.normalize([plugin]));
+        return this;
+      }
+    };
+    module2.exports = Processor;
+    Processor.default = Processor;
+    Root.registerProcessor(Processor);
+    Document.registerProcessor(Processor);
+  }
+});
+
+// node_modules/postcss/lib/postcss.js
+var require_postcss = __commonJS({
+  "node_modules/postcss/lib/postcss.js"(exports2, module2) {
+    "use strict";
+    var AtRule = require_at_rule();
+    var Comment = require_comment();
+    var Container = require_container();
+    var CssSyntaxError = require_css_syntax_error();
+    var Declaration = require_declaration();
+    var Document = require_document();
+    var fromJSON = require_fromJSON();
+    var Input = require_input();
+    var LazyResult = require_lazy_result();
+    var list = require_list();
+    var Node = require_node();
+    var parse = require_parse();
+    var Processor = require_processor();
+    var Result = require_result();
+    var Root = require_root();
+    var Rule = require_rule();
+    var stringify = require_stringify();
+    var Warning = require_warning();
+    function postcss(...plugins) {
+      if (plugins.length === 1 && Array.isArray(plugins[0])) {
+        plugins = plugins[0];
+      }
+      return new Processor(plugins);
+    }
+    postcss.plugin = function plugin(name, initializer) {
+      let warningPrinted = false;
+      function creator(...args) {
+        if (console && console.warn && !warningPrinted) {
+          warningPrinted = true;
+          console.warn(
+            name + ": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"
+          );
+          if (process.env.LANG && process.env.LANG.startsWith("cn")) {
+            console.warn(
+              name + ": \u91CC\u9762 postcss.plugin \u88AB\u5F03\u7528. \u8FC1\u79FB\u6307\u5357:\nhttps://www.w3ctech.com/topic/2226"
+            );
+          }
+        }
+        let transformer = initializer(...args);
+        transformer.postcssPlugin = name;
+        transformer.postcssVersion = new Processor().version;
+        return transformer;
+      }
+      let cache;
+      Object.defineProperty(creator, "postcss", {
+        get() {
+          if (!cache) cache = creator();
+          return cache;
+        }
+      });
+      creator.process = function(css, processOpts, pluginOpts) {
+        return postcss([creator(pluginOpts)]).process(css, processOpts);
+      };
+      return creator;
+    };
+    postcss.stringify = stringify;
+    postcss.parse = parse;
+    postcss.fromJSON = fromJSON;
+    postcss.list = list;
+    postcss.comment = (defaults) => new Comment(defaults);
+    postcss.atRule = (defaults) => new AtRule(defaults);
+    postcss.decl = (defaults) => new Declaration(defaults);
+    postcss.rule = (defaults) => new Rule(defaults);
+    postcss.root = (defaults) => new Root(defaults);
+    postcss.document = (defaults) => new Document(defaults);
+    postcss.CssSyntaxError = CssSyntaxError;
+    postcss.Declaration = Declaration;
+    postcss.Container = Container;
+    postcss.Processor = Processor;
+    postcss.Document = Document;
+    postcss.Comment = Comment;
+    postcss.Warning = Warning;
+    postcss.AtRule = AtRule;
+    postcss.Result = Result;
+    postcss.Input = Input;
+    postcss.Rule = Rule;
+    postcss.Root = Root;
+    postcss.Node = Node;
+    LazyResult.registerPostcss(postcss);
+    module2.exports = postcss;
+    postcss.default = postcss;
+  }
+});
+
+// node_modules/postcss-import/lib/join-media.js
+var require_join_media = __commonJS({
+  "node_modules/postcss-import/lib/join-media.js"(exports2, module2) {
+    "use strict";
+    var startsWithKeywordRegexp = /^(all|not|only|print|screen)/i;
+    module2.exports = function(parentMedia, childMedia) {
+      if (!parentMedia.length && childMedia.length) return childMedia;
+      if (parentMedia.length && !childMedia.length) return parentMedia;
+      if (!parentMedia.length && !childMedia.length) return [];
+      const media = [];
+      parentMedia.forEach((parentItem) => {
+        const parentItemStartsWithKeyword = startsWithKeywordRegexp.test(parentItem);
+        childMedia.forEach((childItem) => {
+          const childItemStartsWithKeyword = startsWithKeywordRegexp.test(childItem);
+          if (parentItem !== childItem) {
+            if (childItemStartsWithKeyword && !parentItemStartsWithKeyword) {
+              media.push(`${childItem} and ${parentItem}`);
+            } else {
+              media.push(`${parentItem} and ${childItem}`);
+            }
+          }
+        });
+      });
+      return media;
+    };
+  }
+});
+
+// node_modules/postcss-import/lib/join-layer.js
+var require_join_layer = __commonJS({
+  "node_modules/postcss-import/lib/join-layer.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function(parentLayer, childLayer) {
+      if (!parentLayer.length && childLayer.length) return childLayer;
+      if (parentLayer.length && !childLayer.length) return parentLayer;
+      if (!parentLayer.length && !childLayer.length) return [];
+      return parentLayer.concat(childLayer);
+    };
+  }
+});
+
+// node_modules/resolve/lib/homedir.js
+var require_homedir = __commonJS({
+  "node_modules/resolve/lib/homedir.js"(exports2, module2) {
+    "use strict";
+    var os = require("os");
+    module2.exports = os.homedir || function homedir() {
+      var home = process.env.HOME;
+      var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME;
+      if (process.platform === "win32") {
+        return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null;
+      }
+      if (process.platform === "darwin") {
+        return home || (user ? "/Users/" + user : null);
+      }
+      if (process.platform === "linux") {
+        return home || (process.getuid() === 0 ? "/root" : user ? "/home/" + user : null);
+      }
+      return home || null;
+    };
+  }
+});
+
+// node_modules/resolve/lib/caller.js
+var require_caller = __commonJS({
+  "node_modules/resolve/lib/caller.js"(exports2, module2) {
+    module2.exports = function() {
+      var origPrepareStackTrace = Error.prepareStackTrace;
+      Error.prepareStackTrace = function(_, stack2) {
+        return stack2;
+      };
+      var stack = new Error().stack;
+      Error.prepareStackTrace = origPrepareStackTrace;
+      return stack[2].getFileName();
+    };
+  }
+});
+
+// node_modules/path-parse/index.js
+var require_path_parse = __commonJS({
+  "node_modules/path-parse/index.js"(exports2, module2) {
+    "use strict";
+    var isWindows = process.platform === "win32";
+    var splitWindowsRe = /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/;
+    var win32 = {};
+    function win32SplitPath(filename) {
+      return splitWindowsRe.exec(filename).slice(1);
+    }
+    win32.parse = function(pathString) {
+      if (typeof pathString !== "string") {
+        throw new TypeError(
+          "Parameter 'pathString' must be a string, not " + typeof pathString
+        );
+      }
+      var allParts = win32SplitPath(pathString);
+      if (!allParts || allParts.length !== 5) {
+        throw new TypeError("Invalid path '" + pathString + "'");
+      }
+      return {
+        root: allParts[1],
+        dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1),
+        base: allParts[2],
+        ext: allParts[4],
+        name: allParts[3]
+      };
+    };
+    var splitPathRe = /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/;
+    var posix = {};
+    function posixSplitPath(filename) {
+      return splitPathRe.exec(filename).slice(1);
+    }
+    posix.parse = function(pathString) {
+      if (typeof pathString !== "string") {
+        throw new TypeError(
+          "Parameter 'pathString' must be a string, not " + typeof pathString
+        );
+      }
+      var allParts = posixSplitPath(pathString);
+      if (!allParts || allParts.length !== 5) {
+        throw new TypeError("Invalid path '" + pathString + "'");
+      }
+      return {
+        root: allParts[1],
+        dir: allParts[0].slice(0, -1),
+        base: allParts[2],
+        ext: allParts[4],
+        name: allParts[3]
+      };
+    };
+    if (isWindows)
+      module2.exports = win32.parse;
+    else
+      module2.exports = posix.parse;
+    module2.exports.posix = posix.parse;
+    module2.exports.win32 = win32.parse;
+  }
+});
+
+// node_modules/resolve/lib/node-modules-paths.js
+var require_node_modules_paths = __commonJS({
+  "node_modules/resolve/lib/node-modules-paths.js"(exports2, module2) {
+    var path = require("path");
+    var parse = path.parse || require_path_parse();
+    var getNodeModulesDirs = function getNodeModulesDirs2(absoluteStart, modules) {
+      var prefix = "/";
+      if (/^([A-Za-z]:)/.test(absoluteStart)) {
+        prefix = "";
+      } else if (/^\\\\/.test(absoluteStart)) {
+        prefix = "\\\\";
+      }
+      var paths = [absoluteStart];
+      var parsed = parse(absoluteStart);
+      while (parsed.dir !== paths[paths.length - 1]) {
+        paths.push(parsed.dir);
+        parsed = parse(parsed.dir);
+      }
+      return paths.reduce(function(dirs, aPath) {
+        return dirs.concat(modules.map(function(moduleDir) {
+          return path.resolve(prefix, aPath, moduleDir);
+        }));
+      }, []);
+    };
+    module2.exports = function nodeModulesPaths(start, opts, request) {
+      var modules = opts && opts.moduleDirectory ? [].concat(opts.moduleDirectory) : ["node_modules"];
+      if (opts && typeof opts.paths === "function") {
+        return opts.paths(
+          request,
+          start,
+          function() {
+            return getNodeModulesDirs(start, modules);
+          },
+          opts
+        );
+      }
+      var dirs = getNodeModulesDirs(start, modules);
+      return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
+    };
+  }
+});
+
+// node_modules/resolve/lib/normalize-options.js
+var require_normalize_options = __commonJS({
+  "node_modules/resolve/lib/normalize-options.js"(exports2, module2) {
+    module2.exports = function(x, opts) {
+      return opts || {};
+    };
+  }
+});
+
+// node_modules/function-bind/implementation.js
+var require_implementation = __commonJS({
+  "node_modules/function-bind/implementation.js"(exports2, module2) {
+    "use strict";
+    var ERROR_MESSAGE = "Function.prototype.bind called on incompatible ";
+    var toStr = Object.prototype.toString;
+    var max = Math.max;
+    var funcType = "[object Function]";
+    var concatty = function concatty2(a, b) {
+      var arr = [];
+      for (var i = 0; i < a.length; i += 1) {
+        arr[i] = a[i];
+      }
+      for (var j = 0; j < b.length; j += 1) {
+        arr[j + a.length] = b[j];
+      }
+      return arr;
+    };
+    var slicy = function slicy2(arrLike, offset) {
+      var arr = [];
+      for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {
+        arr[j] = arrLike[i];
+      }
+      return arr;
+    };
+    var joiny = function(arr, joiner) {
+      var str = "";
+      for (var i = 0; i < arr.length; i += 1) {
+        str += arr[i];
+        if (i + 1 < arr.length) {
+          str += joiner;
+        }
+      }
+      return str;
+    };
+    module2.exports = function bind(that) {
+      var target = this;
+      if (typeof target !== "function" || toStr.apply(target) !== funcType) {
+        throw new TypeError(ERROR_MESSAGE + target);
+      }
+      var args = slicy(arguments, 1);
+      var bound;
+      var binder = function() {
+        if (this instanceof bound) {
+          var result = target.apply(
+            this,
+            concatty(args, arguments)
+          );
+          if (Object(result) === result) {
+            return result;
+          }
+          return this;
+        }
+        return target.apply(
+          that,
+          concatty(args, arguments)
+        );
+      };
+      var boundLength = max(0, target.length - args.length);
+      var boundArgs = [];
+      for (var i = 0; i < boundLength; i++) {
+        boundArgs[i] = "$" + i;
+      }
+      bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder);
+      if (target.prototype) {
+        var Empty = function Empty2() {
+        };
+        Empty.prototype = target.prototype;
+        bound.prototype = new Empty();
+        Empty.prototype = null;
+      }
+      return bound;
+    };
+  }
+});
+
+// node_modules/function-bind/index.js
+var require_function_bind = __commonJS({
+  "node_modules/function-bind/index.js"(exports2, module2) {
+    "use strict";
+    var implementation = require_implementation();
+    module2.exports = Function.prototype.bind || implementation;
+  }
+});
+
+// node_modules/hasown/index.js
+var require_hasown = __commonJS({
+  "node_modules/hasown/index.js"(exports2, module2) {
+    "use strict";
+    var call = Function.prototype.call;
+    var $hasOwn = Object.prototype.hasOwnProperty;
+    var bind = require_function_bind();
+    module2.exports = bind.call(call, $hasOwn);
+  }
+});
+
+// node_modules/is-core-module/core.json
+var require_core = __commonJS({
+  "node_modules/is-core-module/core.json"(exports2, module2) {
+    module2.exports = {
+      assert: true,
+      "node:assert": [">= 14.18 && < 15", ">= 16"],
+      "assert/strict": ">= 15",
+      "node:assert/strict": ">= 16",
+      async_hooks: ">= 8",
+      "node:async_hooks": [">= 14.18 && < 15", ">= 16"],
+      buffer_ieee754: ">= 0.5 && < 0.9.7",
+      buffer: true,
+      "node:buffer": [">= 14.18 && < 15", ">= 16"],
+      child_process: true,
+      "node:child_process": [">= 14.18 && < 15", ">= 16"],
+      cluster: ">= 0.5",
+      "node:cluster": [">= 14.18 && < 15", ">= 16"],
+      console: true,
+      "node:console": [">= 14.18 && < 15", ">= 16"],
+      constants: true,
+      "node:constants": [">= 14.18 && < 15", ">= 16"],
+      crypto: true,
+      "node:crypto": [">= 14.18 && < 15", ">= 16"],
+      _debug_agent: ">= 1 && < 8",
+      _debugger: "< 8",
+      dgram: true,
+      "node:dgram": [">= 14.18 && < 15", ">= 16"],
+      diagnostics_channel: [">= 14.17 && < 15", ">= 15.1"],
+      "node:diagnostics_channel": [">= 14.18 && < 15", ">= 16"],
+      dns: true,
+      "node:dns": [">= 14.18 && < 15", ">= 16"],
+      "dns/promises": ">= 15",
+      "node:dns/promises": ">= 16",
+      domain: ">= 0.7.12",
+      "node:domain": [">= 14.18 && < 15", ">= 16"],
+      events: true,
+      "node:events": [">= 14.18 && < 15", ">= 16"],
+      freelist: "< 6",
+      fs: true,
+      "node:fs": [">= 14.18 && < 15", ">= 16"],
+      "fs/promises": [">= 10 && < 10.1", ">= 14"],
+      "node:fs/promises": [">= 14.18 && < 15", ">= 16"],
+      _http_agent: ">= 0.11.1",
+      "node:_http_agent": [">= 14.18 && < 15", ">= 16"],
+      _http_client: ">= 0.11.1",
+      "node:_http_client": [">= 14.18 && < 15", ">= 16"],
+      _http_common: ">= 0.11.1",
+      "node:_http_common": [">= 14.18 && < 15", ">= 16"],
+      _http_incoming: ">= 0.11.1",
+      "node:_http_incoming": [">= 14.18 && < 15", ">= 16"],
+      _http_outgoing: ">= 0.11.1",
+      "node:_http_outgoing": [">= 14.18 && < 15", ">= 16"],
+      _http_server: ">= 0.11.1",
+      "node:_http_server": [">= 14.18 && < 15", ">= 16"],
+      http: true,
+      "node:http": [">= 14.18 && < 15", ">= 16"],
+      http2: ">= 8.8",
+      "node:http2": [">= 14.18 && < 15", ">= 16"],
+      https: true,
+      "node:https": [">= 14.18 && < 15", ">= 16"],
+      inspector: ">= 8",
+      "node:inspector": [">= 14.18 && < 15", ">= 16"],
+      "inspector/promises": [">= 19"],
+      "node:inspector/promises": [">= 19"],
+      _linklist: "< 8",
+      module: true,
+      "node:module": [">= 14.18 && < 15", ">= 16"],
+      net: true,
+      "node:net": [">= 14.18 && < 15", ">= 16"],
+      "node-inspect/lib/_inspect": ">= 7.6 && < 12",
+      "node-inspect/lib/internal/inspect_client": ">= 7.6 && < 12",
+      "node-inspect/lib/internal/inspect_repl": ">= 7.6 && < 12",
+      os: true,
+      "node:os": [">= 14.18 && < 15", ">= 16"],
+      path: true,
+      "node:path": [">= 14.18 && < 15", ">= 16"],
+      "path/posix": ">= 15.3",
+      "node:path/posix": ">= 16",
+      "path/win32": ">= 15.3",
+      "node:path/win32": ">= 16",
+      perf_hooks: ">= 8.5",
+      "node:perf_hooks": [">= 14.18 && < 15", ">= 16"],
+      process: ">= 1",
+      "node:process": [">= 14.18 && < 15", ">= 16"],
+      punycode: ">= 0.5",
+      "node:punycode": [">= 14.18 && < 15", ">= 16"],
+      querystring: true,
+      "node:querystring": [">= 14.18 && < 15", ">= 16"],
+      readline: true,
+      "node:readline": [">= 14.18 && < 15", ">= 16"],
+      "readline/promises": ">= 17",
+      "node:readline/promises": ">= 17",
+      repl: true,
+      "node:repl": [">= 14.18 && < 15", ">= 16"],
+      "node:sea": [">= 20.12 && < 21", ">= 21.7"],
+      smalloc: ">= 0.11.5 && < 3",
+      _stream_duplex: ">= 0.9.4",
+      "node:_stream_duplex": [">= 14.18 && < 15", ">= 16"],
+      _stream_transform: ">= 0.9.4",
+      "node:_stream_transform": [">= 14.18 && < 15", ">= 16"],
+      _stream_wrap: ">= 1.4.1",
+      "node:_stream_wrap": [">= 14.18 && < 15", ">= 16"],
+      _stream_passthrough: ">= 0.9.4",
+      "node:_stream_passthrough": [">= 14.18 && < 15", ">= 16"],
+      _stream_readable: ">= 0.9.4",
+      "node:_stream_readable": [">= 14.18 && < 15", ">= 16"],
+      _stream_writable: ">= 0.9.4",
+      "node:_stream_writable": [">= 14.18 && < 15", ">= 16"],
+      stream: true,
+      "node:stream": [">= 14.18 && < 15", ">= 16"],
+      "stream/consumers": ">= 16.7",
+      "node:stream/consumers": ">= 16.7",
+      "stream/promises": ">= 15",
+      "node:stream/promises": ">= 16",
+      "stream/web": ">= 16.5",
+      "node:stream/web": ">= 16.5",
+      string_decoder: true,
+      "node:string_decoder": [">= 14.18 && < 15", ">= 16"],
+      sys: [">= 0.4 && < 0.7", ">= 0.8"],
+      "node:sys": [">= 14.18 && < 15", ">= 16"],
+      "test/reporters": ">= 19.9 && < 20.2",
+      "node:test/reporters": [">= 18.17 && < 19", ">= 19.9", ">= 20"],
+      "test/mock_loader": ">= 22.3 && < 22.7",
+      "node:test/mock_loader": ">= 22.3 && < 22.7",
+      "node:test": [">= 16.17 && < 17", ">= 18"],
+      timers: true,
+      "node:timers": [">= 14.18 && < 15", ">= 16"],
+      "timers/promises": ">= 15",
+      "node:timers/promises": ">= 16",
+      _tls_common: ">= 0.11.13",
+      "node:_tls_common": [">= 14.18 && < 15", ">= 16"],
+      _tls_legacy: ">= 0.11.3 && < 10",
+      _tls_wrap: ">= 0.11.3",
+      "node:_tls_wrap": [">= 14.18 && < 15", ">= 16"],
+      tls: true,
+      "node:tls": [">= 14.18 && < 15", ">= 16"],
+      trace_events: ">= 10",
+      "node:trace_events": [">= 14.18 && < 15", ">= 16"],
+      tty: true,
+      "node:tty": [">= 14.18 && < 15", ">= 16"],
+      url: true,
+      "node:url": [">= 14.18 && < 15", ">= 16"],
+      util: true,
+      "node:util": [">= 14.18 && < 15", ">= 16"],
+      "util/types": ">= 15.3",
+      "node:util/types": ">= 16",
+      "v8/tools/arguments": ">= 10 && < 12",
+      "v8/tools/codemap": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/consarray": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/csvparser": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/logreader": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/profile_view": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/splaytree": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      v8: ">= 1",
+      "node:v8": [">= 14.18 && < 15", ">= 16"],
+      vm: true,
+      "node:vm": [">= 14.18 && < 15", ">= 16"],
+      wasi: [">= 13.4 && < 13.5", ">= 18.17 && < 19", ">= 20"],
+      "node:wasi": [">= 18.17 && < 19", ">= 20"],
+      worker_threads: ">= 11.7",
+      "node:worker_threads": [">= 14.18 && < 15", ">= 16"],
+      zlib: ">= 0.5",
+      "node:zlib": [">= 14.18 && < 15", ">= 16"]
+    };
+  }
+});
+
+// node_modules/is-core-module/index.js
+var require_is_core_module = __commonJS({
+  "node_modules/is-core-module/index.js"(exports2, module2) {
+    "use strict";
+    var hasOwn = require_hasown();
+    function specifierIncluded(current, specifier) {
+      var nodeParts = current.split(".");
+      var parts = specifier.split(" ");
+      var op = parts.length > 1 ? parts[0] : "=";
+      var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split(".");
+      for (var i = 0; i < 3; ++i) {
+        var cur = parseInt(nodeParts[i] || 0, 10);
+        var ver = parseInt(versionParts[i] || 0, 10);
+        if (cur === ver) {
+          continue;
+        }
+        if (op === "<") {
+          return cur < ver;
+        }
+        if (op === ">=") {
+          return cur >= ver;
+        }
+        return false;
+      }
+      return op === ">=";
+    }
+    function matchesRange(current, range) {
+      var specifiers = range.split(/ ?&& ?/);
+      if (specifiers.length === 0) {
+        return false;
+      }
+      for (var i = 0; i < specifiers.length; ++i) {
+        if (!specifierIncluded(current, specifiers[i])) {
+          return false;
+        }
+      }
+      return true;
+    }
+    function versionIncluded(nodeVersion, specifierValue) {
+      if (typeof specifierValue === "boolean") {
+        return specifierValue;
+      }
+      var current = typeof nodeVersion === "undefined" ? process.versions && process.versions.node : nodeVersion;
+      if (typeof current !== "string") {
+        throw new TypeError(typeof nodeVersion === "undefined" ? "Unable to determine current node version" : "If provided, a valid node version is required");
+      }
+      if (specifierValue && typeof specifierValue === "object") {
+        for (var i = 0; i < specifierValue.length; ++i) {
+          if (matchesRange(current, specifierValue[i])) {
+            return true;
+          }
+        }
+        return false;
+      }
+      return matchesRange(current, specifierValue);
+    }
+    var data = require_core();
+    module2.exports = function isCore(x, nodeVersion) {
+      return hasOwn(data, x) && versionIncluded(nodeVersion, data[x]);
+    };
+  }
+});
+
+// node_modules/resolve/lib/async.js
+var require_async = __commonJS({
+  "node_modules/resolve/lib/async.js"(exports2, module2) {
+    var fs = require("fs");
+    var getHomedir = require_homedir();
+    var path = require("path");
+    var caller = require_caller();
+    var nodeModulesPaths = require_node_modules_paths();
+    var normalizeOptions = require_normalize_options();
+    var isCore = require_is_core_module();
+    var realpathFS = process.platform !== "win32" && fs.realpath && typeof fs.realpath.native === "function" ? fs.realpath.native : fs.realpath;
+    var homedir = getHomedir();
+    var defaultPaths = function() {
+      return [
+        path.join(homedir, ".node_modules"),
+        path.join(homedir, ".node_libraries")
+      ];
+    };
+    var defaultIsFile = function isFile(file, cb) {
+      fs.stat(file, function(err, stat) {
+        if (!err) {
+          return cb(null, stat.isFile() || stat.isFIFO());
+        }
+        if (err.code === "ENOENT" || err.code === "ENOTDIR") return cb(null, false);
+        return cb(err);
+      });
+    };
+    var defaultIsDir = function isDirectory(dir, cb) {
+      fs.stat(dir, function(err, stat) {
+        if (!err) {
+          return cb(null, stat.isDirectory());
+        }
+        if (err.code === "ENOENT" || err.code === "ENOTDIR") return cb(null, false);
+        return cb(err);
+      });
+    };
+    var defaultRealpath = function realpath(x, cb) {
+      realpathFS(x, function(realpathErr, realPath) {
+        if (realpathErr && realpathErr.code !== "ENOENT") cb(realpathErr);
+        else cb(null, realpathErr ? x : realPath);
+      });
+    };
+    var maybeRealpath = function maybeRealpath2(realpath, x, opts, cb) {
+      if (opts && opts.preserveSymlinks === false) {
+        realpath(x, cb);
+      } else {
+        cb(null, x);
+      }
+    };
+    var defaultReadPackage = function defaultReadPackage2(readFile, pkgfile, cb) {
+      readFile(pkgfile, function(readFileErr, body) {
+        if (readFileErr) cb(readFileErr);
+        else {
+          try {
+            var pkg = JSON.parse(body);
+            cb(null, pkg);
+          } catch (jsonErr) {
+            cb(null);
+          }
+        }
+      });
+    };
+    var getPackageCandidates = function getPackageCandidates2(x, start, opts) {
+      var dirs = nodeModulesPaths(start, opts, x);
+      for (var i = 0; i < dirs.length; i++) {
+        dirs[i] = path.join(dirs[i], x);
+      }
+      return dirs;
+    };
+    module2.exports = function resolve(x, options, callback) {
+      var cb = callback;
+      var opts = options;
+      if (typeof options === "function") {
+        cb = opts;
+        opts = {};
+      }
+      if (typeof x !== "string") {
+        var err = new TypeError("Path must be a string.");
+        return process.nextTick(function() {
+          cb(err);
+        });
+      }
+      opts = normalizeOptions(x, opts);
+      var isFile = opts.isFile || defaultIsFile;
+      var isDirectory = opts.isDirectory || defaultIsDir;
+      var readFile = opts.readFile || fs.readFile;
+      var realpath = opts.realpath || defaultRealpath;
+      var readPackage = opts.readPackage || defaultReadPackage;
+      if (opts.readFile && opts.readPackage) {
+        var conflictErr = new TypeError("`readFile` and `readPackage` are mutually exclusive.");
+        return process.nextTick(function() {
+          cb(conflictErr);
+        });
+      }
+      var packageIterator = opts.packageIterator;
+      var extensions = opts.extensions || [".js"];
+      var includeCoreModules = opts.includeCoreModules !== false;
+      var basedir = opts.basedir || path.dirname(caller());
+      var parent = opts.filename || basedir;
+      opts.paths = opts.paths || defaultPaths();
+      var absoluteStart = path.resolve(basedir);
+      maybeRealpath(
+        realpath,
+        absoluteStart,
+        opts,
+        function(err2, realStart) {
+          if (err2) cb(err2);
+          else init(realStart);
+        }
+      );
+      var res;
+      function init(basedir2) {
+        if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
+          res = path.resolve(basedir2, x);
+          if (x === "." || x === ".." || x.slice(-1) === "/") res += "/";
+          if (/\/$/.test(x) && res === basedir2) {
+            loadAsDirectory(res, opts.package, onfile);
+          } else loadAsFile(res, opts.package, onfile);
+        } else if (includeCoreModules && isCore(x)) {
+          return cb(null, x);
+        } else loadNodeModules(x, basedir2, function(err2, n, pkg) {
+          if (err2) cb(err2);
+          else if (n) {
+            return maybeRealpath(realpath, n, opts, function(err3, realN) {
+              if (err3) {
+                cb(err3);
+              } else {
+                cb(null, realN, pkg);
+              }
+            });
+          } else {
+            var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+            moduleError.code = "MODULE_NOT_FOUND";
+            cb(moduleError);
+          }
+        });
+      }
+      function onfile(err2, m, pkg) {
+        if (err2) cb(err2);
+        else if (m) cb(null, m, pkg);
+        else loadAsDirectory(res, function(err3, d, pkg2) {
+          if (err3) cb(err3);
+          else if (d) {
+            maybeRealpath(realpath, d, opts, function(err4, realD) {
+              if (err4) {
+                cb(err4);
+              } else {
+                cb(null, realD, pkg2);
+              }
+            });
+          } else {
+            var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+            moduleError.code = "MODULE_NOT_FOUND";
+            cb(moduleError);
+          }
+        });
+      }
+      function loadAsFile(x2, thePackage, callback2) {
+        var loadAsFilePackage = thePackage;
+        var cb2 = callback2;
+        if (typeof loadAsFilePackage === "function") {
+          cb2 = loadAsFilePackage;
+          loadAsFilePackage = void 0;
+        }
+        var exts = [""].concat(extensions);
+        load(exts, x2, loadAsFilePackage);
+        function load(exts2, x3, loadPackage) {
+          if (exts2.length === 0) return cb2(null, void 0, loadPackage);
+          var file = x3 + exts2[0];
+          var pkg = loadPackage;
+          if (pkg) onpkg(null, pkg);
+          else loadpkg(path.dirname(file), onpkg);
+          function onpkg(err2, pkg_, dir) {
+            pkg = pkg_;
+            if (err2) return cb2(err2);
+            if (dir && pkg && opts.pathFilter) {
+              var rfile = path.relative(dir, file);
+              var rel = rfile.slice(0, rfile.length - exts2[0].length);
+              var r = opts.pathFilter(pkg, x3, rel);
+              if (r) return load(
+                [""].concat(extensions.slice()),
+                path.resolve(dir, r),
+                pkg
+              );
+            }
+            isFile(file, onex);
+          }
+          function onex(err2, ex) {
+            if (err2) return cb2(err2);
+            if (ex) return cb2(null, file, pkg);
+            load(exts2.slice(1), x3, pkg);
+          }
+        }
+      }
+      function loadpkg(dir, cb2) {
+        if (dir === "" || dir === "/") return cb2(null);
+        if (process.platform === "win32" && /^\w:[/\\]*$/.test(dir)) {
+          return cb2(null);
+        }
+        if (/[/\\]node_modules[/\\]*$/.test(dir)) return cb2(null);
+        maybeRealpath(realpath, dir, opts, function(unwrapErr, pkgdir) {
+          if (unwrapErr) return loadpkg(path.dirname(dir), cb2);
+          var pkgfile = path.join(pkgdir, "package.json");
+          isFile(pkgfile, function(err2, ex) {
+            if (!ex) return loadpkg(path.dirname(dir), cb2);
+            readPackage(readFile, pkgfile, function(err3, pkgParam) {
+              if (err3) cb2(err3);
+              var pkg = pkgParam;
+              if (pkg && opts.packageFilter) {
+                pkg = opts.packageFilter(pkg, pkgfile);
+              }
+              cb2(null, pkg, dir);
+            });
+          });
+        });
+      }
+      function loadAsDirectory(x2, loadAsDirectoryPackage, callback2) {
+        var cb2 = callback2;
+        var fpkg = loadAsDirectoryPackage;
+        if (typeof fpkg === "function") {
+          cb2 = fpkg;
+          fpkg = opts.package;
+        }
+        maybeRealpath(realpath, x2, opts, function(unwrapErr, pkgdir) {
+          if (unwrapErr) return cb2(unwrapErr);
+          var pkgfile = path.join(pkgdir, "package.json");
+          isFile(pkgfile, function(err2, ex) {
+            if (err2) return cb2(err2);
+            if (!ex) return loadAsFile(path.join(x2, "index"), fpkg, cb2);
+            readPackage(readFile, pkgfile, function(err3, pkgParam) {
+              if (err3) return cb2(err3);
+              var pkg = pkgParam;
+              if (pkg && opts.packageFilter) {
+                pkg = opts.packageFilter(pkg, pkgfile);
+              }
+              if (pkg && pkg.main) {
+                if (typeof pkg.main !== "string") {
+                  var mainError = new TypeError("package \u201C" + pkg.name + "\u201D `main` must be a string");
+                  mainError.code = "INVALID_PACKAGE_MAIN";
+                  return cb2(mainError);
+                }
+                if (pkg.main === "." || pkg.main === "./") {
+                  pkg.main = "index";
+                }
+                loadAsFile(path.resolve(x2, pkg.main), pkg, function(err4, m, pkg2) {
+                  if (err4) return cb2(err4);
+                  if (m) return cb2(null, m, pkg2);
+                  if (!pkg2) return loadAsFile(path.join(x2, "index"), pkg2, cb2);
+                  var dir = path.resolve(x2, pkg2.main);
+                  loadAsDirectory(dir, pkg2, function(err5, n, pkg3) {
+                    if (err5) return cb2(err5);
+                    if (n) return cb2(null, n, pkg3);
+                    loadAsFile(path.join(x2, "index"), pkg3, cb2);
+                  });
+                });
+                return;
+              }
+              loadAsFile(path.join(x2, "/index"), pkg, cb2);
+            });
+          });
+        });
+      }
+      function processDirs(cb2, dirs) {
+        if (dirs.length === 0) return cb2(null, void 0);
+        var dir = dirs[0];
+        isDirectory(path.dirname(dir), isdir);
+        function isdir(err2, isdir2) {
+          if (err2) return cb2(err2);
+          if (!isdir2) return processDirs(cb2, dirs.slice(1));
+          loadAsFile(dir, opts.package, onfile2);
+        }
+        function onfile2(err2, m, pkg) {
+          if (err2) return cb2(err2);
+          if (m) return cb2(null, m, pkg);
+          loadAsDirectory(dir, opts.package, ondir);
+        }
+        function ondir(err2, n, pkg) {
+          if (err2) return cb2(err2);
+          if (n) return cb2(null, n, pkg);
+          processDirs(cb2, dirs.slice(1));
+        }
+      }
+      function loadNodeModules(x2, start, cb2) {
+        var thunk = function() {
+          return getPackageCandidates(x2, start, opts);
+        };
+        processDirs(
+          cb2,
+          packageIterator ? packageIterator(x2, start, thunk, opts) : thunk()
+        );
+      }
+    };
+  }
+});
+
+// node_modules/resolve/lib/core.json
+var require_core2 = __commonJS({
+  "node_modules/resolve/lib/core.json"(exports2, module2) {
+    module2.exports = {
+      assert: true,
+      "node:assert": [">= 14.18 && < 15", ">= 16"],
+      "assert/strict": ">= 15",
+      "node:assert/strict": ">= 16",
+      async_hooks: ">= 8",
+      "node:async_hooks": [">= 14.18 && < 15", ">= 16"],
+      buffer_ieee754: ">= 0.5 && < 0.9.7",
+      buffer: true,
+      "node:buffer": [">= 14.18 && < 15", ">= 16"],
+      child_process: true,
+      "node:child_process": [">= 14.18 && < 15", ">= 16"],
+      cluster: ">= 0.5",
+      "node:cluster": [">= 14.18 && < 15", ">= 16"],
+      console: true,
+      "node:console": [">= 14.18 && < 15", ">= 16"],
+      constants: true,
+      "node:constants": [">= 14.18 && < 15", ">= 16"],
+      crypto: true,
+      "node:crypto": [">= 14.18 && < 15", ">= 16"],
+      _debug_agent: ">= 1 && < 8",
+      _debugger: "< 8",
+      dgram: true,
+      "node:dgram": [">= 14.18 && < 15", ">= 16"],
+      diagnostics_channel: [">= 14.17 && < 15", ">= 15.1"],
+      "node:diagnostics_channel": [">= 14.18 && < 15", ">= 16"],
+      dns: true,
+      "node:dns": [">= 14.18 && < 15", ">= 16"],
+      "dns/promises": ">= 15",
+      "node:dns/promises": ">= 16",
+      domain: ">= 0.7.12",
+      "node:domain": [">= 14.18 && < 15", ">= 16"],
+      events: true,
+      "node:events": [">= 14.18 && < 15", ">= 16"],
+      freelist: "< 6",
+      fs: true,
+      "node:fs": [">= 14.18 && < 15", ">= 16"],
+      "fs/promises": [">= 10 && < 10.1", ">= 14"],
+      "node:fs/promises": [">= 14.18 && < 15", ">= 16"],
+      _http_agent: ">= 0.11.1",
+      "node:_http_agent": [">= 14.18 && < 15", ">= 16"],
+      _http_client: ">= 0.11.1",
+      "node:_http_client": [">= 14.18 && < 15", ">= 16"],
+      _http_common: ">= 0.11.1",
+      "node:_http_common": [">= 14.18 && < 15", ">= 16"],
+      _http_incoming: ">= 0.11.1",
+      "node:_http_incoming": [">= 14.18 && < 15", ">= 16"],
+      _http_outgoing: ">= 0.11.1",
+      "node:_http_outgoing": [">= 14.18 && < 15", ">= 16"],
+      _http_server: ">= 0.11.1",
+      "node:_http_server": [">= 14.18 && < 15", ">= 16"],
+      http: true,
+      "node:http": [">= 14.18 && < 15", ">= 16"],
+      http2: ">= 8.8",
+      "node:http2": [">= 14.18 && < 15", ">= 16"],
+      https: true,
+      "node:https": [">= 14.18 && < 15", ">= 16"],
+      inspector: ">= 8",
+      "node:inspector": [">= 14.18 && < 15", ">= 16"],
+      "inspector/promises": [">= 19"],
+      "node:inspector/promises": [">= 19"],
+      _linklist: "< 8",
+      module: true,
+      "node:module": [">= 14.18 && < 15", ">= 16"],
+      net: true,
+      "node:net": [">= 14.18 && < 15", ">= 16"],
+      "node-inspect/lib/_inspect": ">= 7.6 && < 12",
+      "node-inspect/lib/internal/inspect_client": ">= 7.6 && < 12",
+      "node-inspect/lib/internal/inspect_repl": ">= 7.6 && < 12",
+      os: true,
+      "node:os": [">= 14.18 && < 15", ">= 16"],
+      path: true,
+      "node:path": [">= 14.18 && < 15", ">= 16"],
+      "path/posix": ">= 15.3",
+      "node:path/posix": ">= 16",
+      "path/win32": ">= 15.3",
+      "node:path/win32": ">= 16",
+      perf_hooks: ">= 8.5",
+      "node:perf_hooks": [">= 14.18 && < 15", ">= 16"],
+      process: ">= 1",
+      "node:process": [">= 14.18 && < 15", ">= 16"],
+      punycode: ">= 0.5",
+      "node:punycode": [">= 14.18 && < 15", ">= 16"],
+      querystring: true,
+      "node:querystring": [">= 14.18 && < 15", ">= 16"],
+      readline: true,
+      "node:readline": [">= 14.18 && < 15", ">= 16"],
+      "readline/promises": ">= 17",
+      "node:readline/promises": ">= 17",
+      repl: true,
+      "node:repl": [">= 14.18 && < 15", ">= 16"],
+      smalloc: ">= 0.11.5 && < 3",
+      _stream_duplex: ">= 0.9.4",
+      "node:_stream_duplex": [">= 14.18 && < 15", ">= 16"],
+      _stream_transform: ">= 0.9.4",
+      "node:_stream_transform": [">= 14.18 && < 15", ">= 16"],
+      _stream_wrap: ">= 1.4.1",
+      "node:_stream_wrap": [">= 14.18 && < 15", ">= 16"],
+      _stream_passthrough: ">= 0.9.4",
+      "node:_stream_passthrough": [">= 14.18 && < 15", ">= 16"],
+      _stream_readable: ">= 0.9.4",
+      "node:_stream_readable": [">= 14.18 && < 15", ">= 16"],
+      _stream_writable: ">= 0.9.4",
+      "node:_stream_writable": [">= 14.18 && < 15", ">= 16"],
+      stream: true,
+      "node:stream": [">= 14.18 && < 15", ">= 16"],
+      "stream/consumers": ">= 16.7",
+      "node:stream/consumers": ">= 16.7",
+      "stream/promises": ">= 15",
+      "node:stream/promises": ">= 16",
+      "stream/web": ">= 16.5",
+      "node:stream/web": ">= 16.5",
+      string_decoder: true,
+      "node:string_decoder": [">= 14.18 && < 15", ">= 16"],
+      sys: [">= 0.4 && < 0.7", ">= 0.8"],
+      "node:sys": [">= 14.18 && < 15", ">= 16"],
+      "test/reporters": ">= 19.9 && < 20.2",
+      "node:test/reporters": [">= 18.17 && < 19", ">= 19.9", ">= 20"],
+      "node:test": [">= 16.17 && < 17", ">= 18"],
+      timers: true,
+      "node:timers": [">= 14.18 && < 15", ">= 16"],
+      "timers/promises": ">= 15",
+      "node:timers/promises": ">= 16",
+      _tls_common: ">= 0.11.13",
+      "node:_tls_common": [">= 14.18 && < 15", ">= 16"],
+      _tls_legacy: ">= 0.11.3 && < 10",
+      _tls_wrap: ">= 0.11.3",
+      "node:_tls_wrap": [">= 14.18 && < 15", ">= 16"],
+      tls: true,
+      "node:tls": [">= 14.18 && < 15", ">= 16"],
+      trace_events: ">= 10",
+      "node:trace_events": [">= 14.18 && < 15", ">= 16"],
+      tty: true,
+      "node:tty": [">= 14.18 && < 15", ">= 16"],
+      url: true,
+      "node:url": [">= 14.18 && < 15", ">= 16"],
+      util: true,
+      "node:util": [">= 14.18 && < 15", ">= 16"],
+      "util/types": ">= 15.3",
+      "node:util/types": ">= 16",
+      "v8/tools/arguments": ">= 10 && < 12",
+      "v8/tools/codemap": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/consarray": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/csvparser": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/logreader": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/profile_view": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      "v8/tools/splaytree": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+      v8: ">= 1",
+      "node:v8": [">= 14.18 && < 15", ">= 16"],
+      vm: true,
+      "node:vm": [">= 14.18 && < 15", ">= 16"],
+      wasi: [">= 13.4 && < 13.5", ">= 18.17 && < 19", ">= 20"],
+      "node:wasi": [">= 18.17 && < 19", ">= 20"],
+      worker_threads: ">= 11.7",
+      "node:worker_threads": [">= 14.18 && < 15", ">= 16"],
+      zlib: ">= 0.5",
+      "node:zlib": [">= 14.18 && < 15", ">= 16"]
+    };
+  }
+});
+
+// node_modules/resolve/lib/core.js
+var require_core3 = __commonJS({
+  "node_modules/resolve/lib/core.js"(exports2, module2) {
+    "use strict";
+    var isCoreModule = require_is_core_module();
+    var data = require_core2();
+    var core = {};
+    for (mod in data) {
+      if (Object.prototype.hasOwnProperty.call(data, mod)) {
+        core[mod] = isCoreModule(mod);
+      }
+    }
+    var mod;
+    module2.exports = core;
+  }
+});
+
+// node_modules/resolve/lib/is-core.js
+var require_is_core = __commonJS({
+  "node_modules/resolve/lib/is-core.js"(exports2, module2) {
+    var isCoreModule = require_is_core_module();
+    module2.exports = function isCore(x) {
+      return isCoreModule(x);
+    };
+  }
+});
+
+// node_modules/resolve/lib/sync.js
+var require_sync = __commonJS({
+  "node_modules/resolve/lib/sync.js"(exports2, module2) {
+    var isCore = require_is_core_module();
+    var fs = require("fs");
+    var path = require("path");
+    var getHomedir = require_homedir();
+    var caller = require_caller();
+    var nodeModulesPaths = require_node_modules_paths();
+    var normalizeOptions = require_normalize_options();
+    var realpathFS = process.platform !== "win32" && fs.realpathSync && typeof fs.realpathSync.native === "function" ? fs.realpathSync.native : fs.realpathSync;
+    var homedir = getHomedir();
+    var defaultPaths = function() {
+      return [
+        path.join(homedir, ".node_modules"),
+        path.join(homedir, ".node_libraries")
+      ];
+    };
+    var defaultIsFile = function isFile(file) {
+      try {
+        var stat = fs.statSync(file, { throwIfNoEntry: false });
+      } catch (e) {
+        if (e && (e.code === "ENOENT" || e.code === "ENOTDIR")) return false;
+        throw e;
+      }
+      return !!stat && (stat.isFile() || stat.isFIFO());
+    };
+    var defaultIsDir = function isDirectory(dir) {
+      try {
+        var stat = fs.statSync(dir, { throwIfNoEntry: false });
+      } catch (e) {
+        if (e && (e.code === "ENOENT" || e.code === "ENOTDIR")) return false;
+        throw e;
+      }
+      return !!stat && stat.isDirectory();
+    };
+    var defaultRealpathSync = function realpathSync(x) {
+      try {
+        return realpathFS(x);
+      } catch (realpathErr) {
+        if (realpathErr.code !== "ENOENT") {
+          throw realpathErr;
+        }
+      }
+      return x;
+    };
+    var maybeRealpathSync = function maybeRealpathSync2(realpathSync, x, opts) {
+      if (opts && opts.preserveSymlinks === false) {
+        return realpathSync(x);
+      }
+      return x;
+    };
+    var defaultReadPackageSync = function defaultReadPackageSync2(readFileSync, pkgfile) {
+      var body = readFileSync(pkgfile);
+      try {
+        var pkg = JSON.parse(body);
+        return pkg;
+      } catch (jsonErr) {
+      }
+    };
+    var getPackageCandidates = function getPackageCandidates2(x, start, opts) {
+      var dirs = nodeModulesPaths(start, opts, x);
+      for (var i = 0; i < dirs.length; i++) {
+        dirs[i] = path.join(dirs[i], x);
+      }
+      return dirs;
+    };
+    module2.exports = function resolveSync(x, options) {
+      if (typeof x !== "string") {
+        throw new TypeError("Path must be a string.");
+      }
+      var opts = normalizeOptions(x, options);
+      var isFile = opts.isFile || defaultIsFile;
+      var readFileSync = opts.readFileSync || fs.readFileSync;
+      var isDirectory = opts.isDirectory || defaultIsDir;
+      var realpathSync = opts.realpathSync || defaultRealpathSync;
+      var readPackageSync = opts.readPackageSync || defaultReadPackageSync;
+      if (opts.readFileSync && opts.readPackageSync) {
+        throw new TypeError("`readFileSync` and `readPackageSync` are mutually exclusive.");
+      }
+      var packageIterator = opts.packageIterator;
+      var extensions = opts.extensions || [".js"];
+      var includeCoreModules = opts.includeCoreModules !== false;
+      var basedir = opts.basedir || path.dirname(caller());
+      var parent = opts.filename || basedir;
+      opts.paths = opts.paths || defaultPaths();
+      var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts);
+      if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
+        var res = path.resolve(absoluteStart, x);
+        if (x === "." || x === ".." || x.slice(-1) === "/") res += "/";
+        var m = loadAsFileSync(res) || loadAsDirectorySync(res);
+        if (m) return maybeRealpathSync(realpathSync, m, opts);
+      } else if (includeCoreModules && isCore(x)) {
+        return x;
+      } else {
+        var n = loadNodeModulesSync(x, absoluteStart);
+        if (n) return maybeRealpathSync(realpathSync, n, opts);
+      }
+      var err = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+      err.code = "MODULE_NOT_FOUND";
+      throw err;
+      function loadAsFileSync(x2) {
+        var pkg = loadpkg(path.dirname(x2));
+        if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {
+          var rfile = path.relative(pkg.dir, x2);
+          var r = opts.pathFilter(pkg.pkg, x2, rfile);
+          if (r) {
+            x2 = path.resolve(pkg.dir, r);
+          }
+        }
+        if (isFile(x2)) {
+          return x2;
+        }
+        for (var i = 0; i < extensions.length; i++) {
+          var file = x2 + extensions[i];
+          if (isFile(file)) {
+            return file;
+          }
+        }
+      }
+      function loadpkg(dir) {
+        if (dir === "" || dir === "/") return;
+        if (process.platform === "win32" && /^\w:[/\\]*$/.test(dir)) {
+          return;
+        }
+        if (/[/\\]node_modules[/\\]*$/.test(dir)) return;
+        var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), "package.json");
+        if (!isFile(pkgfile)) {
+          return loadpkg(path.dirname(dir));
+        }
+        var pkg = readPackageSync(readFileSync, pkgfile);
+        if (pkg && opts.packageFilter) {
+          pkg = opts.packageFilter(
+            pkg,
+            /*pkgfile,*/
+            dir
+          );
+        }
+        return { pkg, dir };
+      }
+      function loadAsDirectorySync(x2) {
+        var pkgfile = path.join(maybeRealpathSync(realpathSync, x2, opts), "/package.json");
+        if (isFile(pkgfile)) {
+          try {
+            var pkg = readPackageSync(readFileSync, pkgfile);
+          } catch (e) {
+          }
+          if (pkg && opts.packageFilter) {
+            pkg = opts.packageFilter(
+              pkg,
+              /*pkgfile,*/
+              x2
+            );
+          }
+          if (pkg && pkg.main) {
+            if (typeof pkg.main !== "string") {
+              var mainError = new TypeError("package \u201C" + pkg.name + "\u201D `main` must be a string");
+              mainError.code = "INVALID_PACKAGE_MAIN";
+              throw mainError;
+            }
+            if (pkg.main === "." || pkg.main === "./") {
+              pkg.main = "index";
+            }
+            try {
+              var m2 = loadAsFileSync(path.resolve(x2, pkg.main));
+              if (m2) return m2;
+              var n2 = loadAsDirectorySync(path.resolve(x2, pkg.main));
+              if (n2) return n2;
+            } catch (e) {
+            }
+          }
+        }
+        return loadAsFileSync(path.join(x2, "/index"));
+      }
+      function loadNodeModulesSync(x2, start) {
+        var thunk = function() {
+          return getPackageCandidates(x2, start, opts);
+        };
+        var dirs = packageIterator ? packageIterator(x2, start, thunk, opts) : thunk();
+        for (var i = 0; i < dirs.length; i++) {
+          var dir = dirs[i];
+          if (isDirectory(path.dirname(dir))) {
+            var m2 = loadAsFileSync(dir);
+            if (m2) return m2;
+            var n2 = loadAsDirectorySync(dir);
+            if (n2) return n2;
+          }
+        }
+      }
+    };
+  }
+});
+
+// node_modules/resolve/index.js
+var require_resolve = __commonJS({
+  "node_modules/resolve/index.js"(exports2, module2) {
+    var async = require_async();
+    async.core = require_core3();
+    async.isCore = require_is_core();
+    async.sync = require_sync();
+    module2.exports = async;
+  }
+});
+
+// node_modules/postcss-import/lib/resolve-id.js
+var require_resolve_id = __commonJS({
+  "node_modules/postcss-import/lib/resolve-id.js"(exports2, module2) {
+    "use strict";
+    var resolve = require_resolve();
+    var moduleDirectories = ["web_modules", "node_modules"];
+    function resolveModule(id, opts) {
+      return new Promise((res, rej) => {
+        resolve(id, opts, (err, path) => err ? rej(err) : res(path));
+      });
+    }
+    module2.exports = function(id, base, options) {
+      const paths = options.path;
+      const resolveOpts = {
+        basedir: base,
+        moduleDirectory: moduleDirectories.concat(options.addModulesDirectories),
+        paths,
+        extensions: [".css"],
+        packageFilter: function processPackage(pkg) {
+          if (pkg.style) pkg.main = pkg.style;
+          else if (!pkg.main || !/\.css$/.test(pkg.main)) pkg.main = "index.css";
+          return pkg;
+        },
+        preserveSymlinks: false
+      };
+      return resolveModule(`./${id}`, resolveOpts).catch(() => resolveModule(id, resolveOpts)).catch(() => {
+        if (paths.indexOf(base) === -1) paths.unshift(base);
+        throw new Error(
+          `Failed to find '${id}'
+  in [
+    ${paths.join(",\n        ")}
+  ]`
+        );
+      });
+    };
+  }
+});
+
+// node_modules/pify/index.js
+var require_pify = __commonJS({
+  "node_modules/pify/index.js"(exports2, module2) {
+    "use strict";
+    var processFn = function(fn, P, opts) {
+      return function() {
+        var that = this;
+        var args = new Array(arguments.length);
+        for (var i = 0; i < arguments.length; i++) {
+          args[i] = arguments[i];
+        }
+        return new P(function(resolve, reject) {
+          args.push(function(err, result) {
+            if (err) {
+              reject(err);
+            } else if (opts.multiArgs) {
+              var results = new Array(arguments.length - 1);
+              for (var i2 = 1; i2 < arguments.length; i2++) {
+                results[i2 - 1] = arguments[i2];
+              }
+              resolve(results);
+            } else {
+              resolve(result);
+            }
+          });
+          fn.apply(that, args);
+        });
+      };
+    };
+    var pify = module2.exports = function(obj, P, opts) {
+      if (typeof P !== "function") {
+        opts = P;
+        P = Promise;
+      }
+      opts = opts || {};
+      opts.exclude = opts.exclude || [/.+Sync$/];
+      var filter = function(key) {
+        var match = function(pattern) {
+          return typeof pattern === "string" ? key === pattern : pattern.test(key);
+        };
+        return opts.include ? opts.include.some(match) : !opts.exclude.some(match);
+      };
+      var ret = typeof obj === "function" ? function() {
+        if (opts.excludeMain) {
+          return obj.apply(this, arguments);
+        }
+        return processFn(obj, P, opts).apply(this, arguments);
+      } : {};
+      return Object.keys(obj).reduce(function(ret2, key) {
+        var x = obj[key];
+        ret2[key] = typeof x === "function" && filter(key) ? processFn(x, P, opts) : x;
+        return ret2;
+      }, ret);
+    };
+    pify.all = pify;
+  }
+});
+
+// node_modules/read-cache/index.js
+var require_read_cache = __commonJS({
+  "node_modules/read-cache/index.js"(exports2, module2) {
+    var fs = require("fs");
+    var path = require("path");
+    var pify = require_pify();
+    var stat = pify(fs.stat);
+    var readFile = pify(fs.readFile);
+    var resolve = path.resolve;
+    var cache = /* @__PURE__ */ Object.create(null);
+    function convert(content, encoding) {
+      if (Buffer.isEncoding(encoding)) {
+        return content.toString(encoding);
+      }
+      return content;
+    }
+    module2.exports = function(path2, encoding) {
+      path2 = resolve(path2);
+      return stat(path2).then(function(stats) {
+        var item = cache[path2];
+        if (item && item.mtime.getTime() === stats.mtime.getTime()) {
+          return convert(item.content, encoding);
+        }
+        return readFile(path2).then(function(data) {
+          cache[path2] = {
+            mtime: stats.mtime,
+            content: data
+          };
+          return convert(data, encoding);
+        });
+      }).catch(function(err) {
+        cache[path2] = null;
+        return Promise.reject(err);
+      });
+    };
+    module2.exports.sync = function(path2, encoding) {
+      path2 = resolve(path2);
+      try {
+        var stats = fs.statSync(path2);
+        var item = cache[path2];
+        if (item && item.mtime.getTime() === stats.mtime.getTime()) {
+          return convert(item.content, encoding);
+        }
+        var data = fs.readFileSync(path2);
+        cache[path2] = {
+          mtime: stats.mtime,
+          content: data
+        };
+        return convert(data, encoding);
+      } catch (err) {
+        cache[path2] = null;
+        throw err;
+      }
+    };
+    module2.exports.get = function(path2, encoding) {
+      path2 = resolve(path2);
+      if (cache[path2]) {
+        return convert(cache[path2].content, encoding);
+      }
+      return null;
+    };
+    module2.exports.clear = function() {
+      cache = /* @__PURE__ */ Object.create(null);
+    };
+  }
+});
+
+// node_modules/postcss-import/lib/data-url.js
+var require_data_url = __commonJS({
+  "node_modules/postcss-import/lib/data-url.js"(exports2, module2) {
+    "use strict";
+    var dataURLRegexp = /^data:text\/css;base64,/i;
+    function isValid(url) {
+      return dataURLRegexp.test(url);
+    }
+    function contents(url) {
+      return Buffer.from(url.slice(21), "base64").toString();
+    }
+    module2.exports = {
+      isValid,
+      contents
+    };
+  }
+});
+
+// node_modules/postcss-import/lib/load-content.js
+var require_load_content = __commonJS({
+  "node_modules/postcss-import/lib/load-content.js"(exports2, module2) {
+    "use strict";
+    var readCache = require_read_cache();
+    var dataURL = require_data_url();
+    module2.exports = (filename) => {
+      if (dataURL.isValid(filename)) {
+        return dataURL.contents(filename);
+      }
+      return readCache(filename, "utf-8");
+    };
+  }
+});
+
+// node_modules/postcss-import/lib/process-content.js
+var require_process_content = __commonJS({
+  "node_modules/postcss-import/lib/process-content.js"(exports2, module2) {
+    "use strict";
+    var path = require("path");
+    var sugarss;
+    module2.exports = function processContent(result, content, filename, options, postcss) {
+      const { plugins } = options;
+      const ext = path.extname(filename);
+      const parserList = [];
+      if (ext === ".sss") {
+        if (!sugarss) {
+          try {
+            sugarss = require("sugarss");
+          } catch {
+          }
+        }
+        if (sugarss)
+          return runPostcss(postcss, content, filename, plugins, [sugarss]);
+      }
+      if (result.opts.syntax?.parse) {
+        parserList.push(result.opts.syntax.parse);
+      }
+      if (result.opts.parser) parserList.push(result.opts.parser);
+      parserList.push(null);
+      return runPostcss(postcss, content, filename, plugins, parserList);
+    };
+    function runPostcss(postcss, content, filename, plugins, parsers, index) {
+      if (!index) index = 0;
+      return postcss(plugins).process(content, {
+        from: filename,
+        parser: parsers[index]
+      }).catch((err) => {
+        index++;
+        if (index === parsers.length) throw err;
+        return runPostcss(postcss, content, filename, plugins, parsers, index);
+      });
+    }
+  }
+});
+
+// node_modules/postcss-value-parser/lib/parse.js
+var require_parse2 = __commonJS({
+  "node_modules/postcss-value-parser/lib/parse.js"(exports2, module2) {
+    var openParentheses = "(".charCodeAt(0);
+    var closeParentheses = ")".charCodeAt(0);
+    var singleQuote = "'".charCodeAt(0);
+    var doubleQuote = '"'.charCodeAt(0);
+    var backslash = "\\".charCodeAt(0);
+    var slash = "/".charCodeAt(0);
+    var comma = ",".charCodeAt(0);
+    var colon = ":".charCodeAt(0);
+    var star = "*".charCodeAt(0);
+    var uLower = "u".charCodeAt(0);
+    var uUpper = "U".charCodeAt(0);
+    var plus = "+".charCodeAt(0);
+    var isUnicodeRange = /^[a-f0-9?-]+$/i;
+    module2.exports = function(input) {
+      var tokens = [];
+      var value = input;
+      var next, quote, prev, token, escape, escapePos, whitespacePos, parenthesesOpenPos;
+      var pos = 0;
+      var code = value.charCodeAt(pos);
+      var max = value.length;
+      var stack = [{ nodes: tokens }];
+      var balanced = 0;
+      var parent;
+      var name = "";
+      var before = "";
+      var after = "";
+      while (pos < max) {
+        if (code <= 32) {
+          next = pos;
+          do {
+            next += 1;
+            code = value.charCodeAt(next);
+          } while (code <= 32);
+          token = value.slice(pos, next);
+          prev = tokens[tokens.length - 1];
+          if (code === closeParentheses && balanced) {
+            after = token;
+          } else if (prev && prev.type === "div") {
+            prev.after = token;
+            prev.sourceEndIndex += token.length;
+          } else if (code === comma || code === colon || code === slash && value.charCodeAt(next + 1) !== star && (!parent || parent && parent.type === "function" && parent.value !== "calc")) {
+            before = token;
+          } else {
+            tokens.push({
+              type: "space",
+              sourceIndex: pos,
+              sourceEndIndex: next,
+              value: token
+            });
+          }
+          pos = next;
+        } else if (code === singleQuote || code === doubleQuote) {
+          next = pos;
+          quote = code === singleQuote ? "'" : '"';
+          token = {
+            type: "string",
+            sourceIndex: pos,
+            quote
+          };
+          do {
+            escape = false;
+            next = value.indexOf(quote, next + 1);
+            if (~next) {
+              escapePos = next;
+              while (value.charCodeAt(escapePos - 1) === backslash) {
+                escapePos -= 1;
+                escape = !escape;
+              }
+            } else {
+              value += quote;
+              next = value.length - 1;
+              token.unclosed = true;
+            }
+          } while (escape);
+          token.value = value.slice(pos + 1, next);
+          token.sourceEndIndex = token.unclosed ? next : next + 1;
+          tokens.push(token);
+          pos = next + 1;
+          code = value.charCodeAt(pos);
+        } else if (code === slash && value.charCodeAt(pos + 1) === star) {
+          next = value.indexOf("*/", pos);
+          token = {
+            type: "comment",
+            sourceIndex: pos,
+            sourceEndIndex: next + 2
+          };
+          if (next === -1) {
+            token.unclosed = true;
+            next = value.length;
+            token.sourceEndIndex = next;
+          }
+          token.value = value.slice(pos + 2, next);
+          tokens.push(token);
+          pos = next + 2;
+          code = value.charCodeAt(pos);
+        } else if ((code === slash || code === star) && parent && parent.type === "function" && parent.value === "calc") {
+          token = value[pos];
+          tokens.push({
+            type: "word",
+            sourceIndex: pos - before.length,
+            sourceEndIndex: pos + token.length,
+            value: token
+          });
+          pos += 1;
+          code = value.charCodeAt(pos);
+        } else if (code === slash || code === comma || code === colon) {
+          token = value[pos];
+          tokens.push({
+            type: "div",
+            sourceIndex: pos - before.length,
+            sourceEndIndex: pos + token.length,
+            value: token,
+            before,
+            after: ""
+          });
+          before = "";
+          pos += 1;
+          code = value.charCodeAt(pos);
+        } else if (openParentheses === code) {
+          next = pos;
+          do {
+            next += 1;
+            code = value.charCodeAt(next);
+          } while (code <= 32);
+          parenthesesOpenPos = pos;
+          token = {
+            type: "function",
+            sourceIndex: pos - name.length,
+            value: name,
+            before: value.slice(parenthesesOpenPos + 1, next)
+          };
+          pos = next;
+          if (name === "url" && code !== singleQuote && code !== doubleQuote) {
+            next -= 1;
+            do {
+              escape = false;
+              next = value.indexOf(")", next + 1);
+              if (~next) {
+                escapePos = next;
+                while (value.charCodeAt(escapePos - 1) === backslash) {
+                  escapePos -= 1;
+                  escape = !escape;
+                }
+              } else {
+                value += ")";
+                next = value.length - 1;
+                token.unclosed = true;
+              }
+            } while (escape);
+            whitespacePos = next;
+            do {
+              whitespacePos -= 1;
+              code = value.charCodeAt(whitespacePos);
+            } while (code <= 32);
+            if (parenthesesOpenPos < whitespacePos) {
+              if (pos !== whitespacePos + 1) {
+                token.nodes = [
+                  {
+                    type: "word",
+                    sourceIndex: pos,
+                    sourceEndIndex: whitespacePos + 1,
+                    value: value.slice(pos, whitespacePos + 1)
+                  }
+                ];
+              } else {
+                token.nodes = [];
+              }
+              if (token.unclosed && whitespacePos + 1 !== next) {
+                token.after = "";
+                token.nodes.push({
+                  type: "space",
+                  sourceIndex: whitespacePos + 1,
+                  sourceEndIndex: next,
+                  value: value.slice(whitespacePos + 1, next)
+                });
+              } else {
+                token.after = value.slice(whitespacePos + 1, next);
+                token.sourceEndIndex = next;
+              }
+            } else {
+              token.after = "";
+              token.nodes = [];
+            }
+            pos = next + 1;
+            token.sourceEndIndex = token.unclosed ? next : pos;
+            code = value.charCodeAt(pos);
+            tokens.push(token);
+          } else {
+            balanced += 1;
+            token.after = "";
+            token.sourceEndIndex = pos + 1;
+            tokens.push(token);
+            stack.push(token);
+            tokens = token.nodes = [];
+            parent = token;
+          }
+          name = "";
+        } else if (closeParentheses === code && balanced) {
+          pos += 1;
+          code = value.charCodeAt(pos);
+          parent.after = after;
+          parent.sourceEndIndex += after.length;
+          after = "";
+          balanced -= 1;
+          stack[stack.length - 1].sourceEndIndex = pos;
+          stack.pop();
+          parent = stack[balanced];
+          tokens = parent.nodes;
+        } else {
+          next = pos;
+          do {
+            if (code === backslash) {
+              next += 1;
+            }
+            next += 1;
+            code = value.charCodeAt(next);
+          } while (next < max && !(code <= 32 || code === singleQuote || code === doubleQuote || code === comma || code === colon || code === slash || code === openParentheses || code === star && parent && parent.type === "function" && parent.value === "calc" || code === slash && parent.type === "function" && parent.value === "calc" || code === closeParentheses && balanced));
+          token = value.slice(pos, next);
+          if (openParentheses === code) {
+            name = token;
+          } else if ((uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) && plus === token.charCodeAt(1) && isUnicodeRange.test(token.slice(2))) {
+            tokens.push({
+              type: "unicode-range",
+              sourceIndex: pos,
+              sourceEndIndex: next,
+              value: token
+            });
+          } else {
+            tokens.push({
+              type: "word",
+              sourceIndex: pos,
+              sourceEndIndex: next,
+              value: token
+            });
+          }
+          pos = next;
+        }
+      }
+      for (pos = stack.length - 1; pos; pos -= 1) {
+        stack[pos].unclosed = true;
+        stack[pos].sourceEndIndex = value.length;
+      }
+      return stack[0].nodes;
+    };
+  }
+});
+
+// node_modules/postcss-value-parser/lib/walk.js
+var require_walk = __commonJS({
+  "node_modules/postcss-value-parser/lib/walk.js"(exports2, module2) {
+    module2.exports = function walk(nodes, cb, bubble) {
+      var i, max, node, result;
+      for (i = 0, max = nodes.length; i < max; i += 1) {
+        node = nodes[i];
+        if (!bubble) {
+          result = cb(node, i, nodes);
+        }
+        if (result !== false && node.type === "function" && Array.isArray(node.nodes)) {
+          walk(node.nodes, cb, bubble);
+        }
+        if (bubble) {
+          cb(node, i, nodes);
+        }
+      }
+    };
+  }
+});
+
+// node_modules/postcss-value-parser/lib/stringify.js
+var require_stringify2 = __commonJS({
+  "node_modules/postcss-value-parser/lib/stringify.js"(exports2, module2) {
+    function stringifyNode(node, custom) {
+      var type = node.type;
+      var value = node.value;
+      var buf;
+      var customResult;
+      if (custom && (customResult = custom(node)) !== void 0) {
+        return customResult;
+      } else if (type === "word" || type === "space") {
+        return value;
+      } else if (type === "string") {
+        buf = node.quote || "";
+        return buf + value + (node.unclosed ? "" : buf);
+      } else if (type === "comment") {
+        return "/*" + value + (node.unclosed ? "" : "*/");
+      } else if (type === "div") {
+        return (node.before || "") + value + (node.after || "");
+      } else if (Array.isArray(node.nodes)) {
+        buf = stringify(node.nodes, custom);
+        if (type !== "function") {
+          return buf;
+        }
+        return value + "(" + (node.before || "") + buf + (node.after || "") + (node.unclosed ? "" : ")");
+      }
+      return value;
+    }
+    function stringify(nodes, custom) {
+      var result, i;
+      if (Array.isArray(nodes)) {
+        result = "";
+        for (i = nodes.length - 1; ~i; i -= 1) {
+          result = stringifyNode(nodes[i], custom) + result;
+        }
+        return result;
+      }
+      return stringifyNode(nodes, custom);
+    }
+    module2.exports = stringify;
+  }
+});
+
+// node_modules/postcss-value-parser/lib/unit.js
+var require_unit = __commonJS({
+  "node_modules/postcss-value-parser/lib/unit.js"(exports2, module2) {
+    var minus = "-".charCodeAt(0);
+    var plus = "+".charCodeAt(0);
+    var dot = ".".charCodeAt(0);
+    var exp = "e".charCodeAt(0);
+    var EXP = "E".charCodeAt(0);
+    function likeNumber(value) {
+      var code = value.charCodeAt(0);
+      var nextCode;
+      if (code === plus || code === minus) {
+        nextCode = value.charCodeAt(1);
+        if (nextCode >= 48 && nextCode <= 57) {
+          return true;
+        }
+        var nextNextCode = value.charCodeAt(2);
+        if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {
+          return true;
+        }
+        return false;
+      }
+      if (code === dot) {
+        nextCode = value.charCodeAt(1);
+        if (nextCode >= 48 && nextCode <= 57) {
+          return true;
+        }
+        return false;
+      }
+      if (code >= 48 && code <= 57) {
+        return true;
+      }
+      return false;
+    }
+    module2.exports = function(value) {
+      var pos = 0;
+      var length = value.length;
+      var code;
+      var nextCode;
+      var nextNextCode;
+      if (length === 0 || !likeNumber(value)) {
+        return false;
+      }
+      code = value.charCodeAt(pos);
+      if (code === plus || code === minus) {
+        pos++;
+      }
+      while (pos < length) {
+        code = value.charCodeAt(pos);
+        if (code < 48 || code > 57) {
+          break;
+        }
+        pos += 1;
+      }
+      code = value.charCodeAt(pos);
+      nextCode = value.charCodeAt(pos + 1);
+      if (code === dot && nextCode >= 48 && nextCode <= 57) {
+        pos += 2;
+        while (pos < length) {
+          code = value.charCodeAt(pos);
+          if (code < 48 || code > 57) {
+            break;
+          }
+          pos += 1;
+        }
+      }
+      code = value.charCodeAt(pos);
+      nextCode = value.charCodeAt(pos + 1);
+      nextNextCode = value.charCodeAt(pos + 2);
+      if ((code === exp || code === EXP) && (nextCode >= 48 && nextCode <= 57 || (nextCode === plus || nextCode === minus) && nextNextCode >= 48 && nextNextCode <= 57)) {
+        pos += nextCode === plus || nextCode === minus ? 3 : 2;
+        while (pos < length) {
+          code = value.charCodeAt(pos);
+          if (code < 48 || code > 57) {
+            break;
+          }
+          pos += 1;
+        }
+      }
+      return {
+        number: value.slice(0, pos),
+        unit: value.slice(pos)
+      };
+    };
+  }
+});
+
+// node_modules/postcss-value-parser/lib/index.js
+var require_lib = __commonJS({
+  "node_modules/postcss-value-parser/lib/index.js"(exports2, module2) {
+    var parse = require_parse2();
+    var walk = require_walk();
+    var stringify = require_stringify2();
+    function ValueParser(value) {
+      if (this instanceof ValueParser) {
+        this.nodes = parse(value);
+        return this;
+      }
+      return new ValueParser(value);
+    }
+    ValueParser.prototype.toString = function() {
+      return Array.isArray(this.nodes) ? stringify(this.nodes) : "";
+    };
+    ValueParser.prototype.walk = function(cb, bubble) {
+      walk(this.nodes, cb, bubble);
+      return this;
+    };
+    ValueParser.unit = require_unit();
+    ValueParser.walk = walk;
+    ValueParser.stringify = stringify;
+    module2.exports = ValueParser;
+  }
+});
+
+// node_modules/postcss-import/lib/parse-statements.js
+var require_parse_statements = __commonJS({
+  "node_modules/postcss-import/lib/parse-statements.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var { stringify } = valueParser;
+    function split(params, start) {
+      const list = [];
+      const last = params.reduce((item, node, index) => {
+        if (index < start) return "";
+        if (node.type === "div" && node.value === ",") {
+          list.push(item);
+          return "";
+        }
+        return item + stringify(node);
+      }, "");
+      list.push(last);
+      return list;
+    }
+    module2.exports = function(result, styles) {
+      const statements = [];
+      let nodes = [];
+      styles.each((node) => {
+        let stmt;
+        if (node.type === "atrule") {
+          if (node.name === "import") stmt = parseImport(result, node);
+          else if (node.name === "media") stmt = parseMedia(result, node);
+          else if (node.name === "charset") stmt = parseCharset(result, node);
+        }
+        if (stmt) {
+          if (nodes.length) {
+            statements.push({
+              type: "nodes",
+              nodes,
+              media: [],
+              layer: []
+            });
+            nodes = [];
+          }
+          statements.push(stmt);
+        } else nodes.push(node);
+      });
+      if (nodes.length) {
+        statements.push({
+          type: "nodes",
+          nodes,
+          media: [],
+          layer: []
+        });
+      }
+      return statements;
+    };
+    function parseMedia(result, atRule) {
+      const params = valueParser(atRule.params).nodes;
+      return {
+        type: "media",
+        node: atRule,
+        media: split(params, 0),
+        layer: []
+      };
+    }
+    function parseCharset(result, atRule) {
+      if (atRule.prev()) {
+        return result.warn("@charset must precede all other statements", {
+          node: atRule
+        });
+      }
+      return {
+        type: "charset",
+        node: atRule,
+        media: [],
+        layer: []
+      };
+    }
+    function parseImport(result, atRule) {
+      let prev = atRule.prev();
+      if (prev) {
+        do {
+          if (prev.type !== "comment" && (prev.type !== "atrule" || prev.name !== "import" && prev.name !== "charset" && !(prev.name === "layer" && !prev.nodes))) {
+            return result.warn(
+              "@import must precede all other statements (besides @charset or empty @layer)",
+              { node: atRule }
+            );
+          }
+          prev = prev.prev();
+        } while (prev);
+      }
+      if (atRule.nodes) {
+        return result.warn(
+          "It looks like you didn't end your @import statement correctly. Child nodes are attached to it.",
+          { node: atRule }
+        );
+      }
+      const params = valueParser(atRule.params).nodes;
+      const stmt = {
+        type: "import",
+        node: atRule,
+        media: [],
+        layer: []
+      };
+      if (!params.length || (params[0].type !== "string" || !params[0].value) && (params[0].type !== "function" || params[0].value !== "url" || !params[0].nodes.length || !params[0].nodes[0].value)) {
+        return result.warn(`Unable to find uri in '${atRule.toString()}'`, {
+          node: atRule
+        });
+      }
+      if (params[0].type === "string") stmt.uri = params[0].value;
+      else stmt.uri = params[0].nodes[0].value;
+      stmt.fullUri = stringify(params[0]);
+      let remainder = params;
+      if (remainder.length > 2) {
+        if ((remainder[2].type === "word" || remainder[2].type === "function") && remainder[2].value === "layer") {
+          if (remainder[1].type !== "space") {
+            return result.warn("Invalid import layer statement", { node: atRule });
+          }
+          if (remainder[2].nodes) {
+            stmt.layer = [stringify(remainder[2].nodes)];
+          } else {
+            stmt.layer = [""];
+          }
+          remainder = remainder.slice(2);
+        }
+      }
+      if (remainder.length > 2) {
+        if (remainder[1].type !== "space") {
+          return result.warn("Invalid import media statement", { node: atRule });
+        }
+        stmt.media = split(remainder, 2);
+      }
+      return stmt;
+    }
+  }
+});
+
+// node_modules/postcss-import/lib/assign-layer-names.js
+var require_assign_layer_names = __commonJS({
+  "node_modules/postcss-import/lib/assign-layer-names.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function(layer, node, state, options) {
+      layer.forEach((layerPart, i) => {
+        if (layerPart.trim() === "") {
+          if (options.nameLayer) {
+            layer[i] = options.nameLayer(state.anonymousLayerCounter++, state.rootFilename).toString();
+          } else {
+            throw node.error(
+              `When using anonymous layers in @import you must also set the "nameLayer" plugin option`
+            );
+          }
+        }
+      });
+    };
+  }
+});
+
+// node_modules/postcss-import/index.js
+var require_postcss_import = __commonJS({
+  "node_modules/postcss-import/index.js"(exports2, module2) {
+    "use strict";
+    var path = require("path");
+    var joinMedia = require_join_media();
+    var joinLayer = require_join_layer();
+    var resolveId = require_resolve_id();
+    var loadContent = require_load_content();
+    var processContent = require_process_content();
+    var parseStatements = require_parse_statements();
+    var assignLayerNames = require_assign_layer_names();
+    var dataURL = require_data_url();
+    function AtImport(options) {
+      options = {
+        root: process.cwd(),
+        path: [],
+        skipDuplicates: true,
+        resolve: resolveId,
+        load: loadContent,
+        plugins: [],
+        addModulesDirectories: [],
+        nameLayer: null,
+        ...options
+      };
+      options.root = path.resolve(options.root);
+      if (typeof options.path === "string") options.path = [options.path];
+      if (!Array.isArray(options.path)) options.path = [];
+      options.path = options.path.map((p) => path.resolve(options.root, p));
+      return {
+        postcssPlugin: "postcss-import",
+        Once(styles, { result, atRule, postcss }) {
+          const state = {
+            importedFiles: {},
+            hashFiles: {},
+            rootFilename: null,
+            anonymousLayerCounter: 0
+          };
+          if (styles.source?.input?.file) {
+            state.rootFilename = styles.source.input.file;
+            state.importedFiles[styles.source.input.file] = {};
+          }
+          if (options.plugins && !Array.isArray(options.plugins)) {
+            throw new Error("plugins option must be an array");
+          }
+          if (options.nameLayer && typeof options.nameLayer !== "function") {
+            throw new Error("nameLayer option must be a function");
+          }
+          return parseStyles(result, styles, options, state, [], []).then(
+            (bundle) => {
+              applyRaws(bundle);
+              applyMedia(bundle);
+              applyStyles(bundle, styles);
+            }
+          );
+          function applyRaws(bundle) {
+            bundle.forEach((stmt, index) => {
+              if (index === 0) return;
+              if (stmt.parent) {
+                const { before } = stmt.parent.node.raws;
+                if (stmt.type === "nodes") stmt.nodes[0].raws.before = before;
+                else stmt.node.raws.before = before;
+              } else if (stmt.type === "nodes") {
+                stmt.nodes[0].raws.before = stmt.nodes[0].raws.before || "\n";
+              }
+            });
+          }
+          function applyMedia(bundle) {
+            bundle.forEach((stmt) => {
+              if (!stmt.media.length && !stmt.layer.length || stmt.type === "charset") {
+                return;
+              }
+              if (stmt.layer.length > 1) {
+                assignLayerNames(stmt.layer, stmt.node, state, options);
+              }
+              if (stmt.type === "import") {
+                const parts = [stmt.fullUri];
+                const media = stmt.media.join(", ");
+                if (stmt.layer.length) {
+                  const layerName = stmt.layer.join(".");
+                  let layerParams = "layer";
+                  if (layerName) {
+                    layerParams = `layer(${layerName})`;
+                  }
+                  parts.push(layerParams);
+                }
+                if (media) {
+                  parts.push(media);
+                }
+                stmt.node.params = parts.join(" ");
+              } else if (stmt.type === "media") {
+                if (stmt.layer.length) {
+                  const layerNode = atRule({
+                    name: "layer",
+                    params: stmt.layer.join("."),
+                    source: stmt.node.source
+                  });
+                  if (stmt.parentMedia?.length) {
+                    const mediaNode = atRule({
+                      name: "media",
+                      params: stmt.parentMedia.join(", "),
+                      source: stmt.node.source
+                    });
+                    mediaNode.append(layerNode);
+                    layerNode.append(stmt.node);
+                    stmt.node = mediaNode;
+                  } else {
+                    layerNode.append(stmt.node);
+                    stmt.node = layerNode;
+                  }
+                } else {
+                  stmt.node.params = stmt.media.join(", ");
+                }
+              } else {
+                const { nodes } = stmt;
+                const { parent } = nodes[0];
+                let outerAtRule;
+                let innerAtRule;
+                if (stmt.media.length && stmt.layer.length) {
+                  const mediaNode = atRule({
+                    name: "media",
+                    params: stmt.media.join(", "),
+                    source: parent.source
+                  });
+                  const layerNode = atRule({
+                    name: "layer",
+                    params: stmt.layer.join("."),
+                    source: parent.source
+                  });
+                  mediaNode.append(layerNode);
+                  innerAtRule = layerNode;
+                  outerAtRule = mediaNode;
+                } else if (stmt.media.length) {
+                  const mediaNode = atRule({
+                    name: "media",
+                    params: stmt.media.join(", "),
+                    source: parent.source
+                  });
+                  innerAtRule = mediaNode;
+                  outerAtRule = mediaNode;
+                } else if (stmt.layer.length) {
+                  const layerNode = atRule({
+                    name: "layer",
+                    params: stmt.layer.join("."),
+                    source: parent.source
+                  });
+                  innerAtRule = layerNode;
+                  outerAtRule = layerNode;
+                }
+                parent.insertBefore(nodes[0], outerAtRule);
+                nodes.forEach((node) => {
+                  node.parent = void 0;
+                });
+                nodes[0].raws.before = nodes[0].raws.before || "\n";
+                innerAtRule.append(nodes);
+                stmt.type = "media";
+                stmt.node = outerAtRule;
+                delete stmt.nodes;
+              }
+            });
+          }
+          function applyStyles(bundle, styles2) {
+            styles2.nodes = [];
+            bundle.forEach((stmt) => {
+              if (["charset", "import", "media"].includes(stmt.type)) {
+                stmt.node.parent = void 0;
+                styles2.append(stmt.node);
+              } else if (stmt.type === "nodes") {
+                stmt.nodes.forEach((node) => {
+                  node.parent = void 0;
+                  styles2.append(node);
+                });
+              }
+            });
+          }
+          function parseStyles(result2, styles2, options2, state2, media, layer) {
+            const statements = parseStatements(result2, styles2);
+            return Promise.resolve(statements).then((stmts) => {
+              return stmts.reduce((promise, stmt) => {
+                return promise.then(() => {
+                  stmt.media = joinMedia(media, stmt.media || []);
+                  stmt.parentMedia = media;
+                  stmt.layer = joinLayer(layer, stmt.layer || []);
+                  if (stmt.type !== "import" || /^(?:[a-z]+:)?\/\//i.test(stmt.uri)) {
+                    return;
+                  }
+                  if (options2.filter && !options2.filter(stmt.uri)) {
+                    return;
+                  }
+                  return resolveImportId(result2, stmt, options2, state2);
+                });
+              }, Promise.resolve());
+            }).then(() => {
+              let charset;
+              const imports = [];
+              const bundle = [];
+              function handleCharset(stmt) {
+                if (!charset) charset = stmt;
+                else if (stmt.node.params.toLowerCase() !== charset.node.params.toLowerCase()) {
+                  throw new Error(
+                    `Incompatable @charset statements:
+  ${stmt.node.params} specified in ${stmt.node.source.input.file}
+  ${charset.node.params} specified in ${charset.node.source.input.file}`
+                  );
+                }
+              }
+              statements.forEach((stmt) => {
+                if (stmt.type === "charset") handleCharset(stmt);
+                else if (stmt.type === "import") {
+                  if (stmt.children) {
+                    stmt.children.forEach((child, index) => {
+                      if (child.type === "import") imports.push(child);
+                      else if (child.type === "charset") handleCharset(child);
+                      else bundle.push(child);
+                      if (index === 0) child.parent = stmt;
+                    });
+                  } else imports.push(stmt);
+                } else if (stmt.type === "media" || stmt.type === "nodes") {
+                  bundle.push(stmt);
+                }
+              });
+              return charset ? [charset, ...imports.concat(bundle)] : imports.concat(bundle);
+            });
+          }
+          function resolveImportId(result2, stmt, options2, state2) {
+            if (dataURL.isValid(stmt.uri)) {
+              return loadImportContent(result2, stmt, stmt.uri, options2, state2).then(
+                (result3) => {
+                  stmt.children = result3;
+                }
+              );
+            }
+            const atRule2 = stmt.node;
+            let sourceFile;
+            if (atRule2.source?.input?.file) {
+              sourceFile = atRule2.source.input.file;
+            }
+            const base = sourceFile ? path.dirname(atRule2.source.input.file) : options2.root;
+            return Promise.resolve(options2.resolve(stmt.uri, base, options2)).then((paths) => {
+              if (!Array.isArray(paths)) paths = [paths];
+              return Promise.all(
+                paths.map((file) => {
+                  return !path.isAbsolute(file) ? resolveId(file, base, options2) : file;
+                })
+              );
+            }).then((resolved) => {
+              resolved.forEach((file) => {
+                result2.messages.push({
+                  type: "dependency",
+                  plugin: "postcss-import",
+                  file,
+                  parent: sourceFile
+                });
+              });
+              return Promise.all(
+                resolved.map((file) => {
+                  return loadImportContent(result2, stmt, file, options2, state2);
+                })
+              );
+            }).then((result3) => {
+              stmt.children = result3.reduce((result4, statements) => {
+                return statements ? result4.concat(statements) : result4;
+              }, []);
+            });
+          }
+          function loadImportContent(result2, stmt, filename, options2, state2) {
+            const atRule2 = stmt.node;
+            const { media, layer } = stmt;
+            assignLayerNames(layer, atRule2, state2, options2);
+            if (options2.skipDuplicates) {
+              if (state2.importedFiles[filename]?.[media]?.[layer]) {
+                return;
+              }
+              if (!state2.importedFiles[filename]) {
+                state2.importedFiles[filename] = {};
+              }
+              if (!state2.importedFiles[filename][media]) {
+                state2.importedFiles[filename][media] = {};
+              }
+              state2.importedFiles[filename][media][layer] = true;
+            }
+            return Promise.resolve(options2.load(filename, options2)).then(
+              (content) => {
+                if (content.trim() === "") {
+                  result2.warn(`${filename} is empty`, { node: atRule2 });
+                  return;
+                }
+                if (state2.hashFiles[content]?.[media]?.[layer]) {
+                  return;
+                }
+                return processContent(
+                  result2,
+                  content,
+                  filename,
+                  options2,
+                  postcss
+                ).then((importedResult) => {
+                  const styles2 = importedResult.root;
+                  result2.messages = result2.messages.concat(importedResult.messages);
+                  if (options2.skipDuplicates) {
+                    const hasImport = styles2.some((child) => {
+                      return child.type === "atrule" && child.name === "import";
+                    });
+                    if (!hasImport) {
+                      if (!state2.hashFiles[content]) {
+                        state2.hashFiles[content] = {};
+                      }
+                      if (!state2.hashFiles[content][media]) {
+                        state2.hashFiles[content][media] = {};
+                      }
+                      state2.hashFiles[content][media][layer] = true;
+                    }
+                  }
+                  return parseStyles(result2, styles2, options2, state2, media, layer);
+                });
+              }
+            );
+          }
+        }
+      };
+    }
+    AtImport.postcss = true;
+    module2.exports = AtImport;
+  }
+});
+
+// node_modules/node-releases/data/processed/envs.json
+var require_envs = __commonJS({
+  "node_modules/node-releases/data/processed/envs.json"(exports2, module2) {
+    module2.exports = [{ name: "nodejs", version: "0.2.0", date: "2011-08-26", lts: false, security: false, v8: "2.3.8.0" }, { name: "nodejs", version: "0.3.0", date: "2011-08-26", lts: false, security: false, v8: "2.5.1.0" }, { name: "nodejs", version: "0.4.0", date: "2011-08-26", lts: false, security: false, v8: "3.1.2.0" }, { name: "nodejs", version: "0.5.0", date: "2011-08-26", lts: false, security: false, v8: "3.1.8.25" }, { name: "nodejs", version: "0.6.0", date: "2011-11-04", lts: false, security: false, v8: "3.6.6.6" }, { name: "nodejs", version: "0.7.0", date: "2012-01-17", lts: false, security: false, v8: "3.8.6.0" }, { name: "nodejs", version: "0.8.0", date: "2012-06-22", lts: false, security: false, v8: "3.11.10.10" }, { name: "nodejs", version: "0.9.0", date: "2012-07-20", lts: false, security: false, v8: "3.11.10.15" }, { name: "nodejs", version: "0.10.0", date: "2013-03-11", lts: false, security: false, v8: "3.14.5.8" }, { name: "nodejs", version: "0.11.0", date: "2013-03-28", lts: false, security: false, v8: "3.17.13.0" }, { name: "nodejs", version: "0.12.0", date: "2015-02-06", lts: false, security: false, v8: "3.28.73.0" }, { name: "nodejs", version: "4.0.0", date: "2015-09-08", lts: false, security: false, v8: "4.5.103.30" }, { name: "nodejs", version: "4.1.0", date: "2015-09-17", lts: false, security: false, v8: "4.5.103.33" }, { name: "nodejs", version: "4.2.0", date: "2015-10-12", lts: "Argon", security: false, v8: "4.5.103.35" }, { name: "nodejs", version: "4.3.0", date: "2016-02-09", lts: "Argon", security: false, v8: "4.5.103.35" }, { name: "nodejs", version: "4.4.0", date: "2016-03-08", lts: "Argon", security: false, v8: "4.5.103.35" }, { name: "nodejs", version: "4.5.0", date: "2016-08-16", lts: "Argon", security: false, v8: "4.5.103.37" }, { name: "nodejs", version: "4.6.0", date: "2016-09-27", lts: "Argon", security: true, v8: "4.5.103.37" }, { name: "nodejs", version: "4.7.0", date: "2016-12-06", lts: "Argon", security: false, v8: "4.5.103.43" }, { name: "nodejs", version: "4.8.0", date: "2017-02-21", lts: "Argon", security: false, v8: "4.5.103.45" }, { name: "nodejs", version: "4.9.0", date: "2018-03-28", lts: "Argon", security: true, v8: "4.5.103.53" }, { name: "nodejs", version: "5.0.0", date: "2015-10-29", lts: false, security: false, v8: "4.6.85.28" }, { name: "nodejs", version: "5.1.0", date: "2015-11-17", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.2.0", date: "2015-12-09", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.3.0", date: "2015-12-15", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.4.0", date: "2016-01-06", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.5.0", date: "2016-01-21", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.6.0", date: "2016-02-09", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.7.0", date: "2016-02-23", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.8.0", date: "2016-03-09", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.9.0", date: "2016-03-16", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.10.0", date: "2016-04-01", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.11.0", date: "2016-04-21", lts: false, security: false, v8: "4.6.85.31" }, { name: "nodejs", version: "5.12.0", date: "2016-06-23", lts: false, security: false, v8: "4.6.85.32" }, { name: "nodejs", version: "6.0.0", date: "2016-04-26", lts: false, security: false, v8: "5.0.71.35" }, { name: "nodejs", version: "6.1.0", date: "2016-05-05", lts: false, security: false, v8: "5.0.71.35" }, { name: "nodejs", version: "6.2.0", date: "2016-05-17", lts: false, security: false, v8: "5.0.71.47" }, { name: "nodejs", version: "6.3.0", date: "2016-07-06", lts: false, security: false, v8: "5.0.71.52" }, { name: "nodejs", version: "6.4.0", date: "2016-08-12", lts: false, security: false, v8: "5.0.71.60" }, { name: "nodejs", version: "6.5.0", date: "2016-08-26", lts: false, security: false, v8: "5.1.281.81" }, { name: "nodejs", version: "6.6.0", date: "2016-09-14", lts: false, security: false, v8: "5.1.281.83" }, { name: "nodejs", version: "6.7.0", date: "2016-09-27", lts: false, security: true, v8: "5.1.281.83" }, { name: "nodejs", version: "6.8.0", date: "2016-10-12", lts: false, security: false, v8: "5.1.281.84" }, { name: "nodejs", version: "6.9.0", date: "2016-10-18", lts: "Boron", security: false, v8: "5.1.281.84" }, { name: "nodejs", version: "6.10.0", date: "2017-02-21", lts: "Boron", security: false, v8: "5.1.281.93" }, { name: "nodejs", version: "6.11.0", date: "2017-06-06", lts: "Boron", security: false, v8: "5.1.281.102" }, { name: "nodejs", version: "6.12.0", date: "2017-11-06", lts: "Boron", security: false, v8: "5.1.281.108" }, { name: "nodejs", version: "6.13.0", date: "2018-02-10", lts: "Boron", security: false, v8: "5.1.281.111" }, { name: "nodejs", version: "6.14.0", date: "2018-03-28", lts: "Boron", security: true, v8: "5.1.281.111" }, { name: "nodejs", version: "6.15.0", date: "2018-11-27", lts: "Boron", security: true, v8: "5.1.281.111" }, { name: "nodejs", version: "6.16.0", date: "2018-12-26", lts: "Boron", security: false, v8: "5.1.281.111" }, { name: "nodejs", version: "6.17.0", date: "2019-02-28", lts: "Boron", security: true, v8: "5.1.281.111" }, { name: "nodejs", version: "7.0.0", date: "2016-10-25", lts: false, security: false, v8: "5.4.500.36" }, { name: "nodejs", version: "7.1.0", date: "2016-11-08", lts: false, security: false, v8: "5.4.500.36" }, { name: "nodejs", version: "7.2.0", date: "2016-11-22", lts: false, security: false, v8: "5.4.500.43" }, { name: "nodejs", version: "7.3.0", date: "2016-12-20", lts: false, security: false, v8: "5.4.500.45" }, { name: "nodejs", version: "7.4.0", date: "2017-01-04", lts: false, security: false, v8: "5.4.500.45" }, { name: "nodejs", version: "7.5.0", date: "2017-01-31", lts: false, security: false, v8: "5.4.500.48" }, { name: "nodejs", version: "7.6.0", date: "2017-02-21", lts: false, security: false, v8: "5.5.372.40" }, { name: "nodejs", version: "7.7.0", date: "2017-02-28", lts: false, security: false, v8: "5.5.372.41" }, { name: "nodejs", version: "7.8.0", date: "2017-03-29", lts: false, security: false, v8: "5.5.372.43" }, { name: "nodejs", version: "7.9.0", date: "2017-04-11", lts: false, security: false, v8: "5.5.372.43" }, { name: "nodejs", version: "7.10.0", date: "2017-05-02", lts: false, security: false, v8: "5.5.372.43" }, { name: "nodejs", version: "8.0.0", date: "2017-05-30", lts: false, security: false, v8: "5.8.283.41" }, { name: "nodejs", version: "8.1.0", date: "2017-06-08", lts: false, security: false, v8: "5.8.283.41" }, { name: "nodejs", version: "8.2.0", date: "2017-07-19", lts: false, security: false, v8: "5.8.283.41" }, { name: "nodejs", version: "8.3.0", date: "2017-08-08", lts: false, security: false, v8: "6.0.286.52" }, { name: "nodejs", version: "8.4.0", date: "2017-08-15", lts: false, security: false, v8: "6.0.286.52" }, { name: "nodejs", version: "8.5.0", date: "2017-09-12", lts: false, security: false, v8: "6.0.287.53" }, { name: "nodejs", version: "8.6.0", date: "2017-09-26", lts: false, security: false, v8: "6.0.287.53" }, { name: "nodejs", version: "8.7.0", date: "2017-10-11", lts: false, security: false, v8: "6.1.534.42" }, { name: "nodejs", version: "8.8.0", date: "2017-10-24", lts: false, security: false, v8: "6.1.534.42" }, { name: "nodejs", version: "8.9.0", date: "2017-10-31", lts: "Carbon", security: false, v8: "6.1.534.46" }, { name: "nodejs", version: "8.10.0", date: "2018-03-06", lts: "Carbon", security: false, v8: "6.2.414.50" }, { name: "nodejs", version: "8.11.0", date: "2018-03-28", lts: "Carbon", security: true, v8: "6.2.414.50" }, { name: "nodejs", version: "8.12.0", date: "2018-09-10", lts: "Carbon", security: false, v8: "6.2.414.66" }, { name: "nodejs", version: "8.13.0", date: "2018-11-20", lts: "Carbon", security: false, v8: "6.2.414.72" }, { name: "nodejs", version: "8.14.0", date: "2018-11-27", lts: "Carbon", security: true, v8: "6.2.414.72" }, { name: "nodejs", version: "8.15.0", date: "2018-12-26", lts: "Carbon", security: false, v8: "6.2.414.75" }, { name: "nodejs", version: "8.16.0", date: "2019-04-16", lts: "Carbon", security: false, v8: "6.2.414.77" }, { name: "nodejs", version: "8.17.0", date: "2019-12-17", lts: "Carbon", security: true, v8: "6.2.414.78" }, { name: "nodejs", version: "9.0.0", date: "2017-10-31", lts: false, security: false, v8: "6.2.414.32" }, { name: "nodejs", version: "9.1.0", date: "2017-11-07", lts: false, security: false, v8: "6.2.414.32" }, { name: "nodejs", version: "9.2.0", date: "2017-11-14", lts: false, security: false, v8: "6.2.414.44" }, { name: "nodejs", version: "9.3.0", date: "2017-12-12", lts: false, security: false, v8: "6.2.414.46" }, { name: "nodejs", version: "9.4.0", date: "2018-01-10", lts: false, security: false, v8: "6.2.414.46" }, { name: "nodejs", version: "9.5.0", date: "2018-01-31", lts: false, security: false, v8: "6.2.414.46" }, { name: "nodejs", version: "9.6.0", date: "2018-02-21", lts: false, security: false, v8: "6.2.414.46" }, { name: "nodejs", version: "9.7.0", date: "2018-03-01", lts: false, security: false, v8: "6.2.414.46" }, { name: "nodejs", version: "9.8.0", date: "2018-03-07", lts: false, security: false, v8: "6.2.414.46" }, { name: "nodejs", version: "9.9.0", date: "2018-03-21", lts: false, security: false, v8: "6.2.414.46" }, { name: "nodejs", version: "9.10.0", date: "2018-03-28", lts: false, security: true, v8: "6.2.414.46" }, { name: "nodejs", version: "9.11.0", date: "2018-04-04", lts: false, security: false, v8: "6.2.414.46" }, { name: "nodejs", version: "10.0.0", date: "2018-04-24", lts: false, security: false, v8: "6.6.346.24" }, { name: "nodejs", version: "10.1.0", date: "2018-05-08", lts: false, security: false, v8: "6.6.346.27" }, { name: "nodejs", version: "10.2.0", date: "2018-05-23", lts: false, security: false, v8: "6.6.346.32" }, { name: "nodejs", version: "10.3.0", date: "2018-05-29", lts: false, security: false, v8: "6.6.346.32" }, { name: "nodejs", version: "10.4.0", date: "2018-06-06", lts: false, security: false, v8: "6.7.288.43" }, { name: "nodejs", version: "10.5.0", date: "2018-06-20", lts: false, security: false, v8: "6.7.288.46" }, { name: "nodejs", version: "10.6.0", date: "2018-07-04", lts: false, security: false, v8: "6.7.288.46" }, { name: "nodejs", version: "10.7.0", date: "2018-07-18", lts: false, security: false, v8: "6.7.288.49" }, { name: "nodejs", version: "10.8.0", date: "2018-08-01", lts: false, security: false, v8: "6.7.288.49" }, { name: "nodejs", version: "10.9.0", date: "2018-08-15", lts: false, security: false, v8: "6.8.275.24" }, { name: "nodejs", version: "10.10.0", date: "2018-09-06", lts: false, security: false, v8: "6.8.275.30" }, { name: "nodejs", version: "10.11.0", date: "2018-09-19", lts: false, security: false, v8: "6.8.275.32" }, { name: "nodejs", version: "10.12.0", date: "2018-10-10", lts: false, security: false, v8: "6.8.275.32" }, { name: "nodejs", version: "10.13.0", date: "2018-10-30", lts: "Dubnium", security: false, v8: "6.8.275.32" }, { name: "nodejs", version: "10.14.0", date: "2018-11-27", lts: "Dubnium", security: true, v8: "6.8.275.32" }, { name: "nodejs", version: "10.15.0", date: "2018-12-26", lts: "Dubnium", security: false, v8: "6.8.275.32" }, { name: "nodejs", version: "10.16.0", date: "2019-05-28", lts: "Dubnium", security: false, v8: "6.8.275.32" }, { name: "nodejs", version: "10.17.0", date: "2019-10-22", lts: "Dubnium", security: false, v8: "6.8.275.32" }, { name: "nodejs", version: "10.18.0", date: "2019-12-17", lts: "Dubnium", security: true, v8: "6.8.275.32" }, { name: "nodejs", version: "10.19.0", date: "2020-02-05", lts: "Dubnium", security: true, v8: "6.8.275.32" }, { name: "nodejs", version: "10.20.0", date: "2020-03-26", lts: "Dubnium", security: false, v8: "6.8.275.32" }, { name: "nodejs", version: "10.21.0", date: "2020-06-02", lts: "Dubnium", security: true, v8: "6.8.275.32" }, { name: "nodejs", version: "10.22.0", date: "2020-07-21", lts: "Dubnium", security: false, v8: "6.8.275.32" }, { name: "nodejs", version: "10.23.0", date: "2020-10-27", lts: "Dubnium", security: false, v8: "6.8.275.32" }, { name: "nodejs", version: "10.24.0", date: "2021-02-23", lts: "Dubnium", security: true, v8: "6.8.275.32" }, { name: "nodejs", version: "11.0.0", date: "2018-10-23", lts: false, security: false, v8: "7.0.276.28" }, { name: "nodejs", version: "11.1.0", date: "2018-10-30", lts: false, security: false, v8: "7.0.276.32" }, { name: "nodejs", version: "11.2.0", date: "2018-11-15", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.3.0", date: "2018-11-27", lts: false, security: true, v8: "7.0.276.38" }, { name: "nodejs", version: "11.4.0", date: "2018-12-07", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.5.0", date: "2018-12-18", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.6.0", date: "2018-12-26", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.7.0", date: "2019-01-17", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.8.0", date: "2019-01-24", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.9.0", date: "2019-01-30", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.10.0", date: "2019-02-14", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.11.0", date: "2019-03-05", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.12.0", date: "2019-03-14", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.13.0", date: "2019-03-28", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.14.0", date: "2019-04-10", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "11.15.0", date: "2019-04-30", lts: false, security: false, v8: "7.0.276.38" }, { name: "nodejs", version: "12.0.0", date: "2019-04-23", lts: false, security: false, v8: "7.4.288.21" }, { name: "nodejs", version: "12.1.0", date: "2019-04-29", lts: false, security: false, v8: "7.4.288.21" }, { name: "nodejs", version: "12.2.0", date: "2019-05-07", lts: false, security: false, v8: "7.4.288.21" }, { name: "nodejs", version: "12.3.0", date: "2019-05-21", lts: false, security: false, v8: "7.4.288.27" }, { name: "nodejs", version: "12.4.0", date: "2019-06-04", lts: false, security: false, v8: "7.4.288.27" }, { name: "nodejs", version: "12.5.0", date: "2019-06-26", lts: false, security: false, v8: "7.5.288.22" }, { name: "nodejs", version: "12.6.0", date: "2019-07-03", lts: false, security: false, v8: "7.5.288.22" }, { name: "nodejs", version: "12.7.0", date: "2019-07-23", lts: false, security: false, v8: "7.5.288.22" }, { name: "nodejs", version: "12.8.0", date: "2019-08-06", lts: false, security: false, v8: "7.5.288.22" }, { name: "nodejs", version: "12.9.0", date: "2019-08-20", lts: false, security: false, v8: "7.6.303.29" }, { name: "nodejs", version: "12.10.0", date: "2019-09-04", lts: false, security: false, v8: "7.6.303.29" }, { name: "nodejs", version: "12.11.0", date: "2019-09-25", lts: false, security: false, v8: "7.7.299.11" }, { name: "nodejs", version: "12.12.0", date: "2019-10-11", lts: false, security: false, v8: "7.7.299.13" }, { name: "nodejs", version: "12.13.0", date: "2019-10-21", lts: "Erbium", security: false, v8: "7.7.299.13" }, { name: "nodejs", version: "12.14.0", date: "2019-12-17", lts: "Erbium", security: true, v8: "7.7.299.13" }, { name: "nodejs", version: "12.15.0", date: "2020-02-05", lts: "Erbium", security: true, v8: "7.7.299.13" }, { name: "nodejs", version: "12.16.0", date: "2020-02-11", lts: "Erbium", security: false, v8: "7.8.279.23" }, { name: "nodejs", version: "12.17.0", date: "2020-05-26", lts: "Erbium", security: false, v8: "7.8.279.23" }, { name: "nodejs", version: "12.18.0", date: "2020-06-02", lts: "Erbium", security: true, v8: "7.8.279.23" }, { name: "nodejs", version: "12.19.0", date: "2020-10-06", lts: "Erbium", security: false, v8: "7.8.279.23" }, { name: "nodejs", version: "12.20.0", date: "2020-11-24", lts: "Erbium", security: false, v8: "7.8.279.23" }, { name: "nodejs", version: "12.21.0", date: "2021-02-23", lts: "Erbium", security: true, v8: "7.8.279.23" }, { name: "nodejs", version: "12.22.0", date: "2021-03-30", lts: "Erbium", security: false, v8: "7.8.279.23" }, { name: "nodejs", version: "13.0.0", date: "2019-10-22", lts: false, security: false, v8: "7.8.279.17" }, { name: "nodejs", version: "13.1.0", date: "2019-11-05", lts: false, security: false, v8: "7.8.279.17" }, { name: "nodejs", version: "13.2.0", date: "2019-11-21", lts: false, security: false, v8: "7.9.317.23" }, { name: "nodejs", version: "13.3.0", date: "2019-12-03", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "13.4.0", date: "2019-12-17", lts: false, security: true, v8: "7.9.317.25" }, { name: "nodejs", version: "13.5.0", date: "2019-12-18", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "13.6.0", date: "2020-01-07", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "13.7.0", date: "2020-01-21", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "13.8.0", date: "2020-02-05", lts: false, security: true, v8: "7.9.317.25" }, { name: "nodejs", version: "13.9.0", date: "2020-02-18", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "13.10.0", date: "2020-03-04", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "13.11.0", date: "2020-03-12", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "13.12.0", date: "2020-03-26", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "13.13.0", date: "2020-04-14", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "13.14.0", date: "2020-04-29", lts: false, security: false, v8: "7.9.317.25" }, { name: "nodejs", version: "14.0.0", date: "2020-04-21", lts: false, security: false, v8: "8.1.307.30" }, { name: "nodejs", version: "14.1.0", date: "2020-04-29", lts: false, security: false, v8: "8.1.307.31" }, { name: "nodejs", version: "14.2.0", date: "2020-05-05", lts: false, security: false, v8: "8.1.307.31" }, { name: "nodejs", version: "14.3.0", date: "2020-05-19", lts: false, security: false, v8: "8.1.307.31" }, { name: "nodejs", version: "14.4.0", date: "2020-06-02", lts: false, security: true, v8: "8.1.307.31" }, { name: "nodejs", version: "14.5.0", date: "2020-06-30", lts: false, security: false, v8: "8.3.110.9" }, { name: "nodejs", version: "14.6.0", date: "2020-07-20", lts: false, security: false, v8: "8.4.371.19" }, { name: "nodejs", version: "14.7.0", date: "2020-07-29", lts: false, security: false, v8: "8.4.371.19" }, { name: "nodejs", version: "14.8.0", date: "2020-08-11", lts: false, security: false, v8: "8.4.371.19" }, { name: "nodejs", version: "14.9.0", date: "2020-08-27", lts: false, security: false, v8: "8.4.371.19" }, { name: "nodejs", version: "14.10.0", date: "2020-09-08", lts: false, security: false, v8: "8.4.371.19" }, { name: "nodejs", version: "14.11.0", date: "2020-09-15", lts: false, security: true, v8: "8.4.371.19" }, { name: "nodejs", version: "14.12.0", date: "2020-09-22", lts: false, security: false, v8: "8.4.371.19" }, { name: "nodejs", version: "14.13.0", date: "2020-09-29", lts: false, security: false, v8: "8.4.371.19" }, { name: "nodejs", version: "14.14.0", date: "2020-10-15", lts: false, security: false, v8: "8.4.371.19" }, { name: "nodejs", version: "14.15.0", date: "2020-10-27", lts: "Fermium", security: false, v8: "8.4.371.19" }, { name: "nodejs", version: "14.16.0", date: "2021-02-23", lts: "Fermium", security: true, v8: "8.4.371.19" }, { name: "nodejs", version: "14.17.0", date: "2021-05-11", lts: "Fermium", security: false, v8: "8.4.371.23" }, { name: "nodejs", version: "14.18.0", date: "2021-09-28", lts: "Fermium", security: false, v8: "8.4.371.23" }, { name: "nodejs", version: "14.19.0", date: "2022-02-01", lts: "Fermium", security: false, v8: "8.4.371.23" }, { name: "nodejs", version: "14.20.0", date: "2022-07-07", lts: "Fermium", security: true, v8: "8.4.371.23" }, { name: "nodejs", version: "14.21.0", date: "2022-11-01", lts: "Fermium", security: false, v8: "8.4.371.23" }, { name: "nodejs", version: "15.0.0", date: "2020-10-20", lts: false, security: false, v8: "8.6.395.16" }, { name: "nodejs", version: "15.1.0", date: "2020-11-04", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.2.0", date: "2020-11-10", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.3.0", date: "2020-11-24", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.4.0", date: "2020-12-09", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.5.0", date: "2020-12-22", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.6.0", date: "2021-01-14", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.7.0", date: "2021-01-25", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.8.0", date: "2021-02-02", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.9.0", date: "2021-02-18", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.10.0", date: "2021-02-23", lts: false, security: true, v8: "8.6.395.17" }, { name: "nodejs", version: "15.11.0", date: "2021-03-03", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.12.0", date: "2021-03-17", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.13.0", date: "2021-03-31", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "15.14.0", date: "2021-04-06", lts: false, security: false, v8: "8.6.395.17" }, { name: "nodejs", version: "16.0.0", date: "2021-04-20", lts: false, security: false, v8: "9.0.257.17" }, { name: "nodejs", version: "16.1.0", date: "2021-05-04", lts: false, security: false, v8: "9.0.257.24" }, { name: "nodejs", version: "16.2.0", date: "2021-05-19", lts: false, security: false, v8: "9.0.257.25" }, { name: "nodejs", version: "16.3.0", date: "2021-06-03", lts: false, security: false, v8: "9.0.257.25" }, { name: "nodejs", version: "16.4.0", date: "2021-06-23", lts: false, security: false, v8: "9.1.269.36" }, { name: "nodejs", version: "16.5.0", date: "2021-07-14", lts: false, security: false, v8: "9.1.269.38" }, { name: "nodejs", version: "16.6.0", date: "2021-07-29", lts: false, security: true, v8: "9.2.230.21" }, { name: "nodejs", version: "16.7.0", date: "2021-08-18", lts: false, security: false, v8: "9.2.230.21" }, { name: "nodejs", version: "16.8.0", date: "2021-08-25", lts: false, security: false, v8: "9.2.230.21" }, { name: "nodejs", version: "16.9.0", date: "2021-09-07", lts: false, security: false, v8: "9.3.345.16" }, { name: "nodejs", version: "16.10.0", date: "2021-09-22", lts: false, security: false, v8: "9.3.345.19" }, { name: "nodejs", version: "16.11.0", date: "2021-10-08", lts: false, security: false, v8: "9.4.146.19" }, { name: "nodejs", version: "16.12.0", date: "2021-10-20", lts: false, security: false, v8: "9.4.146.19" }, { name: "nodejs", version: "16.13.0", date: "2021-10-26", lts: "Gallium", security: false, v8: "9.4.146.19" }, { name: "nodejs", version: "16.14.0", date: "2022-02-08", lts: "Gallium", security: false, v8: "9.4.146.24" }, { name: "nodejs", version: "16.15.0", date: "2022-04-26", lts: "Gallium", security: false, v8: "9.4.146.24" }, { name: "nodejs", version: "16.16.0", date: "2022-07-07", lts: "Gallium", security: true, v8: "9.4.146.24" }, { name: "nodejs", version: "16.17.0", date: "2022-08-16", lts: "Gallium", security: false, v8: "9.4.146.26" }, { name: "nodejs", version: "16.18.0", date: "2022-10-12", lts: "Gallium", security: false, v8: "9.4.146.26" }, { name: "nodejs", version: "16.19.0", date: "2022-12-13", lts: "Gallium", security: false, v8: "9.4.146.26" }, { name: "nodejs", version: "16.20.0", date: "2023-03-28", lts: "Gallium", security: false, v8: "9.4.146.26" }, { name: "nodejs", version: "17.0.0", date: "2021-10-19", lts: false, security: false, v8: "9.5.172.21" }, { name: "nodejs", version: "17.1.0", date: "2021-11-09", lts: false, security: false, v8: "9.5.172.25" }, { name: "nodejs", version: "17.2.0", date: "2021-11-30", lts: false, security: false, v8: "9.6.180.14" }, { name: "nodejs", version: "17.3.0", date: "2021-12-17", lts: false, security: false, v8: "9.6.180.15" }, { name: "nodejs", version: "17.4.0", date: "2022-01-18", lts: false, security: false, v8: "9.6.180.15" }, { name: "nodejs", version: "17.5.0", date: "2022-02-10", lts: false, security: false, v8: "9.6.180.15" }, { name: "nodejs", version: "17.6.0", date: "2022-02-22", lts: false, security: false, v8: "9.6.180.15" }, { name: "nodejs", version: "17.7.0", date: "2022-03-09", lts: false, security: false, v8: "9.6.180.15" }, { name: "nodejs", version: "17.8.0", date: "2022-03-22", lts: false, security: false, v8: "9.6.180.15" }, { name: "nodejs", version: "17.9.0", date: "2022-04-07", lts: false, security: false, v8: "9.6.180.15" }, { name: "nodejs", version: "18.0.0", date: "2022-04-18", lts: false, security: false, v8: "10.1.124.8" }, { name: "nodejs", version: "18.1.0", date: "2022-05-03", lts: false, security: false, v8: "10.1.124.8" }, { name: "nodejs", version: "18.2.0", date: "2022-05-17", lts: false, security: false, v8: "10.1.124.8" }, { name: "nodejs", version: "18.3.0", date: "2022-06-02", lts: false, security: false, v8: "10.2.154.4" }, { name: "nodejs", version: "18.4.0", date: "2022-06-16", lts: false, security: false, v8: "10.2.154.4" }, { name: "nodejs", version: "18.5.0", date: "2022-07-06", lts: false, security: true, v8: "10.2.154.4" }, { name: "nodejs", version: "18.6.0", date: "2022-07-13", lts: false, security: false, v8: "10.2.154.13" }, { name: "nodejs", version: "18.7.0", date: "2022-07-26", lts: false, security: false, v8: "10.2.154.13" }, { name: "nodejs", version: "18.8.0", date: "2022-08-24", lts: false, security: false, v8: "10.2.154.13" }, { name: "nodejs", version: "18.9.0", date: "2022-09-07", lts: false, security: false, v8: "10.2.154.15" }, { name: "nodejs", version: "18.10.0", date: "2022-09-28", lts: false, security: false, v8: "10.2.154.15" }, { name: "nodejs", version: "18.11.0", date: "2022-10-13", lts: false, security: false, v8: "10.2.154.15" }, { name: "nodejs", version: "18.12.0", date: "2022-10-25", lts: "Hydrogen", security: false, v8: "10.2.154.15" }, { name: "nodejs", version: "18.13.0", date: "2023-01-05", lts: "Hydrogen", security: false, v8: "10.2.154.23" }, { name: "nodejs", version: "18.14.0", date: "2023-02-01", lts: "Hydrogen", security: false, v8: "10.2.154.23" }, { name: "nodejs", version: "18.15.0", date: "2023-03-05", lts: "Hydrogen", security: false, v8: "10.2.154.26" }, { name: "nodejs", version: "18.16.0", date: "2023-04-12", lts: "Hydrogen", security: false, v8: "10.2.154.26" }, { name: "nodejs", version: "18.17.0", date: "2023-07-18", lts: "Hydrogen", security: false, v8: "10.2.154.26" }, { name: "nodejs", version: "18.18.0", date: "2023-09-18", lts: "Hydrogen", security: false, v8: "10.2.154.26" }, { name: "nodejs", version: "18.19.0", date: "2023-11-29", lts: "Hydrogen", security: false, v8: "10.2.154.26" }, { name: "nodejs", version: "18.20.0", date: "2024-03-26", lts: "Hydrogen", security: false, v8: "10.2.154.26" }, { name: "nodejs", version: "19.0.0", date: "2022-10-17", lts: false, security: false, v8: "10.7.193.13" }, { name: "nodejs", version: "19.1.0", date: "2022-11-14", lts: false, security: false, v8: "10.7.193.20" }, { name: "nodejs", version: "19.2.0", date: "2022-11-29", lts: false, security: false, v8: "10.8.168.20" }, { name: "nodejs", version: "19.3.0", date: "2022-12-14", lts: false, security: false, v8: "10.8.168.21" }, { name: "nodejs", version: "19.4.0", date: "2023-01-05", lts: false, security: false, v8: "10.8.168.25" }, { name: "nodejs", version: "19.5.0", date: "2023-01-24", lts: false, security: false, v8: "10.8.168.25" }, { name: "nodejs", version: "19.6.0", date: "2023-02-01", lts: false, security: false, v8: "10.8.168.25" }, { name: "nodejs", version: "19.7.0", date: "2023-02-21", lts: false, security: false, v8: "10.8.168.25" }, { name: "nodejs", version: "19.8.0", date: "2023-03-14", lts: false, security: false, v8: "10.8.168.25" }, { name: "nodejs", version: "19.9.0", date: "2023-04-10", lts: false, security: false, v8: "10.8.168.25" }, { name: "nodejs", version: "20.0.0", date: "2023-04-17", lts: false, security: false, v8: "11.3.244.4" }, { name: "nodejs", version: "20.1.0", date: "2023-05-03", lts: false, security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.2.0", date: "2023-05-16", lts: false, security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.3.0", date: "2023-06-08", lts: false, security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.4.0", date: "2023-07-04", lts: false, security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.5.0", date: "2023-07-19", lts: false, security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.6.0", date: "2023-08-23", lts: false, security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.7.0", date: "2023-09-18", lts: false, security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.8.0", date: "2023-09-28", lts: false, security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.9.0", date: "2023-10-24", lts: "Iron", security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.10.0", date: "2023-11-22", lts: "Iron", security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.11.0", date: "2024-01-09", lts: "Iron", security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.12.0", date: "2024-03-26", lts: "Iron", security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.13.0", date: "2024-05-07", lts: "Iron", security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.14.0", date: "2024-05-28", lts: "Iron", security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "20.15.0", date: "2024-06-20", lts: "Iron", security: false, v8: "11.3.244.8" }, { name: "nodejs", version: "21.0.0", date: "2023-10-17", lts: false, security: false, v8: "11.8.172.13" }, { name: "nodejs", version: "21.1.0", date: "2023-10-24", lts: false, security: false, v8: "11.8.172.15" }, { name: "nodejs", version: "21.2.0", date: "2023-11-14", lts: false, security: false, v8: "11.8.172.17" }, { name: "nodejs", version: "21.3.0", date: "2023-11-30", lts: false, security: false, v8: "11.8.172.17" }, { name: "nodejs", version: "21.4.0", date: "2023-12-05", lts: false, security: false, v8: "11.8.172.17" }, { name: "nodejs", version: "21.5.0", date: "2023-12-19", lts: false, security: false, v8: "11.8.172.17" }, { name: "nodejs", version: "21.6.0", date: "2024-01-14", lts: false, security: false, v8: "11.8.172.17" }, { name: "nodejs", version: "21.7.0", date: "2024-03-06", lts: false, security: false, v8: "11.8.172.17" }, { name: "nodejs", version: "22.0.0", date: "2024-04-24", lts: false, security: false, v8: "12.4.254.14" }, { name: "nodejs", version: "22.1.0", date: "2024-05-02", lts: false, security: false, v8: "12.4.254.14" }, { name: "nodejs", version: "22.2.0", date: "2024-05-15", lts: false, security: false, v8: "12.4.254.14" }, { name: "nodejs", version: "22.3.0", date: "2024-06-11", lts: false, security: false, v8: "12.4.254.20" }, { name: "nodejs", version: "22.4.0", date: "2024-07-02", lts: false, security: false, v8: "12.4.254.21" }, { name: "nodejs", version: "22.5.0", date: "2024-07-17", lts: false, security: false, v8: "12.4.254.21" }];
+  }
+});
+
+// node_modules/caniuse-lite/data/browsers.js
+var require_browsers = __commonJS({
+  "node_modules/caniuse-lite/data/browsers.js"(exports2, module2) {
+    module2.exports = { A: "ie", B: "edge", C: "firefox", D: "chrome", E: "safari", F: "opera", G: "ios_saf", H: "op_mini", I: "android", J: "bb", K: "op_mob", L: "and_chr", M: "and_ff", N: "ie_mob", O: "and_uc", P: "samsung", Q: "and_qq", R: "baidu", S: "kaios" };
+  }
+});
+
+// node_modules/caniuse-lite/dist/unpacker/browsers.js
+var require_browsers2 = __commonJS({
+  "node_modules/caniuse-lite/dist/unpacker/browsers.js"(exports2, module2) {
+    module2.exports.browsers = require_browsers();
+  }
+});
+
+// node_modules/caniuse-lite/data/browserVersions.js
+var require_browserVersions = __commonJS({
+  "node_modules/caniuse-lite/data/browserVersions.js"(exports2, module2) {
+    module2.exports = { "0": "22", "1": "23", "2": "24", "3": "25", "4": "115", "5": "116", "6": "117", "7": "118", "8": "119", "9": "120", A: "10", B: "11", C: "12", D: "7", E: "8", F: "9", G: "15", H: "80", I: "129", J: "4", K: "6", L: "13", M: "14", N: "16", O: "17", P: "18", Q: "79", R: "81", S: "83", T: "84", U: "85", V: "86", W: "87", X: "88", Y: "89", Z: "90", a: "91", b: "92", c: "93", d: "94", e: "95", f: "96", g: "97", h: "98", i: "99", j: "100", k: "101", l: "102", m: "103", n: "104", o: "105", p: "106", q: "107", r: "108", s: "109", t: "110", u: "111", v: "112", w: "113", x: "114", y: "20", z: "21", AB: "121", BB: "122", CB: "123", DB: "124", EB: "125", FB: "126", GB: "127", HB: "128", IB: "5", JB: "19", KB: "26", LB: "27", MB: "28", NB: "29", OB: "30", PB: "31", QB: "32", RB: "33", SB: "34", TB: "35", UB: "36", VB: "37", WB: "38", XB: "39", YB: "40", ZB: "41", aB: "42", bB: "43", cB: "44", dB: "45", eB: "46", fB: "47", gB: "48", hB: "49", iB: "50", jB: "51", kB: "52", lB: "53", mB: "54", nB: "55", oB: "56", pB: "57", qB: "58", rB: "60", sB: "62", tB: "63", uB: "64", vB: "65", wB: "66", xB: "67", yB: "68", zB: "69", "0B": "70", "1B": "71", "2B": "72", "3B": "73", "4B": "74", "5B": "75", "6B": "76", "7B": "77", "8B": "78", "9B": "130", AC: "11.1", BC: "12.1", CC: "15.5", DC: "16.0", EC: "17.0", FC: "18.0", GC: "3", HC: "59", IC: "61", JC: "82", KC: "131", LC: "132", MC: "3.2", NC: "10.1", OC: "15.2-15.3", PC: "15.4", QC: "16.1", RC: "16.2", SC: "16.3", TC: "16.4", UC: "16.5", VC: "17.1", WC: "17.2", XC: "17.3", YC: "17.4", ZC: "17.5", aC: "17.6", bC: "18.1", cC: "11.5", dC: "4.2-4.3", eC: "5.5", fC: "2", gC: "133", hC: "134", iC: "3.5", jC: "3.6", kC: "3.1", lC: "5.1", mC: "6.1", nC: "7.1", oC: "9.1", pC: "13.1", qC: "14.1", rC: "15.1", sC: "15.6", tC: "16.6", uC: "TP", vC: "9.5-9.6", wC: "10.0-10.1", xC: "10.5", yC: "10.6", zC: "11.6", "0C": "4.0-4.1", "1C": "5.0-5.1", "2C": "6.0-6.1", "3C": "7.0-7.1", "4C": "8.1-8.4", "5C": "9.0-9.2", "6C": "9.3", "7C": "10.0-10.2", "8C": "10.3", "9C": "11.0-11.2", AD: "11.3-11.4", BD: "12.0-12.1", CD: "12.2-12.5", DD: "13.0-13.1", ED: "13.2", FD: "13.3", GD: "13.4-13.7", HD: "14.0-14.4", ID: "14.5-14.8", JD: "15.0-15.1", KD: "15.6-15.8", LD: "16.6-16.7", MD: "all", ND: "2.1", OD: "2.2", PD: "2.3", QD: "4.1", RD: "4.4", SD: "4.4.3-4.4.4", TD: "5.0-5.4", UD: "6.2-6.4", VD: "7.2-7.4", WD: "8.2", XD: "9.2", YD: "11.1-11.2", ZD: "12.0", aD: "13.0", bD: "14.0", cD: "15.0", dD: "19.0", eD: "14.9", fD: "13.52", gD: "2.5", hD: "3.0-3.1" };
+  }
+});
+
+// node_modules/caniuse-lite/dist/unpacker/browserVersions.js
+var require_browserVersions2 = __commonJS({
+  "node_modules/caniuse-lite/dist/unpacker/browserVersions.js"(exports2, module2) {
+    module2.exports.browserVersions = require_browserVersions();
+  }
+});
+
+// node_modules/caniuse-lite/data/agents.js
+var require_agents = __commonJS({
+  "node_modules/caniuse-lite/data/agents.js"(exports2, module2) {
+    module2.exports = { A: { A: { K: 0, D: 0, E: 0.0563043, F: 0.0422282, A: 0.0140761, B: 0.478586, eC: 0 }, B: "ms", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "eC", "K", "D", "E", "F", "A", "B", "", "", ""], E: "IE", F: { eC: 962323200, K: 998870400, D: 1161129600, E: 1237420800, F: 1300060800, A: 1346716800, B: 1381968e3 } }, B: { A: { "4": 7166e-6, "5": 7166e-6, "6": 0.010749, "7": 7166e-6, "8": 0.010749, "9": 0.039413, C: 0, L: 0, M: 3583e-6, G: 0, N: 0, O: 7166e-6, P: 0.057328, Q: 0, H: 0, R: 0, S: 0, T: 0, U: 0, V: 0, W: 0, X: 0, Y: 0, Z: 0, a: 0, b: 0.014332, c: 0, d: 0, e: 0, f: 0, g: 0, h: 0, i: 0, j: 0, k: 0, l: 0, m: 0, n: 0, o: 0, p: 0, q: 3583e-6, r: 7166e-6, s: 0.064494, t: 7166e-6, u: 7166e-6, v: 7166e-6, w: 0.010749, x: 0.014332, AB: 0.017915, BB: 0.025081, CB: 0.014332, DB: 0.025081, EB: 0.053745, FB: 0.254393, GB: 3.38594, HB: 0.917248, I: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "C", "L", "M", "G", "N", "O", "P", "Q", "H", "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", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "FB", "GB", "HB", "I", "", "", ""], E: "Edge", F: { "4": 1689897600, "5": 1692576e3, "6": 1694649600, "7": 1697155200, "8": 1698969600, "9": 1701993600, C: 1438128e3, L: 1447286400, M: 1470096e3, G: 1491868800, N: 1508198400, O: 1525046400, P: 1542067200, Q: 1579046400, H: 1581033600, R: 1586736e3, S: 1590019200, T: 1594857600, U: 1598486400, V: 1602201600, W: 1605830400, X: 161136e4, Y: 1614816e3, Z: 1618358400, a: 1622073600, b: 1626912e3, c: 1630627200, d: 1632441600, e: 1634774400, f: 1637539200, g: 1641427200, h: 1643932800, i: 1646265600, j: 1649635200, k: 1651190400, l: 1653955200, m: 1655942400, n: 1659657600, o: 1661990400, p: 1664755200, q: 1666915200, r: 1670198400, s: 1673481600, t: 1675900800, u: 1678665600, v: 1680825600, w: 1683158400, x: 1685664e3, AB: 1706227200, BB: 1708732800, CB: 1711152e3, DB: 1713398400, EB: 1715990400, FB: 1718841600, GB: 1721865600, HB: 1724371200, I: 1726704e3 }, D: { C: "ms", L: "ms", M: "ms", G: "ms", N: "ms", O: "ms", P: "ms" } }, C: { A: { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0.351134, "5": 0, "6": 7166e-6, "7": 0.089575, "8": 0, "9": 7166e-6, fC: 0, GC: 0, J: 3583e-6, IB: 0, K: 0, D: 0, E: 0, F: 0, A: 0, B: 0.014332, C: 0, L: 0, M: 0, G: 0, N: 0, O: 0, P: 0, JB: 0, y: 0, z: 0, KB: 0, LB: 0, MB: 0, NB: 0, OB: 0, PB: 0, QB: 0, RB: 0, SB: 0, TB: 0, UB: 0, VB: 0, WB: 0, XB: 0, YB: 0, ZB: 0, aB: 0, bB: 3583e-6, cB: 7166e-6, dB: 3583e-6, eB: 0, fB: 0, gB: 0, hB: 0, iB: 3583e-6, jB: 0, kB: 0.042996, lB: 0, mB: 7166e-6, nB: 3583e-6, oB: 0.017915, pB: 0, qB: 0, HC: 3583e-6, rB: 0, IC: 0, sB: 0, tB: 0, uB: 0, vB: 0, wB: 0, xB: 0, yB: 0, zB: 0, "0B": 0, "1B": 0, "2B": 0, "3B": 0, "4B": 0, "5B": 0, "6B": 0, "7B": 0, "8B": 0.014332, Q: 0, H: 0, R: 0, JC: 0, S: 0, T: 0, U: 0, V: 0, W: 0, X: 7166e-6, Y: 0, Z: 0, a: 0, b: 0, c: 0, d: 3583e-6, e: 0, f: 0, g: 0, h: 0, i: 0, j: 0, k: 0, l: 7166e-6, m: 0.010749, n: 0, o: 3583e-6, p: 0, q: 0, r: 0, s: 7166e-6, t: 0, u: 0, v: 0, w: 7166e-6, x: 0, AB: 7166e-6, BB: 3583e-6, CB: 7166e-6, DB: 7166e-6, EB: 0.014332, FB: 0.032247, GB: 0.042996, HB: 0.447875, I: 1.08923, "9B": 7166e-6, KC: 0, LC: 0, gC: 0, hC: 0, iC: 0, jC: 0 }, B: "moz", C: ["fC", "GC", "iC", "jC", "J", "IB", "K", "D", "E", "F", "A", "B", "C", "L", "M", "G", "N", "O", "P", "JB", "y", "z", "0", "1", "2", "3", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "WB", "XB", "YB", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "lB", "mB", "nB", "oB", "pB", "qB", "HC", "rB", "IC", "sB", "tB", "uB", "vB", "wB", "xB", "yB", "zB", "0B", "1B", "2B", "3B", "4B", "5B", "6B", "7B", "8B", "Q", "H", "R", "JC", "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", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "FB", "GB", "HB", "I", "9B", "KC", "LC", "gC", "hC"], E: "Firefox", F: { "0": 1368489600, "1": 1372118400, "2": 1375747200, "3": 1379376e3, "4": 1688428800, "5": 1690848e3, "6": 1693267200, "7": 1695686400, "8": 1698105600, "9": 1700524800, fC: 1161648e3, GC: 1213660800, iC: 124632e4, jC: 1264032e3, J: 1300752e3, IB: 1308614400, K: 1313452800, D: 1317081600, E: 1317081600, F: 1320710400, A: 1324339200, B: 1327968e3, C: 1331596800, L: 1335225600, M: 1338854400, G: 1342483200, N: 1346112e3, O: 1349740800, P: 1353628800, JB: 1357603200, y: 1361232e3, z: 1364860800, KB: 1386633600, LB: 1391472e3, MB: 1395100800, NB: 1398729600, OB: 1402358400, PB: 1405987200, QB: 1409616e3, RB: 1413244800, SB: 1417392e3, TB: 1421107200, UB: 1424736e3, VB: 1428278400, WB: 1431475200, XB: 1435881600, YB: 1439251200, ZB: 144288e4, aB: 1446508800, bB: 1450137600, cB: 1453852800, dB: 1457395200, eB: 1461628800, fB: 1465257600, gB: 1470096e3, hB: 1474329600, iB: 1479168e3, jB: 1485216e3, kB: 1488844800, lB: 149256e4, mB: 1497312e3, nB: 1502150400, oB: 1506556800, pB: 1510617600, qB: 1516665600, HC: 1520985600, rB: 1525824e3, IC: 1529971200, sB: 1536105600, tB: 1540252800, uB: 1544486400, vB: 154872e4, wB: 1552953600, xB: 1558396800, yB: 1562630400, zB: 1567468800, "0B": 1571788800, "1B": 1575331200, "2B": 1578355200, "3B": 1581379200, "4B": 1583798400, "5B": 1586304e3, "6B": 1588636800, "7B": 1591056e3, "8B": 1593475200, Q: 1595894400, H: 1598313600, R: 1600732800, JC: 1603152e3, S: 1605571200, T: 1607990400, U: 1611619200, V: 1614038400, W: 1616457600, X: 1618790400, Y: 1622505600, Z: 1626134400, a: 1628553600, b: 1630972800, c: 1633392e3, d: 1635811200, e: 1638835200, f: 1641859200, g: 1644364800, h: 1646697600, i: 1649116800, j: 1651536e3, k: 1653955200, l: 1656374400, m: 1658793600, n: 1661212800, o: 1663632e3, p: 1666051200, q: 1668470400, r: 1670889600, s: 1673913600, t: 1676332800, u: 1678752e3, v: 1681171200, w: 1683590400, x: 1686009600, AB: 1702944e3, BB: 1705968e3, CB: 1708387200, DB: 1710806400, EB: 1713225600, FB: 1715644800, GB: 1718064e3, HB: 1720483200, I: 1722902400, "9B": 1725321600, KC: 1727740800, LC: null, gC: null, hC: null } }, D: { A: { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0.03583, "5": 0.168401, "6": 0.10749, "7": 0.07166, "8": 0.068077, "9": 0.10749, J: 0, IB: 0, K: 0, D: 0, E: 0, F: 0, A: 0, B: 0, C: 0, L: 0, M: 0, G: 0, N: 0, O: 0, P: 0, JB: 0, y: 0, z: 0, KB: 0, LB: 0, MB: 0, NB: 0, OB: 0, PB: 0, QB: 0, RB: 0, SB: 0, TB: 0, UB: 0, VB: 0, WB: 0.010749, XB: 0, YB: 0, ZB: 0, aB: 0, bB: 0, cB: 0, dB: 3583e-6, eB: 0, fB: 7166e-6, gB: 0.025081, hB: 0.021498, iB: 7166e-6, jB: 3583e-6, kB: 3583e-6, lB: 7166e-6, mB: 0, nB: 0, oB: 0.032247, pB: 3583e-6, qB: 7166e-6, HC: 0, rB: 0, IC: 3583e-6, sB: 0, tB: 0, uB: 0, vB: 0, wB: 0.025081, xB: 7166e-6, yB: 0, zB: 0.028664, "0B": 0.028664, "1B": 0, "2B": 0, "3B": 7166e-6, "4B": 0.010749, "5B": 0.010749, "6B": 7166e-6, "7B": 0.021498, "8B": 0.017915, Q: 0.103907, H: 0.014332, R: 0.021498, S: 0.032247, T: 0.010749, U: 0.014332, V: 0.025081, W: 0.075243, X: 0.017915, Y: 0.010749, Z: 0.014332, a: 0.053745, b: 0.014332, c: 0.014332, d: 0.050162, e: 0.010749, f: 0.010749, g: 0.017915, h: 0.046579, i: 0.025081, j: 0.021498, k: 0.021498, l: 0.017915, m: 0.111073, n: 0.085992, o: 0.017915, p: 0.028664, q: 0.03583, r: 0.046579, s: 1.42603, t: 0.025081, u: 0.039413, v: 0.050162, w: 0.10749, x: 0.103907, AB: 0.10749, BB: 0.118239, CB: 0.14332, DB: 0.229312, EB: 0.369049, FB: 1.49053, GB: 12.777, HB: 2.30745, I: 0.014332, "9B": 3583e-6, KC: 0, LC: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "J", "IB", "K", "D", "E", "F", "A", "B", "C", "L", "M", "G", "N", "O", "P", "JB", "y", "z", "0", "1", "2", "3", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "WB", "XB", "YB", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "lB", "mB", "nB", "oB", "pB", "qB", "HC", "rB", "IC", "sB", "tB", "uB", "vB", "wB", "xB", "yB", "zB", "0B", "1B", "2B", "3B", "4B", "5B", "6B", "7B", "8B", "Q", "H", "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", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "FB", "GB", "HB", "I", "9B", "KC", "LC"], E: "Chrome", F: { "0": 1343692800, "1": 1348531200, "2": 1352246400, "3": 1357862400, "4": 1689724800, "5": 1692057600, "6": 1694476800, "7": 1696896e3, "8": 1698710400, "9": 1701993600, J: 1264377600, IB: 1274745600, K: 1283385600, D: 1287619200, E: 1291248e3, F: 1296777600, A: 1299542400, B: 1303862400, C: 1307404800, L: 1312243200, M: 1316131200, G: 1316131200, N: 1319500800, O: 1323734400, P: 1328659200, JB: 1332892800, y: 133704e4, z: 1340668800, KB: 1361404800, LB: 1364428800, MB: 1369094400, NB: 1374105600, OB: 1376956800, PB: 1384214400, QB: 1389657600, RB: 1392940800, SB: 1397001600, TB: 1400544e3, UB: 1405468800, VB: 1409011200, WB: 141264e4, XB: 1416268800, YB: 1421798400, ZB: 1425513600, aB: 1429401600, bB: 143208e4, cB: 1437523200, dB: 1441152e3, eB: 1444780800, fB: 1449014400, gB: 1453248e3, hB: 1456963200, iB: 1460592e3, jB: 1464134400, kB: 1469059200, lB: 1472601600, mB: 1476230400, nB: 1480550400, oB: 1485302400, pB: 1489017600, qB: 149256e4, HC: 1496707200, rB: 1500940800, IC: 1504569600, sB: 1508198400, tB: 1512518400, uB: 1516752e3, vB: 1520294400, wB: 1523923200, xB: 1527552e3, yB: 1532390400, zB: 1536019200, "0B": 1539648e3, "1B": 1543968e3, "2B": 154872e4, "3B": 1552348800, "4B": 1555977600, "5B": 1559606400, "6B": 1564444800, "7B": 1568073600, "8B": 1571702400, Q: 1575936e3, H: 1580860800, R: 1586304e3, S: 1589846400, T: 1594684800, U: 1598313600, V: 1601942400, W: 1605571200, X: 1611014400, Y: 1614556800, Z: 1618272e3, a: 1621987200, b: 1626739200, c: 1630368e3, d: 1632268800, e: 1634601600, f: 1637020800, g: 1641340800, h: 1643673600, i: 1646092800, j: 1648512e3, k: 1650931200, l: 1653350400, m: 1655769600, n: 1659398400, o: 1661817600, p: 1664236800, q: 1666656e3, r: 166968e4, s: 1673308800, t: 1675728e3, u: 1678147200, v: 1680566400, w: 1682985600, x: 1685404800, AB: 1705968e3, BB: 1708387200, CB: 1710806400, DB: 1713225600, EB: 1715644800, FB: 1718064e3, GB: 1721174400, HB: 1724112e3, I: 1726531200, "9B": null, KC: null, LC: null } }, E: { A: { J: 0, IB: 0, K: 0, D: 0, E: 0, F: 3583e-6, A: 0, B: 0, C: 0, L: 7166e-6, M: 0.028664, G: 7166e-6, kC: 0, MC: 0, lC: 0, mC: 0, nC: 0, oC: 0, NC: 0, AC: 7166e-6, BC: 0.010749, pC: 0.057328, qC: 0.078826, rC: 0.025081, OC: 0.010749, PC: 0.021498, CC: 0.028664, sC: 0.218563, DC: 0.028664, QC: 0.03583, RC: 0.032247, SC: 0.182733, TC: 0.021498, UC: 0.042996, tC: 0.290223, EC: 0.017915, VC: 0.039413, WC: 0.039413, XC: 0.042996, YC: 0.118239, ZC: 1.44753, aC: 0.415628, FC: 0.017915, bC: 0, uC: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "kC", "MC", "J", "IB", "lC", "K", "mC", "D", "nC", "E", "F", "oC", "A", "NC", "B", "AC", "C", "BC", "L", "pC", "M", "qC", "G", "rC", "OC", "PC", "CC", "sC", "DC", "QC", "RC", "SC", "TC", "UC", "tC", "EC", "VC", "WC", "XC", "YC", "ZC", "aC", "FC", "bC", "uC", ""], E: "Safari", F: { kC: 1205798400, MC: 1226534400, J: 1244419200, IB: 1275868800, lC: 131112e4, K: 1343174400, mC: 13824e5, D: 13824e5, nC: 1410998400, E: 1413417600, F: 1443657600, oC: 1458518400, A: 1474329600, NC: 1490572800, B: 1505779200, AC: 1522281600, C: 1537142400, BC: 1553472e3, L: 1568851200, pC: 1585008e3, M: 1600214400, qC: 1619395200, G: 1632096e3, rC: 1635292800, OC: 1639353600, PC: 1647216e3, CC: 1652745600, sC: 1658275200, DC: 1662940800, QC: 1666569600, RC: 1670889600, SC: 1674432e3, TC: 1679875200, UC: 1684368e3, tC: 1690156800, EC: 1695686400, VC: 1698192e3, WC: 1702252800, XC: 1705881600, YC: 1709596800, ZC: 1715558400, aC: 1722211200, FC: 1726444800, bC: null, uC: null } }, F: { A: { "0": 0, "1": 0, "2": 0, "3": 0, F: 0, B: 0, C: 0, G: 0, N: 0, O: 0, P: 0, JB: 0, y: 0, z: 0, KB: 0, LB: 0, MB: 0, NB: 0, OB: 0, PB: 0, QB: 0, RB: 0, SB: 0, TB: 0, UB: 0, VB: 0, WB: 0, XB: 0, YB: 3583e-6, ZB: 0, aB: 0, bB: 0, cB: 0, dB: 0, eB: 0.017915, fB: 0, gB: 0, hB: 0, iB: 0, jB: 0, kB: 0, lB: 0, mB: 0, nB: 0, oB: 0, pB: 0, qB: 0, rB: 0, sB: 0, tB: 0, uB: 0, vB: 0, wB: 0, xB: 0, yB: 0, zB: 0, "0B": 0, "1B": 0, "2B": 0, "3B": 0, "4B": 0, "5B": 0, "6B": 0, "7B": 0, "8B": 0, Q: 0, H: 0, R: 0, JC: 0, S: 0.028664, T: 3583e-6, U: 0, V: 0, W: 0, X: 0, Y: 0, Z: 0, a: 0, b: 0, c: 0, d: 0, e: 0.039413, f: 0, g: 0, h: 0, i: 0, j: 0, k: 0, l: 0.032247, m: 0, n: 0, o: 0, p: 0, q: 0, r: 0, s: 0.154069, t: 0, u: 0.060911, v: 0, w: 0, x: 0, vC: 0, wC: 0, xC: 0, yC: 0, AC: 0, cC: 0, zC: 0, BC: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "F", "vC", "wC", "xC", "yC", "B", "AC", "cC", "zC", "C", "BC", "G", "N", "O", "P", "JB", "y", "z", "0", "1", "2", "3", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "WB", "XB", "YB", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "lB", "mB", "nB", "oB", "pB", "qB", "rB", "sB", "tB", "uB", "vB", "wB", "xB", "yB", "zB", "0B", "1B", "2B", "3B", "4B", "5B", "6B", "7B", "8B", "Q", "H", "R", "JC", "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", "", "", ""], E: "Opera", F: { "0": 1401753600, "1": 1405987200, "2": 1409616e3, "3": 1413331200, F: 1150761600, vC: 1223424e3, wC: 1251763200, xC: 1267488e3, yC: 1277942400, B: 1292457600, AC: 1302566400, cC: 1309219200, zC: 1323129600, C: 1323129600, BC: 1352073600, G: 1372723200, N: 1377561600, O: 1381104e3, P: 1386288e3, JB: 1390867200, y: 1393891200, z: 1399334400, KB: 1417132800, LB: 1422316800, MB: 1425945600, NB: 1430179200, OB: 1433808e3, PB: 1438646400, QB: 1442448e3, RB: 1445904e3, SB: 1449100800, TB: 1454371200, UB: 1457308800, VB: 146232e4, WB: 1465344e3, XB: 1470096e3, YB: 1474329600, ZB: 1477267200, aB: 1481587200, bB: 1486425600, cB: 1490054400, dB: 1494374400, eB: 1498003200, fB: 1502236800, gB: 1506470400, hB: 1510099200, iB: 1515024e3, jB: 1517961600, kB: 1521676800, lB: 1525910400, mB: 1530144e3, nB: 1534982400, oB: 1537833600, pB: 1543363200, qB: 1548201600, rB: 1554768e3, sB: 1561593600, tB: 1566259200, uB: 1570406400, vB: 1573689600, wB: 1578441600, xB: 1583971200, yB: 1587513600, zB: 1592956800, "0B": 1595894400, "1B": 1600128e3, "2B": 1603238400, "3B": 161352e4, "4B": 1612224e3, "5B": 1616544e3, "6B": 1619568e3, "7B": 1623715200, "8B": 1627948800, Q: 1631577600, H: 1633392e3, R: 1635984e3, JC: 1638403200, S: 1642550400, T: 1644969600, U: 1647993600, V: 1650412800, W: 1652745600, X: 1654646400, Y: 1657152e3, Z: 1660780800, a: 1663113600, b: 1668816e3, c: 1668643200, d: 1671062400, e: 1675209600, f: 1677024e3, g: 1679529600, h: 1681948800, i: 1684195200, j: 1687219200, k: 1690329600, l: 1692748800, m: 1696204800, n: 169992e4, o: 169992e4, p: 1702944e3, q: 1707264e3, r: 1710115200, s: 1711497600, t: 1716336e3, u: 1719273600, v: 1721088e3, w: 1724284800, x: 1727222400 }, D: { F: "o", B: "o", C: "o", vC: "o", wC: "o", xC: "o", yC: "o", AC: "o", cC: "o", zC: "o", BC: "o" } }, G: { A: { E: 0, MC: 0, "0C": 0, dC: 447708e-8, "1C": 149236e-8, "2C": 746181e-8, "3C": 895417e-8, "4C": 0, "5C": 746181e-8, "6C": 0.0298472, "7C": 895417e-8, "8C": 0.0462632, "9C": 0.117897, AD: 0.0149236, BD: 0.0119389, CD: 0.199976, DD: 298472e-8, ED: 0.0656639, FD: 895417e-8, GD: 0.037309, HD: 0.152221, ID: 0.105958, JD: 0.0567097, OC: 0.0567097, PC: 0.0671563, CC: 0.0790952, KD: 0.741704, DC: 0.150729, QC: 0.317873, RC: 0.15819, SC: 0.264148, TC: 0.0656639, UC: 0.10745, LD: 0.920787, EC: 0.0850646, VC: 0.131328, WC: 0.120881, XC: 0.179083, YC: 0.419354, ZC: 8.55869, aC: 1.44162, FC: 0.156698, bC: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "MC", "0C", "dC", "1C", "2C", "3C", "E", "4C", "5C", "6C", "7C", "8C", "9C", "AD", "BD", "CD", "DD", "ED", "FD", "GD", "HD", "ID", "JD", "OC", "PC", "CC", "KD", "DC", "QC", "RC", "SC", "TC", "UC", "LD", "EC", "VC", "WC", "XC", "YC", "ZC", "aC", "FC", "bC", "", ""], E: "Safari on iOS", F: { MC: 1270252800, "0C": 1283904e3, dC: 1299628800, "1C": 1331078400, "2C": 1359331200, "3C": 1394409600, E: 1410912e3, "4C": 1413763200, "5C": 1442361600, "6C": 1458518400, "7C": 1473724800, "8C": 1490572800, "9C": 1505779200, AD: 1522281600, BD: 1537142400, CD: 1553472e3, DD: 1568851200, ED: 1572220800, FD: 1580169600, GD: 1585008e3, HD: 1600214400, ID: 1619395200, JD: 1632096e3, OC: 1639353600, PC: 1647216e3, CC: 1652659200, KD: 1658275200, DC: 1662940800, QC: 1666569600, RC: 1670889600, SC: 1674432e3, TC: 1679875200, UC: 1684368e3, LD: 1690156800, EC: 1694995200, VC: 1698192e3, WC: 1702252800, XC: 1705881600, YC: 1709596800, ZC: 1715558400, aC: 1722211200, FC: 1726444800, bC: null } }, H: { A: { MD: 0.05 }, B: "o", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "MD", "", "", ""], E: "Opera Mini", F: { MD: 1426464e3 } }, I: { A: { GC: 0, J: 327216e-10, I: 0.326169, ND: 0, OD: 0, PD: 0, QD: 130886e-9, dC: 130886e-9, RD: 0, SD: 523546e-9 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "ND", "OD", "PD", "GC", "J", "QD", "dC", "RD", "SD", "I", "", "", ""], E: "Android Browser", F: { ND: 1256515200, OD: 1274313600, PD: 1291593600, GC: 1298332800, J: 1318896e3, QD: 1341792e3, dC: 1374624e3, RD: 1386547200, SD: 1401667200, I: 1726531200 } }, J: { A: { D: 0, A: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "D", "A", "", "", ""], E: "Blackberry Browser", F: { D: 1325376e3, A: 1359504e3 } }, K: { A: { A: 0, B: 0, C: 0, H: 1.24603, AC: 0, cC: 0, BC: 0 }, B: "o", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "A", "B", "AC", "cC", "C", "BC", "H", "", "", ""], E: "Opera Mobile", F: { A: 1287100800, B: 1300752e3, AC: 1314835200, cC: 1318291200, C: 1330300800, BC: 1349740800, H: 1709769600 }, D: { H: "webkit" } }, L: { A: { I: 44.331 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "I", "", "", ""], E: "Chrome for Android", F: { I: 1726531200 } }, M: { A: { "9B": 0.365712 }, B: "moz", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "9B", "", "", ""], E: "Firefox for Android", F: { "9B": 1725321600 } }, N: { A: { A: 0, B: 0 }, B: "ms", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "A", "B", "", "", ""], E: "IE Mobile", F: { A: 1340150400, B: 1353456e3 } }, O: { A: { CC: 1.13563 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "CC", "", "", ""], E: "UC Browser for Android", F: { CC: 1710115200 }, D: { CC: "webkit" } }, P: { A: { "0": 0.0647361, "1": 0.0647361, "2": 0.0755255, "3": 1.27314, J: 0.0971042, y: 0.0215787, z: 0.0431574, TD: 0.0107894, UD: 0.0107894, VD: 0.0323681, WD: 0, XD: 0, NC: 0, YD: 0.0107894, ZD: 0, aD: 0.0107894, bD: 0, cD: 0, DC: 0, EC: 0.0215787, FC: 0, dD: 0.0215787 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "J", "TD", "UD", "VD", "WD", "XD", "NC", "YD", "ZD", "aD", "bD", "cD", "DC", "EC", "FC", "dD", "y", "z", "0", "1", "2", "3", "", "", ""], E: "Samsung Internet", F: { "0": 1689292800, "1": 1697587200, "2": 1711497600, "3": 1715126400, J: 1461024e3, TD: 1481846400, UD: 1509408e3, VD: 1528329600, WD: 1546128e3, XD: 1554163200, NC: 1567900800, YD: 1582588800, ZD: 1593475200, aD: 1605657600, bD: 1618531200, cD: 1629072e3, DC: 1640736e3, EC: 1651708800, FC: 1659657600, dD: 1667260800, y: 1677369600, z: 1684454400 } }, Q: { A: { eD: 0.3208 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "eD", "", "", ""], E: "QQ Browser", F: { eD: 1710288e3 } }, R: { A: { fD: 0 }, B: "webkit", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "fD", "", "", ""], E: "Baidu Browser", F: { fD: 1710201600 } }, S: { A: { gD: 0.051328, hD: 0 }, B: "moz", C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "gD", "hD", "", "", ""], E: "KaiOS Browser", F: { gD: 1527811200, hD: 1631664e3 } } };
+  }
+});
+
+// node_modules/caniuse-lite/dist/unpacker/agents.js
+var require_agents2 = __commonJS({
+  "node_modules/caniuse-lite/dist/unpacker/agents.js"(exports2, module2) {
+    "use strict";
+    var browsers = require_browsers2().browsers;
+    var versions = require_browserVersions2().browserVersions;
+    var agentsData = require_agents();
+    function unpackBrowserVersions(versionsData) {
+      return Object.keys(versionsData).reduce((usage, version) => {
+        usage[versions[version]] = versionsData[version];
+        return usage;
+      }, {});
+    }
+    module2.exports.agents = Object.keys(agentsData).reduce((map, key) => {
+      let versionsData = agentsData[key];
+      map[browsers[key]] = Object.keys(versionsData).reduce((data, entry) => {
+        if (entry === "A") {
+          data.usage_global = unpackBrowserVersions(versionsData[entry]);
+        } else if (entry === "C") {
+          data.versions = versionsData[entry].reduce((list, version) => {
+            if (version === "") {
+              list.push(null);
+            } else {
+              list.push(versions[version]);
+            }
+            return list;
+          }, []);
+        } else if (entry === "D") {
+          data.prefix_exceptions = unpackBrowserVersions(versionsData[entry]);
+        } else if (entry === "E") {
+          data.browser = versionsData[entry];
+        } else if (entry === "F") {
+          data.release_date = Object.keys(versionsData[entry]).reduce(
+            (map2, key2) => {
+              map2[versions[key2]] = versionsData[entry][key2];
+              return map2;
+            },
+            {}
+          );
+        } else {
+          data.prefix = versionsData[entry];
+        }
+        return data;
+      }, {});
+      return map;
+    }, {});
+  }
+});
+
+// node_modules/electron-to-chromium/versions.js
+var require_versions = __commonJS({
+  "node_modules/electron-to-chromium/versions.js"(exports2, module2) {
+    module2.exports = {
+      "0.20": "39",
+      "0.21": "41",
+      "0.22": "41",
+      "0.23": "41",
+      "0.24": "41",
+      "0.25": "42",
+      "0.26": "42",
+      "0.27": "43",
+      "0.28": "43",
+      "0.29": "43",
+      "0.30": "44",
+      "0.31": "45",
+      "0.32": "45",
+      "0.33": "45",
+      "0.34": "45",
+      "0.35": "45",
+      "0.36": "47",
+      "0.37": "49",
+      "1.0": "49",
+      "1.1": "50",
+      "1.2": "51",
+      "1.3": "52",
+      "1.4": "53",
+      "1.5": "54",
+      "1.6": "56",
+      "1.7": "58",
+      "1.8": "59",
+      "2.0": "61",
+      "2.1": "61",
+      "3.0": "66",
+      "3.1": "66",
+      "4.0": "69",
+      "4.1": "69",
+      "4.2": "69",
+      "5.0": "73",
+      "6.0": "76",
+      "6.1": "76",
+      "7.0": "78",
+      "7.1": "78",
+      "7.2": "78",
+      "7.3": "78",
+      "8.0": "80",
+      "8.1": "80",
+      "8.2": "80",
+      "8.3": "80",
+      "8.4": "80",
+      "8.5": "80",
+      "9.0": "83",
+      "9.1": "83",
+      "9.2": "83",
+      "9.3": "83",
+      "9.4": "83",
+      "10.0": "85",
+      "10.1": "85",
+      "10.2": "85",
+      "10.3": "85",
+      "10.4": "85",
+      "11.0": "87",
+      "11.1": "87",
+      "11.2": "87",
+      "11.3": "87",
+      "11.4": "87",
+      "11.5": "87",
+      "12.0": "89",
+      "12.1": "89",
+      "12.2": "89",
+      "13.0": "91",
+      "13.1": "91",
+      "13.2": "91",
+      "13.3": "91",
+      "13.4": "91",
+      "13.5": "91",
+      "13.6": "91",
+      "14.0": "93",
+      "14.1": "93",
+      "14.2": "93",
+      "15.0": "94",
+      "15.1": "94",
+      "15.2": "94",
+      "15.3": "94",
+      "15.4": "94",
+      "15.5": "94",
+      "16.0": "96",
+      "16.1": "96",
+      "16.2": "96",
+      "17.0": "98",
+      "17.1": "98",
+      "17.2": "98",
+      "17.3": "98",
+      "17.4": "98",
+      "18.0": "100",
+      "18.1": "100",
+      "18.2": "100",
+      "18.3": "100",
+      "19.0": "102",
+      "19.1": "102",
+      "20.0": "104",
+      "20.1": "104",
+      "20.2": "104",
+      "20.3": "104",
+      "21.0": "106",
+      "21.1": "106",
+      "21.2": "106",
+      "21.3": "106",
+      "21.4": "106",
+      "22.0": "108",
+      "22.1": "108",
+      "22.2": "108",
+      "22.3": "108",
+      "23.0": "110",
+      "23.1": "110",
+      "23.2": "110",
+      "23.3": "110",
+      "24.0": "112",
+      "24.1": "112",
+      "24.2": "112",
+      "24.3": "112",
+      "24.4": "112",
+      "24.5": "112",
+      "24.6": "112",
+      "24.7": "112",
+      "24.8": "112",
+      "25.0": "114",
+      "25.1": "114",
+      "25.2": "114",
+      "25.3": "114",
+      "25.4": "114",
+      "25.5": "114",
+      "25.6": "114",
+      "25.7": "114",
+      "25.8": "114",
+      "25.9": "114",
+      "26.0": "116",
+      "26.1": "116",
+      "26.2": "116",
+      "26.3": "116",
+      "26.4": "116",
+      "26.5": "116",
+      "26.6": "116",
+      "27.0": "118",
+      "27.1": "118",
+      "27.2": "118",
+      "27.3": "118",
+      "28.0": "120",
+      "28.1": "120",
+      "28.2": "120",
+      "28.3": "120",
+      "29.0": "122",
+      "29.1": "122",
+      "29.2": "122",
+      "29.3": "122",
+      "29.4": "122",
+      "30.0": "124",
+      "30.1": "124",
+      "30.2": "124",
+      "30.3": "124",
+      "30.4": "124",
+      "30.5": "124",
+      "31.0": "126",
+      "31.1": "126",
+      "31.2": "126",
+      "31.3": "126",
+      "31.4": "126",
+      "31.5": "126",
+      "31.6": "126",
+      "32.0": "128",
+      "32.1": "128",
+      "32.2": "128",
+      "33.0": "130",
+      "34.0": "131"
+    };
+  }
+});
+
+// node_modules/node-releases/data/release-schedule/release-schedule.json
+var require_release_schedule = __commonJS({
+  "node_modules/node-releases/data/release-schedule/release-schedule.json"(exports2, module2) {
+    module2.exports = { "v0.8": { start: "2012-06-25", end: "2014-07-31" }, "v0.10": { start: "2013-03-11", end: "2016-10-31" }, "v0.12": { start: "2015-02-06", end: "2016-12-31" }, v4: { start: "2015-09-08", lts: "2015-10-12", maintenance: "2017-04-01", end: "2018-04-30", codename: "Argon" }, v5: { start: "2015-10-29", maintenance: "2016-04-30", end: "2016-06-30" }, v6: { start: "2016-04-26", lts: "2016-10-18", maintenance: "2018-04-30", end: "2019-04-30", codename: "Boron" }, v7: { start: "2016-10-25", maintenance: "2017-04-30", end: "2017-06-30" }, v8: { start: "2017-05-30", lts: "2017-10-31", maintenance: "2019-01-01", end: "2019-12-31", codename: "Carbon" }, v9: { start: "2017-10-01", maintenance: "2018-04-01", end: "2018-06-30" }, v10: { start: "2018-04-24", lts: "2018-10-30", maintenance: "2020-05-19", end: "2021-04-30", codename: "Dubnium" }, v11: { start: "2018-10-23", maintenance: "2019-04-22", end: "2019-06-01" }, v12: { start: "2019-04-23", lts: "2019-10-21", maintenance: "2020-11-30", end: "2022-04-30", codename: "Erbium" }, v13: { start: "2019-10-22", maintenance: "2020-04-01", end: "2020-06-01" }, v14: { start: "2020-04-21", lts: "2020-10-27", maintenance: "2021-10-19", end: "2023-04-30", codename: "Fermium" }, v15: { start: "2020-10-20", maintenance: "2021-04-01", end: "2021-06-01" }, v16: { start: "2021-04-20", lts: "2021-10-26", maintenance: "2022-10-18", end: "2023-09-11", codename: "Gallium" }, v17: { start: "2021-10-19", maintenance: "2022-04-01", end: "2022-06-01" }, v18: { start: "2022-04-19", lts: "2022-10-25", maintenance: "2023-10-18", end: "2025-04-30", codename: "Hydrogen" }, v19: { start: "2022-10-18", maintenance: "2023-04-01", end: "2023-06-01" }, v20: { start: "2023-04-18", lts: "2023-10-24", maintenance: "2024-10-22", end: "2026-04-30", codename: "Iron" }, v21: { start: "2023-10-17", maintenance: "2024-04-01", end: "2024-06-01" }, v22: { start: "2024-04-24", lts: "2024-10-29", maintenance: "2025-10-21", end: "2027-04-30", codename: "" }, v23: { start: "2024-10-15", maintenance: "2025-04-01", end: "2025-06-01" }, v24: { start: "2025-04-22", lts: "2025-10-28", maintenance: "2026-10-20", end: "2028-04-30", codename: "" } };
+  }
+});
+
+// node_modules/browserslist/error.js
+var require_error = __commonJS({
+  "node_modules/browserslist/error.js"(exports2, module2) {
+    function BrowserslistError(message) {
+      this.name = "BrowserslistError";
+      this.message = message;
+      this.browserslist = true;
+      if (Error.captureStackTrace) {
+        Error.captureStackTrace(this, BrowserslistError);
+      }
+    }
+    BrowserslistError.prototype = Error.prototype;
+    module2.exports = BrowserslistError;
+  }
+});
+
+// node_modules/caniuse-lite/dist/lib/statuses.js
+var require_statuses = __commonJS({
+  "node_modules/caniuse-lite/dist/lib/statuses.js"(exports2, module2) {
+    module2.exports = {
+      1: "ls",
+      // WHATWG Living Standard
+      2: "rec",
+      // W3C Recommendation
+      3: "pr",
+      // W3C Proposed Recommendation
+      4: "cr",
+      // W3C Candidate Recommendation
+      5: "wd",
+      // W3C Working Draft
+      6: "other",
+      // Non-W3C, but reputable
+      7: "unoff"
+      // Unofficial, Editor's Draft or W3C "Note"
+    };
+  }
+});
+
+// node_modules/caniuse-lite/dist/lib/supported.js
+var require_supported = __commonJS({
+  "node_modules/caniuse-lite/dist/lib/supported.js"(exports2, module2) {
+    module2.exports = {
+      y: 1 << 0,
+      n: 1 << 1,
+      a: 1 << 2,
+      p: 1 << 3,
+      u: 1 << 4,
+      x: 1 << 5,
+      d: 1 << 6
+    };
+  }
+});
+
+// node_modules/caniuse-lite/dist/unpacker/feature.js
+var require_feature = __commonJS({
+  "node_modules/caniuse-lite/dist/unpacker/feature.js"(exports2, module2) {
+    "use strict";
+    var statuses = require_statuses();
+    var supported = require_supported();
+    var browsers = require_browsers2().browsers;
+    var versions = require_browserVersions2().browserVersions;
+    var MATH2LOG = Math.log(2);
+    function unpackSupport(cipher) {
+      let stats = Object.keys(supported).reduce((list, support) => {
+        if (cipher & supported[support]) list.push(support);
+        return list;
+      }, []);
+      let notes = cipher >> 7;
+      let notesArray = [];
+      while (notes) {
+        let note = Math.floor(Math.log(notes) / MATH2LOG) + 1;
+        notesArray.unshift(`#${note}`);
+        notes -= Math.pow(2, note - 1);
+      }
+      return stats.concat(notesArray).join(" ");
+    }
+    function unpackFeature(packed) {
+      let unpacked = {
+        status: statuses[packed.B],
+        title: packed.C,
+        shown: packed.D
+      };
+      unpacked.stats = Object.keys(packed.A).reduce((browserStats, key) => {
+        let browser = packed.A[key];
+        browserStats[browsers[key]] = Object.keys(browser).reduce(
+          (stats, support) => {
+            let packedVersions = browser[support].split(" ");
+            let unpacked2 = unpackSupport(support);
+            packedVersions.forEach((v) => stats[versions[v]] = unpacked2);
+            return stats;
+          },
+          {}
+        );
+        return browserStats;
+      }, {});
+      return unpacked;
+    }
+    module2.exports = unpackFeature;
+    module2.exports.default = unpackFeature;
+  }
+});
+
+// node_modules/caniuse-lite/dist/unpacker/region.js
+var require_region = __commonJS({
+  "node_modules/caniuse-lite/dist/unpacker/region.js"(exports2, module2) {
+    "use strict";
+    var browsers = require_browsers2().browsers;
+    function unpackRegion(packed) {
+      return Object.keys(packed).reduce((list, browser) => {
+        let data = packed[browser];
+        list[browsers[browser]] = Object.keys(data).reduce((memo, key) => {
+          let stats = data[key];
+          if (key === "_") {
+            stats.split(" ").forEach((version) => memo[version] = null);
+          } else {
+            memo[key] = stats;
+          }
+          return memo;
+        }, {});
+        return list;
+      }, {});
+    }
+    module2.exports = unpackRegion;
+    module2.exports.default = unpackRegion;
+  }
+});
+
+// node_modules/browserslist/node.js
+var require_node2 = __commonJS({
+  "node_modules/browserslist/node.js"(exports2, module2) {
+    var feature = require_feature().default;
+    var region = require_region().default;
+    var fs = require("fs");
+    var path = require("path");
+    var BrowserslistError = require_error();
+    var IS_SECTION = /^\s*\[(.+)]\s*$/;
+    var CONFIG_PATTERN = /^browserslist-config-/;
+    var SCOPED_CONFIG__PATTERN = /@[^/]+(?:\/[^/]+)?\/browserslist-config(?:-|$|\/)/;
+    var TIME_TO_UPDATE_CANIUSE = 6 * 30 * 24 * 60 * 60 * 1e3;
+    var FORMAT = "Browserslist config should be a string or an array of strings with browser queries";
+    var dataTimeChecked = false;
+    var filenessCache = {};
+    var configCache = {};
+    function checkExtend(name) {
+      var use = " Use `dangerousExtend` option to disable.";
+      if (!CONFIG_PATTERN.test(name) && !SCOPED_CONFIG__PATTERN.test(name)) {
+        throw new BrowserslistError(
+          "Browserslist config needs `browserslist-config-` prefix. " + use
+        );
+      }
+      if (name.replace(/^@[^/]+\//, "").indexOf(".") !== -1) {
+        throw new BrowserslistError(
+          "`.` not allowed in Browserslist config name. " + use
+        );
+      }
+      if (name.indexOf("node_modules") !== -1) {
+        throw new BrowserslistError(
+          "`node_modules` not allowed in Browserslist config." + use
+        );
+      }
+    }
+    function isFile(file) {
+      if (file in filenessCache) {
+        return filenessCache[file];
+      }
+      var result = fs.existsSync(file) && fs.statSync(file).isFile();
+      if (!process.env.BROWSERSLIST_DISABLE_CACHE) {
+        filenessCache[file] = result;
+      }
+      return result;
+    }
+    function eachParent(file, callback) {
+      var dir = isFile(file) ? path.dirname(file) : file;
+      var loc = path.resolve(dir);
+      do {
+        if (!pathInRoot(loc)) break;
+        var result = callback(loc);
+        if (typeof result !== "undefined") return result;
+      } while (loc !== (loc = path.dirname(loc)));
+      return void 0;
+    }
+    function pathInRoot(p) {
+      if (!process.env.BROWSERSLIST_ROOT_PATH) return true;
+      var rootPath = path.resolve(process.env.BROWSERSLIST_ROOT_PATH);
+      if (path.relative(rootPath, p).substring(0, 2) === "..") {
+        return false;
+      }
+      return true;
+    }
+    function check(section) {
+      if (Array.isArray(section)) {
+        for (var i = 0; i < section.length; i++) {
+          if (typeof section[i] !== "string") {
+            throw new BrowserslistError(FORMAT);
+          }
+        }
+      } else if (typeof section !== "string") {
+        throw new BrowserslistError(FORMAT);
+      }
+    }
+    function pickEnv(config, opts) {
+      if (typeof config !== "object") return config;
+      var name;
+      if (typeof opts.env === "string") {
+        name = opts.env;
+      } else if (process.env.BROWSERSLIST_ENV) {
+        name = process.env.BROWSERSLIST_ENV;
+      } else if (process.env.NODE_ENV) {
+        name = process.env.NODE_ENV;
+      } else {
+        name = "production";
+      }
+      if (opts.throwOnMissing) {
+        if (name && name !== "defaults" && !config[name]) {
+          throw new BrowserslistError(
+            "Missing config for Browserslist environment `" + name + "`"
+          );
+        }
+      }
+      return config[name] || config.defaults;
+    }
+    function parsePackage(file) {
+      var config = JSON.parse(
+        fs.readFileSync(file).toString().replace(/^\uFEFF/m, "")
+      );
+      if (config.browserlist && !config.browserslist) {
+        throw new BrowserslistError(
+          "`browserlist` key instead of `browserslist` in " + file
+        );
+      }
+      var list = config.browserslist;
+      if (Array.isArray(list) || typeof list === "string") {
+        list = { defaults: list };
+      }
+      for (var i in list) {
+        check(list[i]);
+      }
+      return list;
+    }
+    function parsePackageOrReadConfig(file) {
+      if (path.basename(file) === "package.json") {
+        return parsePackage(file);
+      } else {
+        return module2.exports.readConfig(file);
+      }
+    }
+    function latestReleaseTime(agents) {
+      var latest = 0;
+      for (var name in agents) {
+        var dates = agents[name].releaseDate || {};
+        for (var key in dates) {
+          if (latest < dates[key]) {
+            latest = dates[key];
+          }
+        }
+      }
+      return latest * 1e3;
+    }
+    function normalizeStats(data, stats) {
+      if (!data) {
+        data = {};
+      }
+      if (stats && "dataByBrowser" in stats) {
+        stats = stats.dataByBrowser;
+      }
+      if (typeof stats !== "object") return void 0;
+      var normalized = {};
+      for (var i in stats) {
+        var versions = Object.keys(stats[i]);
+        if (versions.length === 1 && data[i] && data[i].versions.length === 1) {
+          var normal = data[i].versions[0];
+          normalized[i] = {};
+          normalized[i][normal] = stats[i][versions[0]];
+        } else {
+          normalized[i] = stats[i];
+        }
+      }
+      return normalized;
+    }
+    function normalizeUsageData(usageData, data) {
+      for (var browser in usageData) {
+        var browserUsage = usageData[browser];
+        if ("0" in browserUsage) {
+          var versions = data[browser].versions;
+          browserUsage[versions[versions.length - 1]] = browserUsage[0];
+          delete browserUsage[0];
+        }
+      }
+    }
+    module2.exports = {
+      loadQueries: function loadQueries(ctx, name) {
+        if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) {
+          checkExtend(name);
+        }
+        var queries = require(require.resolve(name, { paths: [".", ctx.path] }));
+        if (queries) {
+          if (Array.isArray(queries)) {
+            return queries;
+          } else if (typeof queries === "object") {
+            if (!queries.defaults) queries.defaults = [];
+            return pickEnv(queries, ctx, name);
+          }
+        }
+        throw new BrowserslistError(
+          "`" + name + "` config exports not an array of queries or an object of envs"
+        );
+      },
+      loadStat: function loadStat(ctx, name, data) {
+        if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) {
+          checkExtend(name);
+        }
+        var stats = require(require.resolve(
+          path.join(name, "browserslist-stats.json"),
+          { paths: ["."] }
+        ));
+        return normalizeStats(data, stats);
+      },
+      getStat: function getStat(opts, data) {
+        var stats;
+        if (opts.stats) {
+          stats = opts.stats;
+        } else if (process.env.BROWSERSLIST_STATS) {
+          stats = process.env.BROWSERSLIST_STATS;
+        } else if (opts.path && path.resolve && fs.existsSync) {
+          stats = eachParent(opts.path, function(dir) {
+            var file = path.join(dir, "browserslist-stats.json");
+            return isFile(file) ? file : void 0;
+          });
+        }
+        if (typeof stats === "string") {
+          try {
+            stats = JSON.parse(fs.readFileSync(stats));
+          } catch (e) {
+            throw new BrowserslistError("Can't read " + stats);
+          }
+        }
+        return normalizeStats(data, stats);
+      },
+      loadConfig: function loadConfig(opts) {
+        if (process.env.BROWSERSLIST) {
+          return process.env.BROWSERSLIST;
+        } else if (opts.config || process.env.BROWSERSLIST_CONFIG) {
+          var file = opts.config || process.env.BROWSERSLIST_CONFIG;
+          return pickEnv(parsePackageOrReadConfig(file), opts);
+        } else if (opts.path) {
+          return pickEnv(module2.exports.findConfig(opts.path), opts);
+        } else {
+          return void 0;
+        }
+      },
+      loadCountry: function loadCountry(usage, country, data) {
+        var code = country.replace(/[^\w-]/g, "");
+        if (!usage[code]) {
+          var compressed;
+          try {
+            compressed = require("caniuse-lite/data/regions/" + code + ".js");
+          } catch (e) {
+            throw new BrowserslistError("Unknown region name `" + code + "`.");
+          }
+          var usageData = region(compressed);
+          normalizeUsageData(usageData, data);
+          usage[country] = {};
+          for (var i in usageData) {
+            for (var j in usageData[i]) {
+              usage[country][i + " " + j] = usageData[i][j];
+            }
+          }
+        }
+      },
+      loadFeature: function loadFeature(features, name) {
+        name = name.replace(/[^\w-]/g, "");
+        if (features[name]) return;
+        var compressed;
+        try {
+          compressed = require("caniuse-lite/data/features/" + name + ".js");
+        } catch (e) {
+          throw new BrowserslistError("Unknown feature name `" + name + "`.");
+        }
+        var stats = feature(compressed).stats;
+        features[name] = {};
+        for (var i in stats) {
+          features[name][i] = {};
+          for (var j in stats[i]) {
+            features[name][i][j] = stats[i][j];
+          }
+        }
+      },
+      parseConfig: function parseConfig(string) {
+        var result = { defaults: [] };
+        var sections = ["defaults"];
+        string.toString().replace(/#[^\n]*/g, "").split(/\n|,/).map(function(line) {
+          return line.trim();
+        }).filter(function(line) {
+          return line !== "";
+        }).forEach(function(line) {
+          if (IS_SECTION.test(line)) {
+            sections = line.match(IS_SECTION)[1].trim().split(" ");
+            sections.forEach(function(section) {
+              if (result[section]) {
+                throw new BrowserslistError(
+                  "Duplicate section " + section + " in Browserslist config"
+                );
+              }
+              result[section] = [];
+            });
+          } else {
+            sections.forEach(function(section) {
+              result[section].push(line);
+            });
+          }
+        });
+        return result;
+      },
+      readConfig: function readConfig(file) {
+        if (!isFile(file)) {
+          throw new BrowserslistError("Can't read " + file + " config");
+        }
+        return module2.exports.parseConfig(fs.readFileSync(file));
+      },
+      findConfigFile: function findConfigFile(from) {
+        var resolved = eachParent(from, function(dir) {
+          var config = path.join(dir, "browserslist");
+          var pkg = path.join(dir, "package.json");
+          var rc = path.join(dir, ".browserslistrc");
+          var pkgBrowserslist;
+          if (isFile(pkg)) {
+            try {
+              pkgBrowserslist = parsePackage(pkg);
+            } catch (e) {
+              if (e.name === "BrowserslistError") throw e;
+              console.warn(
+                "[Browserslist] Could not parse " + pkg + ". Ignoring it."
+              );
+            }
+          }
+          if (isFile(config) && pkgBrowserslist) {
+            throw new BrowserslistError(
+              dir + " contains both browserslist and package.json with browsers"
+            );
+          } else if (isFile(rc) && pkgBrowserslist) {
+            throw new BrowserslistError(
+              dir + " contains both .browserslistrc and package.json with browsers"
+            );
+          } else if (isFile(config) && isFile(rc)) {
+            throw new BrowserslistError(
+              dir + " contains both .browserslistrc and browserslist"
+            );
+          } else if (isFile(config)) {
+            return config;
+          } else if (isFile(rc)) {
+            return rc;
+          } else if (pkgBrowserslist) {
+            return pkg;
+          }
+        });
+        return resolved;
+      },
+      findConfig: function findConfig(from) {
+        from = path.resolve(from);
+        var fromDir = isFile(from) ? path.dirname(from) : from;
+        if (fromDir in configCache) {
+          return configCache[fromDir];
+        }
+        var resolved;
+        var configFile = this.findConfigFile(from);
+        if (configFile) {
+          resolved = parsePackageOrReadConfig(configFile);
+        }
+        if (!process.env.BROWSERSLIST_DISABLE_CACHE) {
+          var configDir = configFile && path.dirname(configFile);
+          eachParent(from, function(dir) {
+            configCache[dir] = resolved;
+            if (dir === configDir) {
+              return null;
+            }
+          });
+        }
+        return resolved;
+      },
+      clearCaches: function clearCaches() {
+        dataTimeChecked = false;
+        filenessCache = {};
+        configCache = {};
+        this.cache = {};
+      },
+      oldDataWarning: function oldDataWarning(agentsObj) {
+        if (dataTimeChecked) return;
+        dataTimeChecked = true;
+        if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return;
+        var latest = latestReleaseTime(agentsObj);
+        var halfYearAgo = Date.now() - TIME_TO_UPDATE_CANIUSE;
+        if (latest !== 0 && latest < halfYearAgo) {
+          console.warn(
+            "Browserslist: caniuse-lite is outdated. Please run:\n  npx update-browserslist-db@latest\n  Why you should do it regularly: https://github.com/browserslist/update-db#readme"
+          );
+        }
+      },
+      currentNode: function currentNode() {
+        return "node " + process.versions.node;
+      },
+      env: process.env
+    };
+  }
+});
+
+// node_modules/browserslist/parse.js
+var require_parse3 = __commonJS({
+  "node_modules/browserslist/parse.js"(exports2, module2) {
+    var AND_REGEXP = /^\s+and\s+(.*)/i;
+    var OR_REGEXP = /^(?:,\s*|\s+or\s+)(.*)/i;
+    function flatten(array) {
+      if (!Array.isArray(array)) return [array];
+      return array.reduce(function(a, b) {
+        return a.concat(flatten(b));
+      }, []);
+    }
+    function find(string, predicate) {
+      for (var max = string.length, n = 1; n <= max; n++) {
+        var parsed = string.substr(-n, n);
+        if (predicate(parsed, n, max)) {
+          return string.slice(0, -n);
+        }
+      }
+      return "";
+    }
+    function matchQuery(all, query) {
+      var node = { query };
+      if (query.indexOf("not ") === 0) {
+        node.not = true;
+        query = query.slice(4);
+      }
+      for (var name in all) {
+        var type = all[name];
+        var match = query.match(type.regexp);
+        if (match) {
+          node.type = name;
+          for (var i = 0; i < type.matches.length; i++) {
+            node[type.matches[i]] = match[i + 1];
+          }
+          return node;
+        }
+      }
+      node.type = "unknown";
+      return node;
+    }
+    function matchBlock(all, string, qs) {
+      var node;
+      return find(string, function(parsed, n, max) {
+        if (AND_REGEXP.test(parsed)) {
+          node = matchQuery(all, parsed.match(AND_REGEXP)[1]);
+          node.compose = "and";
+          qs.unshift(node);
+          return true;
+        } else if (OR_REGEXP.test(parsed)) {
+          node = matchQuery(all, parsed.match(OR_REGEXP)[1]);
+          node.compose = "or";
+          qs.unshift(node);
+          return true;
+        } else if (n === max) {
+          node = matchQuery(all, parsed.trim());
+          node.compose = "or";
+          qs.unshift(node);
+          return true;
+        }
+        return false;
+      });
+    }
+    module2.exports = function parse(all, queries) {
+      if (!Array.isArray(queries)) queries = [queries];
+      return flatten(
+        queries.map(function(block) {
+          var qs = [];
+          do {
+            block = matchBlock(all, block, qs);
+          } while (block);
+          return qs;
+        })
+      );
+    };
+  }
+});
+
+// node_modules/browserslist/index.js
+var require_browserslist = __commonJS({
+  "node_modules/browserslist/index.js"(exports2, module2) {
+    var jsReleases = require_envs();
+    var agents = require_agents2().agents;
+    var e2c = require_versions();
+    var jsEOL = require_release_schedule();
+    var path = require("path");
+    var BrowserslistError = require_error();
+    var env = require_node2();
+    var parse = require_parse3();
+    var YEAR = 365.259641 * 24 * 60 * 60 * 1e3;
+    var ANDROID_EVERGREEN_FIRST = "37";
+    var OP_MOB_BLINK_FIRST = 14;
+    function isVersionsMatch(versionA, versionB) {
+      return (versionA + ".").indexOf(versionB + ".") === 0;
+    }
+    function isEolReleased(name) {
+      var version = name.slice(1);
+      return browserslist.nodeVersions.some(function(i) {
+        return isVersionsMatch(i, version);
+      });
+    }
+    function normalize(versions) {
+      return versions.filter(function(version) {
+        return typeof version === "string";
+      });
+    }
+    function normalizeElectron(version) {
+      var versionToUse = version;
+      if (version.split(".").length === 3) {
+        versionToUse = version.split(".").slice(0, -1).join(".");
+      }
+      return versionToUse;
+    }
+    function nameMapper(name) {
+      return function mapName(version) {
+        return name + " " + version;
+      };
+    }
+    function getMajor(version) {
+      return parseInt(version.split(".")[0]);
+    }
+    function getMajorVersions(released, number) {
+      if (released.length === 0) return [];
+      var majorVersions = uniq(released.map(getMajor));
+      var minimum = majorVersions[majorVersions.length - number];
+      if (!minimum) {
+        return released;
+      }
+      var selected = [];
+      for (var i = released.length - 1; i >= 0; i--) {
+        if (minimum > getMajor(released[i])) break;
+        selected.unshift(released[i]);
+      }
+      return selected;
+    }
+    function uniq(array) {
+      var filtered = [];
+      for (var i = 0; i < array.length; i++) {
+        if (filtered.indexOf(array[i]) === -1) filtered.push(array[i]);
+      }
+      return filtered;
+    }
+    function fillUsage(result, name, data) {
+      for (var i in data) {
+        result[name + " " + i] = data[i];
+      }
+    }
+    function generateFilter(sign, version) {
+      version = parseFloat(version);
+      if (sign === ">") {
+        return function(v) {
+          return parseLatestFloat(v) > version;
+        };
+      } else if (sign === ">=") {
+        return function(v) {
+          return parseLatestFloat(v) >= version;
+        };
+      } else if (sign === "<") {
+        return function(v) {
+          return parseFloat(v) < version;
+        };
+      } else {
+        return function(v) {
+          return parseFloat(v) <= version;
+        };
+      }
+      function parseLatestFloat(v) {
+        return parseFloat(v.split("-")[1] || v);
+      }
+    }
+    function generateSemverFilter(sign, version) {
+      version = version.split(".").map(parseSimpleInt);
+      version[1] = version[1] || 0;
+      version[2] = version[2] || 0;
+      if (sign === ">") {
+        return function(v) {
+          v = v.split(".").map(parseSimpleInt);
+          return compareSemver(v, version) > 0;
+        };
+      } else if (sign === ">=") {
+        return function(v) {
+          v = v.split(".").map(parseSimpleInt);
+          return compareSemver(v, version) >= 0;
+        };
+      } else if (sign === "<") {
+        return function(v) {
+          v = v.split(".").map(parseSimpleInt);
+          return compareSemver(version, v) > 0;
+        };
+      } else {
+        return function(v) {
+          v = v.split(".").map(parseSimpleInt);
+          return compareSemver(version, v) >= 0;
+        };
+      }
+    }
+    function parseSimpleInt(x) {
+      return parseInt(x);
+    }
+    function compare(a, b) {
+      if (a < b) return -1;
+      if (a > b) return 1;
+      return 0;
+    }
+    function compareSemver(a, b) {
+      return compare(parseInt(a[0]), parseInt(b[0])) || compare(parseInt(a[1] || "0"), parseInt(b[1] || "0")) || compare(parseInt(a[2] || "0"), parseInt(b[2] || "0"));
+    }
+    function semverFilterLoose(operator, range) {
+      range = range.split(".").map(parseSimpleInt);
+      if (typeof range[1] === "undefined") {
+        range[1] = "x";
+      }
+      switch (operator) {
+        case "<=":
+          return function(version) {
+            version = version.split(".").map(parseSimpleInt);
+            return compareSemverLoose(version, range) <= 0;
+          };
+        case ">=":
+        default:
+          return function(version) {
+            version = version.split(".").map(parseSimpleInt);
+            return compareSemverLoose(version, range) >= 0;
+          };
+      }
+    }
+    function compareSemverLoose(version, range) {
+      if (version[0] !== range[0]) {
+        return version[0] < range[0] ? -1 : 1;
+      }
+      if (range[1] === "x") {
+        return 0;
+      }
+      if (version[1] !== range[1]) {
+        return version[1] < range[1] ? -1 : 1;
+      }
+      return 0;
+    }
+    function resolveVersion(data, version) {
+      if (data.versions.indexOf(version) !== -1) {
+        return version;
+      } else if (browserslist.versionAliases[data.name][version]) {
+        return browserslist.versionAliases[data.name][version];
+      } else {
+        return false;
+      }
+    }
+    function normalizeVersion(data, version) {
+      var resolved = resolveVersion(data, version);
+      if (resolved) {
+        return resolved;
+      } else if (data.versions.length === 1) {
+        return data.versions[0];
+      } else {
+        return false;
+      }
+    }
+    function filterByYear(since, context) {
+      since = since / 1e3;
+      return Object.keys(agents).reduce(function(selected, name) {
+        var data = byName(name, context);
+        if (!data) return selected;
+        var versions = Object.keys(data.releaseDate).filter(function(v) {
+          var date = data.releaseDate[v];
+          return date !== null && date >= since;
+        });
+        return selected.concat(versions.map(nameMapper(data.name)));
+      }, []);
+    }
+    function cloneData(data) {
+      return {
+        name: data.name,
+        versions: data.versions,
+        released: data.released,
+        releaseDate: data.releaseDate
+      };
+    }
+    function byName(name, context) {
+      name = name.toLowerCase();
+      name = browserslist.aliases[name] || name;
+      if (context.mobileToDesktop && browserslist.desktopNames[name]) {
+        var desktop = browserslist.data[browserslist.desktopNames[name]];
+        if (name === "android") {
+          return normalizeAndroidData(cloneData(browserslist.data[name]), desktop);
+        } else {
+          var cloned = cloneData(desktop);
+          cloned.name = name;
+          return cloned;
+        }
+      }
+      return browserslist.data[name];
+    }
+    function normalizeAndroidVersions(androidVersions, chromeVersions) {
+      var iFirstEvergreen = chromeVersions.indexOf(ANDROID_EVERGREEN_FIRST);
+      return androidVersions.filter(function(version) {
+        return /^(?:[2-4]\.|[34]$)/.test(version);
+      }).concat(chromeVersions.slice(iFirstEvergreen));
+    }
+    function copyObject(obj) {
+      var copy = {};
+      for (var key in obj) {
+        copy[key] = obj[key];
+      }
+      return copy;
+    }
+    function normalizeAndroidData(android, chrome) {
+      android.released = normalizeAndroidVersions(android.released, chrome.released);
+      android.versions = normalizeAndroidVersions(android.versions, chrome.versions);
+      android.releaseDate = copyObject(android.releaseDate);
+      android.released.forEach(function(v) {
+        if (android.releaseDate[v] === void 0) {
+          android.releaseDate[v] = chrome.releaseDate[v];
+        }
+      });
+      return android;
+    }
+    function checkName(name, context) {
+      var data = byName(name, context);
+      if (!data) throw new BrowserslistError("Unknown browser " + name);
+      return data;
+    }
+    function unknownQuery(query) {
+      return new BrowserslistError(
+        "Unknown browser query `" + query + "`. Maybe you are using old Browserslist or made typo in query."
+      );
+    }
+    function filterJumps(list, name, nVersions, context) {
+      var jump = 1;
+      switch (name) {
+        case "android":
+          if (context.mobileToDesktop) return list;
+          var released = browserslist.data.chrome.released;
+          jump = released.length - released.indexOf(ANDROID_EVERGREEN_FIRST);
+          break;
+        case "op_mob":
+          var latest = browserslist.data.op_mob.released.slice(-1)[0];
+          jump = getMajor(latest) - OP_MOB_BLINK_FIRST + 1;
+          break;
+        default:
+          return list;
+      }
+      if (nVersions <= jump) {
+        return list.slice(-1);
+      }
+      return list.slice(jump - 1 - nVersions);
+    }
+    function isSupported(flags, withPartial) {
+      return typeof flags === "string" && (flags.indexOf("y") >= 0 || withPartial && flags.indexOf("a") >= 0);
+    }
+    function resolve(queries, context) {
+      return parse(QUERIES, queries).reduce(function(result, node, index) {
+        if (node.not && index === 0) {
+          throw new BrowserslistError(
+            "Write any browsers query (for instance, `defaults`) before `" + node.query + "`"
+          );
+        }
+        var type = QUERIES[node.type];
+        var array = type.select.call(browserslist, context, node).map(function(j) {
+          var parts = j.split(" ");
+          if (parts[1] === "0") {
+            return parts[0] + " " + byName(parts[0], context).versions[0];
+          } else {
+            return j;
+          }
+        });
+        if (node.compose === "and") {
+          if (node.not) {
+            return result.filter(function(j) {
+              return array.indexOf(j) === -1;
+            });
+          } else {
+            return result.filter(function(j) {
+              return array.indexOf(j) !== -1;
+            });
+          }
+        } else {
+          if (node.not) {
+            var filter = {};
+            array.forEach(function(j) {
+              filter[j] = true;
+            });
+            return result.filter(function(j) {
+              return !filter[j];
+            });
+          }
+          return result.concat(array);
+        }
+      }, []);
+    }
+    function prepareOpts(opts) {
+      if (typeof opts === "undefined") opts = {};
+      if (typeof opts.path === "undefined") {
+        opts.path = path.resolve ? path.resolve(".") : ".";
+      }
+      return opts;
+    }
+    function prepareQueries(queries, opts) {
+      if (typeof queries === "undefined" || queries === null) {
+        var config = browserslist.loadConfig(opts);
+        if (config) {
+          queries = config;
+        } else {
+          queries = browserslist.defaults;
+        }
+      }
+      return queries;
+    }
+    function checkQueries(queries) {
+      if (!(typeof queries === "string" || Array.isArray(queries))) {
+        throw new BrowserslistError(
+          "Browser queries must be an array or string. Got " + typeof queries + "."
+        );
+      }
+    }
+    var cache = {};
+    function browserslist(queries, opts) {
+      opts = prepareOpts(opts);
+      queries = prepareQueries(queries, opts);
+      checkQueries(queries);
+      var context = {
+        ignoreUnknownVersions: opts.ignoreUnknownVersions,
+        dangerousExtend: opts.dangerousExtend,
+        mobileToDesktop: opts.mobileToDesktop,
+        path: opts.path,
+        env: opts.env
+      };
+      env.oldDataWarning(browserslist.data);
+      var stats = env.getStat(opts, browserslist.data);
+      if (stats) {
+        context.customUsage = {};
+        for (var browser in stats) {
+          fillUsage(context.customUsage, browser, stats[browser]);
+        }
+      }
+      var cacheKey = JSON.stringify([queries, context]);
+      if (cache[cacheKey]) return cache[cacheKey];
+      var result = uniq(resolve(queries, context)).sort(function(name1, name2) {
+        name1 = name1.split(" ");
+        name2 = name2.split(" ");
+        if (name1[0] === name2[0]) {
+          var version1 = name1[1].split("-")[0];
+          var version2 = name2[1].split("-")[0];
+          return compareSemver(version2.split("."), version1.split("."));
+        } else {
+          return compare(name1[0], name2[0]);
+        }
+      });
+      if (!env.env.BROWSERSLIST_DISABLE_CACHE) {
+        cache[cacheKey] = result;
+      }
+      return result;
+    }
+    browserslist.parse = function(queries, opts) {
+      opts = prepareOpts(opts);
+      queries = prepareQueries(queries, opts);
+      checkQueries(queries);
+      return parse(QUERIES, queries);
+    };
+    browserslist.cache = {};
+    browserslist.data = {};
+    browserslist.usage = {
+      global: {},
+      custom: null
+    };
+    browserslist.defaults = ["> 0.5%", "last 2 versions", "Firefox ESR", "not dead"];
+    browserslist.aliases = {
+      fx: "firefox",
+      ff: "firefox",
+      ios: "ios_saf",
+      explorer: "ie",
+      blackberry: "bb",
+      explorermobile: "ie_mob",
+      operamini: "op_mini",
+      operamobile: "op_mob",
+      chromeandroid: "and_chr",
+      firefoxandroid: "and_ff",
+      ucandroid: "and_uc",
+      qqandroid: "and_qq"
+    };
+    browserslist.desktopNames = {
+      and_chr: "chrome",
+      and_ff: "firefox",
+      ie_mob: "ie",
+      android: "chrome"
+      // has extra processing logic
+    };
+    browserslist.versionAliases = {};
+    browserslist.clearCaches = env.clearCaches;
+    browserslist.parseConfig = env.parseConfig;
+    browserslist.readConfig = env.readConfig;
+    browserslist.findConfigFile = env.findConfigFile;
+    browserslist.findConfig = env.findConfig;
+    browserslist.loadConfig = env.loadConfig;
+    browserslist.coverage = function(browsers, stats) {
+      var data;
+      if (typeof stats === "undefined") {
+        data = browserslist.usage.global;
+      } else if (stats === "my stats") {
+        var opts = {};
+        opts.path = path.resolve ? path.resolve(".") : ".";
+        var customStats = env.getStat(opts);
+        if (!customStats) {
+          throw new BrowserslistError("Custom usage statistics was not provided");
+        }
+        data = {};
+        for (var browser in customStats) {
+          fillUsage(data, browser, customStats[browser]);
+        }
+      } else if (typeof stats === "string") {
+        if (stats.length > 2) {
+          stats = stats.toLowerCase();
+        } else {
+          stats = stats.toUpperCase();
+        }
+        env.loadCountry(browserslist.usage, stats, browserslist.data);
+        data = browserslist.usage[stats];
+      } else {
+        if ("dataByBrowser" in stats) {
+          stats = stats.dataByBrowser;
+        }
+        data = {};
+        for (var name in stats) {
+          for (var version in stats[name]) {
+            data[name + " " + version] = stats[name][version];
+          }
+        }
+      }
+      return browsers.reduce(function(all, i) {
+        var usage = data[i];
+        if (usage === void 0) {
+          usage = data[i.replace(/ \S+$/, " 0")];
+        }
+        return all + (usage || 0);
+      }, 0);
+    };
+    function nodeQuery(context, node) {
+      var matched = browserslist.nodeVersions.filter(function(i) {
+        return isVersionsMatch(i, node.version);
+      });
+      if (matched.length === 0) {
+        if (context.ignoreUnknownVersions) {
+          return [];
+        } else {
+          throw new BrowserslistError(
+            "Unknown version " + node.version + " of Node.js"
+          );
+        }
+      }
+      return ["node " + matched[matched.length - 1]];
+    }
+    function sinceQuery(context, node) {
+      var year = parseInt(node.year);
+      var month = parseInt(node.month || "01") - 1;
+      var day = parseInt(node.day || "01");
+      return filterByYear(Date.UTC(year, month, day, 0, 0, 0), context);
+    }
+    function coverQuery(context, node) {
+      var coverage = parseFloat(node.coverage);
+      var usage = browserslist.usage.global;
+      if (node.place) {
+        if (node.place.match(/^my\s+stats$/i)) {
+          if (!context.customUsage) {
+            throw new BrowserslistError("Custom usage statistics was not provided");
+          }
+          usage = context.customUsage;
+        } else {
+          var place;
+          if (node.place.length === 2) {
+            place = node.place.toUpperCase();
+          } else {
+            place = node.place.toLowerCase();
+          }
+          env.loadCountry(browserslist.usage, place, browserslist.data);
+          usage = browserslist.usage[place];
+        }
+      }
+      var versions = Object.keys(usage).sort(function(a, b) {
+        return usage[b] - usage[a];
+      });
+      var coveraged = 0;
+      var result = [];
+      var version;
+      for (var i = 0; i < versions.length; i++) {
+        version = versions[i];
+        if (usage[version] === 0) break;
+        coveraged += usage[version];
+        result.push(version);
+        if (coveraged >= coverage) break;
+      }
+      return result;
+    }
+    var QUERIES = {
+      last_major_versions: {
+        matches: ["versions"],
+        regexp: /^last\s+(\d+)\s+major\s+versions?$/i,
+        select: function(context, node) {
+          return Object.keys(agents).reduce(function(selected, name) {
+            var data = byName(name, context);
+            if (!data) return selected;
+            var list = getMajorVersions(data.released, node.versions);
+            list = list.map(nameMapper(data.name));
+            list = filterJumps(list, data.name, node.versions, context);
+            return selected.concat(list);
+          }, []);
+        }
+      },
+      last_versions: {
+        matches: ["versions"],
+        regexp: /^last\s+(\d+)\s+versions?$/i,
+        select: function(context, node) {
+          return Object.keys(agents).reduce(function(selected, name) {
+            var data = byName(name, context);
+            if (!data) return selected;
+            var list = data.released.slice(-node.versions);
+            list = list.map(nameMapper(data.name));
+            list = filterJumps(list, data.name, node.versions, context);
+            return selected.concat(list);
+          }, []);
+        }
+      },
+      last_electron_major_versions: {
+        matches: ["versions"],
+        regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i,
+        select: function(context, node) {
+          var validVersions = getMajorVersions(Object.keys(e2c), node.versions);
+          return validVersions.map(function(i) {
+            return "chrome " + e2c[i];
+          });
+        }
+      },
+      last_node_major_versions: {
+        matches: ["versions"],
+        regexp: /^last\s+(\d+)\s+node\s+major\s+versions?$/i,
+        select: function(context, node) {
+          return getMajorVersions(browserslist.nodeVersions, node.versions).map(
+            function(version) {
+              return "node " + version;
+            }
+          );
+        }
+      },
+      last_browser_major_versions: {
+        matches: ["versions", "browser"],
+        regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i,
+        select: function(context, node) {
+          var data = checkName(node.browser, context);
+          var validVersions = getMajorVersions(data.released, node.versions);
+          var list = validVersions.map(nameMapper(data.name));
+          list = filterJumps(list, data.name, node.versions, context);
+          return list;
+        }
+      },
+      last_electron_versions: {
+        matches: ["versions"],
+        regexp: /^last\s+(\d+)\s+electron\s+versions?$/i,
+        select: function(context, node) {
+          return Object.keys(e2c).slice(-node.versions).map(function(i) {
+            return "chrome " + e2c[i];
+          });
+        }
+      },
+      last_node_versions: {
+        matches: ["versions"],
+        regexp: /^last\s+(\d+)\s+node\s+versions?$/i,
+        select: function(context, node) {
+          return browserslist.nodeVersions.slice(-node.versions).map(function(version) {
+            return "node " + version;
+          });
+        }
+      },
+      last_browser_versions: {
+        matches: ["versions", "browser"],
+        regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i,
+        select: function(context, node) {
+          var data = checkName(node.browser, context);
+          var list = data.released.slice(-node.versions).map(nameMapper(data.name));
+          list = filterJumps(list, data.name, node.versions, context);
+          return list;
+        }
+      },
+      unreleased_versions: {
+        matches: [],
+        regexp: /^unreleased\s+versions$/i,
+        select: function(context) {
+          return Object.keys(agents).reduce(function(selected, name) {
+            var data = byName(name, context);
+            if (!data) return selected;
+            var list = data.versions.filter(function(v) {
+              return data.released.indexOf(v) === -1;
+            });
+            list = list.map(nameMapper(data.name));
+            return selected.concat(list);
+          }, []);
+        }
+      },
+      unreleased_electron_versions: {
+        matches: [],
+        regexp: /^unreleased\s+electron\s+versions?$/i,
+        select: function() {
+          return [];
+        }
+      },
+      unreleased_browser_versions: {
+        matches: ["browser"],
+        regexp: /^unreleased\s+(\w+)\s+versions?$/i,
+        select: function(context, node) {
+          var data = checkName(node.browser, context);
+          return data.versions.filter(function(v) {
+            return data.released.indexOf(v) === -1;
+          }).map(nameMapper(data.name));
+        }
+      },
+      last_years: {
+        matches: ["years"],
+        regexp: /^last\s+(\d*.?\d+)\s+years?$/i,
+        select: function(context, node) {
+          return filterByYear(Date.now() - YEAR * node.years, context);
+        }
+      },
+      since_y: {
+        matches: ["year"],
+        regexp: /^since (\d+)$/i,
+        select: sinceQuery
+      },
+      since_y_m: {
+        matches: ["year", "month"],
+        regexp: /^since (\d+)-(\d+)$/i,
+        select: sinceQuery
+      },
+      since_y_m_d: {
+        matches: ["year", "month", "day"],
+        regexp: /^since (\d+)-(\d+)-(\d+)$/i,
+        select: sinceQuery
+      },
+      popularity: {
+        matches: ["sign", "popularity"],
+        regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%$/,
+        select: function(context, node) {
+          var popularity = parseFloat(node.popularity);
+          var usage = browserslist.usage.global;
+          return Object.keys(usage).reduce(function(result, version) {
+            if (node.sign === ">") {
+              if (usage[version] > popularity) {
+                result.push(version);
+              }
+            } else if (node.sign === "<") {
+              if (usage[version] < popularity) {
+                result.push(version);
+              }
+            } else if (node.sign === "<=") {
+              if (usage[version] <= popularity) {
+                result.push(version);
+              }
+            } else if (usage[version] >= popularity) {
+              result.push(version);
+            }
+            return result;
+          }, []);
+        }
+      },
+      popularity_in_my_stats: {
+        matches: ["sign", "popularity"],
+        regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+my\s+stats$/,
+        select: function(context, node) {
+          var popularity = parseFloat(node.popularity);
+          if (!context.customUsage) {
+            throw new BrowserslistError("Custom usage statistics was not provided");
+          }
+          var usage = context.customUsage;
+          return Object.keys(usage).reduce(function(result, version) {
+            var percentage = usage[version];
+            if (percentage == null) {
+              return result;
+            }
+            if (node.sign === ">") {
+              if (percentage > popularity) {
+                result.push(version);
+              }
+            } else if (node.sign === "<") {
+              if (percentage < popularity) {
+                result.push(version);
+              }
+            } else if (node.sign === "<=") {
+              if (percentage <= popularity) {
+                result.push(version);
+              }
+            } else if (percentage >= popularity) {
+              result.push(version);
+            }
+            return result;
+          }, []);
+        }
+      },
+      popularity_in_config_stats: {
+        matches: ["sign", "popularity", "config"],
+        regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/,
+        select: function(context, node) {
+          var popularity = parseFloat(node.popularity);
+          var stats = env.loadStat(context, node.config, browserslist.data);
+          if (stats) {
+            context.customUsage = {};
+            for (var browser in stats) {
+              fillUsage(context.customUsage, browser, stats[browser]);
+            }
+          }
+          if (!context.customUsage) {
+            throw new BrowserslistError("Custom usage statistics was not provided");
+          }
+          var usage = context.customUsage;
+          return Object.keys(usage).reduce(function(result, version) {
+            var percentage = usage[version];
+            if (percentage == null) {
+              return result;
+            }
+            if (node.sign === ">") {
+              if (percentage > popularity) {
+                result.push(version);
+              }
+            } else if (node.sign === "<") {
+              if (percentage < popularity) {
+                result.push(version);
+              }
+            } else if (node.sign === "<=") {
+              if (percentage <= popularity) {
+                result.push(version);
+              }
+            } else if (percentage >= popularity) {
+              result.push(version);
+            }
+            return result;
+          }, []);
+        }
+      },
+      popularity_in_place: {
+        matches: ["sign", "popularity", "place"],
+        regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+((alt-)?\w\w)$/,
+        select: function(context, node) {
+          var popularity = parseFloat(node.popularity);
+          var place = node.place;
+          if (place.length === 2) {
+            place = place.toUpperCase();
+          } else {
+            place = place.toLowerCase();
+          }
+          env.loadCountry(browserslist.usage, place, browserslist.data);
+          var usage = browserslist.usage[place];
+          return Object.keys(usage).reduce(function(result, version) {
+            var percentage = usage[version];
+            if (percentage == null) {
+              return result;
+            }
+            if (node.sign === ">") {
+              if (percentage > popularity) {
+                result.push(version);
+              }
+            } else if (node.sign === "<") {
+              if (percentage < popularity) {
+                result.push(version);
+              }
+            } else if (node.sign === "<=") {
+              if (percentage <= popularity) {
+                result.push(version);
+              }
+            } else if (percentage >= popularity) {
+              result.push(version);
+            }
+            return result;
+          }, []);
+        }
+      },
+      cover: {
+        matches: ["coverage"],
+        regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i,
+        select: coverQuery
+      },
+      cover_in: {
+        matches: ["coverage", "place"],
+        regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i,
+        select: coverQuery
+      },
+      supports: {
+        matches: ["supportType", "feature"],
+        regexp: /^(?:(fully|partially)\s+)?supports\s+([\w-]+)$/,
+        select: function(context, node) {
+          env.loadFeature(browserslist.cache, node.feature);
+          var withPartial = node.supportType !== "fully";
+          var features = browserslist.cache[node.feature];
+          var result = [];
+          for (var name in features) {
+            var data = byName(name, context);
+            var iMax = data.released.length - 1;
+            while (iMax >= 0) {
+              if (data.released[iMax] in features[name]) break;
+              iMax--;
+            }
+            var checkDesktop = context.mobileToDesktop && name in browserslist.desktopNames && isSupported(features[name][data.released[iMax]], withPartial);
+            data.versions.forEach(function(version) {
+              var flags = features[name][version];
+              if (flags === void 0 && checkDesktop) {
+                flags = features[browserslist.desktopNames[name]][version];
+              }
+              if (isSupported(flags, withPartial)) {
+                result.push(name + " " + version);
+              }
+            });
+          }
+          return result;
+        }
+      },
+      electron_range: {
+        matches: ["from", "to"],
+        regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i,
+        select: function(context, node) {
+          var fromToUse = normalizeElectron(node.from);
+          var toToUse = normalizeElectron(node.to);
+          var from = parseFloat(node.from);
+          var to = parseFloat(node.to);
+          if (!e2c[fromToUse]) {
+            throw new BrowserslistError("Unknown version " + from + " of electron");
+          }
+          if (!e2c[toToUse]) {
+            throw new BrowserslistError("Unknown version " + to + " of electron");
+          }
+          return Object.keys(e2c).filter(function(i) {
+            var parsed = parseFloat(i);
+            return parsed >= from && parsed <= to;
+          }).map(function(i) {
+            return "chrome " + e2c[i];
+          });
+        }
+      },
+      node_range: {
+        matches: ["from", "to"],
+        regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i,
+        select: function(context, node) {
+          return browserslist.nodeVersions.filter(semverFilterLoose(">=", node.from)).filter(semverFilterLoose("<=", node.to)).map(function(v) {
+            return "node " + v;
+          });
+        }
+      },
+      browser_range: {
+        matches: ["browser", "from", "to"],
+        regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i,
+        select: function(context, node) {
+          var data = checkName(node.browser, context);
+          var from = parseFloat(normalizeVersion(data, node.from) || node.from);
+          var to = parseFloat(normalizeVersion(data, node.to) || node.to);
+          function filter(v) {
+            var parsed = parseFloat(v);
+            return parsed >= from && parsed <= to;
+          }
+          return data.released.filter(filter).map(nameMapper(data.name));
+        }
+      },
+      electron_ray: {
+        matches: ["sign", "version"],
+        regexp: /^electron\s*(>=?|<=?)\s*([\d.]+)$/i,
+        select: function(context, node) {
+          var versionToUse = normalizeElectron(node.version);
+          return Object.keys(e2c).filter(generateFilter(node.sign, versionToUse)).map(function(i) {
+            return "chrome " + e2c[i];
+          });
+        }
+      },
+      node_ray: {
+        matches: ["sign", "version"],
+        regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i,
+        select: function(context, node) {
+          return browserslist.nodeVersions.filter(generateSemverFilter(node.sign, node.version)).map(function(v) {
+            return "node " + v;
+          });
+        }
+      },
+      browser_ray: {
+        matches: ["browser", "sign", "version"],
+        regexp: /^(\w+)\s*(>=?|<=?)\s*([\d.]+)$/,
+        select: function(context, node) {
+          var version = node.version;
+          var data = checkName(node.browser, context);
+          var alias = browserslist.versionAliases[data.name][version];
+          if (alias) version = alias;
+          return data.released.filter(generateFilter(node.sign, version)).map(function(v) {
+            return data.name + " " + v;
+          });
+        }
+      },
+      firefox_esr: {
+        matches: [],
+        regexp: /^(firefox|ff|fx)\s+esr$/i,
+        select: function() {
+          return ["firefox 115", "firefox 128"];
+        }
+      },
+      opera_mini_all: {
+        matches: [],
+        regexp: /(operamini|op_mini)\s+all/i,
+        select: function() {
+          return ["op_mini all"];
+        }
+      },
+      electron_version: {
+        matches: ["version"],
+        regexp: /^electron\s+([\d.]+)$/i,
+        select: function(context, node) {
+          var versionToUse = normalizeElectron(node.version);
+          var chrome = e2c[versionToUse];
+          if (!chrome) {
+            throw new BrowserslistError(
+              "Unknown version " + node.version + " of electron"
+            );
+          }
+          return ["chrome " + chrome];
+        }
+      },
+      node_major_version: {
+        matches: ["version"],
+        regexp: /^node\s+(\d+)$/i,
+        select: nodeQuery
+      },
+      node_minor_version: {
+        matches: ["version"],
+        regexp: /^node\s+(\d+\.\d+)$/i,
+        select: nodeQuery
+      },
+      node_patch_version: {
+        matches: ["version"],
+        regexp: /^node\s+(\d+\.\d+\.\d+)$/i,
+        select: nodeQuery
+      },
+      current_node: {
+        matches: [],
+        regexp: /^current\s+node$/i,
+        select: function(context) {
+          return [env.currentNode(resolve, context)];
+        }
+      },
+      maintained_node: {
+        matches: [],
+        regexp: /^maintained\s+node\s+versions$/i,
+        select: function(context) {
+          var now = Date.now();
+          var queries = Object.keys(jsEOL).filter(function(key) {
+            return now < Date.parse(jsEOL[key].end) && now > Date.parse(jsEOL[key].start) && isEolReleased(key);
+          }).map(function(key) {
+            return "node " + key.slice(1);
+          });
+          return resolve(queries, context);
+        }
+      },
+      phantomjs_1_9: {
+        matches: [],
+        regexp: /^phantomjs\s+1.9$/i,
+        select: function() {
+          return ["safari 5"];
+        }
+      },
+      phantomjs_2_1: {
+        matches: [],
+        regexp: /^phantomjs\s+2.1$/i,
+        select: function() {
+          return ["safari 6"];
+        }
+      },
+      browser_version: {
+        matches: ["browser", "version"],
+        regexp: /^(\w+)\s+(tp|[\d.]+)$/i,
+        select: function(context, node) {
+          var version = node.version;
+          if (/^tp$/i.test(version)) version = "TP";
+          var data = checkName(node.browser, context);
+          var alias = normalizeVersion(data, version);
+          if (alias) {
+            version = alias;
+          } else {
+            if (version.indexOf(".") === -1) {
+              alias = version + ".0";
+            } else {
+              alias = version.replace(/\.0$/, "");
+            }
+            alias = normalizeVersion(data, alias);
+            if (alias) {
+              version = alias;
+            } else if (context.ignoreUnknownVersions) {
+              return [];
+            } else {
+              throw new BrowserslistError(
+                "Unknown version " + version + " of " + node.browser
+              );
+            }
+          }
+          return [data.name + " " + version];
+        }
+      },
+      browserslist_config: {
+        matches: [],
+        regexp: /^browserslist config$/i,
+        select: function(context) {
+          return browserslist(void 0, context);
+        }
+      },
+      extends: {
+        matches: ["config"],
+        regexp: /^extends (.+)$/i,
+        select: function(context, node) {
+          return resolve(env.loadQueries(context, node.config), context);
+        }
+      },
+      defaults: {
+        matches: [],
+        regexp: /^defaults$/i,
+        select: function(context) {
+          return resolve(browserslist.defaults, context);
+        }
+      },
+      dead: {
+        matches: [],
+        regexp: /^dead$/i,
+        select: function(context) {
+          var dead = [
+            "Baidu >= 0",
+            "ie <= 11",
+            "ie_mob <= 11",
+            "bb <= 10",
+            "op_mob <= 12.1",
+            "samsung 4"
+          ];
+          return resolve(dead, context);
+        }
+      },
+      unknown: {
+        matches: [],
+        regexp: /^(\w+)$/i,
+        select: function(context, node) {
+          if (byName(node.query, context)) {
+            throw new BrowserslistError(
+              "Specify versions in Browserslist query for browser " + node.query
+            );
+          } else {
+            throw unknownQuery(node.query);
+          }
+        }
+      }
+    };
+    (function() {
+      for (var name in agents) {
+        var browser = agents[name];
+        browserslist.data[name] = {
+          name,
+          versions: normalize(agents[name].versions),
+          released: normalize(agents[name].versions.slice(0, -3)),
+          releaseDate: agents[name].release_date
+        };
+        fillUsage(browserslist.usage.global, name, browser.usage_global);
+        browserslist.versionAliases[name] = {};
+        for (var i = 0; i < browser.versions.length; i++) {
+          var full = browser.versions[i];
+          if (!full) continue;
+          if (full.indexOf("-") !== -1) {
+            var interval = full.split("-");
+            for (var j = 0; j < interval.length; j++) {
+              browserslist.versionAliases[name][interval[j]] = full;
+            }
+          }
+        }
+      }
+      browserslist.nodeVersions = jsReleases.map(function(release) {
+        return release.version;
+      });
+    })();
+    module2.exports = browserslist;
+  }
+});
+
+// node_modules/autoprefixer/lib/utils.js
+var require_utils = __commonJS({
+  "node_modules/autoprefixer/lib/utils.js"(exports2, module2) {
+    var { list } = require_postcss();
+    module2.exports.error = function(text) {
+      let err = new Error(text);
+      err.autoprefixer = true;
+      throw err;
+    };
+    module2.exports.uniq = function(array) {
+      return [...new Set(array)];
+    };
+    module2.exports.removeNote = function(string) {
+      if (!string.includes(" ")) {
+        return string;
+      }
+      return string.split(" ")[0];
+    };
+    module2.exports.escapeRegexp = function(string) {
+      return string.replace(/[$()*+-.?[\\\]^{|}]/g, "\\$&");
+    };
+    module2.exports.regexp = function(word, escape = true) {
+      if (escape) {
+        word = this.escapeRegexp(word);
+      }
+      return new RegExp(`(^|[\\s,(])(${word}($|[\\s(,]))`, "gi");
+    };
+    module2.exports.editList = function(value, callback) {
+      let origin = list.comma(value);
+      let changed = callback(origin, []);
+      if (origin === changed) {
+        return value;
+      }
+      let join = value.match(/,\s*/);
+      join = join ? join[0] : ", ";
+      return changed.join(join);
+    };
+    module2.exports.splitSelector = function(selector) {
+      return list.comma(selector).map((i) => {
+        return list.space(i).map((k) => {
+          return k.split(/(?=\.|#)/g);
+        });
+      });
+    };
+    module2.exports.isPureNumber = function(value) {
+      if (typeof value === "number") {
+        return true;
+      }
+      if (typeof value === "string") {
+        return /^[0-9]+$/.test(value);
+      }
+      return false;
+    };
+  }
+});
+
+// node_modules/autoprefixer/lib/browsers.js
+var require_browsers3 = __commonJS({
+  "node_modules/autoprefixer/lib/browsers.js"(exports2, module2) {
+    var browserslist = require_browserslist();
+    var { agents } = require_agents2();
+    var utils = require_utils();
+    var Browsers = class {
+      constructor(data, requirements, options, browserslistOpts) {
+        this.data = data;
+        this.options = options || {};
+        this.browserslistOpts = browserslistOpts || {};
+        this.selected = this.parse(requirements);
+      }
+      /**
+       * Return all prefixes for default browser data
+       */
+      static prefixes() {
+        if (this.prefixesCache) {
+          return this.prefixesCache;
+        }
+        this.prefixesCache = [];
+        for (let name in agents) {
+          this.prefixesCache.push(`-${agents[name].prefix}-`);
+        }
+        this.prefixesCache = utils.uniq(this.prefixesCache).sort((a, b) => b.length - a.length);
+        return this.prefixesCache;
+      }
+      /**
+       * Check is value contain any possible prefix
+       */
+      static withPrefix(value) {
+        if (!this.prefixesRegexp) {
+          this.prefixesRegexp = new RegExp(this.prefixes().join("|"));
+        }
+        return this.prefixesRegexp.test(value);
+      }
+      /**
+       * Is browser is selected by requirements
+       */
+      isSelected(browser) {
+        return this.selected.includes(browser);
+      }
+      /**
+       * Return browsers selected by requirements
+       */
+      parse(requirements) {
+        let opts = {};
+        for (let i in this.browserslistOpts) {
+          opts[i] = this.browserslistOpts[i];
+        }
+        opts.path = this.options.from;
+        return browserslist(requirements, opts);
+      }
+      /**
+       * Return prefix for selected browser
+       */
+      prefix(browser) {
+        let [name, version] = browser.split(" ");
+        let data = this.data[name];
+        let prefix = data.prefix_exceptions && data.prefix_exceptions[version];
+        if (!prefix) {
+          prefix = data.prefix;
+        }
+        return `-${prefix}-`;
+      }
+    };
+    module2.exports = Browsers;
+  }
+});
+
+// node_modules/autoprefixer/lib/vendor.js
+var require_vendor = __commonJS({
+  "node_modules/autoprefixer/lib/vendor.js"(exports2, module2) {
+    module2.exports = {
+      prefix(prop) {
+        let match = prop.match(/^(-\w+-)/);
+        if (match) {
+          return match[0];
+        }
+        return "";
+      },
+      unprefixed(prop) {
+        return prop.replace(/^-\w+-/, "");
+      }
+    };
+  }
+});
+
+// node_modules/autoprefixer/lib/prefixer.js
+var require_prefixer = __commonJS({
+  "node_modules/autoprefixer/lib/prefixer.js"(exports2, module2) {
+    var Browsers = require_browsers3();
+    var vendor = require_vendor();
+    var utils = require_utils();
+    function clone(obj, parent) {
+      let cloned = new obj.constructor();
+      for (let i of Object.keys(obj || {})) {
+        let value = obj[i];
+        if (i === "parent" && typeof value === "object") {
+          if (parent) {
+            cloned[i] = parent;
+          }
+        } else if (i === "source" || i === null) {
+          cloned[i] = value;
+        } else if (Array.isArray(value)) {
+          cloned[i] = value.map((x) => clone(x, cloned));
+        } else if (i !== "_autoprefixerPrefix" && i !== "_autoprefixerValues" && i !== "proxyCache") {
+          if (typeof value === "object" && value !== null) {
+            value = clone(value, cloned);
+          }
+          cloned[i] = value;
+        }
+      }
+      return cloned;
+    }
+    var Prefixer = class _Prefixer {
+      constructor(name, prefixes, all) {
+        this.prefixes = prefixes;
+        this.name = name;
+        this.all = all;
+      }
+      /**
+       * Clone node and clean autprefixer custom caches
+       */
+      static clone(node, overrides) {
+        let cloned = clone(node);
+        for (let name in overrides) {
+          cloned[name] = overrides[name];
+        }
+        return cloned;
+      }
+      /**
+       * Add hack to selected names
+       */
+      static hack(klass) {
+        if (!this.hacks) {
+          this.hacks = {};
+        }
+        return klass.names.map((name) => {
+          this.hacks[name] = klass;
+          return this.hacks[name];
+        });
+      }
+      /**
+       * Load hacks for some names
+       */
+      static load(name, prefixes, all) {
+        let Klass = this.hacks && this.hacks[name];
+        if (Klass) {
+          return new Klass(name, prefixes, all);
+        } else {
+          return new this(name, prefixes, all);
+        }
+      }
+      /**
+       * Shortcut for Prefixer.clone
+       */
+      clone(node, overrides) {
+        return _Prefixer.clone(node, overrides);
+      }
+      /**
+       * Find prefix in node parents
+       */
+      parentPrefix(node) {
+        let prefix;
+        if (typeof node._autoprefixerPrefix !== "undefined") {
+          prefix = node._autoprefixerPrefix;
+        } else if (node.type === "decl" && node.prop[0] === "-") {
+          prefix = vendor.prefix(node.prop);
+        } else if (node.type === "root") {
+          prefix = false;
+        } else if (node.type === "rule" && node.selector.includes(":-") && /:(-\w+-)/.test(node.selector)) {
+          prefix = node.selector.match(/:(-\w+-)/)[1];
+        } else if (node.type === "atrule" && node.name[0] === "-") {
+          prefix = vendor.prefix(node.name);
+        } else {
+          prefix = this.parentPrefix(node.parent);
+        }
+        if (!Browsers.prefixes().includes(prefix)) {
+          prefix = false;
+        }
+        node._autoprefixerPrefix = prefix;
+        return node._autoprefixerPrefix;
+      }
+      /**
+       * Clone node with prefixes
+       */
+      process(node, result) {
+        if (!this.check(node)) {
+          return void 0;
+        }
+        let parent = this.parentPrefix(node);
+        let prefixes = this.prefixes.filter(
+          (prefix) => !parent || parent === utils.removeNote(prefix)
+        );
+        let added = [];
+        for (let prefix of prefixes) {
+          if (this.add(node, prefix, added.concat([prefix]), result)) {
+            added.push(prefix);
+          }
+        }
+        return added;
+      }
+    };
+    module2.exports = Prefixer;
+  }
+});
+
+// node_modules/autoprefixer/lib/declaration.js
+var require_declaration2 = __commonJS({
+  "node_modules/autoprefixer/lib/declaration.js"(exports2, module2) {
+    var Prefixer = require_prefixer();
+    var Browsers = require_browsers3();
+    var utils = require_utils();
+    var Declaration = class extends Prefixer {
+      /**
+       * Clone and add prefixes for declaration
+       */
+      add(decl, prefix, prefixes, result) {
+        let prefixed = this.prefixed(decl.prop, prefix);
+        if (this.isAlready(decl, prefixed) || this.otherPrefixes(decl.value, prefix)) {
+          return void 0;
+        }
+        return this.insert(decl, prefix, prefixes, result);
+      }
+      /**
+       * Calculate indentation to create visual cascade
+       */
+      calcBefore(prefixes, decl, prefix = "") {
+        let max = this.maxPrefixed(prefixes, decl);
+        let diff = max - utils.removeNote(prefix).length;
+        let before = decl.raw("before");
+        if (diff > 0) {
+          before += Array(diff).fill(" ").join("");
+        }
+        return before;
+      }
+      /**
+       * Always true, because we already get prefixer by property name
+       */
+      check() {
+        return true;
+      }
+      /**
+       * Clone and insert new declaration
+       */
+      insert(decl, prefix, prefixes) {
+        let cloned = this.set(this.clone(decl), prefix);
+        if (!cloned) return void 0;
+        let already = decl.parent.some(
+          (i) => i.prop === cloned.prop && i.value === cloned.value
+        );
+        if (already) {
+          return void 0;
+        }
+        if (this.needCascade(decl)) {
+          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
+        }
+        return decl.parent.insertBefore(decl, cloned);
+      }
+      /**
+       * Did this declaration has this prefix above
+       */
+      isAlready(decl, prefixed) {
+        let already = this.all.group(decl).up((i) => i.prop === prefixed);
+        if (!already) {
+          already = this.all.group(decl).down((i) => i.prop === prefixed);
+        }
+        return already;
+      }
+      /**
+       * Return maximum length of possible prefixed property
+       */
+      maxPrefixed(prefixes, decl) {
+        if (decl._autoprefixerMax) {
+          return decl._autoprefixerMax;
+        }
+        let max = 0;
+        for (let prefix of prefixes) {
+          prefix = utils.removeNote(prefix);
+          if (prefix.length > max) {
+            max = prefix.length;
+          }
+        }
+        decl._autoprefixerMax = max;
+        return decl._autoprefixerMax;
+      }
+      /**
+       * Should we use visual cascade for prefixes
+       */
+      needCascade(decl) {
+        if (!decl._autoprefixerCascade) {
+          decl._autoprefixerCascade = this.all.options.cascade !== false && decl.raw("before").includes("\n");
+        }
+        return decl._autoprefixerCascade;
+      }
+      /**
+       * Return unprefixed version of property
+       */
+      normalize(prop) {
+        return prop;
+      }
+      /**
+       * Return list of prefixed properties to clean old prefixes
+       */
+      old(prop, prefix) {
+        return [this.prefixed(prop, prefix)];
+      }
+      /**
+       * Check `value`, that it contain other prefixes, rather than `prefix`
+       */
+      otherPrefixes(value, prefix) {
+        for (let other of Browsers.prefixes()) {
+          if (other === prefix) {
+            continue;
+          }
+          if (value.includes(other)) {
+            return value.replace(/var\([^)]+\)/, "").includes(other);
+          }
+        }
+        return false;
+      }
+      /**
+       * Return prefixed version of property
+       */
+      prefixed(prop, prefix) {
+        return prefix + prop;
+      }
+      /**
+       * Add spaces for visual cascade
+       */
+      process(decl, result) {
+        if (!this.needCascade(decl)) {
+          super.process(decl, result);
+          return;
+        }
+        let prefixes = super.process(decl, result);
+        if (!prefixes || !prefixes.length) {
+          return;
+        }
+        this.restoreBefore(decl);
+        decl.raws.before = this.calcBefore(prefixes, decl);
+      }
+      /**
+       * Remove visual cascade
+       */
+      restoreBefore(decl) {
+        let lines = decl.raw("before").split("\n");
+        let min = lines[lines.length - 1];
+        this.all.group(decl).up((prefixed) => {
+          let array = prefixed.raw("before").split("\n");
+          let last = array[array.length - 1];
+          if (last.length < min.length) {
+            min = last;
+          }
+        });
+        lines[lines.length - 1] = min;
+        decl.raws.before = lines.join("\n");
+      }
+      /**
+       * Set prefix to declaration
+       */
+      set(decl, prefix) {
+        decl.prop = this.prefixed(decl.prop, prefix);
+        return decl;
+      }
+    };
+    module2.exports = Declaration;
+  }
+});
+
+// node_modules/fraction.js/fraction.cjs
+var require_fraction = __commonJS({
+  "node_modules/fraction.js/fraction.cjs"(exports2, module2) {
+    (function(root) {
+      "use strict";
+      var MAX_CYCLE_LEN = 2e3;
+      var P = {
+        "s": 1,
+        "n": 0,
+        "d": 1
+      };
+      function assign(n, s) {
+        if (isNaN(n = parseInt(n, 10))) {
+          throw InvalidParameter();
+        }
+        return n * s;
+      }
+      function newFraction(n, d) {
+        if (d === 0) {
+          throw DivisionByZero();
+        }
+        var f = Object.create(Fraction.prototype);
+        f["s"] = n < 0 ? -1 : 1;
+        n = n < 0 ? -n : n;
+        var a = gcd(n, d);
+        f["n"] = n / a;
+        f["d"] = d / a;
+        return f;
+      }
+      function factorize(num) {
+        var factors = {};
+        var n = num;
+        var i = 2;
+        var s = 4;
+        while (s <= n) {
+          while (n % i === 0) {
+            n /= i;
+            factors[i] = (factors[i] || 0) + 1;
+          }
+          s += 1 + 2 * i++;
+        }
+        if (n !== num) {
+          if (n > 1)
+            factors[n] = (factors[n] || 0) + 1;
+        } else {
+          factors[num] = (factors[num] || 0) + 1;
+        }
+        return factors;
+      }
+      var parse = function(p1, p2) {
+        var n = 0, d = 1, s = 1;
+        var v = 0, w = 0, x = 0, y = 1, z = 1;
+        var A = 0, B = 1;
+        var C = 1, D = 1;
+        var N = 1e7;
+        var M;
+        if (p1 === void 0 || p1 === null) {
+        } else if (p2 !== void 0) {
+          n = p1;
+          d = p2;
+          s = n * d;
+          if (n % 1 !== 0 || d % 1 !== 0) {
+            throw NonIntegerParameter();
+          }
+        } else
+          switch (typeof p1) {
+            case "object": {
+              if ("d" in p1 && "n" in p1) {
+                n = p1["n"];
+                d = p1["d"];
+                if ("s" in p1)
+                  n *= p1["s"];
+              } else if (0 in p1) {
+                n = p1[0];
+                if (1 in p1)
+                  d = p1[1];
+              } else {
+                throw InvalidParameter();
+              }
+              s = n * d;
+              break;
+            }
+            case "number": {
+              if (p1 < 0) {
+                s = p1;
+                p1 = -p1;
+              }
+              if (p1 % 1 === 0) {
+                n = p1;
+              } else if (p1 > 0) {
+                if (p1 >= 1) {
+                  z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));
+                  p1 /= z;
+                }
+                while (B <= N && D <= N) {
+                  M = (A + C) / (B + D);
+                  if (p1 === M) {
+                    if (B + D <= N) {
+                      n = A + C;
+                      d = B + D;
+                    } else if (D > B) {
+                      n = C;
+                      d = D;
+                    } else {
+                      n = A;
+                      d = B;
+                    }
+                    break;
+                  } else {
+                    if (p1 > M) {
+                      A += C;
+                      B += D;
+                    } else {
+                      C += A;
+                      D += B;
+                    }
+                    if (B > N) {
+                      n = C;
+                      d = D;
+                    } else {
+                      n = A;
+                      d = B;
+                    }
+                  }
+                }
+                n *= z;
+              } else if (isNaN(p1) || isNaN(p2)) {
+                d = n = NaN;
+              }
+              break;
+            }
+            case "string": {
+              B = p1.match(/\d+|./g);
+              if (B === null)
+                throw InvalidParameter();
+              if (B[A] === "-") {
+                s = -1;
+                A++;
+              } else if (B[A] === "+") {
+                A++;
+              }
+              if (B.length === A + 1) {
+                w = assign(B[A++], s);
+              } else if (B[A + 1] === "." || B[A] === ".") {
+                if (B[A] !== ".") {
+                  v = assign(B[A++], s);
+                }
+                A++;
+                if (A + 1 === B.length || B[A + 1] === "(" && B[A + 3] === ")" || B[A + 1] === "'" && B[A + 3] === "'") {
+                  w = assign(B[A], s);
+                  y = Math.pow(10, B[A].length);
+                  A++;
+                }
+                if (B[A] === "(" && B[A + 2] === ")" || B[A] === "'" && B[A + 2] === "'") {
+                  x = assign(B[A + 1], s);
+                  z = Math.pow(10, B[A + 1].length) - 1;
+                  A += 3;
+                }
+              } else if (B[A + 1] === "/" || B[A + 1] === ":") {
+                w = assign(B[A], s);
+                y = assign(B[A + 2], 1);
+                A += 3;
+              } else if (B[A + 3] === "/" && B[A + 1] === " ") {
+                v = assign(B[A], s);
+                w = assign(B[A + 2], s);
+                y = assign(B[A + 4], 1);
+                A += 5;
+              }
+              if (B.length <= A) {
+                d = y * z;
+                s = /* void */
+                n = x + d * v + z * w;
+                break;
+              }
+            }
+            default:
+              throw InvalidParameter();
+          }
+        if (d === 0) {
+          throw DivisionByZero();
+        }
+        P["s"] = s < 0 ? -1 : 1;
+        P["n"] = Math.abs(n);
+        P["d"] = Math.abs(d);
+      };
+      function modpow(b, e, m) {
+        var r = 1;
+        for (; e > 0; b = b * b % m, e >>= 1) {
+          if (e & 1) {
+            r = r * b % m;
+          }
+        }
+        return r;
+      }
+      function cycleLen(n, d) {
+        for (; d % 2 === 0; d /= 2) {
+        }
+        for (; d % 5 === 0; d /= 5) {
+        }
+        if (d === 1)
+          return 0;
+        var rem = 10 % d;
+        var t = 1;
+        for (; rem !== 1; t++) {
+          rem = rem * 10 % d;
+          if (t > MAX_CYCLE_LEN)
+            return 0;
+        }
+        return t;
+      }
+      function cycleStart(n, d, len) {
+        var rem1 = 1;
+        var rem2 = modpow(10, len, d);
+        for (var t = 0; t < 300; t++) {
+          if (rem1 === rem2)
+            return t;
+          rem1 = rem1 * 10 % d;
+          rem2 = rem2 * 10 % d;
+        }
+        return 0;
+      }
+      function gcd(a, b) {
+        if (!a)
+          return b;
+        if (!b)
+          return a;
+        while (1) {
+          a %= b;
+          if (!a)
+            return b;
+          b %= a;
+          if (!b)
+            return a;
+        }
+      }
+      ;
+      function Fraction(a, b) {
+        parse(a, b);
+        if (this instanceof Fraction) {
+          a = gcd(P["d"], P["n"]);
+          this["s"] = P["s"];
+          this["n"] = P["n"] / a;
+          this["d"] = P["d"] / a;
+        } else {
+          return newFraction(P["s"] * P["n"], P["d"]);
+        }
+      }
+      var DivisionByZero = function() {
+        return new Error("Division by Zero");
+      };
+      var InvalidParameter = function() {
+        return new Error("Invalid argument");
+      };
+      var NonIntegerParameter = function() {
+        return new Error("Parameters must be integer");
+      };
+      Fraction.prototype = {
+        "s": 1,
+        "n": 0,
+        "d": 1,
+        /**
+         * Calculates the absolute value
+         *
+         * Ex: new Fraction(-4).abs() => 4
+         **/
+        "abs": function() {
+          return newFraction(this["n"], this["d"]);
+        },
+        /**
+         * Inverts the sign of the current fraction
+         *
+         * Ex: new Fraction(-4).neg() => 4
+         **/
+        "neg": function() {
+          return newFraction(-this["s"] * this["n"], this["d"]);
+        },
+        /**
+         * Adds two rational numbers
+         *
+         * Ex: new Fraction({n: 2, d: 3}).add("14.9") => 467 / 30
+         **/
+        "add": function(a, b) {
+          parse(a, b);
+          return newFraction(
+            this["s"] * this["n"] * P["d"] + P["s"] * this["d"] * P["n"],
+            this["d"] * P["d"]
+          );
+        },
+        /**
+         * Subtracts two rational numbers
+         *
+         * Ex: new Fraction({n: 2, d: 3}).add("14.9") => -427 / 30
+         **/
+        "sub": function(a, b) {
+          parse(a, b);
+          return newFraction(
+            this["s"] * this["n"] * P["d"] - P["s"] * this["d"] * P["n"],
+            this["d"] * P["d"]
+          );
+        },
+        /**
+         * Multiplies two rational numbers
+         *
+         * Ex: new Fraction("-17.(345)").mul(3) => 5776 / 111
+         **/
+        "mul": function(a, b) {
+          parse(a, b);
+          return newFraction(
+            this["s"] * P["s"] * this["n"] * P["n"],
+            this["d"] * P["d"]
+          );
+        },
+        /**
+         * Divides two rational numbers
+         *
+         * Ex: new Fraction("-17.(345)").inverse().div(3)
+         **/
+        "div": function(a, b) {
+          parse(a, b);
+          return newFraction(
+            this["s"] * P["s"] * this["n"] * P["d"],
+            this["d"] * P["n"]
+          );
+        },
+        /**
+         * Clones the actual object
+         *
+         * Ex: new Fraction("-17.(345)").clone()
+         **/
+        "clone": function() {
+          return newFraction(this["s"] * this["n"], this["d"]);
+        },
+        /**
+         * Calculates the modulo of two rational numbers - a more precise fmod
+         *
+         * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)
+         **/
+        "mod": function(a, b) {
+          if (isNaN(this["n"]) || isNaN(this["d"])) {
+            return new Fraction(NaN);
+          }
+          if (a === void 0) {
+            return newFraction(this["s"] * this["n"] % this["d"], 1);
+          }
+          parse(a, b);
+          if (0 === P["n"] && 0 === this["d"]) {
+            throw DivisionByZero();
+          }
+          return newFraction(
+            this["s"] * (P["d"] * this["n"]) % (P["n"] * this["d"]),
+            P["d"] * this["d"]
+          );
+        },
+        /**
+         * Calculates the fractional gcd of two rational numbers
+         *
+         * Ex: new Fraction(5,8).gcd(3,7) => 1/56
+         */
+        "gcd": function(a, b) {
+          parse(a, b);
+          return newFraction(gcd(P["n"], this["n"]) * gcd(P["d"], this["d"]), P["d"] * this["d"]);
+        },
+        /**
+         * Calculates the fractional lcm of two rational numbers
+         *
+         * Ex: new Fraction(5,8).lcm(3,7) => 15
+         */
+        "lcm": function(a, b) {
+          parse(a, b);
+          if (P["n"] === 0 && this["n"] === 0) {
+            return newFraction(0, 1);
+          }
+          return newFraction(P["n"] * this["n"], gcd(P["n"], this["n"]) * gcd(P["d"], this["d"]));
+        },
+        /**
+         * Calculates the ceil of a rational number
+         *
+         * Ex: new Fraction('4.(3)').ceil() => (5 / 1)
+         **/
+        "ceil": function(places) {
+          places = Math.pow(10, places || 0);
+          if (isNaN(this["n"]) || isNaN(this["d"])) {
+            return new Fraction(NaN);
+          }
+          return newFraction(Math.ceil(places * this["s"] * this["n"] / this["d"]), places);
+        },
+        /**
+         * Calculates the floor of a rational number
+         *
+         * Ex: new Fraction('4.(3)').floor() => (4 / 1)
+         **/
+        "floor": function(places) {
+          places = Math.pow(10, places || 0);
+          if (isNaN(this["n"]) || isNaN(this["d"])) {
+            return new Fraction(NaN);
+          }
+          return newFraction(Math.floor(places * this["s"] * this["n"] / this["d"]), places);
+        },
+        /**
+         * Rounds a rational numbers
+         *
+         * Ex: new Fraction('4.(3)').round() => (4 / 1)
+         **/
+        "round": function(places) {
+          places = Math.pow(10, places || 0);
+          if (isNaN(this["n"]) || isNaN(this["d"])) {
+            return new Fraction(NaN);
+          }
+          return newFraction(Math.round(places * this["s"] * this["n"] / this["d"]), places);
+        },
+        /**
+         * Rounds a rational number to a multiple of another rational number
+         *
+         * Ex: new Fraction('0.9').roundTo("1/8") => 7 / 8
+         **/
+        "roundTo": function(a, b) {
+          parse(a, b);
+          return newFraction(this["s"] * Math.round(this["n"] * P["d"] / (this["d"] * P["n"])) * P["n"], P["d"]);
+        },
+        /**
+         * Gets the inverse of the fraction, means numerator and denominator are exchanged
+         *
+         * Ex: new Fraction([-3, 4]).inverse() => -4 / 3
+         **/
+        "inverse": function() {
+          return newFraction(this["s"] * this["d"], this["n"]);
+        },
+        /**
+         * Calculates the fraction to some rational exponent, if possible
+         *
+         * Ex: new Fraction(-1,2).pow(-3) => -8
+         */
+        "pow": function(a, b) {
+          parse(a, b);
+          if (P["d"] === 1) {
+            if (P["s"] < 0) {
+              return newFraction(Math.pow(this["s"] * this["d"], P["n"]), Math.pow(this["n"], P["n"]));
+            } else {
+              return newFraction(Math.pow(this["s"] * this["n"], P["n"]), Math.pow(this["d"], P["n"]));
+            }
+          }
+          if (this["s"] < 0) return null;
+          var N = factorize(this["n"]);
+          var D = factorize(this["d"]);
+          var n = 1;
+          var d = 1;
+          for (var k in N) {
+            if (k === "1") continue;
+            if (k === "0") {
+              n = 0;
+              break;
+            }
+            N[k] *= P["n"];
+            if (N[k] % P["d"] === 0) {
+              N[k] /= P["d"];
+            } else return null;
+            n *= Math.pow(k, N[k]);
+          }
+          for (var k in D) {
+            if (k === "1") continue;
+            D[k] *= P["n"];
+            if (D[k] % P["d"] === 0) {
+              D[k] /= P["d"];
+            } else return null;
+            d *= Math.pow(k, D[k]);
+          }
+          if (P["s"] < 0) {
+            return newFraction(d, n);
+          }
+          return newFraction(n, d);
+        },
+        /**
+         * Check if two rational numbers are the same
+         *
+         * Ex: new Fraction(19.6).equals([98, 5]);
+         **/
+        "equals": function(a, b) {
+          parse(a, b);
+          return this["s"] * this["n"] * P["d"] === P["s"] * P["n"] * this["d"];
+        },
+        /**
+         * Check if two rational numbers are the same
+         *
+         * Ex: new Fraction(19.6).equals([98, 5]);
+         **/
+        "compare": function(a, b) {
+          parse(a, b);
+          var t = this["s"] * this["n"] * P["d"] - P["s"] * P["n"] * this["d"];
+          return (0 < t) - (t < 0);
+        },
+        "simplify": function(eps) {
+          if (isNaN(this["n"]) || isNaN(this["d"])) {
+            return this;
+          }
+          eps = eps || 1e-3;
+          var thisABS = this["abs"]();
+          var cont = thisABS["toContinued"]();
+          for (var i = 1; i < cont.length; i++) {
+            var s = newFraction(cont[i - 1], 1);
+            for (var k = i - 2; k >= 0; k--) {
+              s = s["inverse"]()["add"](cont[k]);
+            }
+            if (Math.abs(s["sub"](thisABS).valueOf()) < eps) {
+              return s["mul"](this["s"]);
+            }
+          }
+          return this;
+        },
+        /**
+         * Check if two rational numbers are divisible
+         *
+         * Ex: new Fraction(19.6).divisible(1.5);
+         */
+        "divisible": function(a, b) {
+          parse(a, b);
+          return !(!(P["n"] * this["d"]) || this["n"] * P["d"] % (P["n"] * this["d"]));
+        },
+        /**
+         * Returns a decimal representation of the fraction
+         *
+         * Ex: new Fraction("100.'91823'").valueOf() => 100.91823918239183
+         **/
+        "valueOf": function() {
+          return this["s"] * this["n"] / this["d"];
+        },
+        /**
+         * Returns a string-fraction representation of a Fraction object
+         *
+         * Ex: new Fraction("1.'3'").toFraction(true) => "4 1/3"
+         **/
+        "toFraction": function(excludeWhole) {
+          var whole, str = "";
+          var n = this["n"];
+          var d = this["d"];
+          if (this["s"] < 0) {
+            str += "-";
+          }
+          if (d === 1) {
+            str += n;
+          } else {
+            if (excludeWhole && (whole = Math.floor(n / d)) > 0) {
+              str += whole;
+              str += " ";
+              n %= d;
+            }
+            str += n;
+            str += "/";
+            str += d;
+          }
+          return str;
+        },
+        /**
+         * Returns a latex representation of a Fraction object
+         *
+         * Ex: new Fraction("1.'3'").toLatex() => "\frac{4}{3}"
+         **/
+        "toLatex": function(excludeWhole) {
+          var whole, str = "";
+          var n = this["n"];
+          var d = this["d"];
+          if (this["s"] < 0) {
+            str += "-";
+          }
+          if (d === 1) {
+            str += n;
+          } else {
+            if (excludeWhole && (whole = Math.floor(n / d)) > 0) {
+              str += whole;
+              n %= d;
+            }
+            str += "\\frac{";
+            str += n;
+            str += "}{";
+            str += d;
+            str += "}";
+          }
+          return str;
+        },
+        /**
+         * Returns an array of continued fraction elements
+         *
+         * Ex: new Fraction("7/8").toContinued() => [0,1,7]
+         */
+        "toContinued": function() {
+          var t;
+          var a = this["n"];
+          var b = this["d"];
+          var res = [];
+          if (isNaN(a) || isNaN(b)) {
+            return res;
+          }
+          do {
+            res.push(Math.floor(a / b));
+            t = a % b;
+            a = b;
+            b = t;
+          } while (a !== 1);
+          return res;
+        },
+        /**
+         * Creates a string representation of a fraction with all digits
+         *
+         * Ex: new Fraction("100.'91823'").toString() => "100.(91823)"
+         **/
+        "toString": function(dec) {
+          var N = this["n"];
+          var D = this["d"];
+          if (isNaN(N) || isNaN(D)) {
+            return "NaN";
+          }
+          dec = dec || 15;
+          var cycLen = cycleLen(N, D);
+          var cycOff = cycleStart(N, D, cycLen);
+          var str = this["s"] < 0 ? "-" : "";
+          str += N / D | 0;
+          N %= D;
+          N *= 10;
+          if (N)
+            str += ".";
+          if (cycLen) {
+            for (var i = cycOff; i--; ) {
+              str += N / D | 0;
+              N %= D;
+              N *= 10;
+            }
+            str += "(";
+            for (var i = cycLen; i--; ) {
+              str += N / D | 0;
+              N %= D;
+              N *= 10;
+            }
+            str += ")";
+          } else {
+            for (var i = dec; N && i--; ) {
+              str += N / D | 0;
+              N %= D;
+              N *= 10;
+            }
+          }
+          return str;
+        }
+      };
+      if (typeof exports2 === "object") {
+        Object.defineProperty(exports2, "__esModule", { "value": true });
+        exports2["default"] = Fraction;
+        module2["exports"] = Fraction;
+      } else {
+        root["Fraction"] = Fraction;
+      }
+    })(exports2);
+  }
+});
+
+// node_modules/autoprefixer/lib/resolution.js
+var require_resolution = __commonJS({
+  "node_modules/autoprefixer/lib/resolution.js"(exports2, module2) {
+    var FractionJs = require_fraction();
+    var Prefixer = require_prefixer();
+    var utils = require_utils();
+    var REGEXP = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpcm|dpi|x)/gi;
+    var SPLIT = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpcm|dpi|x)/i;
+    var Resolution = class extends Prefixer {
+      /**
+       * Remove prefixed queries
+       */
+      clean(rule) {
+        if (!this.bad) {
+          this.bad = [];
+          for (let prefix of this.prefixes) {
+            this.bad.push(this.prefixName(prefix, "min"));
+            this.bad.push(this.prefixName(prefix, "max"));
+          }
+        }
+        rule.params = utils.editList(rule.params, (queries) => {
+          return queries.filter((query) => this.bad.every((i) => !query.includes(i)));
+        });
+      }
+      /**
+       * Return prefixed query name
+       */
+      prefixName(prefix, name) {
+        if (prefix === "-moz-") {
+          return name + "--moz-device-pixel-ratio";
+        } else {
+          return prefix + name + "-device-pixel-ratio";
+        }
+      }
+      /**
+       * Return prefixed query
+       */
+      prefixQuery(prefix, name, colon, value, units) {
+        value = new FractionJs(value);
+        if (units === "dpi") {
+          value = value.div(96);
+        } else if (units === "dpcm") {
+          value = value.mul(2.54).div(96);
+        }
+        value = value.simplify();
+        if (prefix === "-o-") {
+          value = value.n + "/" + value.d;
+        }
+        return this.prefixName(prefix, name) + colon + value;
+      }
+      /**
+       * Add prefixed queries
+       */
+      process(rule) {
+        let parent = this.parentPrefix(rule);
+        let prefixes = parent ? [parent] : this.prefixes;
+        rule.params = utils.editList(rule.params, (origin, prefixed) => {
+          for (let query of origin) {
+            if (!query.includes("min-resolution") && !query.includes("max-resolution")) {
+              prefixed.push(query);
+              continue;
+            }
+            for (let prefix of prefixes) {
+              let processed = query.replace(REGEXP, (str) => {
+                let parts = str.match(SPLIT);
+                return this.prefixQuery(
+                  prefix,
+                  parts[1],
+                  parts[2],
+                  parts[3],
+                  parts[4]
+                );
+              });
+              prefixed.push(processed);
+            }
+            prefixed.push(query);
+          }
+          return utils.uniq(prefixed);
+        });
+      }
+    };
+    module2.exports = Resolution;
+  }
+});
+
+// node_modules/autoprefixer/lib/transition.js
+var require_transition = __commonJS({
+  "node_modules/autoprefixer/lib/transition.js"(exports2, module2) {
+    var { list } = require_postcss();
+    var parser = require_lib();
+    var Browsers = require_browsers3();
+    var vendor = require_vendor();
+    var Transition = class {
+      constructor(prefixes) {
+        this.props = ["transition", "transition-property"];
+        this.prefixes = prefixes;
+      }
+      /**
+       * Process transition and add prefixes for all necessary properties
+       */
+      add(decl, result) {
+        let prefix, prop;
+        let add = this.prefixes.add[decl.prop];
+        let vendorPrefixes = this.ruleVendorPrefixes(decl);
+        let declPrefixes = vendorPrefixes || add && add.prefixes || [];
+        let params = this.parse(decl.value);
+        let names = params.map((i) => this.findProp(i));
+        let added = [];
+        if (names.some((i) => i[0] === "-")) {
+          return;
+        }
+        for (let param of params) {
+          prop = this.findProp(param);
+          if (prop[0] === "-") continue;
+          let prefixer = this.prefixes.add[prop];
+          if (!prefixer || !prefixer.prefixes) continue;
+          for (prefix of prefixer.prefixes) {
+            if (vendorPrefixes && !vendorPrefixes.some((p) => prefix.includes(p))) {
+              continue;
+            }
+            let prefixed = this.prefixes.prefixed(prop, prefix);
+            if (prefixed !== "-ms-transform" && !names.includes(prefixed)) {
+              if (!this.disabled(prop, prefix)) {
+                added.push(this.clone(prop, prefixed, param));
+              }
+            }
+          }
+        }
+        params = params.concat(added);
+        let value = this.stringify(params);
+        let webkitClean = this.stringify(
+          this.cleanFromUnprefixed(params, "-webkit-")
+        );
+        if (declPrefixes.includes("-webkit-")) {
+          this.cloneBefore(decl, `-webkit-${decl.prop}`, webkitClean);
+        }
+        this.cloneBefore(decl, decl.prop, webkitClean);
+        if (declPrefixes.includes("-o-")) {
+          let operaClean = this.stringify(this.cleanFromUnprefixed(params, "-o-"));
+          this.cloneBefore(decl, `-o-${decl.prop}`, operaClean);
+        }
+        for (prefix of declPrefixes) {
+          if (prefix !== "-webkit-" && prefix !== "-o-") {
+            let prefixValue = this.stringify(
+              this.cleanOtherPrefixes(params, prefix)
+            );
+            this.cloneBefore(decl, prefix + decl.prop, prefixValue);
+          }
+        }
+        if (value !== decl.value && !this.already(decl, decl.prop, value)) {
+          this.checkForWarning(result, decl);
+          decl.cloneBefore();
+          decl.value = value;
+        }
+      }
+      /**
+       * Does we already have this declaration
+       */
+      already(decl, prop, value) {
+        return decl.parent.some((i) => i.prop === prop && i.value === value);
+      }
+      /**
+       * Show transition-property warning
+       */
+      checkForWarning(result, decl) {
+        if (decl.prop !== "transition-property") {
+          return;
+        }
+        let isPrefixed = false;
+        let hasAssociatedProp = false;
+        decl.parent.each((i) => {
+          if (i.type !== "decl") {
+            return void 0;
+          }
+          if (i.prop.indexOf("transition-") !== 0) {
+            return void 0;
+          }
+          let values = list.comma(i.value);
+          if (i.prop === "transition-property") {
+            values.forEach((value) => {
+              let lookup = this.prefixes.add[value];
+              if (lookup && lookup.prefixes && lookup.prefixes.length > 0) {
+                isPrefixed = true;
+              }
+            });
+            return void 0;
+          }
+          hasAssociatedProp = hasAssociatedProp || values.length > 1;
+          return false;
+        });
+        if (isPrefixed && hasAssociatedProp) {
+          decl.warn(
+            result,
+            "Replace transition-property to transition, because Autoprefixer could not support any cases of transition-property and other transition-*"
+          );
+        }
+      }
+      /**
+       * Remove all non-webkit prefixes and unprefixed params if we have prefixed
+       */
+      cleanFromUnprefixed(params, prefix) {
+        let remove = params.map((i) => this.findProp(i)).filter((i) => i.slice(0, prefix.length) === prefix).map((i) => this.prefixes.unprefixed(i));
+        let result = [];
+        for (let param of params) {
+          let prop = this.findProp(param);
+          let p = vendor.prefix(prop);
+          if (!remove.includes(prop) && (p === prefix || p === "")) {
+            result.push(param);
+          }
+        }
+        return result;
+      }
+      cleanOtherPrefixes(params, prefix) {
+        return params.filter((param) => {
+          let current = vendor.prefix(this.findProp(param));
+          return current === "" || current === prefix;
+        });
+      }
+      /**
+       * Return new param array with different name
+       */
+      clone(origin, name, param) {
+        let result = [];
+        let changed = false;
+        for (let i of param) {
+          if (!changed && i.type === "word" && i.value === origin) {
+            result.push({ type: "word", value: name });
+            changed = true;
+          } else {
+            result.push(i);
+          }
+        }
+        return result;
+      }
+      /**
+       * Add declaration if it is not exist
+       */
+      cloneBefore(decl, prop, value) {
+        if (!this.already(decl, prop, value)) {
+          decl.cloneBefore({ prop, value });
+        }
+      }
+      /**
+       * Check property for disabled by option
+       */
+      disabled(prop, prefix) {
+        let other = ["order", "justify-content", "align-self", "align-content"];
+        if (prop.includes("flex") || other.includes(prop)) {
+          if (this.prefixes.options.flexbox === false) {
+            return true;
+          }
+          if (this.prefixes.options.flexbox === "no-2009") {
+            return prefix.includes("2009");
+          }
+        }
+        return void 0;
+      }
+      /**
+       * Find or create separator
+       */
+      div(params) {
+        for (let param of params) {
+          for (let node of param) {
+            if (node.type === "div" && node.value === ",") {
+              return node;
+            }
+          }
+        }
+        return { after: " ", type: "div", value: "," };
+      }
+      /**
+       * Find property name
+       */
+      findProp(param) {
+        let prop = param[0].value;
+        if (/^\d/.test(prop)) {
+          for (let [i, token] of param.entries()) {
+            if (i !== 0 && token.type === "word") {
+              return token.value;
+            }
+          }
+        }
+        return prop;
+      }
+      /**
+       * Parse properties list to array
+       */
+      parse(value) {
+        let ast = parser(value);
+        let result = [];
+        let param = [];
+        for (let node of ast.nodes) {
+          param.push(node);
+          if (node.type === "div" && node.value === ",") {
+            result.push(param);
+            param = [];
+          }
+        }
+        result.push(param);
+        return result.filter((i) => i.length > 0);
+      }
+      /**
+       * Process transition and remove all unnecessary properties
+       */
+      remove(decl) {
+        let params = this.parse(decl.value);
+        params = params.filter((i) => {
+          let prop = this.prefixes.remove[this.findProp(i)];
+          return !prop || !prop.remove;
+        });
+        let value = this.stringify(params);
+        if (decl.value === value) {
+          return;
+        }
+        if (params.length === 0) {
+          decl.remove();
+          return;
+        }
+        let double = decl.parent.some((i) => {
+          return i.prop === decl.prop && i.value === value;
+        });
+        let smaller = decl.parent.some((i) => {
+          return i !== decl && i.prop === decl.prop && i.value.length > value.length;
+        });
+        if (double || smaller) {
+          decl.remove();
+          return;
+        }
+        decl.value = value;
+      }
+      /**
+       * Check if transition prop is inside vendor specific rule
+       */
+      ruleVendorPrefixes(decl) {
+        let { parent } = decl;
+        if (parent.type !== "rule") {
+          return false;
+        } else if (!parent.selector.includes(":-")) {
+          return false;
+        }
+        let selectors = Browsers.prefixes().filter(
+          (s) => parent.selector.includes(":" + s)
+        );
+        return selectors.length > 0 ? selectors : false;
+      }
+      /**
+       * Return properties string from array
+       */
+      stringify(params) {
+        if (params.length === 0) {
+          return "";
+        }
+        let nodes = [];
+        for (let param of params) {
+          if (param[param.length - 1].type !== "div") {
+            param.push(this.div(params));
+          }
+          nodes = nodes.concat(param);
+        }
+        if (nodes[0].type === "div") {
+          nodes = nodes.slice(1);
+        }
+        if (nodes[nodes.length - 1].type === "div") {
+          nodes = nodes.slice(0, -2 + 1 || void 0);
+        }
+        return parser.stringify({ nodes });
+      }
+    };
+    module2.exports = Transition;
+  }
+});
+
+// node_modules/autoprefixer/lib/old-value.js
+var require_old_value = __commonJS({
+  "node_modules/autoprefixer/lib/old-value.js"(exports2, module2) {
+    var utils = require_utils();
+    var OldValue = class {
+      constructor(unprefixed, prefixed, string, regexp) {
+        this.unprefixed = unprefixed;
+        this.prefixed = prefixed;
+        this.string = string || prefixed;
+        this.regexp = regexp || utils.regexp(prefixed);
+      }
+      /**
+       * Check, that value contain old value
+       */
+      check(value) {
+        if (value.includes(this.string)) {
+          return !!value.match(this.regexp);
+        }
+        return false;
+      }
+    };
+    module2.exports = OldValue;
+  }
+});
+
+// node_modules/autoprefixer/lib/value.js
+var require_value = __commonJS({
+  "node_modules/autoprefixer/lib/value.js"(exports2, module2) {
+    var Prefixer = require_prefixer();
+    var OldValue = require_old_value();
+    var vendor = require_vendor();
+    var utils = require_utils();
+    var Value = class extends Prefixer {
+      /**
+       * Clone decl for each prefixed values
+       */
+      static save(prefixes, decl) {
+        let prop = decl.prop;
+        let result = [];
+        for (let prefix in decl._autoprefixerValues) {
+          let value = decl._autoprefixerValues[prefix];
+          if (value === decl.value) {
+            continue;
+          }
+          let item;
+          let propPrefix = vendor.prefix(prop);
+          if (propPrefix === "-pie-") {
+            continue;
+          }
+          if (propPrefix === prefix) {
+            item = decl.value = value;
+            result.push(item);
+            continue;
+          }
+          let prefixed = prefixes.prefixed(prop, prefix);
+          let rule = decl.parent;
+          if (!rule.every((i) => i.prop !== prefixed)) {
+            result.push(item);
+            continue;
+          }
+          let trimmed = value.replace(/\s+/, " ");
+          let already = rule.some(
+            (i) => i.prop === decl.prop && i.value.replace(/\s+/, " ") === trimmed
+          );
+          if (already) {
+            result.push(item);
+            continue;
+          }
+          let cloned = this.clone(decl, { value });
+          item = decl.parent.insertBefore(decl, cloned);
+          result.push(item);
+        }
+        return result;
+      }
+      /**
+       * Save values with next prefixed token
+       */
+      add(decl, prefix) {
+        if (!decl._autoprefixerValues) {
+          decl._autoprefixerValues = {};
+        }
+        let value = decl._autoprefixerValues[prefix] || this.value(decl);
+        let before;
+        do {
+          before = value;
+          value = this.replace(value, prefix);
+          if (value === false) return;
+        } while (value !== before);
+        decl._autoprefixerValues[prefix] = value;
+      }
+      /**
+       * Is declaration need to be prefixed
+       */
+      check(decl) {
+        let value = decl.value;
+        if (!value.includes(this.name)) {
+          return false;
+        }
+        return !!value.match(this.regexp());
+      }
+      /**
+       * Return function to fast find prefixed value
+       */
+      old(prefix) {
+        return new OldValue(this.name, prefix + this.name);
+      }
+      /**
+       * Lazy regexp loading
+       */
+      regexp() {
+        return this.regexpCache || (this.regexpCache = utils.regexp(this.name));
+      }
+      /**
+       * Add prefix to values in string
+       */
+      replace(string, prefix) {
+        return string.replace(this.regexp(), `$1${prefix}$2`);
+      }
+      /**
+       * Get value with comments if it was not changed
+       */
+      value(decl) {
+        if (decl.raws.value && decl.raws.value.value === decl.value) {
+          return decl.raws.value.raw;
+        } else {
+          return decl.value;
+        }
+      }
+    };
+    module2.exports = Value;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-utils.js
+var require_grid_utils = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-utils.js"(exports2) {
+    var parser = require_lib();
+    var list = require_postcss().list;
+    var uniq = require_utils().uniq;
+    var escapeRegexp = require_utils().escapeRegexp;
+    var splitSelector = require_utils().splitSelector;
+    function convert(value) {
+      if (value && value.length === 2 && value[0] === "span" && parseInt(value[1], 10) > 0) {
+        return [false, parseInt(value[1], 10)];
+      }
+      if (value && value.length === 1 && parseInt(value[0], 10) > 0) {
+        return [parseInt(value[0], 10), false];
+      }
+      return [false, false];
+    }
+    exports2.translate = translate;
+    function translate(values, startIndex, endIndex) {
+      let startValue = values[startIndex];
+      let endValue = values[endIndex];
+      if (!startValue) {
+        return [false, false];
+      }
+      let [start, spanStart] = convert(startValue);
+      let [end, spanEnd] = convert(endValue);
+      if (start && !endValue) {
+        return [start, false];
+      }
+      if (spanStart && end) {
+        return [end - spanStart, spanStart];
+      }
+      if (start && spanEnd) {
+        return [start, spanEnd];
+      }
+      if (start && end) {
+        return [start, end - start];
+      }
+      return [false, false];
+    }
+    exports2.parse = parse;
+    function parse(decl) {
+      let node = parser(decl.value);
+      let values = [];
+      let current = 0;
+      values[current] = [];
+      for (let i of node.nodes) {
+        if (i.type === "div") {
+          current += 1;
+          values[current] = [];
+        } else if (i.type === "word") {
+          values[current].push(i.value);
+        }
+      }
+      return values;
+    }
+    exports2.insertDecl = insertDecl;
+    function insertDecl(decl, prop, value) {
+      if (value && !decl.parent.some((i) => i.prop === `-ms-${prop}`)) {
+        decl.cloneBefore({
+          prop: `-ms-${prop}`,
+          value: value.toString()
+        });
+      }
+    }
+    exports2.prefixTrackProp = prefixTrackProp;
+    function prefixTrackProp({ prefix, prop }) {
+      return prefix + prop.replace("template-", "");
+    }
+    function transformRepeat({ nodes }, { gap }) {
+      let { count, size } = nodes.reduce(
+        (result, node) => {
+          if (node.type === "div" && node.value === ",") {
+            result.key = "size";
+          } else {
+            result[result.key].push(parser.stringify(node));
+          }
+          return result;
+        },
+        {
+          count: [],
+          key: "count",
+          size: []
+        }
+      );
+      if (gap) {
+        size = size.filter((i) => i.trim());
+        let val = [];
+        for (let i = 1; i <= count; i++) {
+          size.forEach((item, index) => {
+            if (index > 0 || i > 1) {
+              val.push(gap);
+            }
+            val.push(item);
+          });
+        }
+        return val.join(" ");
+      }
+      return `(${size.join("")})[${count.join("")}]`;
+    }
+    exports2.prefixTrackValue = prefixTrackValue;
+    function prefixTrackValue({ gap, value }) {
+      let result = parser(value).nodes.reduce((nodes, node) => {
+        if (node.type === "function" && node.value === "repeat") {
+          return nodes.concat({
+            type: "word",
+            value: transformRepeat(node, { gap })
+          });
+        }
+        if (gap && node.type === "space") {
+          return nodes.concat(
+            {
+              type: "space",
+              value: " "
+            },
+            {
+              type: "word",
+              value: gap
+            },
+            node
+          );
+        }
+        return nodes.concat(node);
+      }, []);
+      return parser.stringify(result);
+    }
+    var DOTS = /^\.+$/;
+    function track(start, end) {
+      return { end, span: end - start, start };
+    }
+    function getColumns(line) {
+      return line.trim().split(/\s+/g);
+    }
+    exports2.parseGridAreas = parseGridAreas;
+    function parseGridAreas({ gap, rows }) {
+      return rows.reduce((areas, line, rowIndex) => {
+        if (gap.row) rowIndex *= 2;
+        if (line.trim() === "") return areas;
+        getColumns(line).forEach((area, columnIndex) => {
+          if (DOTS.test(area)) return;
+          if (gap.column) columnIndex *= 2;
+          if (typeof areas[area] === "undefined") {
+            areas[area] = {
+              column: track(columnIndex + 1, columnIndex + 2),
+              row: track(rowIndex + 1, rowIndex + 2)
+            };
+          } else {
+            let { column, row } = areas[area];
+            column.start = Math.min(column.start, columnIndex + 1);
+            column.end = Math.max(column.end, columnIndex + 2);
+            column.span = column.end - column.start;
+            row.start = Math.min(row.start, rowIndex + 1);
+            row.end = Math.max(row.end, rowIndex + 2);
+            row.span = row.end - row.start;
+          }
+        });
+        return areas;
+      }, {});
+    }
+    function testTrack(node) {
+      return node.type === "word" && /^\[.+]$/.test(node.value);
+    }
+    function verifyRowSize(result) {
+      if (result.areas.length > result.rows.length) {
+        result.rows.push("auto");
+      }
+      return result;
+    }
+    exports2.parseTemplate = parseTemplate;
+    function parseTemplate({ decl, gap }) {
+      let gridTemplate = parser(decl.value).nodes.reduce(
+        (result, node) => {
+          let { type, value } = node;
+          if (testTrack(node) || type === "space") return result;
+          if (type === "string") {
+            result = verifyRowSize(result);
+            result.areas.push(value);
+          }
+          if (type === "word" || type === "function") {
+            result[result.key].push(parser.stringify(node));
+          }
+          if (type === "div" && value === "/") {
+            result.key = "columns";
+            result = verifyRowSize(result);
+          }
+          return result;
+        },
+        {
+          areas: [],
+          columns: [],
+          key: "rows",
+          rows: []
+        }
+      );
+      return {
+        areas: parseGridAreas({
+          gap,
+          rows: gridTemplate.areas
+        }),
+        columns: prefixTrackValue({
+          gap: gap.column,
+          value: gridTemplate.columns.join(" ")
+        }),
+        rows: prefixTrackValue({
+          gap: gap.row,
+          value: gridTemplate.rows.join(" ")
+        })
+      };
+    }
+    function getMSDecls(area, addRowSpan = false, addColumnSpan = false) {
+      let result = [
+        {
+          prop: "-ms-grid-row",
+          value: String(area.row.start)
+        }
+      ];
+      if (area.row.span > 1 || addRowSpan) {
+        result.push({
+          prop: "-ms-grid-row-span",
+          value: String(area.row.span)
+        });
+      }
+      result.push({
+        prop: "-ms-grid-column",
+        value: String(area.column.start)
+      });
+      if (area.column.span > 1 || addColumnSpan) {
+        result.push({
+          prop: "-ms-grid-column-span",
+          value: String(area.column.span)
+        });
+      }
+      return result;
+    }
+    function getParentMedia(parent) {
+      if (parent.type === "atrule" && parent.name === "media") {
+        return parent;
+      }
+      if (!parent.parent) {
+        return false;
+      }
+      return getParentMedia(parent.parent);
+    }
+    function changeDuplicateAreaSelectors(ruleSelectors, templateSelectors) {
+      ruleSelectors = ruleSelectors.map((selector) => {
+        let selectorBySpace = list.space(selector);
+        let selectorByComma = list.comma(selector);
+        if (selectorBySpace.length > selectorByComma.length) {
+          selector = selectorBySpace.slice(-1).join("");
+        }
+        return selector;
+      });
+      return ruleSelectors.map((ruleSelector) => {
+        let newSelector = templateSelectors.map((tplSelector, index) => {
+          let space = index === 0 ? "" : " ";
+          return `${space}${tplSelector} > ${ruleSelector}`;
+        });
+        return newSelector;
+      });
+    }
+    function selectorsEqual(ruleA, ruleB) {
+      return ruleA.selectors.some((sel) => {
+        return ruleB.selectors.includes(sel);
+      });
+    }
+    function parseGridTemplatesData(css) {
+      let parsed = [];
+      css.walkDecls(/grid-template(-areas)?$/, (d) => {
+        let rule = d.parent;
+        let media = getParentMedia(rule);
+        let gap = getGridGap(d);
+        let inheritedGap = inheritGridGap(d, gap);
+        let { areas } = parseTemplate({ decl: d, gap: inheritedGap || gap });
+        let areaNames = Object.keys(areas);
+        if (areaNames.length === 0) {
+          return true;
+        }
+        let index = parsed.reduce((acc, { allAreas }, idx) => {
+          let hasAreas = allAreas && areaNames.some((area) => allAreas.includes(area));
+          return hasAreas ? idx : acc;
+        }, null);
+        if (index !== null) {
+          let { allAreas, rules } = parsed[index];
+          let hasNoDuplicates = rules.some((r) => {
+            return r.hasDuplicates === false && selectorsEqual(r, rule);
+          });
+          let duplicatesFound = false;
+          let duplicateAreaNames = rules.reduce((acc, r) => {
+            if (!r.params && selectorsEqual(r, rule)) {
+              duplicatesFound = true;
+              return r.duplicateAreaNames;
+            }
+            if (!duplicatesFound) {
+              areaNames.forEach((name) => {
+                if (r.areas[name]) {
+                  acc.push(name);
+                }
+              });
+            }
+            return uniq(acc);
+          }, []);
+          rules.forEach((r) => {
+            areaNames.forEach((name) => {
+              let area = r.areas[name];
+              if (area && area.row.span !== areas[name].row.span) {
+                areas[name].row.updateSpan = true;
+              }
+              if (area && area.column.span !== areas[name].column.span) {
+                areas[name].column.updateSpan = true;
+              }
+            });
+          });
+          parsed[index].allAreas = uniq([...allAreas, ...areaNames]);
+          parsed[index].rules.push({
+            areas,
+            duplicateAreaNames,
+            hasDuplicates: !hasNoDuplicates,
+            node: rule,
+            params: media.params,
+            selectors: rule.selectors
+          });
+        } else {
+          parsed.push({
+            allAreas: areaNames,
+            areasCount: 0,
+            rules: [
+              {
+                areas,
+                duplicateAreaNames: [],
+                duplicateRules: [],
+                hasDuplicates: false,
+                node: rule,
+                params: media.params,
+                selectors: rule.selectors
+              }
+            ]
+          });
+        }
+        return void 0;
+      });
+      return parsed;
+    }
+    exports2.insertAreas = insertAreas;
+    function insertAreas(css, isDisabled) {
+      let gridTemplatesData = parseGridTemplatesData(css);
+      if (gridTemplatesData.length === 0) {
+        return void 0;
+      }
+      let rulesToInsert = {};
+      css.walkDecls("grid-area", (gridArea) => {
+        let gridAreaRule = gridArea.parent;
+        let hasPrefixedRow = gridAreaRule.first.prop === "-ms-grid-row";
+        let gridAreaMedia = getParentMedia(gridAreaRule);
+        if (isDisabled(gridArea)) {
+          return void 0;
+        }
+        let gridAreaRuleIndex = css.index(gridAreaMedia || gridAreaRule);
+        let value = gridArea.value;
+        let data = gridTemplatesData.filter((d) => d.allAreas.includes(value))[0];
+        if (!data) {
+          return true;
+        }
+        let lastArea = data.allAreas[data.allAreas.length - 1];
+        let selectorBySpace = list.space(gridAreaRule.selector);
+        let selectorByComma = list.comma(gridAreaRule.selector);
+        let selectorIsComplex = selectorBySpace.length > 1 && selectorBySpace.length > selectorByComma.length;
+        if (hasPrefixedRow) {
+          return false;
+        }
+        if (!rulesToInsert[lastArea]) {
+          rulesToInsert[lastArea] = {};
+        }
+        let lastRuleIsSet = false;
+        for (let rule of data.rules) {
+          let area = rule.areas[value];
+          let hasDuplicateName = rule.duplicateAreaNames.includes(value);
+          if (!area) {
+            let lastRule = rulesToInsert[lastArea].lastRule;
+            let lastRuleIndex;
+            if (lastRule) {
+              lastRuleIndex = css.index(lastRule);
+            } else {
+              lastRuleIndex = -1;
+            }
+            if (gridAreaRuleIndex > lastRuleIndex) {
+              rulesToInsert[lastArea].lastRule = gridAreaMedia || gridAreaRule;
+            }
+            continue;
+          }
+          if (rule.params && !rulesToInsert[lastArea][rule.params]) {
+            rulesToInsert[lastArea][rule.params] = [];
+          }
+          if ((!rule.hasDuplicates || !hasDuplicateName) && !rule.params) {
+            getMSDecls(area, false, false).reverse().forEach(
+              (i) => gridAreaRule.prepend(
+                Object.assign(i, {
+                  raws: {
+                    between: gridArea.raws.between
+                  }
+                })
+              )
+            );
+            rulesToInsert[lastArea].lastRule = gridAreaRule;
+            lastRuleIsSet = true;
+          } else if (rule.hasDuplicates && !rule.params && !selectorIsComplex) {
+            let cloned = gridAreaRule.clone();
+            cloned.removeAll();
+            getMSDecls(area, area.row.updateSpan, area.column.updateSpan).reverse().forEach(
+              (i) => cloned.prepend(
+                Object.assign(i, {
+                  raws: {
+                    between: gridArea.raws.between
+                  }
+                })
+              )
+            );
+            cloned.selectors = changeDuplicateAreaSelectors(
+              cloned.selectors,
+              rule.selectors
+            );
+            if (rulesToInsert[lastArea].lastRule) {
+              rulesToInsert[lastArea].lastRule.after(cloned);
+            }
+            rulesToInsert[lastArea].lastRule = cloned;
+            lastRuleIsSet = true;
+          } else if (rule.hasDuplicates && !rule.params && selectorIsComplex && gridAreaRule.selector.includes(rule.selectors[0])) {
+            gridAreaRule.walkDecls(/-ms-grid-(row|column)/, (d) => d.remove());
+            getMSDecls(area, area.row.updateSpan, area.column.updateSpan).reverse().forEach(
+              (i) => gridAreaRule.prepend(
+                Object.assign(i, {
+                  raws: {
+                    between: gridArea.raws.between
+                  }
+                })
+              )
+            );
+          } else if (rule.params) {
+            let cloned = gridAreaRule.clone();
+            cloned.removeAll();
+            getMSDecls(area, area.row.updateSpan, area.column.updateSpan).reverse().forEach(
+              (i) => cloned.prepend(
+                Object.assign(i, {
+                  raws: {
+                    between: gridArea.raws.between
+                  }
+                })
+              )
+            );
+            if (rule.hasDuplicates && hasDuplicateName) {
+              cloned.selectors = changeDuplicateAreaSelectors(
+                cloned.selectors,
+                rule.selectors
+              );
+            }
+            cloned.raws = rule.node.raws;
+            if (css.index(rule.node.parent) > gridAreaRuleIndex) {
+              rule.node.parent.append(cloned);
+            } else {
+              rulesToInsert[lastArea][rule.params].push(cloned);
+            }
+            if (!lastRuleIsSet) {
+              rulesToInsert[lastArea].lastRule = gridAreaMedia || gridAreaRule;
+            }
+          }
+        }
+        return void 0;
+      });
+      Object.keys(rulesToInsert).forEach((area) => {
+        let data = rulesToInsert[area];
+        let lastRule = data.lastRule;
+        Object.keys(data).reverse().filter((p) => p !== "lastRule").forEach((params) => {
+          if (data[params].length > 0 && lastRule) {
+            lastRule.after({ name: "media", params });
+            lastRule.next().append(data[params]);
+          }
+        });
+      });
+      return void 0;
+    }
+    exports2.warnMissedAreas = warnMissedAreas;
+    function warnMissedAreas(areas, decl, result) {
+      let missed = Object.keys(areas);
+      decl.root().walkDecls("grid-area", (gridArea) => {
+        missed = missed.filter((e) => e !== gridArea.value);
+      });
+      if (missed.length > 0) {
+        decl.warn(result, "Can not find grid areas: " + missed.join(", "));
+      }
+      return void 0;
+    }
+    exports2.warnTemplateSelectorNotFound = warnTemplateSelectorNotFound;
+    function warnTemplateSelectorNotFound(decl, result) {
+      let rule = decl.parent;
+      let root = decl.root();
+      let duplicatesFound = false;
+      let slicedSelectorArr = list.space(rule.selector).filter((str) => str !== ">").slice(0, -1);
+      if (slicedSelectorArr.length > 0) {
+        let gridTemplateFound = false;
+        let foundAreaSelector = null;
+        root.walkDecls(/grid-template(-areas)?$/, (d) => {
+          let parent = d.parent;
+          let templateSelectors = parent.selectors;
+          let { areas } = parseTemplate({ decl: d, gap: getGridGap(d) });
+          let hasArea = areas[decl.value];
+          for (let tplSelector of templateSelectors) {
+            if (gridTemplateFound) {
+              break;
+            }
+            let tplSelectorArr = list.space(tplSelector).filter((str) => str !== ">");
+            gridTemplateFound = tplSelectorArr.every(
+              (item, idx) => item === slicedSelectorArr[idx]
+            );
+          }
+          if (gridTemplateFound || !hasArea) {
+            return true;
+          }
+          if (!foundAreaSelector) {
+            foundAreaSelector = parent.selector;
+          }
+          if (foundAreaSelector && foundAreaSelector !== parent.selector) {
+            duplicatesFound = true;
+          }
+          return void 0;
+        });
+        if (!gridTemplateFound && duplicatesFound) {
+          decl.warn(
+            result,
+            `Autoprefixer cannot find a grid-template containing the duplicate grid-area "${decl.value}" with full selector matching: ${slicedSelectorArr.join(" ")}`
+          );
+        }
+      }
+    }
+    exports2.warnIfGridRowColumnExists = warnIfGridRowColumnExists;
+    function warnIfGridRowColumnExists(decl, result) {
+      let rule = decl.parent;
+      let decls = [];
+      rule.walkDecls(/^grid-(row|column)/, (d) => {
+        if (!d.prop.endsWith("-end") && !d.value.startsWith("span") && !d.prop.endsWith("-gap")) {
+          decls.push(d);
+        }
+      });
+      if (decls.length > 0) {
+        decls.forEach((d) => {
+          d.warn(
+            result,
+            `You already have a grid-area declaration present in the rule. You should use either grid-area or ${d.prop}, not both`
+          );
+        });
+      }
+      return void 0;
+    }
+    exports2.getGridGap = getGridGap;
+    function getGridGap(decl) {
+      let gap = {};
+      let testGap = /^(grid-)?((row|column)-)?gap$/;
+      decl.parent.walkDecls(testGap, ({ prop, value }) => {
+        if (/^(grid-)?gap$/.test(prop)) {
+          let [row, , column] = parser(value).nodes;
+          gap.row = row && parser.stringify(row);
+          gap.column = column ? parser.stringify(column) : gap.row;
+        }
+        if (/^(grid-)?row-gap$/.test(prop)) gap.row = value;
+        if (/^(grid-)?column-gap$/.test(prop)) gap.column = value;
+      });
+      return gap;
+    }
+    function parseMediaParams(params) {
+      if (!params) {
+        return [];
+      }
+      let parsed = parser(params);
+      let prop;
+      let value;
+      parsed.walk((node) => {
+        if (node.type === "word" && /min|max/g.test(node.value)) {
+          prop = node.value;
+        } else if (node.value.includes("px")) {
+          value = parseInt(node.value.replace(/\D/g, ""));
+        }
+      });
+      return [prop, value];
+    }
+    function shouldInheritGap(selA, selB) {
+      let result;
+      let splitSelectorArrA = splitSelector(selA);
+      let splitSelectorArrB = splitSelector(selB);
+      if (splitSelectorArrA[0].length < splitSelectorArrB[0].length) {
+        return false;
+      } else if (splitSelectorArrA[0].length > splitSelectorArrB[0].length) {
+        let idx = splitSelectorArrA[0].reduce((res, [item], index) => {
+          let firstSelectorPart = splitSelectorArrB[0][0][0];
+          if (item === firstSelectorPart) {
+            return index;
+          }
+          return false;
+        }, false);
+        if (idx) {
+          result = splitSelectorArrB[0].every((arr, index) => {
+            return arr.every(
+              (part, innerIndex) => (
+                // because selectorA has more space elements, we need to slice
+                // selectorA array by 'idx' number to compare them
+                splitSelectorArrA[0].slice(idx)[index][innerIndex] === part
+              )
+            );
+          });
+        }
+      } else {
+        result = splitSelectorArrB.some((byCommaArr) => {
+          return byCommaArr.every((bySpaceArr, index) => {
+            return bySpaceArr.every(
+              (part, innerIndex) => splitSelectorArrA[0][index][innerIndex] === part
+            );
+          });
+        });
+      }
+      return result;
+    }
+    exports2.inheritGridGap = inheritGridGap;
+    function inheritGridGap(decl, gap) {
+      let rule = decl.parent;
+      let mediaRule = getParentMedia(rule);
+      let root = rule.root();
+      let splitSelectorArr = splitSelector(rule.selector);
+      if (Object.keys(gap).length > 0) {
+        return false;
+      }
+      let [prop] = parseMediaParams(mediaRule.params);
+      let lastBySpace = splitSelectorArr[0];
+      let escaped = escapeRegexp(lastBySpace[lastBySpace.length - 1][0]);
+      let regexp = new RegExp(`(${escaped}$)|(${escaped}[,.])`);
+      let closestRuleGap;
+      root.walkRules(regexp, (r) => {
+        let gridGap;
+        if (rule.toString() === r.toString()) {
+          return false;
+        }
+        r.walkDecls("grid-gap", (d) => gridGap = getGridGap(d));
+        if (!gridGap || Object.keys(gridGap).length === 0) {
+          return true;
+        }
+        if (!shouldInheritGap(rule.selector, r.selector)) {
+          return true;
+        }
+        let media = getParentMedia(r);
+        if (media) {
+          let propToCompare = parseMediaParams(media.params)[0];
+          if (propToCompare === prop) {
+            closestRuleGap = gridGap;
+            return true;
+          }
+        } else {
+          closestRuleGap = gridGap;
+          return true;
+        }
+        return void 0;
+      });
+      if (closestRuleGap && Object.keys(closestRuleGap).length > 0) {
+        return closestRuleGap;
+      }
+      return false;
+    }
+    exports2.warnGridGap = warnGridGap;
+    function warnGridGap({ decl, gap, hasColumns, result }) {
+      let hasBothGaps = gap.row && gap.column;
+      if (!hasColumns && (hasBothGaps || gap.column && !gap.row)) {
+        delete gap.column;
+        decl.warn(
+          result,
+          "Can not implement grid-gap without grid-template-columns"
+        );
+      }
+    }
+    function normalizeRowColumn(str) {
+      let normalized = parser(str).nodes.reduce((result, node) => {
+        if (node.type === "function" && node.value === "repeat") {
+          let key = "count";
+          let [count, value] = node.nodes.reduce(
+            (acc, n) => {
+              if (n.type === "word" && key === "count") {
+                acc[0] = Math.abs(parseInt(n.value));
+                return acc;
+              }
+              if (n.type === "div" && n.value === ",") {
+                key = "value";
+                return acc;
+              }
+              if (key === "value") {
+                acc[1] += parser.stringify(n);
+              }
+              return acc;
+            },
+            [0, ""]
+          );
+          if (count) {
+            for (let i = 0; i < count; i++) {
+              result.push(value);
+            }
+          }
+          return result;
+        }
+        if (node.type === "space") {
+          return result;
+        }
+        return result.concat(parser.stringify(node));
+      }, []);
+      return normalized;
+    }
+    exports2.autoplaceGridItems = autoplaceGridItems;
+    function autoplaceGridItems(decl, result, gap, autoflowValue = "row") {
+      let { parent } = decl;
+      let rowDecl = parent.nodes.find((i) => i.prop === "grid-template-rows");
+      let rows = normalizeRowColumn(rowDecl.value);
+      let columns = normalizeRowColumn(decl.value);
+      let filledRows = rows.map((_, rowIndex) => {
+        return Array.from(
+          { length: columns.length },
+          (v, k) => k + rowIndex * columns.length + 1
+        ).join(" ");
+      });
+      let areas = parseGridAreas({ gap, rows: filledRows });
+      let keys = Object.keys(areas);
+      let items = keys.map((i) => areas[i]);
+      if (autoflowValue.includes("column")) {
+        items = items.sort((a, b) => a.column.start - b.column.start);
+      }
+      items.reverse().forEach((item, index) => {
+        let { column, row } = item;
+        let nodeSelector = parent.selectors.map((sel) => sel + ` > *:nth-child(${keys.length - index})`).join(", ");
+        let node = parent.clone().removeAll();
+        node.selector = nodeSelector;
+        node.append({ prop: "-ms-grid-row", value: row.start });
+        node.append({ prop: "-ms-grid-column", value: column.start });
+        parent.after(node);
+      });
+      return void 0;
+    }
+  }
+});
+
+// node_modules/autoprefixer/lib/processor.js
+var require_processor2 = __commonJS({
+  "node_modules/autoprefixer/lib/processor.js"(exports2, module2) {
+    var parser = require_lib();
+    var Value = require_value();
+    var insertAreas = require_grid_utils().insertAreas;
+    var OLD_LINEAR = /(^|[^-])linear-gradient\(\s*(top|left|right|bottom)/i;
+    var OLD_RADIAL = /(^|[^-])radial-gradient\(\s*\d+(\w*|%)\s+\d+(\w*|%)\s*,/i;
+    var IGNORE_NEXT = /(!\s*)?autoprefixer:\s*ignore\s+next/i;
+    var GRID_REGEX = /(!\s*)?autoprefixer\s*grid:\s*(on|off|(no-)?autoplace)/i;
+    var SIZES = [
+      "width",
+      "height",
+      "min-width",
+      "max-width",
+      "min-height",
+      "max-height",
+      "inline-size",
+      "min-inline-size",
+      "max-inline-size",
+      "block-size",
+      "min-block-size",
+      "max-block-size"
+    ];
+    function hasGridTemplate(decl) {
+      return decl.parent.some(
+        (i) => i.prop === "grid-template" || i.prop === "grid-template-areas"
+      );
+    }
+    function hasRowsAndColumns(decl) {
+      let hasRows = decl.parent.some((i) => i.prop === "grid-template-rows");
+      let hasColumns = decl.parent.some((i) => i.prop === "grid-template-columns");
+      return hasRows && hasColumns;
+    }
+    var Processor = class {
+      constructor(prefixes) {
+        this.prefixes = prefixes;
+      }
+      /**
+       * Add necessary prefixes
+       */
+      add(css, result) {
+        let resolution = this.prefixes.add["@resolution"];
+        let keyframes = this.prefixes.add["@keyframes"];
+        let viewport = this.prefixes.add["@viewport"];
+        let supports = this.prefixes.add["@supports"];
+        css.walkAtRules((rule) => {
+          if (rule.name === "keyframes") {
+            if (!this.disabled(rule, result)) {
+              return keyframes && keyframes.process(rule);
+            }
+          } else if (rule.name === "viewport") {
+            if (!this.disabled(rule, result)) {
+              return viewport && viewport.process(rule);
+            }
+          } else if (rule.name === "supports") {
+            if (this.prefixes.options.supports !== false && !this.disabled(rule, result)) {
+              return supports.process(rule);
+            }
+          } else if (rule.name === "media" && rule.params.includes("-resolution")) {
+            if (!this.disabled(rule, result)) {
+              return resolution && resolution.process(rule);
+            }
+          }
+          return void 0;
+        });
+        css.walkRules((rule) => {
+          if (this.disabled(rule, result)) return void 0;
+          return this.prefixes.add.selectors.map((selector) => {
+            return selector.process(rule, result);
+          });
+        });
+        function insideGrid(decl) {
+          return decl.parent.nodes.some((node) => {
+            if (node.type !== "decl") return false;
+            let displayGrid = node.prop === "display" && /(inline-)?grid/.test(node.value);
+            let gridTemplate = node.prop.startsWith("grid-template");
+            let gridGap = /^grid-([A-z]+-)?gap/.test(node.prop);
+            return displayGrid || gridTemplate || gridGap;
+          });
+        }
+        let gridPrefixes = this.gridStatus(css, result) && this.prefixes.add["grid-area"] && this.prefixes.add["grid-area"].prefixes;
+        css.walkDecls((decl) => {
+          if (this.disabledDecl(decl, result)) return void 0;
+          let parent = decl.parent;
+          let prop = decl.prop;
+          let value = decl.value;
+          if (prop === "color-adjust") {
+            if (parent.every((i) => i.prop !== "print-color-adjust")) {
+              result.warn(
+                "Replace color-adjust to print-color-adjust. The color-adjust shorthand is currently deprecated.",
+                { node: decl }
+              );
+            }
+          } else if (prop === "grid-row-span") {
+            result.warn(
+              "grid-row-span is not part of final Grid Layout. Use grid-row.",
+              { node: decl }
+            );
+            return void 0;
+          } else if (prop === "grid-column-span") {
+            result.warn(
+              "grid-column-span is not part of final Grid Layout. Use grid-column.",
+              { node: decl }
+            );
+            return void 0;
+          } else if (prop === "display" && value === "box") {
+            result.warn(
+              "You should write display: flex by final spec instead of display: box",
+              { node: decl }
+            );
+            return void 0;
+          } else if (prop === "text-emphasis-position") {
+            if (value === "under" || value === "over") {
+              result.warn(
+                "You should use 2 values for text-emphasis-position For example, `under left` instead of just `under`.",
+                { node: decl }
+              );
+            }
+          } else if (prop === "text-decoration-skip" && value === "ink") {
+            result.warn(
+              "Replace text-decoration-skip: ink to text-decoration-skip-ink: auto, because spec had been changed",
+              { node: decl }
+            );
+          } else {
+            if (gridPrefixes && this.gridStatus(decl, result)) {
+              if (decl.value === "subgrid") {
+                result.warn("IE does not support subgrid", { node: decl });
+              }
+              if (/^(align|justify|place)-items$/.test(prop) && insideGrid(decl)) {
+                let fixed = prop.replace("-items", "-self");
+                result.warn(
+                  `IE does not support ${prop} on grid containers. Try using ${fixed} on child elements instead: ${decl.parent.selector} > * { ${fixed}: ${decl.value} }`,
+                  { node: decl }
+                );
+              } else if (/^(align|justify|place)-content$/.test(prop) && insideGrid(decl)) {
+                result.warn(`IE does not support ${decl.prop} on grid containers`, {
+                  node: decl
+                });
+              } else if (prop === "display" && decl.value === "contents") {
+                result.warn(
+                  "Please do not use display: contents; if you have grid setting enabled",
+                  { node: decl }
+                );
+                return void 0;
+              } else if (decl.prop === "grid-gap") {
+                let status = this.gridStatus(decl, result);
+                if (status === "autoplace" && !hasRowsAndColumns(decl) && !hasGridTemplate(decl)) {
+                  result.warn(
+                    "grid-gap only works if grid-template(-areas) is being used or both rows and columns have been declared and cells have not been manually placed inside the explicit grid",
+                    { node: decl }
+                  );
+                } else if ((status === true || status === "no-autoplace") && !hasGridTemplate(decl)) {
+                  result.warn(
+                    "grid-gap only works if grid-template(-areas) is being used",
+                    { node: decl }
+                  );
+                }
+              } else if (prop === "grid-auto-columns") {
+                result.warn("grid-auto-columns is not supported by IE", {
+                  node: decl
+                });
+                return void 0;
+              } else if (prop === "grid-auto-rows") {
+                result.warn("grid-auto-rows is not supported by IE", { node: decl });
+                return void 0;
+              } else if (prop === "grid-auto-flow") {
+                let hasRows = parent.some((i) => i.prop === "grid-template-rows");
+                let hasCols = parent.some((i) => i.prop === "grid-template-columns");
+                if (hasGridTemplate(decl)) {
+                  result.warn("grid-auto-flow is not supported by IE", {
+                    node: decl
+                  });
+                } else if (value.includes("dense")) {
+                  result.warn("grid-auto-flow: dense is not supported by IE", {
+                    node: decl
+                  });
+                } else if (!hasRows && !hasCols) {
+                  result.warn(
+                    "grid-auto-flow works only if grid-template-rows and grid-template-columns are present in the same rule",
+                    { node: decl }
+                  );
+                }
+                return void 0;
+              } else if (value.includes("auto-fit")) {
+                result.warn("auto-fit value is not supported by IE", {
+                  node: decl,
+                  word: "auto-fit"
+                });
+                return void 0;
+              } else if (value.includes("auto-fill")) {
+                result.warn("auto-fill value is not supported by IE", {
+                  node: decl,
+                  word: "auto-fill"
+                });
+                return void 0;
+              } else if (prop.startsWith("grid-template") && value.includes("[")) {
+                result.warn(
+                  "Autoprefixer currently does not support line names. Try using grid-template-areas instead.",
+                  { node: decl, word: "[" }
+                );
+              }
+            }
+            if (value.includes("radial-gradient")) {
+              if (OLD_RADIAL.test(decl.value)) {
+                result.warn(
+                  "Gradient has outdated direction syntax. New syntax is like `closest-side at 0 0` instead of `0 0, closest-side`.",
+                  { node: decl }
+                );
+              } else {
+                let ast = parser(value);
+                for (let i of ast.nodes) {
+                  if (i.type === "function" && i.value === "radial-gradient") {
+                    for (let word of i.nodes) {
+                      if (word.type === "word") {
+                        if (word.value === "cover") {
+                          result.warn(
+                            "Gradient has outdated direction syntax. Replace `cover` to `farthest-corner`.",
+                            { node: decl }
+                          );
+                        } else if (word.value === "contain") {
+                          result.warn(
+                            "Gradient has outdated direction syntax. Replace `contain` to `closest-side`.",
+                            { node: decl }
+                          );
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+            if (value.includes("linear-gradient")) {
+              if (OLD_LINEAR.test(value)) {
+                result.warn(
+                  "Gradient has outdated direction syntax. New syntax is like `to left` instead of `right`.",
+                  { node: decl }
+                );
+              }
+            }
+          }
+          if (SIZES.includes(decl.prop)) {
+            if (!decl.value.includes("-fill-available")) {
+              if (decl.value.includes("fill-available")) {
+                result.warn(
+                  "Replace fill-available to stretch, because spec had been changed",
+                  { node: decl }
+                );
+              } else if (decl.value.includes("fill")) {
+                let ast = parser(value);
+                if (ast.nodes.some((i) => i.type === "word" && i.value === "fill")) {
+                  result.warn(
+                    "Replace fill to stretch, because spec had been changed",
+                    { node: decl }
+                  );
+                }
+              }
+            }
+          }
+          let prefixer;
+          if (decl.prop === "transition" || decl.prop === "transition-property") {
+            return this.prefixes.transition.add(decl, result);
+          } else if (decl.prop === "align-self") {
+            let display = this.displayType(decl);
+            if (display !== "grid" && this.prefixes.options.flexbox !== false) {
+              prefixer = this.prefixes.add["align-self"];
+              if (prefixer && prefixer.prefixes) {
+                prefixer.process(decl);
+              }
+            }
+            if (this.gridStatus(decl, result) !== false) {
+              prefixer = this.prefixes.add["grid-row-align"];
+              if (prefixer && prefixer.prefixes) {
+                return prefixer.process(decl, result);
+              }
+            }
+          } else if (decl.prop === "justify-self") {
+            if (this.gridStatus(decl, result) !== false) {
+              prefixer = this.prefixes.add["grid-column-align"];
+              if (prefixer && prefixer.prefixes) {
+                return prefixer.process(decl, result);
+              }
+            }
+          } else if (decl.prop === "place-self") {
+            prefixer = this.prefixes.add["place-self"];
+            if (prefixer && prefixer.prefixes && this.gridStatus(decl, result) !== false) {
+              return prefixer.process(decl, result);
+            }
+          } else {
+            prefixer = this.prefixes.add[decl.prop];
+            if (prefixer && prefixer.prefixes) {
+              return prefixer.process(decl, result);
+            }
+          }
+          return void 0;
+        });
+        if (this.gridStatus(css, result)) {
+          insertAreas(css, this.disabled);
+        }
+        return css.walkDecls((decl) => {
+          if (this.disabledValue(decl, result)) return;
+          let unprefixed = this.prefixes.unprefixed(decl.prop);
+          let list = this.prefixes.values("add", unprefixed);
+          if (Array.isArray(list)) {
+            for (let value of list) {
+              if (value.process) value.process(decl, result);
+            }
+          }
+          Value.save(this.prefixes, decl);
+        });
+      }
+      /**
+       * Check for control comment and global options
+       */
+      disabled(node, result) {
+        if (!node) return false;
+        if (node._autoprefixerDisabled !== void 0) {
+          return node._autoprefixerDisabled;
+        }
+        if (node.parent) {
+          let p = node.prev();
+          if (p && p.type === "comment" && IGNORE_NEXT.test(p.text)) {
+            node._autoprefixerDisabled = true;
+            node._autoprefixerSelfDisabled = true;
+            return true;
+          }
+        }
+        let value = null;
+        if (node.nodes) {
+          let status;
+          node.each((i) => {
+            if (i.type !== "comment") return;
+            if (/(!\s*)?autoprefixer:\s*(off|on)/i.test(i.text)) {
+              if (typeof status !== "undefined") {
+                result.warn(
+                  "Second Autoprefixer control comment was ignored. Autoprefixer applies control comment to whole block, not to next rules.",
+                  { node: i }
+                );
+              } else {
+                status = /on/i.test(i.text);
+              }
+            }
+          });
+          if (status !== void 0) {
+            value = !status;
+          }
+        }
+        if (!node.nodes || value === null) {
+          if (node.parent) {
+            let isParentDisabled = this.disabled(node.parent, result);
+            if (node.parent._autoprefixerSelfDisabled === true) {
+              value = false;
+            } else {
+              value = isParentDisabled;
+            }
+          } else {
+            value = false;
+          }
+        }
+        node._autoprefixerDisabled = value;
+        return value;
+      }
+      /**
+       * Check for grid/flexbox options.
+       */
+      disabledDecl(node, result) {
+        if (node.type === "decl" && this.gridStatus(node, result) === false) {
+          if (node.prop.includes("grid") || node.prop === "justify-items") {
+            return true;
+          }
+        }
+        if (node.type === "decl" && this.prefixes.options.flexbox === false) {
+          let other = ["order", "justify-content", "align-items", "align-content"];
+          if (node.prop.includes("flex") || other.includes(node.prop)) {
+            return true;
+          }
+        }
+        return this.disabled(node, result);
+      }
+      /**
+       * Check for grid/flexbox options.
+       */
+      disabledValue(node, result) {
+        if (this.gridStatus(node, result) === false && node.type === "decl") {
+          if (node.prop === "display" && node.value.includes("grid")) {
+            return true;
+          }
+        }
+        if (this.prefixes.options.flexbox === false && node.type === "decl") {
+          if (node.prop === "display" && node.value.includes("flex")) {
+            return true;
+          }
+        }
+        if (node.type === "decl" && node.prop === "content") {
+          return true;
+        }
+        return this.disabled(node, result);
+      }
+      /**
+       * Is it flebox or grid rule
+       */
+      displayType(decl) {
+        for (let i of decl.parent.nodes) {
+          if (i.prop !== "display") {
+            continue;
+          }
+          if (i.value.includes("flex")) {
+            return "flex";
+          }
+          if (i.value.includes("grid")) {
+            return "grid";
+          }
+        }
+        return false;
+      }
+      /**
+       * Set grid option via control comment
+       */
+      gridStatus(node, result) {
+        if (!node) return false;
+        if (node._autoprefixerGridStatus !== void 0) {
+          return node._autoprefixerGridStatus;
+        }
+        let value = null;
+        if (node.nodes) {
+          let status;
+          node.each((i) => {
+            if (i.type !== "comment") return;
+            if (GRID_REGEX.test(i.text)) {
+              let hasAutoplace = /:\s*autoplace/i.test(i.text);
+              let noAutoplace = /no-autoplace/i.test(i.text);
+              if (typeof status !== "undefined") {
+                result.warn(
+                  "Second Autoprefixer grid control comment was ignored. Autoprefixer applies control comments to the whole block, not to the next rules.",
+                  { node: i }
+                );
+              } else if (hasAutoplace) {
+                status = "autoplace";
+              } else if (noAutoplace) {
+                status = true;
+              } else {
+                status = /on/i.test(i.text);
+              }
+            }
+          });
+          if (status !== void 0) {
+            value = status;
+          }
+        }
+        if (node.type === "atrule" && node.name === "supports") {
+          let params = node.params;
+          if (params.includes("grid") && params.includes("auto")) {
+            value = false;
+          }
+        }
+        if (!node.nodes || value === null) {
+          if (node.parent) {
+            let isParentGrid = this.gridStatus(node.parent, result);
+            if (node.parent._autoprefixerSelfDisabled === true) {
+              value = false;
+            } else {
+              value = isParentGrid;
+            }
+          } else if (typeof this.prefixes.options.grid !== "undefined") {
+            value = this.prefixes.options.grid;
+          } else if (typeof process.env.AUTOPREFIXER_GRID !== "undefined") {
+            if (process.env.AUTOPREFIXER_GRID === "autoplace") {
+              value = "autoplace";
+            } else {
+              value = true;
+            }
+          } else {
+            value = false;
+          }
+        }
+        node._autoprefixerGridStatus = value;
+        return value;
+      }
+      /**
+       * Normalize spaces in cascade declaration group
+       */
+      reduceSpaces(decl) {
+        let stop = false;
+        this.prefixes.group(decl).up(() => {
+          stop = true;
+          return true;
+        });
+        if (stop) {
+          return;
+        }
+        let parts = decl.raw("before").split("\n");
+        let prevMin = parts[parts.length - 1].length;
+        let diff = false;
+        this.prefixes.group(decl).down((other) => {
+          parts = other.raw("before").split("\n");
+          let last = parts.length - 1;
+          if (parts[last].length > prevMin) {
+            if (diff === false) {
+              diff = parts[last].length - prevMin;
+            }
+            parts[last] = parts[last].slice(0, -diff);
+            other.raws.before = parts.join("\n");
+          }
+        });
+      }
+      /**
+       * Remove unnecessary pefixes
+       */
+      remove(css, result) {
+        let resolution = this.prefixes.remove["@resolution"];
+        css.walkAtRules((rule, i) => {
+          if (this.prefixes.remove[`@${rule.name}`]) {
+            if (!this.disabled(rule, result)) {
+              rule.parent.removeChild(i);
+            }
+          } else if (rule.name === "media" && rule.params.includes("-resolution") && resolution) {
+            resolution.clean(rule);
+          }
+        });
+        css.walkRules((rule, i) => {
+          if (this.disabled(rule, result)) return;
+          for (let checker of this.prefixes.remove.selectors) {
+            if (checker.check(rule)) {
+              rule.parent.removeChild(i);
+              return;
+            }
+          }
+        });
+        return css.walkDecls((decl, i) => {
+          if (this.disabled(decl, result)) return;
+          let rule = decl.parent;
+          let unprefixed = this.prefixes.unprefixed(decl.prop);
+          if (decl.prop === "transition" || decl.prop === "transition-property") {
+            this.prefixes.transition.remove(decl);
+          }
+          if (this.prefixes.remove[decl.prop] && this.prefixes.remove[decl.prop].remove) {
+            let notHack = this.prefixes.group(decl).down((other) => {
+              return this.prefixes.normalize(other.prop) === unprefixed;
+            });
+            if (unprefixed === "flex-flow") {
+              notHack = true;
+            }
+            if (decl.prop === "-webkit-box-orient") {
+              let hacks = { "flex-direction": true, "flex-flow": true };
+              if (!decl.parent.some((j) => hacks[j.prop])) return;
+            }
+            if (notHack && !this.withHackValue(decl)) {
+              if (decl.raw("before").includes("\n")) {
+                this.reduceSpaces(decl);
+              }
+              rule.removeChild(i);
+              return;
+            }
+          }
+          for (let checker of this.prefixes.values("remove", unprefixed)) {
+            if (!checker.check) continue;
+            if (!checker.check(decl.value)) continue;
+            unprefixed = checker.unprefixed;
+            let notHack = this.prefixes.group(decl).down((other) => {
+              return other.value.includes(unprefixed);
+            });
+            if (notHack) {
+              rule.removeChild(i);
+              return;
+            }
+          }
+        });
+      }
+      /**
+       * Some rare old values, which is not in standard
+       */
+      withHackValue(decl) {
+        return decl.prop === "-webkit-background-clip" && decl.value === "text" || // Do not remove -webkit-box-orient when -webkit-line-clamp is present.
+        // https://github.com/postcss/autoprefixer/issues/1510
+        decl.prop === "-webkit-box-orient" && decl.parent.some((d) => d.prop === "-webkit-line-clamp");
+      }
+    };
+    module2.exports = Processor;
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-featurequeries.js
+var require_css_featurequeries = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-featurequeries.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B C vC wC xC yC AC cC zC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS Feature Queries", D: true };
+  }
+});
+
+// node_modules/autoprefixer/lib/brackets.js
+var require_brackets = __commonJS({
+  "node_modules/autoprefixer/lib/brackets.js"(exports2, module2) {
+    function last(array) {
+      return array[array.length - 1];
+    }
+    var brackets = {
+      /**
+       * Parse string to nodes tree
+       */
+      parse(str) {
+        let current = [""];
+        let stack = [current];
+        for (let sym of str) {
+          if (sym === "(") {
+            current = [""];
+            last(stack).push(current);
+            stack.push(current);
+            continue;
+          }
+          if (sym === ")") {
+            stack.pop();
+            current = last(stack);
+            current.push("");
+            continue;
+          }
+          current[current.length - 1] += sym;
+        }
+        return stack[0];
+      },
+      /**
+       * Generate output string by nodes tree
+       */
+      stringify(ast) {
+        let result = "";
+        for (let i of ast) {
+          if (typeof i === "object") {
+            result += `(${brackets.stringify(i)})`;
+            continue;
+          }
+          result += i;
+        }
+        return result;
+      }
+    };
+    module2.exports = brackets;
+  }
+});
+
+// node_modules/autoprefixer/lib/supports.js
+var require_supports = __commonJS({
+  "node_modules/autoprefixer/lib/supports.js"(exports2, module2) {
+    var featureQueries = require_css_featurequeries();
+    var feature = require_feature();
+    var { parse } = require_postcss();
+    var Browsers = require_browsers3();
+    var brackets = require_brackets();
+    var Value = require_value();
+    var utils = require_utils();
+    var data = feature(featureQueries);
+    var supported = [];
+    for (let browser in data.stats) {
+      let versions = data.stats[browser];
+      for (let version in versions) {
+        let support = versions[version];
+        if (/y/.test(support)) {
+          supported.push(browser + " " + version);
+        }
+      }
+    }
+    var Supports = class {
+      constructor(Prefixes, all) {
+        this.Prefixes = Prefixes;
+        this.all = all;
+      }
+      /**
+       * Add prefixes
+       */
+      add(nodes, all) {
+        return nodes.map((i) => {
+          if (this.isProp(i)) {
+            let prefixed = this.prefixed(i[0]);
+            if (prefixed.length > 1) {
+              return this.convert(prefixed);
+            }
+            return i;
+          }
+          if (typeof i === "object") {
+            return this.add(i, all);
+          }
+          return i;
+        });
+      }
+      /**
+       * Clean brackets with one child
+       */
+      cleanBrackets(nodes) {
+        return nodes.map((i) => {
+          if (typeof i !== "object") {
+            return i;
+          }
+          if (i.length === 1 && typeof i[0] === "object") {
+            return this.cleanBrackets(i[0]);
+          }
+          return this.cleanBrackets(i);
+        });
+      }
+      /**
+       * Add " or " between properties and convert it to brackets format
+       */
+      convert(progress) {
+        let result = [""];
+        for (let i of progress) {
+          result.push([`${i.prop}: ${i.value}`]);
+          result.push(" or ");
+        }
+        result[result.length - 1] = "";
+        return result;
+      }
+      /**
+       * Check global options
+       */
+      disabled(node) {
+        if (!this.all.options.grid) {
+          if (node.prop === "display" && node.value.includes("grid")) {
+            return true;
+          }
+          if (node.prop.includes("grid") || node.prop === "justify-items") {
+            return true;
+          }
+        }
+        if (this.all.options.flexbox === false) {
+          if (node.prop === "display" && node.value.includes("flex")) {
+            return true;
+          }
+          let other = ["order", "justify-content", "align-items", "align-content"];
+          if (node.prop.includes("flex") || other.includes(node.prop)) {
+            return true;
+          }
+        }
+        return false;
+      }
+      /**
+       * Return true if prefixed property has no unprefixed
+       */
+      isHack(all, unprefixed) {
+        let check = new RegExp(`(\\(|\\s)${utils.escapeRegexp(unprefixed)}:`);
+        return !check.test(all);
+      }
+      /**
+       * Return true if brackets node is "not" word
+       */
+      isNot(node) {
+        return typeof node === "string" && /not\s*/i.test(node);
+      }
+      /**
+       * Return true if brackets node is "or" word
+       */
+      isOr(node) {
+        return typeof node === "string" && /\s*or\s*/i.test(node);
+      }
+      /**
+       * Return true if brackets node is (prop: value)
+       */
+      isProp(node) {
+        return typeof node === "object" && node.length === 1 && typeof node[0] === "string";
+      }
+      /**
+       * Compress value functions into a string nodes
+       */
+      normalize(nodes) {
+        if (typeof nodes !== "object") {
+          return nodes;
+        }
+        nodes = nodes.filter((i) => i !== "");
+        if (typeof nodes[0] === "string") {
+          let firstNode = nodes[0].trim();
+          if (firstNode.includes(":") || firstNode === "selector" || firstNode === "not selector") {
+            return [brackets.stringify(nodes)];
+          }
+        }
+        return nodes.map((i) => this.normalize(i));
+      }
+      /**
+       * Parse string into declaration property and value
+       */
+      parse(str) {
+        let parts = str.split(":");
+        let prop = parts[0];
+        let value = parts[1];
+        if (!value) value = "";
+        return [prop.trim(), value.trim()];
+      }
+      /**
+       * Return array of Declaration with all necessary prefixes
+       */
+      prefixed(str) {
+        let rule = this.virtual(str);
+        if (this.disabled(rule.first)) {
+          return rule.nodes;
+        }
+        let result = { warn: () => null };
+        let prefixer = this.prefixer().add[rule.first.prop];
+        prefixer && prefixer.process && prefixer.process(rule.first, result);
+        for (let decl of rule.nodes) {
+          for (let value of this.prefixer().values("add", rule.first.prop)) {
+            value.process(decl);
+          }
+          Value.save(this.all, decl);
+        }
+        return rule.nodes;
+      }
+      /**
+       * Return prefixer only with @supports supported browsers
+       */
+      prefixer() {
+        if (this.prefixerCache) {
+          return this.prefixerCache;
+        }
+        let filtered = this.all.browsers.selected.filter((i) => {
+          return supported.includes(i);
+        });
+        let browsers = new Browsers(
+          this.all.browsers.data,
+          filtered,
+          this.all.options
+        );
+        this.prefixerCache = new this.Prefixes(
+          this.all.data,
+          browsers,
+          this.all.options
+        );
+        return this.prefixerCache;
+      }
+      /**
+       * Add prefixed declaration
+       */
+      process(rule) {
+        let ast = brackets.parse(rule.params);
+        ast = this.normalize(ast);
+        ast = this.remove(ast, rule.params);
+        ast = this.add(ast, rule.params);
+        ast = this.cleanBrackets(ast);
+        rule.params = brackets.stringify(ast);
+      }
+      /**
+       * Remove all unnecessary prefixes
+       */
+      remove(nodes, all) {
+        let i = 0;
+        while (i < nodes.length) {
+          if (!this.isNot(nodes[i - 1]) && this.isProp(nodes[i]) && this.isOr(nodes[i + 1])) {
+            if (this.toRemove(nodes[i][0], all)) {
+              nodes.splice(i, 2);
+              continue;
+            }
+            i += 2;
+            continue;
+          }
+          if (typeof nodes[i] === "object") {
+            nodes[i] = this.remove(nodes[i], all);
+          }
+          i += 1;
+        }
+        return nodes;
+      }
+      /**
+       * Return true if we need to remove node
+       */
+      toRemove(str, all) {
+        let [prop, value] = this.parse(str);
+        let unprefixed = this.all.unprefixed(prop);
+        let cleaner = this.all.cleaner();
+        if (cleaner.remove[prop] && cleaner.remove[prop].remove && !this.isHack(all, unprefixed)) {
+          return true;
+        }
+        for (let checker of cleaner.values("remove", unprefixed)) {
+          if (checker.check(value)) {
+            return true;
+          }
+        }
+        return false;
+      }
+      /**
+       * Create virtual rule to process it by prefixer
+       */
+      virtual(str) {
+        let [prop, value] = this.parse(str);
+        let rule = parse("a{}").first;
+        rule.append({ prop, raws: { before: "" }, value });
+        return rule;
+      }
+    };
+    module2.exports = Supports;
+  }
+});
+
+// node_modules/autoprefixer/lib/old-selector.js
+var require_old_selector = __commonJS({
+  "node_modules/autoprefixer/lib/old-selector.js"(exports2, module2) {
+    var OldSelector = class {
+      constructor(selector, prefix) {
+        this.prefix = prefix;
+        this.prefixed = selector.prefixed(this.prefix);
+        this.regexp = selector.regexp(this.prefix);
+        this.prefixeds = selector.possible().map((x) => [selector.prefixed(x), selector.regexp(x)]);
+        this.unprefixed = selector.name;
+        this.nameRegexp = selector.regexp();
+      }
+      /**
+       * Does rule contain an unnecessary prefixed selector
+       */
+      check(rule) {
+        if (!rule.selector.includes(this.prefixed)) {
+          return false;
+        }
+        if (!rule.selector.match(this.regexp)) {
+          return false;
+        }
+        if (this.isHack(rule)) {
+          return false;
+        }
+        return true;
+      }
+      /**
+       * Is rule a hack without unprefixed version bottom
+       */
+      isHack(rule) {
+        let index = rule.parent.index(rule) + 1;
+        let rules = rule.parent.nodes;
+        while (index < rules.length) {
+          let before = rules[index].selector;
+          if (!before) {
+            return true;
+          }
+          if (before.includes(this.unprefixed) && before.match(this.nameRegexp)) {
+            return false;
+          }
+          let some = false;
+          for (let [string, regexp] of this.prefixeds) {
+            if (before.includes(string) && before.match(regexp)) {
+              some = true;
+              break;
+            }
+          }
+          if (!some) {
+            return true;
+          }
+          index += 1;
+        }
+        return true;
+      }
+    };
+    module2.exports = OldSelector;
+  }
+});
+
+// node_modules/autoprefixer/lib/selector.js
+var require_selector = __commonJS({
+  "node_modules/autoprefixer/lib/selector.js"(exports2, module2) {
+    var { list } = require_postcss();
+    var OldSelector = require_old_selector();
+    var Prefixer = require_prefixer();
+    var Browsers = require_browsers3();
+    var utils = require_utils();
+    var Selector = class extends Prefixer {
+      constructor(name, prefixes, all) {
+        super(name, prefixes, all);
+        this.regexpCache = /* @__PURE__ */ new Map();
+      }
+      /**
+       * Clone and add prefixes for at-rule
+       */
+      add(rule, prefix) {
+        let prefixeds = this.prefixeds(rule);
+        if (this.already(rule, prefixeds, prefix)) {
+          return;
+        }
+        let cloned = this.clone(rule, { selector: prefixeds[this.name][prefix] });
+        rule.parent.insertBefore(rule, cloned);
+      }
+      /**
+       * Is rule already prefixed before
+       */
+      already(rule, prefixeds, prefix) {
+        let index = rule.parent.index(rule) - 1;
+        while (index >= 0) {
+          let before = rule.parent.nodes[index];
+          if (before.type !== "rule") {
+            return false;
+          }
+          let some = false;
+          for (let key in prefixeds[this.name]) {
+            let prefixed = prefixeds[this.name][key];
+            if (before.selector === prefixed) {
+              if (prefix === key) {
+                return true;
+              } else {
+                some = true;
+                break;
+              }
+            }
+          }
+          if (!some) {
+            return false;
+          }
+          index -= 1;
+        }
+        return false;
+      }
+      /**
+       * Is rule selectors need to be prefixed
+       */
+      check(rule) {
+        if (rule.selector.includes(this.name)) {
+          return !!rule.selector.match(this.regexp());
+        }
+        return false;
+      }
+      /**
+       * Return function to fast find prefixed selector
+       */
+      old(prefix) {
+        return new OldSelector(this, prefix);
+      }
+      /**
+       * All possible prefixes
+       */
+      possible() {
+        return Browsers.prefixes();
+      }
+      /**
+       * Return prefixed version of selector
+       */
+      prefixed(prefix) {
+        return this.name.replace(/^(\W*)/, `$1${prefix}`);
+      }
+      /**
+       * Return all possible selector prefixes
+       */
+      prefixeds(rule) {
+        if (rule._autoprefixerPrefixeds) {
+          if (rule._autoprefixerPrefixeds[this.name]) {
+            return rule._autoprefixerPrefixeds;
+          }
+        } else {
+          rule._autoprefixerPrefixeds = {};
+        }
+        let prefixeds = {};
+        if (rule.selector.includes(",")) {
+          let ruleParts = list.comma(rule.selector);
+          let toProcess = ruleParts.filter((el) => el.includes(this.name));
+          for (let prefix of this.possible()) {
+            prefixeds[prefix] = toProcess.map((el) => this.replace(el, prefix)).join(", ");
+          }
+        } else {
+          for (let prefix of this.possible()) {
+            prefixeds[prefix] = this.replace(rule.selector, prefix);
+          }
+        }
+        rule._autoprefixerPrefixeds[this.name] = prefixeds;
+        return rule._autoprefixerPrefixeds;
+      }
+      /**
+       * Lazy loadRegExp for name
+       */
+      regexp(prefix) {
+        if (!this.regexpCache.has(prefix)) {
+          let name = prefix ? this.prefixed(prefix) : this.name;
+          this.regexpCache.set(
+            prefix,
+            new RegExp(`(^|[^:"'=])${utils.escapeRegexp(name)}`, "gi")
+          );
+        }
+        return this.regexpCache.get(prefix);
+      }
+      /**
+       * Replace selectors by prefixed one
+       */
+      replace(selector, prefix) {
+        return selector.replace(this.regexp(), `$1${this.prefixed(prefix)}`);
+      }
+    };
+    module2.exports = Selector;
+  }
+});
+
+// node_modules/autoprefixer/lib/at-rule.js
+var require_at_rule2 = __commonJS({
+  "node_modules/autoprefixer/lib/at-rule.js"(exports2, module2) {
+    var Prefixer = require_prefixer();
+    var AtRule = class extends Prefixer {
+      /**
+       * Clone and add prefixes for at-rule
+       */
+      add(rule, prefix) {
+        let prefixed = prefix + rule.name;
+        let already = rule.parent.some(
+          (i) => i.name === prefixed && i.params === rule.params
+        );
+        if (already) {
+          return void 0;
+        }
+        let cloned = this.clone(rule, { name: prefixed });
+        return rule.parent.insertBefore(rule, cloned);
+      }
+      /**
+       * Clone node with prefixes
+       */
+      process(node) {
+        let parent = this.parentPrefix(node);
+        for (let prefix of this.prefixes) {
+          if (!parent || parent === prefix) {
+            this.add(node, prefix);
+          }
+        }
+      }
+    };
+    module2.exports = AtRule;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/fullscreen.js
+var require_fullscreen = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/fullscreen.js"(exports2, module2) {
+    var Selector = require_selector();
+    var Fullscreen = class extends Selector {
+      /**
+       * Return different selectors depend on prefix
+       */
+      prefixed(prefix) {
+        if (prefix === "-webkit-") {
+          return ":-webkit-full-screen";
+        }
+        if (prefix === "-moz-") {
+          return ":-moz-full-screen";
+        }
+        return `:${prefix}fullscreen`;
+      }
+    };
+    Fullscreen.names = [":fullscreen"];
+    module2.exports = Fullscreen;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/placeholder.js
+var require_placeholder = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/placeholder.js"(exports2, module2) {
+    var Selector = require_selector();
+    var Placeholder = class extends Selector {
+      /**
+       * Add old mozilla to possible prefixes
+       */
+      possible() {
+        return super.possible().concat(["-moz- old", "-ms- old"]);
+      }
+      /**
+       * Return different selectors depend on prefix
+       */
+      prefixed(prefix) {
+        if (prefix === "-webkit-") {
+          return "::-webkit-input-placeholder";
+        }
+        if (prefix === "-ms-") {
+          return "::-ms-input-placeholder";
+        }
+        if (prefix === "-ms- old") {
+          return ":-ms-input-placeholder";
+        }
+        if (prefix === "-moz- old") {
+          return ":-moz-placeholder";
+        }
+        return `::${prefix}placeholder`;
+      }
+    };
+    Placeholder.names = ["::placeholder"];
+    module2.exports = Placeholder;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/placeholder-shown.js
+var require_placeholder_shown = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/placeholder-shown.js"(exports2, module2) {
+    var Selector = require_selector();
+    var PlaceholderShown = class extends Selector {
+      /**
+       * Return different selectors depend on prefix
+       */
+      prefixed(prefix) {
+        if (prefix === "-ms-") {
+          return ":-ms-input-placeholder";
+        }
+        return `:${prefix}placeholder-shown`;
+      }
+    };
+    PlaceholderShown.names = [":placeholder-shown"];
+    module2.exports = PlaceholderShown;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/file-selector-button.js
+var require_file_selector_button = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/file-selector-button.js"(exports2, module2) {
+    var Selector = require_selector();
+    var utils = require_utils();
+    var FileSelectorButton = class extends Selector {
+      constructor(name, prefixes, all) {
+        super(name, prefixes, all);
+        if (this.prefixes) {
+          this.prefixes = utils.uniq(this.prefixes.map(() => "-webkit-"));
+        }
+      }
+      /**
+       * Return different selectors depend on prefix
+       */
+      prefixed(prefix) {
+        if (prefix === "-webkit-") {
+          return "::-webkit-file-upload-button";
+        }
+        return `::${prefix}file-selector-button`;
+      }
+    };
+    FileSelectorButton.names = ["::file-selector-button"];
+    module2.exports = FileSelectorButton;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/flex-spec.js
+var require_flex_spec = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/flex-spec.js"(exports2, module2) {
+    module2.exports = function(prefix) {
+      let spec;
+      if (prefix === "-webkit- 2009" || prefix === "-moz-") {
+        spec = 2009;
+      } else if (prefix === "-ms-") {
+        spec = 2012;
+      } else if (prefix === "-webkit-") {
+        spec = "final";
+      }
+      if (prefix === "-webkit- 2009") {
+        prefix = "-webkit-";
+      }
+      return [spec, prefix];
+    };
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/flex.js
+var require_flex = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/flex.js"(exports2, module2) {
+    var list = require_postcss().list;
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var Flex = class _Flex extends Declaration {
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "flex";
+      }
+      /**
+       * Change property name for 2009 spec
+       */
+      prefixed(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2009) {
+          return prefix + "box-flex";
+        }
+        return super.prefixed(prop, prefix);
+      }
+      /**
+       * Spec 2009 supports only first argument
+       * Spec 2012 disallows unitless basis
+       */
+      set(decl, prefix) {
+        let spec = flexSpec(prefix)[0];
+        if (spec === 2009) {
+          decl.value = list.space(decl.value)[0];
+          decl.value = _Flex.oldValues[decl.value] || decl.value;
+          return super.set(decl, prefix);
+        }
+        if (spec === 2012) {
+          let components = list.space(decl.value);
+          if (components.length === 3 && components[2] === "0") {
+            decl.value = components.slice(0, 2).concat("0px").join(" ");
+          }
+        }
+        return super.set(decl, prefix);
+      }
+    };
+    Flex.names = ["flex", "box-flex"];
+    Flex.oldValues = {
+      auto: "1",
+      none: "0"
+    };
+    module2.exports = Flex;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/order.js
+var require_order = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/order.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var Order = class extends Declaration {
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "order";
+      }
+      /**
+       * Change property name for 2009 and 2012 specs
+       */
+      prefixed(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2009) {
+          return prefix + "box-ordinal-group";
+        }
+        if (spec === 2012) {
+          return prefix + "flex-order";
+        }
+        return super.prefixed(prop, prefix);
+      }
+      /**
+       * Fix value for 2009 spec
+       */
+      set(decl, prefix) {
+        let spec = flexSpec(prefix)[0];
+        if (spec === 2009 && /\d/.test(decl.value)) {
+          decl.value = (parseInt(decl.value) + 1).toString();
+          return super.set(decl, prefix);
+        }
+        return super.set(decl, prefix);
+      }
+    };
+    Order.names = ["order", "flex-order", "box-ordinal-group"];
+    module2.exports = Order;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/filter.js
+var require_filter = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/filter.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var Filter = class extends Declaration {
+      /**
+       * Check is it Internet Explorer filter
+       */
+      check(decl) {
+        let v = decl.value;
+        return !v.toLowerCase().includes("alpha(") && !v.includes("DXImageTransform.Microsoft") && !v.includes("data:image/svg+xml");
+      }
+    };
+    Filter.names = ["filter"];
+    module2.exports = Filter;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-end.js
+var require_grid_end = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-end.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var { isPureNumber } = require_utils();
+    var GridEnd = class extends Declaration {
+      /**
+       * Change repeating syntax for IE
+       */
+      insert(decl, prefix, prefixes, result) {
+        if (prefix !== "-ms-") return super.insert(decl, prefix, prefixes);
+        let clonedDecl = this.clone(decl);
+        let startProp = decl.prop.replace(/end$/, "start");
+        let spanProp = prefix + decl.prop.replace(/end$/, "span");
+        if (decl.parent.some((i) => i.prop === spanProp)) {
+          return void 0;
+        }
+        clonedDecl.prop = spanProp;
+        if (decl.value.includes("span")) {
+          clonedDecl.value = decl.value.replace(/span\s/i, "");
+        } else {
+          let startDecl;
+          decl.parent.walkDecls(startProp, (d) => {
+            startDecl = d;
+          });
+          if (startDecl) {
+            if (isPureNumber(startDecl.value)) {
+              let value = Number(decl.value) - Number(startDecl.value) + "";
+              clonedDecl.value = value;
+            } else {
+              return void 0;
+            }
+          } else {
+            decl.warn(
+              result,
+              `Can not prefix ${decl.prop} (${startProp} is not found)`
+            );
+          }
+        }
+        decl.cloneBefore(clonedDecl);
+        return void 0;
+      }
+    };
+    GridEnd.names = ["grid-row-end", "grid-column-end"];
+    module2.exports = GridEnd;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/animation.js
+var require_animation = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/animation.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var Animation = class extends Declaration {
+      /**
+       * Don’t add prefixes for modern values.
+       */
+      check(decl) {
+        return !decl.value.split(/\s+/).some((i) => {
+          let lower = i.toLowerCase();
+          return lower === "reverse" || lower === "alternate-reverse";
+        });
+      }
+    };
+    Animation.names = ["animation", "animation-direction"];
+    module2.exports = Animation;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/flex-flow.js
+var require_flex_flow = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/flex-flow.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var FlexFlow = class extends Declaration {
+      /**
+       * Use two properties for 2009 spec
+       */
+      insert(decl, prefix, prefixes) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec !== 2009) {
+          return super.insert(decl, prefix, prefixes);
+        }
+        let values = decl.value.split(/\s+/).filter((i) => i !== "wrap" && i !== "nowrap" && "wrap-reverse");
+        if (values.length === 0) {
+          return void 0;
+        }
+        let already = decl.parent.some(
+          (i) => i.prop === prefix + "box-orient" || i.prop === prefix + "box-direction"
+        );
+        if (already) {
+          return void 0;
+        }
+        let value = values[0];
+        let orient = value.includes("row") ? "horizontal" : "vertical";
+        let dir = value.includes("reverse") ? "reverse" : "normal";
+        let cloned = this.clone(decl);
+        cloned.prop = prefix + "box-orient";
+        cloned.value = orient;
+        if (this.needCascade(decl)) {
+          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
+        }
+        decl.parent.insertBefore(decl, cloned);
+        cloned = this.clone(decl);
+        cloned.prop = prefix + "box-direction";
+        cloned.value = dir;
+        if (this.needCascade(decl)) {
+          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
+        }
+        return decl.parent.insertBefore(decl, cloned);
+      }
+    };
+    FlexFlow.names = ["flex-flow", "box-direction", "box-orient"];
+    module2.exports = FlexFlow;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/flex-grow.js
+var require_flex_grow = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/flex-grow.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var Flex = class extends Declaration {
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "flex";
+      }
+      /**
+       * Return flex property for 2009 and 2012 specs
+       */
+      prefixed(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2009) {
+          return prefix + "box-flex";
+        }
+        if (spec === 2012) {
+          return prefix + "flex-positive";
+        }
+        return super.prefixed(prop, prefix);
+      }
+    };
+    Flex.names = ["flex-grow", "flex-positive"];
+    module2.exports = Flex;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/flex-wrap.js
+var require_flex_wrap = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/flex-wrap.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var FlexWrap = class extends Declaration {
+      /**
+       * Don't add prefix for 2009 spec
+       */
+      set(decl, prefix) {
+        let spec = flexSpec(prefix)[0];
+        if (spec !== 2009) {
+          return super.set(decl, prefix);
+        }
+        return void 0;
+      }
+    };
+    FlexWrap.names = ["flex-wrap"];
+    module2.exports = FlexWrap;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-area.js
+var require_grid_area = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-area.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var utils = require_grid_utils();
+    var GridArea = class extends Declaration {
+      /**
+       * Translate grid-area to separate -ms- prefixed properties
+       */
+      insert(decl, prefix, prefixes, result) {
+        if (prefix !== "-ms-") return super.insert(decl, prefix, prefixes);
+        let values = utils.parse(decl);
+        let [rowStart, rowSpan] = utils.translate(values, 0, 2);
+        let [columnStart, columnSpan] = utils.translate(values, 1, 3);
+        [
+          ["grid-row", rowStart],
+          ["grid-row-span", rowSpan],
+          ["grid-column", columnStart],
+          ["grid-column-span", columnSpan]
+        ].forEach(([prop, value]) => {
+          utils.insertDecl(decl, prop, value);
+        });
+        utils.warnTemplateSelectorNotFound(decl, result);
+        utils.warnIfGridRowColumnExists(decl, result);
+        return void 0;
+      }
+    };
+    GridArea.names = ["grid-area"];
+    module2.exports = GridArea;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/place-self.js
+var require_place_self = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/place-self.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var utils = require_grid_utils();
+    var PlaceSelf = class extends Declaration {
+      /**
+       * Translate place-self to separate -ms- prefixed properties
+       */
+      insert(decl, prefix, prefixes) {
+        if (prefix !== "-ms-") return super.insert(decl, prefix, prefixes);
+        if (decl.parent.some((i) => i.prop === "-ms-grid-row-align")) {
+          return void 0;
+        }
+        let [[first, second]] = utils.parse(decl);
+        if (second) {
+          utils.insertDecl(decl, "grid-row-align", first);
+          utils.insertDecl(decl, "grid-column-align", second);
+        } else {
+          utils.insertDecl(decl, "grid-row-align", first);
+          utils.insertDecl(decl, "grid-column-align", first);
+        }
+        return void 0;
+      }
+    };
+    PlaceSelf.names = ["place-self"];
+    module2.exports = PlaceSelf;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-start.js
+var require_grid_start = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-start.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var GridStart = class extends Declaration {
+      /**
+       * Do not add prefix for unsupported value in IE
+       */
+      check(decl) {
+        let value = decl.value;
+        return !value.includes("/") && !value.includes("span");
+      }
+      /**
+       * Return a final spec property
+       */
+      normalize(prop) {
+        return prop.replace("-start", "");
+      }
+      /**
+       * Change property name for IE
+       */
+      prefixed(prop, prefix) {
+        let result = super.prefixed(prop, prefix);
+        if (prefix === "-ms-") {
+          result = result.replace("-start", "");
+        }
+        return result;
+      }
+    };
+    GridStart.names = ["grid-row-start", "grid-column-start"];
+    module2.exports = GridStart;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/align-self.js
+var require_align_self = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/align-self.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var AlignSelf = class _AlignSelf extends Declaration {
+      check(decl) {
+        return decl.parent && !decl.parent.some((i) => {
+          return i.prop && i.prop.startsWith("grid-");
+        });
+      }
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "align-self";
+      }
+      /**
+       * Change property name for 2012 specs
+       */
+      prefixed(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2012) {
+          return prefix + "flex-item-align";
+        }
+        return super.prefixed(prop, prefix);
+      }
+      /**
+       * Change value for 2012 spec and ignore prefix for 2009
+       */
+      set(decl, prefix) {
+        let spec = flexSpec(prefix)[0];
+        if (spec === 2012) {
+          decl.value = _AlignSelf.oldValues[decl.value] || decl.value;
+          return super.set(decl, prefix);
+        }
+        if (spec === "final") {
+          return super.set(decl, prefix);
+        }
+        return void 0;
+      }
+    };
+    AlignSelf.names = ["align-self", "flex-item-align"];
+    AlignSelf.oldValues = {
+      "flex-end": "end",
+      "flex-start": "start"
+    };
+    module2.exports = AlignSelf;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/appearance.js
+var require_appearance = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/appearance.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var utils = require_utils();
+    var Appearance = class extends Declaration {
+      constructor(name, prefixes, all) {
+        super(name, prefixes, all);
+        if (this.prefixes) {
+          this.prefixes = utils.uniq(
+            this.prefixes.map((i) => {
+              if (i === "-ms-") {
+                return "-webkit-";
+              }
+              return i;
+            })
+          );
+        }
+      }
+    };
+    Appearance.names = ["appearance"];
+    module2.exports = Appearance;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/flex-basis.js
+var require_flex_basis = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/flex-basis.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var FlexBasis = class extends Declaration {
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "flex-basis";
+      }
+      /**
+       * Return flex property for 2012 spec
+       */
+      prefixed(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2012) {
+          return prefix + "flex-preferred-size";
+        }
+        return super.prefixed(prop, prefix);
+      }
+      /**
+       * Ignore 2009 spec and use flex property for 2012
+       */
+      set(decl, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2012 || spec === "final") {
+          return super.set(decl, prefix);
+        }
+        return void 0;
+      }
+    };
+    FlexBasis.names = ["flex-basis", "flex-preferred-size"];
+    module2.exports = FlexBasis;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/mask-border.js
+var require_mask_border = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/mask-border.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var MaskBorder = class extends Declaration {
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return this.name.replace("box-image", "border");
+      }
+      /**
+       * Return flex property for 2012 spec
+       */
+      prefixed(prop, prefix) {
+        let result = super.prefixed(prop, prefix);
+        if (prefix === "-webkit-") {
+          result = result.replace("border", "box-image");
+        }
+        return result;
+      }
+    };
+    MaskBorder.names = [
+      "mask-border",
+      "mask-border-source",
+      "mask-border-slice",
+      "mask-border-width",
+      "mask-border-outset",
+      "mask-border-repeat",
+      "mask-box-image",
+      "mask-box-image-source",
+      "mask-box-image-slice",
+      "mask-box-image-width",
+      "mask-box-image-outset",
+      "mask-box-image-repeat"
+    ];
+    module2.exports = MaskBorder;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/mask-composite.js
+var require_mask_composite = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/mask-composite.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var MaskComposite = class _MaskComposite extends Declaration {
+      /**
+       * Prefix mask-composite for webkit
+       */
+      insert(decl, prefix, prefixes) {
+        let isCompositeProp = decl.prop === "mask-composite";
+        let compositeValues;
+        if (isCompositeProp) {
+          compositeValues = decl.value.split(",");
+        } else {
+          compositeValues = decl.value.match(_MaskComposite.regexp) || [];
+        }
+        compositeValues = compositeValues.map((el) => el.trim()).filter((el) => el);
+        let hasCompositeValues = compositeValues.length;
+        let compositeDecl;
+        if (hasCompositeValues) {
+          compositeDecl = this.clone(decl);
+          compositeDecl.value = compositeValues.map((value) => _MaskComposite.oldValues[value] || value).join(", ");
+          if (compositeValues.includes("intersect")) {
+            compositeDecl.value += ", xor";
+          }
+          compositeDecl.prop = prefix + "mask-composite";
+        }
+        if (isCompositeProp) {
+          if (!hasCompositeValues) {
+            return void 0;
+          }
+          if (this.needCascade(decl)) {
+            compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix);
+          }
+          return decl.parent.insertBefore(decl, compositeDecl);
+        }
+        let cloned = this.clone(decl);
+        cloned.prop = prefix + cloned.prop;
+        if (hasCompositeValues) {
+          cloned.value = cloned.value.replace(_MaskComposite.regexp, "");
+        }
+        if (this.needCascade(decl)) {
+          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
+        }
+        decl.parent.insertBefore(decl, cloned);
+        if (!hasCompositeValues) {
+          return decl;
+        }
+        if (this.needCascade(decl)) {
+          compositeDecl.raws.before = this.calcBefore(prefixes, decl, prefix);
+        }
+        return decl.parent.insertBefore(decl, compositeDecl);
+      }
+    };
+    MaskComposite.names = ["mask", "mask-composite"];
+    MaskComposite.oldValues = {
+      add: "source-over",
+      exclude: "xor",
+      intersect: "source-in",
+      subtract: "source-out"
+    };
+    MaskComposite.regexp = new RegExp(
+      `\\s+(${Object.keys(MaskComposite.oldValues).join(
+        "|"
+      )})\\b(?!\\))\\s*(?=[,])`,
+      "ig"
+    );
+    module2.exports = MaskComposite;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/align-items.js
+var require_align_items = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/align-items.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var AlignItems = class _AlignItems extends Declaration {
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "align-items";
+      }
+      /**
+       * Change property name for 2009 and 2012 specs
+       */
+      prefixed(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2009) {
+          return prefix + "box-align";
+        }
+        if (spec === 2012) {
+          return prefix + "flex-align";
+        }
+        return super.prefixed(prop, prefix);
+      }
+      /**
+       * Change value for 2009 and 2012 specs
+       */
+      set(decl, prefix) {
+        let spec = flexSpec(prefix)[0];
+        if (spec === 2009 || spec === 2012) {
+          decl.value = _AlignItems.oldValues[decl.value] || decl.value;
+        }
+        return super.set(decl, prefix);
+      }
+    };
+    AlignItems.names = ["align-items", "flex-align", "box-align"];
+    AlignItems.oldValues = {
+      "flex-end": "end",
+      "flex-start": "start"
+    };
+    module2.exports = AlignItems;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/user-select.js
+var require_user_select = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/user-select.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var UserSelect = class extends Declaration {
+      /**
+       * Avoid prefixing all in IE
+       */
+      insert(decl, prefix, prefixes) {
+        if (decl.value === "all" && prefix === "-ms-") {
+          return void 0;
+        } else if (decl.value === "contain" && (prefix === "-moz-" || prefix === "-webkit-")) {
+          return void 0;
+        } else {
+          return super.insert(decl, prefix, prefixes);
+        }
+      }
+      /**
+       * Change prefixed value for IE
+       */
+      set(decl, prefix) {
+        if (prefix === "-ms-" && decl.value === "contain") {
+          decl.value = "element";
+        }
+        return super.set(decl, prefix);
+      }
+    };
+    UserSelect.names = ["user-select"];
+    module2.exports = UserSelect;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/flex-shrink.js
+var require_flex_shrink = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/flex-shrink.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var FlexShrink = class extends Declaration {
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "flex-shrink";
+      }
+      /**
+       * Return flex property for 2012 spec
+       */
+      prefixed(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2012) {
+          return prefix + "flex-negative";
+        }
+        return super.prefixed(prop, prefix);
+      }
+      /**
+       * Ignore 2009 spec and use flex property for 2012
+       */
+      set(decl, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2012 || spec === "final") {
+          return super.set(decl, prefix);
+        }
+        return void 0;
+      }
+    };
+    FlexShrink.names = ["flex-shrink", "flex-negative"];
+    module2.exports = FlexShrink;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/break-props.js
+var require_break_props = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/break-props.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var BreakProps = class extends Declaration {
+      /**
+       * Don’t prefix some values
+       */
+      insert(decl, prefix, prefixes) {
+        if (decl.prop !== "break-inside") {
+          return super.insert(decl, prefix, prefixes);
+        }
+        if (/region/i.test(decl.value) || /page/i.test(decl.value)) {
+          return void 0;
+        }
+        return super.insert(decl, prefix, prefixes);
+      }
+      /**
+       * Return property name by final spec
+       */
+      normalize(prop) {
+        if (prop.includes("inside")) {
+          return "break-inside";
+        }
+        if (prop.includes("before")) {
+          return "break-before";
+        }
+        return "break-after";
+      }
+      /**
+       * Change name for -webkit- and -moz- prefix
+       */
+      prefixed(prop, prefix) {
+        return `${prefix}column-${prop}`;
+      }
+      /**
+       * Change prefixed value for avoid-column and avoid-page
+       */
+      set(decl, prefix) {
+        if (decl.prop === "break-inside" && decl.value === "avoid-column" || decl.value === "avoid-page") {
+          decl.value = "avoid";
+        }
+        return super.set(decl, prefix);
+      }
+    };
+    BreakProps.names = [
+      "break-inside",
+      "page-break-inside",
+      "column-break-inside",
+      "break-before",
+      "page-break-before",
+      "column-break-before",
+      "break-after",
+      "page-break-after",
+      "column-break-after"
+    ];
+    module2.exports = BreakProps;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/writing-mode.js
+var require_writing_mode = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/writing-mode.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var WritingMode = class _WritingMode extends Declaration {
+      insert(decl, prefix, prefixes) {
+        if (prefix === "-ms-") {
+          let cloned = this.set(this.clone(decl), prefix);
+          if (this.needCascade(decl)) {
+            cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
+          }
+          let direction = "ltr";
+          decl.parent.nodes.forEach((i) => {
+            if (i.prop === "direction") {
+              if (i.value === "rtl" || i.value === "ltr") direction = i.value;
+            }
+          });
+          cloned.value = _WritingMode.msValues[direction][decl.value] || decl.value;
+          return decl.parent.insertBefore(decl, cloned);
+        }
+        return super.insert(decl, prefix, prefixes);
+      }
+    };
+    WritingMode.names = ["writing-mode"];
+    WritingMode.msValues = {
+      ltr: {
+        "horizontal-tb": "lr-tb",
+        "vertical-lr": "tb-lr",
+        "vertical-rl": "tb-rl"
+      },
+      rtl: {
+        "horizontal-tb": "rl-tb",
+        "vertical-lr": "bt-lr",
+        "vertical-rl": "bt-rl"
+      }
+    };
+    module2.exports = WritingMode;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/border-image.js
+var require_border_image = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/border-image.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var BorderImage = class extends Declaration {
+      /**
+       * Remove fill parameter for prefixed declarations
+       */
+      set(decl, prefix) {
+        decl.value = decl.value.replace(/\s+fill(\s)/, "$1");
+        return super.set(decl, prefix);
+      }
+    };
+    BorderImage.names = ["border-image"];
+    module2.exports = BorderImage;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/align-content.js
+var require_align_content = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/align-content.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var AlignContent = class _AlignContent extends Declaration {
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "align-content";
+      }
+      /**
+       * Change property name for 2012 spec
+       */
+      prefixed(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2012) {
+          return prefix + "flex-line-pack";
+        }
+        return super.prefixed(prop, prefix);
+      }
+      /**
+       * Change value for 2012 spec and ignore prefix for 2009
+       */
+      set(decl, prefix) {
+        let spec = flexSpec(prefix)[0];
+        if (spec === 2012) {
+          decl.value = _AlignContent.oldValues[decl.value] || decl.value;
+          return super.set(decl, prefix);
+        }
+        if (spec === "final") {
+          return super.set(decl, prefix);
+        }
+        return void 0;
+      }
+    };
+    AlignContent.names = ["align-content", "flex-line-pack"];
+    AlignContent.oldValues = {
+      "flex-end": "end",
+      "flex-start": "start",
+      "space-around": "distribute",
+      "space-between": "justify"
+    };
+    module2.exports = AlignContent;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/border-radius.js
+var require_border_radius = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/border-radius.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var BorderRadius = class _BorderRadius extends Declaration {
+      /**
+       * Return unprefixed version of property
+       */
+      normalize(prop) {
+        return _BorderRadius.toNormal[prop] || prop;
+      }
+      /**
+       * Change syntax, when add Mozilla prefix
+       */
+      prefixed(prop, prefix) {
+        if (prefix === "-moz-") {
+          return prefix + (_BorderRadius.toMozilla[prop] || prop);
+        }
+        return super.prefixed(prop, prefix);
+      }
+    };
+    BorderRadius.names = ["border-radius"];
+    BorderRadius.toMozilla = {};
+    BorderRadius.toNormal = {};
+    for (let ver of ["top", "bottom"]) {
+      for (let hor of ["left", "right"]) {
+        let normal = `border-${ver}-${hor}-radius`;
+        let mozilla = `border-radius-${ver}${hor}`;
+        BorderRadius.names.push(normal);
+        BorderRadius.names.push(mozilla);
+        BorderRadius.toMozilla[normal] = mozilla;
+        BorderRadius.toNormal[mozilla] = normal;
+      }
+    }
+    module2.exports = BorderRadius;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/block-logical.js
+var require_block_logical = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/block-logical.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var BlockLogical = class extends Declaration {
+      /**
+       * Return property name by spec
+       */
+      normalize(prop) {
+        if (prop.includes("-before")) {
+          return prop.replace("-before", "-block-start");
+        }
+        return prop.replace("-after", "-block-end");
+      }
+      /**
+       * Use old syntax for -moz- and -webkit-
+       */
+      prefixed(prop, prefix) {
+        if (prop.includes("-start")) {
+          return prefix + prop.replace("-block-start", "-before");
+        }
+        return prefix + prop.replace("-block-end", "-after");
+      }
+    };
+    BlockLogical.names = [
+      "border-block-start",
+      "border-block-end",
+      "margin-block-start",
+      "margin-block-end",
+      "padding-block-start",
+      "padding-block-end",
+      "border-before",
+      "border-after",
+      "margin-before",
+      "margin-after",
+      "padding-before",
+      "padding-after"
+    ];
+    module2.exports = BlockLogical;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-template.js
+var require_grid_template = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-template.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var {
+      getGridGap,
+      inheritGridGap,
+      parseTemplate,
+      warnGridGap,
+      warnMissedAreas
+    } = require_grid_utils();
+    var GridTemplate = class extends Declaration {
+      /**
+       * Translate grid-template to separate -ms- prefixed properties
+       */
+      insert(decl, prefix, prefixes, result) {
+        if (prefix !== "-ms-") return super.insert(decl, prefix, prefixes);
+        if (decl.parent.some((i) => i.prop === "-ms-grid-rows")) {
+          return void 0;
+        }
+        let gap = getGridGap(decl);
+        let inheritedGap = inheritGridGap(decl, gap);
+        let { areas, columns, rows } = parseTemplate({
+          decl,
+          gap: inheritedGap || gap
+        });
+        let hasAreas = Object.keys(areas).length > 0;
+        let hasRows = Boolean(rows);
+        let hasColumns = Boolean(columns);
+        warnGridGap({
+          decl,
+          gap,
+          hasColumns,
+          result
+        });
+        warnMissedAreas(areas, decl, result);
+        if (hasRows && hasColumns || hasAreas) {
+          decl.cloneBefore({
+            prop: "-ms-grid-rows",
+            raws: {},
+            value: rows
+          });
+        }
+        if (hasColumns) {
+          decl.cloneBefore({
+            prop: "-ms-grid-columns",
+            raws: {},
+            value: columns
+          });
+        }
+        return decl;
+      }
+    };
+    GridTemplate.names = ["grid-template"];
+    module2.exports = GridTemplate;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/inline-logical.js
+var require_inline_logical = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/inline-logical.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var InlineLogical = class extends Declaration {
+      /**
+       * Return property name by spec
+       */
+      normalize(prop) {
+        return prop.replace(/(margin|padding|border)-(start|end)/, "$1-inline-$2");
+      }
+      /**
+       * Use old syntax for -moz- and -webkit-
+       */
+      prefixed(prop, prefix) {
+        return prefix + prop.replace("-inline", "");
+      }
+    };
+    InlineLogical.names = [
+      "border-inline-start",
+      "border-inline-end",
+      "margin-inline-start",
+      "margin-inline-end",
+      "padding-inline-start",
+      "padding-inline-end",
+      "border-start",
+      "border-end",
+      "margin-start",
+      "margin-end",
+      "padding-start",
+      "padding-end"
+    ];
+    module2.exports = InlineLogical;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-row-align.js
+var require_grid_row_align = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-row-align.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var GridRowAlign = class extends Declaration {
+      /**
+       * Do not prefix flexbox values
+       */
+      check(decl) {
+        return !decl.value.includes("flex-") && decl.value !== "baseline";
+      }
+      /**
+       * Change IE property back
+       */
+      normalize() {
+        return "align-self";
+      }
+      /**
+       * Change property name for IE
+       */
+      prefixed(prop, prefix) {
+        return prefix + "grid-row-align";
+      }
+    };
+    GridRowAlign.names = ["grid-row-align"];
+    module2.exports = GridRowAlign;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/transform-decl.js
+var require_transform_decl = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/transform-decl.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var TransformDecl = class _TransformDecl extends Declaration {
+      /**
+       * Is transform contain 3D commands
+       */
+      contain3d(decl) {
+        if (decl.prop === "transform-origin") {
+          return false;
+        }
+        for (let func of _TransformDecl.functions3d) {
+          if (decl.value.includes(`${func}(`)) {
+            return true;
+          }
+        }
+        return false;
+      }
+      /**
+       * Don't add prefix for IE in keyframes
+       */
+      insert(decl, prefix, prefixes) {
+        if (prefix === "-ms-") {
+          if (!this.contain3d(decl) && !this.keyframeParents(decl)) {
+            return super.insert(decl, prefix, prefixes);
+          }
+        } else if (prefix === "-o-") {
+          if (!this.contain3d(decl)) {
+            return super.insert(decl, prefix, prefixes);
+          }
+        } else {
+          return super.insert(decl, prefix, prefixes);
+        }
+        return void 0;
+      }
+      /**
+       * Recursively check all parents for @keyframes
+       */
+      keyframeParents(decl) {
+        let { parent } = decl;
+        while (parent) {
+          if (parent.type === "atrule" && parent.name === "keyframes") {
+            return true;
+          }
+          ;
+          ({ parent } = parent);
+        }
+        return false;
+      }
+      /**
+       * Replace rotateZ to rotate for IE 9
+       */
+      set(decl, prefix) {
+        decl = super.set(decl, prefix);
+        if (prefix === "-ms-") {
+          decl.value = decl.value.replace(/rotatez/gi, "rotate");
+        }
+        return decl;
+      }
+    };
+    TransformDecl.names = ["transform", "transform-origin"];
+    TransformDecl.functions3d = [
+      "matrix3d",
+      "translate3d",
+      "translateZ",
+      "scale3d",
+      "scaleZ",
+      "rotate3d",
+      "rotateX",
+      "rotateY",
+      "perspective"
+    ];
+    module2.exports = TransformDecl;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/flex-direction.js
+var require_flex_direction = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/flex-direction.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var FlexDirection = class extends Declaration {
+      /**
+       * Use two properties for 2009 spec
+       */
+      insert(decl, prefix, prefixes) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec !== 2009) {
+          return super.insert(decl, prefix, prefixes);
+        }
+        let already = decl.parent.some(
+          (i) => i.prop === prefix + "box-orient" || i.prop === prefix + "box-direction"
+        );
+        if (already) {
+          return void 0;
+        }
+        let v = decl.value;
+        let orient, dir;
+        if (v === "inherit" || v === "initial" || v === "unset") {
+          orient = v;
+          dir = v;
+        } else {
+          orient = v.includes("row") ? "horizontal" : "vertical";
+          dir = v.includes("reverse") ? "reverse" : "normal";
+        }
+        let cloned = this.clone(decl);
+        cloned.prop = prefix + "box-orient";
+        cloned.value = orient;
+        if (this.needCascade(decl)) {
+          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
+        }
+        decl.parent.insertBefore(decl, cloned);
+        cloned = this.clone(decl);
+        cloned.prop = prefix + "box-direction";
+        cloned.value = dir;
+        if (this.needCascade(decl)) {
+          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
+        }
+        return decl.parent.insertBefore(decl, cloned);
+      }
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "flex-direction";
+      }
+      /**
+       * Clean two properties for 2009 spec
+       */
+      old(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2009) {
+          return [prefix + "box-orient", prefix + "box-direction"];
+        } else {
+          return super.old(prop, prefix);
+        }
+      }
+    };
+    FlexDirection.names = ["flex-direction", "box-direction", "box-orient"];
+    module2.exports = FlexDirection;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/image-rendering.js
+var require_image_rendering = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/image-rendering.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var ImageRendering = class extends Declaration {
+      /**
+       * Add hack only for crisp-edges
+       */
+      check(decl) {
+        return decl.value === "pixelated";
+      }
+      /**
+       * Return property name by spec
+       */
+      normalize() {
+        return "image-rendering";
+      }
+      /**
+       * Change property name for IE
+       */
+      prefixed(prop, prefix) {
+        if (prefix === "-ms-") {
+          return "-ms-interpolation-mode";
+        }
+        return super.prefixed(prop, prefix);
+      }
+      /**
+       * Warn on old value
+       */
+      process(node, result) {
+        return super.process(node, result);
+      }
+      /**
+       * Change property and value for IE
+       */
+      set(decl, prefix) {
+        if (prefix !== "-ms-") return super.set(decl, prefix);
+        decl.prop = "-ms-interpolation-mode";
+        decl.value = "nearest-neighbor";
+        return decl;
+      }
+    };
+    ImageRendering.names = ["image-rendering", "interpolation-mode"];
+    module2.exports = ImageRendering;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/backdrop-filter.js
+var require_backdrop_filter = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/backdrop-filter.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var utils = require_utils();
+    var BackdropFilter = class extends Declaration {
+      constructor(name, prefixes, all) {
+        super(name, prefixes, all);
+        if (this.prefixes) {
+          this.prefixes = utils.uniq(
+            this.prefixes.map((i) => {
+              return i === "-ms-" ? "-webkit-" : i;
+            })
+          );
+        }
+      }
+    };
+    BackdropFilter.names = ["backdrop-filter"];
+    module2.exports = BackdropFilter;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/background-clip.js
+var require_background_clip = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/background-clip.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var utils = require_utils();
+    var BackgroundClip = class extends Declaration {
+      constructor(name, prefixes, all) {
+        super(name, prefixes, all);
+        if (this.prefixes) {
+          this.prefixes = utils.uniq(
+            this.prefixes.map((i) => {
+              return i === "-ms-" ? "-webkit-" : i;
+            })
+          );
+        }
+      }
+      check(decl) {
+        return decl.value.toLowerCase() === "text";
+      }
+    };
+    BackgroundClip.names = ["background-clip"];
+    module2.exports = BackgroundClip;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/text-decoration.js
+var require_text_decoration = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/text-decoration.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var BASIC = [
+      "none",
+      "underline",
+      "overline",
+      "line-through",
+      "blink",
+      "inherit",
+      "initial",
+      "unset"
+    ];
+    var TextDecoration = class extends Declaration {
+      /**
+       * Do not add prefixes for basic values.
+       */
+      check(decl) {
+        return decl.value.split(/\s+/).some((i) => !BASIC.includes(i));
+      }
+    };
+    TextDecoration.names = ["text-decoration"];
+    module2.exports = TextDecoration;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/justify-content.js
+var require_justify_content = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/justify-content.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var Declaration = require_declaration2();
+    var JustifyContent = class _JustifyContent extends Declaration {
+      /**
+       * Return property name by final spec
+       */
+      normalize() {
+        return "justify-content";
+      }
+      /**
+       * Change property name for 2009 and 2012 specs
+       */
+      prefixed(prop, prefix) {
+        let spec;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2009) {
+          return prefix + "box-pack";
+        }
+        if (spec === 2012) {
+          return prefix + "flex-pack";
+        }
+        return super.prefixed(prop, prefix);
+      }
+      /**
+       * Change value for 2009 and 2012 specs
+       */
+      set(decl, prefix) {
+        let spec = flexSpec(prefix)[0];
+        if (spec === 2009 || spec === 2012) {
+          let value = _JustifyContent.oldValues[decl.value] || decl.value;
+          decl.value = value;
+          if (spec !== 2009 || value !== "distribute") {
+            return super.set(decl, prefix);
+          }
+        } else if (spec === "final") {
+          return super.set(decl, prefix);
+        }
+        return void 0;
+      }
+    };
+    JustifyContent.names = ["justify-content", "flex-pack", "box-pack"];
+    JustifyContent.oldValues = {
+      "flex-end": "end",
+      "flex-start": "start",
+      "space-around": "distribute",
+      "space-between": "justify"
+    };
+    module2.exports = JustifyContent;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/background-size.js
+var require_background_size = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/background-size.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var BackgroundSize = class extends Declaration {
+      /**
+       * Duplication parameter for -webkit- browsers
+       */
+      set(decl, prefix) {
+        let value = decl.value.toLowerCase();
+        if (prefix === "-webkit-" && !value.includes(" ") && value !== "contain" && value !== "cover") {
+          decl.value = decl.value + " " + decl.value;
+        }
+        return super.set(decl, prefix);
+      }
+    };
+    BackgroundSize.names = ["background-size"];
+    module2.exports = BackgroundSize;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-row-column.js
+var require_grid_row_column = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-row-column.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var utils = require_grid_utils();
+    var GridRowColumn = class extends Declaration {
+      /**
+       * Translate grid-row / grid-column to separate -ms- prefixed properties
+       */
+      insert(decl, prefix, prefixes) {
+        if (prefix !== "-ms-") return super.insert(decl, prefix, prefixes);
+        let values = utils.parse(decl);
+        let [start, span] = utils.translate(values, 0, 1);
+        let hasStartValueSpan = values[0] && values[0].includes("span");
+        if (hasStartValueSpan) {
+          span = values[0].join("").replace(/\D/g, "");
+        }
+        ;
+        [
+          [decl.prop, start],
+          [`${decl.prop}-span`, span]
+        ].forEach(([prop, value]) => {
+          utils.insertDecl(decl, prop, value);
+        });
+        return void 0;
+      }
+    };
+    GridRowColumn.names = ["grid-row", "grid-column"];
+    module2.exports = GridRowColumn;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-rows-columns.js
+var require_grid_rows_columns = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-rows-columns.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var {
+      autoplaceGridItems,
+      getGridGap,
+      inheritGridGap,
+      prefixTrackProp,
+      prefixTrackValue
+    } = require_grid_utils();
+    var Processor = require_processor2();
+    var GridRowsColumns = class extends Declaration {
+      insert(decl, prefix, prefixes, result) {
+        if (prefix !== "-ms-") return super.insert(decl, prefix, prefixes);
+        let { parent, prop, value } = decl;
+        let isRowProp = prop.includes("rows");
+        let isColumnProp = prop.includes("columns");
+        let hasGridTemplate = parent.some(
+          (i) => i.prop === "grid-template" || i.prop === "grid-template-areas"
+        );
+        if (hasGridTemplate && isRowProp) {
+          return false;
+        }
+        let processor = new Processor({ options: {} });
+        let status = processor.gridStatus(parent, result);
+        let gap = getGridGap(decl);
+        gap = inheritGridGap(decl, gap) || gap;
+        let gapValue = isRowProp ? gap.row : gap.column;
+        if ((status === "no-autoplace" || status === true) && !hasGridTemplate) {
+          gapValue = null;
+        }
+        let prefixValue = prefixTrackValue({
+          gap: gapValue,
+          value
+        });
+        decl.cloneBefore({
+          prop: prefixTrackProp({ prefix, prop }),
+          value: prefixValue
+        });
+        let autoflow = parent.nodes.find((i) => i.prop === "grid-auto-flow");
+        let autoflowValue = "row";
+        if (autoflow && !processor.disabled(autoflow, result)) {
+          autoflowValue = autoflow.value.trim();
+        }
+        if (status === "autoplace") {
+          let rowDecl = parent.nodes.find((i) => i.prop === "grid-template-rows");
+          if (!rowDecl && hasGridTemplate) {
+            return void 0;
+          } else if (!rowDecl && !hasGridTemplate) {
+            decl.warn(
+              result,
+              "Autoplacement does not work without grid-template-rows property"
+            );
+            return void 0;
+          }
+          let columnDecl = parent.nodes.find((i) => {
+            return i.prop === "grid-template-columns";
+          });
+          if (!columnDecl && !hasGridTemplate) {
+            decl.warn(
+              result,
+              "Autoplacement does not work without grid-template-columns property"
+            );
+          }
+          if (isColumnProp && !hasGridTemplate) {
+            autoplaceGridItems(decl, result, gap, autoflowValue);
+          }
+        }
+        return void 0;
+      }
+      /**
+       * Change IE property back
+       */
+      normalize(prop) {
+        return prop.replace(/^grid-(rows|columns)/, "grid-template-$1");
+      }
+      /**
+       * Change property name for IE
+       */
+      prefixed(prop, prefix) {
+        if (prefix === "-ms-") {
+          return prefixTrackProp({ prefix, prop });
+        }
+        return super.prefixed(prop, prefix);
+      }
+    };
+    GridRowsColumns.names = [
+      "grid-template-rows",
+      "grid-template-columns",
+      "grid-rows",
+      "grid-columns"
+    ];
+    module2.exports = GridRowsColumns;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-column-align.js
+var require_grid_column_align = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-column-align.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var GridColumnAlign = class extends Declaration {
+      /**
+       * Do not prefix flexbox values
+       */
+      check(decl) {
+        return !decl.value.includes("flex-") && decl.value !== "baseline";
+      }
+      /**
+       * Change IE property back
+       */
+      normalize() {
+        return "justify-self";
+      }
+      /**
+       * Change property name for IE
+       */
+      prefixed(prop, prefix) {
+        return prefix + "grid-column-align";
+      }
+    };
+    GridColumnAlign.names = ["grid-column-align"];
+    module2.exports = GridColumnAlign;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/print-color-adjust.js
+var require_print_color_adjust = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/print-color-adjust.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var PrintColorAdjust = class extends Declaration {
+      /**
+       * Return property name by spec
+       */
+      normalize() {
+        return "print-color-adjust";
+      }
+      /**
+       * Change property name for WebKit-based browsers
+       */
+      prefixed(prop, prefix) {
+        if (prefix === "-moz-") {
+          return "color-adjust";
+        } else {
+          return prefix + "print-color-adjust";
+        }
+      }
+    };
+    PrintColorAdjust.names = ["print-color-adjust", "color-adjust"];
+    module2.exports = PrintColorAdjust;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/overscroll-behavior.js
+var require_overscroll_behavior = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/overscroll-behavior.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var OverscrollBehavior = class extends Declaration {
+      /**
+       * Return property name by spec
+       */
+      normalize() {
+        return "overscroll-behavior";
+      }
+      /**
+       * Change property name for IE
+       */
+      prefixed(prop, prefix) {
+        return prefix + "scroll-chaining";
+      }
+      /**
+       * Change value for IE
+       */
+      set(decl, prefix) {
+        if (decl.value === "auto") {
+          decl.value = "chained";
+        } else if (decl.value === "none" || decl.value === "contain") {
+          decl.value = "none";
+        }
+        return super.set(decl, prefix);
+      }
+    };
+    OverscrollBehavior.names = ["overscroll-behavior", "scroll-chaining"];
+    module2.exports = OverscrollBehavior;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/grid-template-areas.js
+var require_grid_template_areas = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/grid-template-areas.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var {
+      getGridGap,
+      inheritGridGap,
+      parseGridAreas,
+      prefixTrackProp,
+      prefixTrackValue,
+      warnGridGap,
+      warnMissedAreas
+    } = require_grid_utils();
+    function getGridRows(tpl) {
+      return tpl.trim().slice(1, -1).split(/["']\s*["']?/g);
+    }
+    var GridTemplateAreas = class extends Declaration {
+      /**
+       * Translate grid-template-areas to separate -ms- prefixed properties
+       */
+      insert(decl, prefix, prefixes, result) {
+        if (prefix !== "-ms-") return super.insert(decl, prefix, prefixes);
+        let hasColumns = false;
+        let hasRows = false;
+        let parent = decl.parent;
+        let gap = getGridGap(decl);
+        gap = inheritGridGap(decl, gap) || gap;
+        parent.walkDecls(/-ms-grid-rows/, (i) => i.remove());
+        parent.walkDecls(/grid-template-(rows|columns)/, (trackDecl) => {
+          if (trackDecl.prop === "grid-template-rows") {
+            hasRows = true;
+            let { prop, value } = trackDecl;
+            trackDecl.cloneBefore({
+              prop: prefixTrackProp({ prefix, prop }),
+              value: prefixTrackValue({ gap: gap.row, value })
+            });
+          } else {
+            hasColumns = true;
+          }
+        });
+        let gridRows = getGridRows(decl.value);
+        if (hasColumns && !hasRows && gap.row && gridRows.length > 1) {
+          decl.cloneBefore({
+            prop: "-ms-grid-rows",
+            raws: {},
+            value: prefixTrackValue({
+              gap: gap.row,
+              value: `repeat(${gridRows.length}, auto)`
+            })
+          });
+        }
+        warnGridGap({
+          decl,
+          gap,
+          hasColumns,
+          result
+        });
+        let areas = parseGridAreas({
+          gap,
+          rows: gridRows
+        });
+        warnMissedAreas(areas, decl, result);
+        return decl;
+      }
+    };
+    GridTemplateAreas.names = ["grid-template-areas"];
+    module2.exports = GridTemplateAreas;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/text-emphasis-position.js
+var require_text_emphasis_position = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/text-emphasis-position.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var TextEmphasisPosition = class extends Declaration {
+      set(decl, prefix) {
+        if (prefix === "-webkit-") {
+          decl.value = decl.value.replace(/\s*(right|left)\s*/i, "");
+        }
+        return super.set(decl, prefix);
+      }
+    };
+    TextEmphasisPosition.names = ["text-emphasis-position"];
+    module2.exports = TextEmphasisPosition;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/text-decoration-skip-ink.js
+var require_text_decoration_skip_ink = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/text-decoration-skip-ink.js"(exports2, module2) {
+    var Declaration = require_declaration2();
+    var TextDecorationSkipInk = class extends Declaration {
+      /**
+       * Change prefix for ink value
+       */
+      set(decl, prefix) {
+        if (decl.prop === "text-decoration-skip-ink" && decl.value === "auto") {
+          decl.prop = prefix + "text-decoration-skip";
+          decl.value = "ink";
+          return decl;
+        } else {
+          return super.set(decl, prefix);
+        }
+      }
+    };
+    TextDecorationSkipInk.names = [
+      "text-decoration-skip-ink",
+      "text-decoration-skip"
+    ];
+    module2.exports = TextDecorationSkipInk;
+  }
+});
+
+// node_modules/normalize-range/index.js
+var require_normalize_range = __commonJS({
+  "node_modules/normalize-range/index.js"(exports2, module2) {
+    "use strict";
+    module2.exports = {
+      wrap: wrapRange,
+      limit: limitRange,
+      validate: validateRange,
+      test: testRange,
+      curry,
+      name
+    };
+    function wrapRange(min, max, value) {
+      var maxLessMin = max - min;
+      return ((value - min) % maxLessMin + maxLessMin) % maxLessMin + min;
+    }
+    function limitRange(min, max, value) {
+      return Math.max(min, Math.min(max, value));
+    }
+    function validateRange(min, max, value, minExclusive, maxExclusive) {
+      if (!testRange(min, max, value, minExclusive, maxExclusive)) {
+        throw new Error(value + " is outside of range [" + min + "," + max + ")");
+      }
+      return value;
+    }
+    function testRange(min, max, value, minExclusive, maxExclusive) {
+      return !(value < min || value > max || maxExclusive && value === max || minExclusive && value === min);
+    }
+    function name(min, max, minExcl, maxExcl) {
+      return (minExcl ? "(" : "[") + min + "," + max + (maxExcl ? ")" : "]");
+    }
+    function curry(min, max, minExclusive, maxExclusive) {
+      var boundNameFn = name.bind(null, min, max, minExclusive, maxExclusive);
+      return {
+        wrap: wrapRange.bind(null, min, max),
+        limit: limitRange.bind(null, min, max),
+        validate: function(value) {
+          return validateRange(min, max, value, minExclusive, maxExclusive);
+        },
+        test: function(value) {
+          return testRange(min, max, value, minExclusive, maxExclusive);
+        },
+        toString: boundNameFn,
+        name: boundNameFn
+      };
+    }
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/gradient.js
+var require_gradient = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/gradient.js"(exports2, module2) {
+    var parser = require_lib();
+    var range = require_normalize_range();
+    var OldValue = require_old_value();
+    var Value = require_value();
+    var utils = require_utils();
+    var IS_DIRECTION = /top|left|right|bottom/gi;
+    var Gradient = class _Gradient extends Value {
+      /**
+       * Do not add non-webkit prefixes for list-style and object
+       */
+      add(decl, prefix) {
+        let p = decl.prop;
+        if (p.includes("mask")) {
+          if (prefix === "-webkit-" || prefix === "-webkit- old") {
+            return super.add(decl, prefix);
+          }
+        } else if (p === "list-style" || p === "list-style-image" || p === "content") {
+          if (prefix === "-webkit-" || prefix === "-webkit- old") {
+            return super.add(decl, prefix);
+          }
+        } else {
+          return super.add(decl, prefix);
+        }
+        return void 0;
+      }
+      /**
+       * Get div token from exists parameters
+       */
+      cloneDiv(params) {
+        for (let i of params) {
+          if (i.type === "div" && i.value === ",") {
+            return i;
+          }
+        }
+        return { after: " ", type: "div", value: "," };
+      }
+      /**
+       * Change colors syntax to old webkit
+       */
+      colorStops(params) {
+        let result = [];
+        for (let i = 0; i < params.length; i++) {
+          let pos;
+          let param = params[i];
+          let item;
+          if (i === 0) {
+            continue;
+          }
+          let color = parser.stringify(param[0]);
+          if (param[1] && param[1].type === "word") {
+            pos = param[1].value;
+          } else if (param[2] && param[2].type === "word") {
+            pos = param[2].value;
+          }
+          let stop;
+          if (i === 1 && (!pos || pos === "0%")) {
+            stop = `from(${color})`;
+          } else if (i === params.length - 1 && (!pos || pos === "100%")) {
+            stop = `to(${color})`;
+          } else if (pos) {
+            stop = `color-stop(${pos}, ${color})`;
+          } else {
+            stop = `color-stop(${color})`;
+          }
+          let div = param[param.length - 1];
+          params[i] = [{ type: "word", value: stop }];
+          if (div.type === "div" && div.value === ",") {
+            item = params[i].push(div);
+          }
+          result.push(item);
+        }
+        return result;
+      }
+      /**
+       * Change new direction to old
+       */
+      convertDirection(params) {
+        if (params.length > 0) {
+          if (params[0].value === "to") {
+            this.fixDirection(params);
+          } else if (params[0].value.includes("deg")) {
+            this.fixAngle(params);
+          } else if (this.isRadial(params)) {
+            this.fixRadial(params);
+          }
+        }
+        return params;
+      }
+      /**
+       * Add 90 degrees
+       */
+      fixAngle(params) {
+        let first = params[0].value;
+        first = parseFloat(first);
+        first = Math.abs(450 - first) % 360;
+        first = this.roundFloat(first, 3);
+        params[0].value = `${first}deg`;
+      }
+      /**
+       * Replace `to top left` to `bottom right`
+       */
+      fixDirection(params) {
+        params.splice(0, 2);
+        for (let param of params) {
+          if (param.type === "div") {
+            break;
+          }
+          if (param.type === "word") {
+            param.value = this.revertDirection(param.value);
+          }
+        }
+      }
+      /**
+       * Fix radial direction syntax
+       */
+      fixRadial(params) {
+        let first = [];
+        let second = [];
+        let a, b, c, i, next;
+        for (i = 0; i < params.length - 2; i++) {
+          a = params[i];
+          b = params[i + 1];
+          c = params[i + 2];
+          if (a.type === "space" && b.value === "at" && c.type === "space") {
+            next = i + 3;
+            break;
+          } else {
+            first.push(a);
+          }
+        }
+        let div;
+        for (i = next; i < params.length; i++) {
+          if (params[i].type === "div") {
+            div = params[i];
+            break;
+          } else {
+            second.push(params[i]);
+          }
+        }
+        params.splice(0, i, ...second, div, ...first);
+      }
+      /**
+       * Look for at word
+       */
+      isRadial(params) {
+        let state = "before";
+        for (let param of params) {
+          if (state === "before" && param.type === "space") {
+            state = "at";
+          } else if (state === "at" && param.value === "at") {
+            state = "after";
+          } else if (state === "after" && param.type === "space") {
+            return true;
+          } else if (param.type === "div") {
+            break;
+          } else {
+            state = "before";
+          }
+        }
+        return false;
+      }
+      /**
+       * Replace old direction to new
+       */
+      newDirection(params) {
+        if (params[0].value === "to") {
+          return params;
+        }
+        IS_DIRECTION.lastIndex = 0;
+        if (!IS_DIRECTION.test(params[0].value)) {
+          return params;
+        }
+        params.unshift(
+          {
+            type: "word",
+            value: "to"
+          },
+          {
+            type: "space",
+            value: " "
+          }
+        );
+        for (let i = 2; i < params.length; i++) {
+          if (params[i].type === "div") {
+            break;
+          }
+          if (params[i].type === "word") {
+            params[i].value = this.revertDirection(params[i].value);
+          }
+        }
+        return params;
+      }
+      /**
+       * Normalize angle
+       */
+      normalize(nodes, gradientName) {
+        if (!nodes[0]) return nodes;
+        if (/-?\d+(.\d+)?grad/.test(nodes[0].value)) {
+          nodes[0].value = this.normalizeUnit(nodes[0].value, 400);
+        } else if (/-?\d+(.\d+)?rad/.test(nodes[0].value)) {
+          nodes[0].value = this.normalizeUnit(nodes[0].value, 2 * Math.PI);
+        } else if (/-?\d+(.\d+)?turn/.test(nodes[0].value)) {
+          nodes[0].value = this.normalizeUnit(nodes[0].value, 1);
+        } else if (nodes[0].value.includes("deg")) {
+          let num = parseFloat(nodes[0].value);
+          num = range.wrap(0, 360, num);
+          nodes[0].value = `${num}deg`;
+        }
+        if (gradientName === "linear-gradient" || gradientName === "repeating-linear-gradient") {
+          let direction = nodes[0].value;
+          if (direction === "0deg" || direction === "0") {
+            nodes = this.replaceFirst(nodes, "to", " ", "top");
+          } else if (direction === "90deg") {
+            nodes = this.replaceFirst(nodes, "to", " ", "right");
+          } else if (direction === "180deg") {
+            nodes = this.replaceFirst(nodes, "to", " ", "bottom");
+          } else if (direction === "270deg") {
+            nodes = this.replaceFirst(nodes, "to", " ", "left");
+          }
+        }
+        return nodes;
+      }
+      /**
+       * Convert angle unit to deg
+       */
+      normalizeUnit(str, full) {
+        let num = parseFloat(str);
+        let deg = num / full * 360;
+        return `${deg}deg`;
+      }
+      /**
+       * Remove old WebKit gradient too
+       */
+      old(prefix) {
+        if (prefix === "-webkit-") {
+          let type;
+          if (this.name === "linear-gradient") {
+            type = "linear";
+          } else if (this.name === "repeating-linear-gradient") {
+            type = "repeating-linear";
+          } else if (this.name === "repeating-radial-gradient") {
+            type = "repeating-radial";
+          } else {
+            type = "radial";
+          }
+          let string = "-gradient";
+          let regexp = utils.regexp(
+            `-webkit-(${type}-gradient|gradient\\(\\s*${type})`,
+            false
+          );
+          return new OldValue(this.name, prefix + this.name, string, regexp);
+        } else {
+          return super.old(prefix);
+        }
+      }
+      /**
+       * Change direction syntax to old webkit
+       */
+      oldDirection(params) {
+        let div = this.cloneDiv(params[0]);
+        if (params[0][0].value !== "to") {
+          return params.unshift([
+            { type: "word", value: _Gradient.oldDirections.bottom },
+            div
+          ]);
+        } else {
+          let words = [];
+          for (let node of params[0].slice(2)) {
+            if (node.type === "word") {
+              words.push(node.value.toLowerCase());
+            }
+          }
+          words = words.join(" ");
+          let old = _Gradient.oldDirections[words] || words;
+          params[0] = [{ type: "word", value: old }, div];
+          return params[0];
+        }
+      }
+      /**
+       * Convert to old webkit syntax
+       */
+      oldWebkit(node) {
+        let { nodes } = node;
+        let string = parser.stringify(node.nodes);
+        if (this.name !== "linear-gradient") {
+          return false;
+        }
+        if (nodes[0] && nodes[0].value.includes("deg")) {
+          return false;
+        }
+        if (string.includes("px") || string.includes("-corner") || string.includes("-side")) {
+          return false;
+        }
+        let params = [[]];
+        for (let i of nodes) {
+          params[params.length - 1].push(i);
+          if (i.type === "div" && i.value === ",") {
+            params.push([]);
+          }
+        }
+        this.oldDirection(params);
+        this.colorStops(params);
+        node.nodes = [];
+        for (let param of params) {
+          node.nodes = node.nodes.concat(param);
+        }
+        node.nodes.unshift(
+          { type: "word", value: "linear" },
+          this.cloneDiv(node.nodes)
+        );
+        node.value = "-webkit-gradient";
+        return true;
+      }
+      /**
+       * Change degrees for webkit prefix
+       */
+      replace(string, prefix) {
+        let ast = parser(string);
+        for (let node of ast.nodes) {
+          let gradientName = this.name;
+          if (node.type === "function" && node.value === gradientName) {
+            node.nodes = this.newDirection(node.nodes);
+            node.nodes = this.normalize(node.nodes, gradientName);
+            if (prefix === "-webkit- old") {
+              let changes = this.oldWebkit(node);
+              if (!changes) {
+                return false;
+              }
+            } else {
+              node.nodes = this.convertDirection(node.nodes);
+              node.value = prefix + node.value;
+            }
+          }
+        }
+        return ast.toString();
+      }
+      /**
+       * Replace first token
+       */
+      replaceFirst(params, ...words) {
+        let prefix = words.map((i) => {
+          if (i === " ") {
+            return { type: "space", value: i };
+          }
+          return { type: "word", value: i };
+        });
+        return prefix.concat(params.slice(1));
+      }
+      revertDirection(word) {
+        return _Gradient.directions[word.toLowerCase()] || word;
+      }
+      /**
+       * Round float and save digits under dot
+       */
+      roundFloat(float, digits) {
+        return parseFloat(float.toFixed(digits));
+      }
+    };
+    Gradient.names = [
+      "linear-gradient",
+      "repeating-linear-gradient",
+      "radial-gradient",
+      "repeating-radial-gradient"
+    ];
+    Gradient.directions = {
+      bottom: "top",
+      left: "right",
+      right: "left",
+      top: "bottom"
+      // default value
+    };
+    Gradient.oldDirections = {
+      "bottom": "left top, left bottom",
+      "bottom left": "right top, left bottom",
+      "bottom right": "left top, right bottom",
+      "left": "right top, left top",
+      "left bottom": "right top, left bottom",
+      "left top": "right bottom, left top",
+      "right": "left top, right top",
+      "right bottom": "left top, right bottom",
+      "right top": "left bottom, right top",
+      "top": "left bottom, left top",
+      "top left": "right bottom, left top",
+      "top right": "left bottom, right top"
+    };
+    module2.exports = Gradient;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/intrinsic.js
+var require_intrinsic = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/intrinsic.js"(exports2, module2) {
+    var OldValue = require_old_value();
+    var Value = require_value();
+    function regexp(name) {
+      return new RegExp(`(^|[\\s,(])(${name}($|[\\s),]))`, "gi");
+    }
+    var Intrinsic = class extends Value {
+      add(decl, prefix) {
+        if (decl.prop.includes("grid") && prefix !== "-webkit-") {
+          return void 0;
+        }
+        return super.add(decl, prefix);
+      }
+      isStretch() {
+        return this.name === "stretch" || this.name === "fill" || this.name === "fill-available";
+      }
+      old(prefix) {
+        let prefixed = prefix + this.name;
+        if (this.isStretch()) {
+          if (prefix === "-moz-") {
+            prefixed = "-moz-available";
+          } else if (prefix === "-webkit-") {
+            prefixed = "-webkit-fill-available";
+          }
+        }
+        return new OldValue(this.name, prefixed, prefixed, regexp(prefixed));
+      }
+      regexp() {
+        if (!this.regexpCache) this.regexpCache = regexp(this.name);
+        return this.regexpCache;
+      }
+      replace(string, prefix) {
+        if (prefix === "-moz-" && this.isStretch()) {
+          return string.replace(this.regexp(), "$1-moz-available$3");
+        }
+        if (prefix === "-webkit-" && this.isStretch()) {
+          return string.replace(this.regexp(), "$1-webkit-fill-available$3");
+        }
+        return super.replace(string, prefix);
+      }
+    };
+    Intrinsic.names = [
+      "max-content",
+      "min-content",
+      "fit-content",
+      "fill",
+      "fill-available",
+      "stretch"
+    ];
+    module2.exports = Intrinsic;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/pixelated.js
+var require_pixelated = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/pixelated.js"(exports2, module2) {
+    var OldValue = require_old_value();
+    var Value = require_value();
+    var Pixelated = class extends Value {
+      /**
+       * Different name for WebKit and Firefox
+       */
+      old(prefix) {
+        if (prefix === "-webkit-") {
+          return new OldValue(this.name, "-webkit-optimize-contrast");
+        }
+        if (prefix === "-moz-") {
+          return new OldValue(this.name, "-moz-crisp-edges");
+        }
+        return super.old(prefix);
+      }
+      /**
+       * Use non-standard name for WebKit and Firefox
+       */
+      replace(string, prefix) {
+        if (prefix === "-webkit-") {
+          return string.replace(this.regexp(), "$1-webkit-optimize-contrast");
+        }
+        if (prefix === "-moz-") {
+          return string.replace(this.regexp(), "$1-moz-crisp-edges");
+        }
+        return super.replace(string, prefix);
+      }
+    };
+    Pixelated.names = ["pixelated"];
+    module2.exports = Pixelated;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/image-set.js
+var require_image_set = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/image-set.js"(exports2, module2) {
+    var Value = require_value();
+    var ImageSet = class extends Value {
+      /**
+       * Use non-standard name for WebKit and Firefox
+       */
+      replace(string, prefix) {
+        let fixed = super.replace(string, prefix);
+        if (prefix === "-webkit-") {
+          fixed = fixed.replace(/("[^"]+"|'[^']+')(\s+\d+\w)/gi, "url($1)$2");
+        }
+        return fixed;
+      }
+    };
+    ImageSet.names = ["image-set"];
+    module2.exports = ImageSet;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/cross-fade.js
+var require_cross_fade = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/cross-fade.js"(exports2, module2) {
+    var list = require_postcss().list;
+    var Value = require_value();
+    var CrossFade = class extends Value {
+      replace(string, prefix) {
+        return list.space(string).map((value) => {
+          if (value.slice(0, +this.name.length + 1) !== this.name + "(") {
+            return value;
+          }
+          let close = value.lastIndexOf(")");
+          let after = value.slice(close + 1);
+          let args = value.slice(this.name.length + 1, close);
+          if (prefix === "-webkit-") {
+            let match = args.match(/\d*.?\d+%?/);
+            if (match) {
+              args = args.slice(match[0].length).trim();
+              args += `, ${match[0]}`;
+            } else {
+              args += ", 0.5";
+            }
+          }
+          return prefix + this.name + "(" + args + ")" + after;
+        }).join(" ");
+      }
+    };
+    CrossFade.names = ["cross-fade"];
+    module2.exports = CrossFade;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/display-flex.js
+var require_display_flex = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/display-flex.js"(exports2, module2) {
+    var flexSpec = require_flex_spec();
+    var OldValue = require_old_value();
+    var Value = require_value();
+    var DisplayFlex = class extends Value {
+      constructor(name, prefixes) {
+        super(name, prefixes);
+        if (name === "display-flex") {
+          this.name = "flex";
+        }
+      }
+      /**
+       * Faster check for flex value
+       */
+      check(decl) {
+        return decl.prop === "display" && decl.value === this.name;
+      }
+      /**
+       * Change value for old specs
+       */
+      old(prefix) {
+        let prefixed = this.prefixed(prefix);
+        if (!prefixed) return void 0;
+        return new OldValue(this.name, prefixed);
+      }
+      /**
+       * Return value by spec
+       */
+      prefixed(prefix) {
+        let spec, value;
+        [spec, prefix] = flexSpec(prefix);
+        if (spec === 2009) {
+          if (this.name === "flex") {
+            value = "box";
+          } else {
+            value = "inline-box";
+          }
+        } else if (spec === 2012) {
+          if (this.name === "flex") {
+            value = "flexbox";
+          } else {
+            value = "inline-flexbox";
+          }
+        } else if (spec === "final") {
+          value = this.name;
+        }
+        return prefix + value;
+      }
+      /**
+       * Add prefix to value depend on flebox spec version
+       */
+      replace(string, prefix) {
+        return this.prefixed(prefix);
+      }
+    };
+    DisplayFlex.names = ["display-flex", "inline-flex"];
+    module2.exports = DisplayFlex;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/display-grid.js
+var require_display_grid = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/display-grid.js"(exports2, module2) {
+    var Value = require_value();
+    var DisplayGrid = class extends Value {
+      constructor(name, prefixes) {
+        super(name, prefixes);
+        if (name === "display-grid") {
+          this.name = "grid";
+        }
+      }
+      /**
+       * Faster check for flex value
+       */
+      check(decl) {
+        return decl.prop === "display" && decl.value === this.name;
+      }
+    };
+    DisplayGrid.names = ["display-grid", "inline-grid"];
+    module2.exports = DisplayGrid;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/filter-value.js
+var require_filter_value = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/filter-value.js"(exports2, module2) {
+    var Value = require_value();
+    var FilterValue = class extends Value {
+      constructor(name, prefixes) {
+        super(name, prefixes);
+        if (name === "filter-function") {
+          this.name = "filter";
+        }
+      }
+    };
+    FilterValue.names = ["filter", "filter-function"];
+    module2.exports = FilterValue;
+  }
+});
+
+// node_modules/autoprefixer/lib/hacks/autofill.js
+var require_autofill = __commonJS({
+  "node_modules/autoprefixer/lib/hacks/autofill.js"(exports2, module2) {
+    var Selector = require_selector();
+    var utils = require_utils();
+    var Autofill = class extends Selector {
+      constructor(name, prefixes, all) {
+        super(name, prefixes, all);
+        if (this.prefixes) {
+          this.prefixes = utils.uniq(this.prefixes.map(() => "-webkit-"));
+        }
+      }
+      /**
+       * Return different selectors depend on prefix
+       */
+      prefixed(prefix) {
+        if (prefix === "-webkit-") {
+          return ":-webkit-autofill";
+        }
+        return `:${prefix}autofill`;
+      }
+    };
+    Autofill.names = [":autofill"];
+    module2.exports = Autofill;
+  }
+});
+
+// node_modules/autoprefixer/lib/prefixes.js
+var require_prefixes = __commonJS({
+  "node_modules/autoprefixer/lib/prefixes.js"(exports2, module2) {
+    var vendor = require_vendor();
+    var Declaration = require_declaration2();
+    var Resolution = require_resolution();
+    var Transition = require_transition();
+    var Processor = require_processor2();
+    var Supports = require_supports();
+    var Browsers = require_browsers3();
+    var Selector = require_selector();
+    var AtRule = require_at_rule2();
+    var Value = require_value();
+    var utils = require_utils();
+    var hackFullscreen = require_fullscreen();
+    var hackPlaceholder = require_placeholder();
+    var hackPlaceholderShown = require_placeholder_shown();
+    var hackFileSelectorButton = require_file_selector_button();
+    var hackFlex = require_flex();
+    var hackOrder = require_order();
+    var hackFilter = require_filter();
+    var hackGridEnd = require_grid_end();
+    var hackAnimation = require_animation();
+    var hackFlexFlow = require_flex_flow();
+    var hackFlexGrow = require_flex_grow();
+    var hackFlexWrap = require_flex_wrap();
+    var hackGridArea = require_grid_area();
+    var hackPlaceSelf = require_place_self();
+    var hackGridStart = require_grid_start();
+    var hackAlignSelf = require_align_self();
+    var hackAppearance = require_appearance();
+    var hackFlexBasis = require_flex_basis();
+    var hackMaskBorder = require_mask_border();
+    var hackMaskComposite = require_mask_composite();
+    var hackAlignItems = require_align_items();
+    var hackUserSelect = require_user_select();
+    var hackFlexShrink = require_flex_shrink();
+    var hackBreakProps = require_break_props();
+    var hackWritingMode = require_writing_mode();
+    var hackBorderImage = require_border_image();
+    var hackAlignContent = require_align_content();
+    var hackBorderRadius = require_border_radius();
+    var hackBlockLogical = require_block_logical();
+    var hackGridTemplate = require_grid_template();
+    var hackInlineLogical = require_inline_logical();
+    var hackGridRowAlign = require_grid_row_align();
+    var hackTransformDecl = require_transform_decl();
+    var hackFlexDirection = require_flex_direction();
+    var hackImageRendering = require_image_rendering();
+    var hackBackdropFilter = require_backdrop_filter();
+    var hackBackgroundClip = require_background_clip();
+    var hackTextDecoration = require_text_decoration();
+    var hackJustifyContent = require_justify_content();
+    var hackBackgroundSize = require_background_size();
+    var hackGridRowColumn = require_grid_row_column();
+    var hackGridRowsColumns = require_grid_rows_columns();
+    var hackGridColumnAlign = require_grid_column_align();
+    var hackPrintColorAdjust = require_print_color_adjust();
+    var hackOverscrollBehavior = require_overscroll_behavior();
+    var hackGridTemplateAreas = require_grid_template_areas();
+    var hackTextEmphasisPosition = require_text_emphasis_position();
+    var hackTextDecorationSkipInk = require_text_decoration_skip_ink();
+    var hackGradient = require_gradient();
+    var hackIntrinsic = require_intrinsic();
+    var hackPixelated = require_pixelated();
+    var hackImageSet = require_image_set();
+    var hackCrossFade = require_cross_fade();
+    var hackDisplayFlex = require_display_flex();
+    var hackDisplayGrid = require_display_grid();
+    var hackFilterValue = require_filter_value();
+    var hackAutofill = require_autofill();
+    Selector.hack(hackAutofill);
+    Selector.hack(hackFullscreen);
+    Selector.hack(hackPlaceholder);
+    Selector.hack(hackPlaceholderShown);
+    Selector.hack(hackFileSelectorButton);
+    Declaration.hack(hackFlex);
+    Declaration.hack(hackOrder);
+    Declaration.hack(hackFilter);
+    Declaration.hack(hackGridEnd);
+    Declaration.hack(hackAnimation);
+    Declaration.hack(hackFlexFlow);
+    Declaration.hack(hackFlexGrow);
+    Declaration.hack(hackFlexWrap);
+    Declaration.hack(hackGridArea);
+    Declaration.hack(hackPlaceSelf);
+    Declaration.hack(hackGridStart);
+    Declaration.hack(hackAlignSelf);
+    Declaration.hack(hackAppearance);
+    Declaration.hack(hackFlexBasis);
+    Declaration.hack(hackMaskBorder);
+    Declaration.hack(hackMaskComposite);
+    Declaration.hack(hackAlignItems);
+    Declaration.hack(hackUserSelect);
+    Declaration.hack(hackFlexShrink);
+    Declaration.hack(hackBreakProps);
+    Declaration.hack(hackWritingMode);
+    Declaration.hack(hackBorderImage);
+    Declaration.hack(hackAlignContent);
+    Declaration.hack(hackBorderRadius);
+    Declaration.hack(hackBlockLogical);
+    Declaration.hack(hackGridTemplate);
+    Declaration.hack(hackInlineLogical);
+    Declaration.hack(hackGridRowAlign);
+    Declaration.hack(hackTransformDecl);
+    Declaration.hack(hackFlexDirection);
+    Declaration.hack(hackImageRendering);
+    Declaration.hack(hackBackdropFilter);
+    Declaration.hack(hackBackgroundClip);
+    Declaration.hack(hackTextDecoration);
+    Declaration.hack(hackJustifyContent);
+    Declaration.hack(hackBackgroundSize);
+    Declaration.hack(hackGridRowColumn);
+    Declaration.hack(hackGridRowsColumns);
+    Declaration.hack(hackGridColumnAlign);
+    Declaration.hack(hackOverscrollBehavior);
+    Declaration.hack(hackGridTemplateAreas);
+    Declaration.hack(hackPrintColorAdjust);
+    Declaration.hack(hackTextEmphasisPosition);
+    Declaration.hack(hackTextDecorationSkipInk);
+    Value.hack(hackGradient);
+    Value.hack(hackIntrinsic);
+    Value.hack(hackPixelated);
+    Value.hack(hackImageSet);
+    Value.hack(hackCrossFade);
+    Value.hack(hackDisplayFlex);
+    Value.hack(hackDisplayGrid);
+    Value.hack(hackFilterValue);
+    var declsCache = /* @__PURE__ */ new Map();
+    var Prefixes = class _Prefixes {
+      constructor(data, browsers, options = {}) {
+        this.data = data;
+        this.browsers = browsers;
+        this.options = options;
+        [this.add, this.remove] = this.preprocess(this.select(this.data));
+        this.transition = new Transition(this);
+        this.processor = new Processor(this);
+      }
+      /**
+       * Return clone instance to remove all prefixes
+       */
+      cleaner() {
+        if (this.cleanerCache) {
+          return this.cleanerCache;
+        }
+        if (this.browsers.selected.length) {
+          let empty = new Browsers(this.browsers.data, []);
+          this.cleanerCache = new _Prefixes(this.data, empty, this.options);
+        } else {
+          return this;
+        }
+        return this.cleanerCache;
+      }
+      /**
+       * Declaration loader with caching
+       */
+      decl(prop) {
+        if (!declsCache.has(prop)) {
+          declsCache.set(prop, Declaration.load(prop));
+        }
+        return declsCache.get(prop);
+      }
+      /**
+       * Group declaration by unprefixed property to check them
+       */
+      group(decl) {
+        let rule = decl.parent;
+        let index = rule.index(decl);
+        let { length } = rule.nodes;
+        let unprefixed = this.unprefixed(decl.prop);
+        let checker = (step, callback) => {
+          index += step;
+          while (index >= 0 && index < length) {
+            let other = rule.nodes[index];
+            if (other.type === "decl") {
+              if (step === -1 && other.prop === unprefixed) {
+                if (!Browsers.withPrefix(other.value)) {
+                  break;
+                }
+              }
+              if (this.unprefixed(other.prop) !== unprefixed) {
+                break;
+              } else if (callback(other) === true) {
+                return true;
+              }
+              if (step === 1 && other.prop === unprefixed) {
+                if (!Browsers.withPrefix(other.value)) {
+                  break;
+                }
+              }
+            }
+            index += step;
+          }
+          return false;
+        };
+        return {
+          down(callback) {
+            return checker(1, callback);
+          },
+          up(callback) {
+            return checker(-1, callback);
+          }
+        };
+      }
+      /**
+       * Normalize prefix for remover
+       */
+      normalize(prop) {
+        return this.decl(prop).normalize(prop);
+      }
+      /**
+       * Return prefixed version of property
+       */
+      prefixed(prop, prefix) {
+        prop = vendor.unprefixed(prop);
+        return this.decl(prop).prefixed(prop, prefix);
+      }
+      /**
+       * Cache prefixes data to fast CSS processing
+       */
+      preprocess(selected) {
+        let add = {
+          "@supports": new Supports(_Prefixes, this),
+          "selectors": []
+        };
+        for (let name in selected.add) {
+          let prefixes = selected.add[name];
+          if (name === "@keyframes" || name === "@viewport") {
+            add[name] = new AtRule(name, prefixes, this);
+          } else if (name === "@resolution") {
+            add[name] = new Resolution(name, prefixes, this);
+          } else if (this.data[name].selector) {
+            add.selectors.push(Selector.load(name, prefixes, this));
+          } else {
+            let props = this.data[name].props;
+            if (props) {
+              let value = Value.load(name, prefixes, this);
+              for (let prop of props) {
+                if (!add[prop]) {
+                  add[prop] = { values: [] };
+                }
+                add[prop].values.push(value);
+              }
+            } else {
+              let values = add[name] && add[name].values || [];
+              add[name] = Declaration.load(name, prefixes, this);
+              add[name].values = values;
+            }
+          }
+        }
+        let remove = { selectors: [] };
+        for (let name in selected.remove) {
+          let prefixes = selected.remove[name];
+          if (this.data[name].selector) {
+            let selector = Selector.load(name, prefixes);
+            for (let prefix of prefixes) {
+              remove.selectors.push(selector.old(prefix));
+            }
+          } else if (name === "@keyframes" || name === "@viewport") {
+            for (let prefix of prefixes) {
+              let prefixed = `@${prefix}${name.slice(1)}`;
+              remove[prefixed] = { remove: true };
+            }
+          } else if (name === "@resolution") {
+            remove[name] = new Resolution(name, prefixes, this);
+          } else {
+            let props = this.data[name].props;
+            if (props) {
+              let value = Value.load(name, [], this);
+              for (let prefix of prefixes) {
+                let old = value.old(prefix);
+                if (old) {
+                  for (let prop of props) {
+                    if (!remove[prop]) {
+                      remove[prop] = {};
+                    }
+                    if (!remove[prop].values) {
+                      remove[prop].values = [];
+                    }
+                    remove[prop].values.push(old);
+                  }
+                }
+              }
+            } else {
+              for (let p of prefixes) {
+                let olds = this.decl(name).old(name, p);
+                if (name === "align-self") {
+                  let a = add[name] && add[name].prefixes;
+                  if (a) {
+                    if (p === "-webkit- 2009" && a.includes("-webkit-")) {
+                      continue;
+                    } else if (p === "-webkit-" && a.includes("-webkit- 2009")) {
+                      continue;
+                    }
+                  }
+                }
+                for (let prefixed of olds) {
+                  if (!remove[prefixed]) {
+                    remove[prefixed] = {};
+                  }
+                  remove[prefixed].remove = true;
+                }
+              }
+            }
+          }
+        }
+        return [add, remove];
+      }
+      /**
+       * Select prefixes from data, which is necessary for selected browsers
+       */
+      select(list) {
+        let selected = { add: {}, remove: {} };
+        for (let name in list) {
+          let data = list[name];
+          let add = data.browsers.map((i) => {
+            let params = i.split(" ");
+            return {
+              browser: `${params[0]} ${params[1]}`,
+              note: params[2]
+            };
+          });
+          let notes = add.filter((i) => i.note).map((i) => `${this.browsers.prefix(i.browser)} ${i.note}`);
+          notes = utils.uniq(notes);
+          add = add.filter((i) => this.browsers.isSelected(i.browser)).map((i) => {
+            let prefix = this.browsers.prefix(i.browser);
+            if (i.note) {
+              return `${prefix} ${i.note}`;
+            } else {
+              return prefix;
+            }
+          });
+          add = this.sort(utils.uniq(add));
+          if (this.options.flexbox === "no-2009") {
+            add = add.filter((i) => !i.includes("2009"));
+          }
+          let all = data.browsers.map((i) => this.browsers.prefix(i));
+          if (data.mistakes) {
+            all = all.concat(data.mistakes);
+          }
+          all = all.concat(notes);
+          all = utils.uniq(all);
+          if (add.length) {
+            selected.add[name] = add;
+            if (add.length < all.length) {
+              selected.remove[name] = all.filter((i) => !add.includes(i));
+            }
+          } else {
+            selected.remove[name] = all;
+          }
+        }
+        return selected;
+      }
+      /**
+       * Sort vendor prefixes
+       */
+      sort(prefixes) {
+        return prefixes.sort((a, b) => {
+          let aLength = utils.removeNote(a).length;
+          let bLength = utils.removeNote(b).length;
+          if (aLength === bLength) {
+            return b.length - a.length;
+          } else {
+            return bLength - aLength;
+          }
+        });
+      }
+      /**
+       * Return unprefixed version of property
+       */
+      unprefixed(prop) {
+        let value = this.normalize(vendor.unprefixed(prop));
+        if (value === "flex-direction") {
+          value = "flex-flow";
+        }
+        return value;
+      }
+      /**
+       * Return values, which must be prefixed in selected property
+       */
+      values(type, prop) {
+        let data = this[type];
+        let global2 = data["*"] && data["*"].values;
+        let values = data[prop] && data[prop].values;
+        if (global2 && values) {
+          return utils.uniq(global2.concat(values));
+        } else {
+          return global2 || values || [];
+        }
+      }
+    };
+    module2.exports = Prefixes;
+  }
+});
+
+// node_modules/caniuse-lite/data/features/border-radius.js
+var require_border_radius2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/border-radius.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "257": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "289": "GC iC jC", "292": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "J" }, E: { "1": "IB D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "33": "J kC MC", "129": "K lC mC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "MC" }, H: { "2": "MD" }, I: { "1": "GC J I OD PD QD dC RD SD", "33": "ND" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "257": "gD" } }, B: 4, C: "CSS3 Border-radius (rounded corners)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-boxshadow.js
+var require_css_boxshadow = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-boxshadow.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "33": "iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "J IB K D E F" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "33": "IB", "164": "J kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "0C dC", "164": "MC" }, H: { "2": "MD" }, I: { "1": "J I QD dC RD SD", "164": "GC ND OD PD" }, J: { "1": "A", "33": "D" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS3 Box-shadow", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-animation.js
+var require_css_animation = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-animation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J iC jC", "33": "IB K D E F A B C L M G" }, D: { "1": "4 5 6 7 8 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC", "33": "K D E lC mC nC", "292": "J IB" }, F: { "1": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC AC cC zC", "33": "0 1 2 3 C G N O P JB y z KB LB MB NB" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "E 2C 3C 4C", "164": "MC 0C dC 1C" }, H: { "2": "MD" }, I: { "1": "I", "33": "J QD dC RD SD", "164": "GC ND OD PD" }, J: { "33": "D A" }, K: { "1": "H BC", "2": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "CSS Animation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-transitions.js
+var require_css_transitions = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-transitions.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "33": "IB K D E F A B C L M G", "164": "J" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "33": "K lC", "164": "J IB kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F vC wC", "33": "C", "164": "B xC yC AC cC zC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "2C", "164": "MC 0C dC 1C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "33": "GC J ND OD PD QD dC" }, J: { "1": "A", "33": "D" }, K: { "1": "H BC", "33": "C", "164": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "CSS3 Transitions", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/transforms2d.js
+var require_transforms2d = __commonJS({
+  "node_modules/caniuse-lite/data/features/transforms2d.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "8": "K D E", "129": "A B", "161": "F" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "129": "C L M G N" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "33": "J IB K D E F A B C L M G iC jC" }, D: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "33": "J IB K D E kC MC lC mC nC" }, F: { "1": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F vC wC", "33": "0 B C G N O P JB y z xC yC AC cC zC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "33": "GC J ND OD PD QD dC RD SD" }, J: { "33": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS3 2D Transforms", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/transforms3d.js
+var require_transforms3d = __commonJS({
+  "node_modules/caniuse-lite/data/features/transforms3d.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "132": "A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F iC jC", "33": "A B C L M G" }, D: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B", "33": "0 1 2 3 C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC", "33": "J IB K D E lC mC nC", "257": "F A B C L M G oC NC AC BC pC qC rC OC" }, F: { "1": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 G N O P JB y z" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "E MC 0C dC 1C 2C 3C 4C", "257": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "ND OD PD", "33": "GC J QD dC RD SD" }, J: { "33": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "CSS3 3D Transforms", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-gradients.js
+var require_css_gradients = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-gradients.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC", "260": "0 1 2 3 N O P JB y z KB LB MB NB OB PB QB RB SB TB", "292": "J IB K D E F A B C L M G jC" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 A B C L M G N O P JB y z", "548": "J IB K D E F" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC", "260": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC", "292": "K lC", "804": "J IB" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC", "33": "C zC", "164": "AC cC" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "260": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC", "292": "1C 2C", "804": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "33": "J QD dC", "548": "GC ND OD PD" }, J: { "1": "A", "548": "D" }, K: { "1": "H BC", "2": "A B", "33": "C", "164": "AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS Gradients", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css3-boxsizing.js
+var require_css3_boxsizing = __commonJS({
+  "node_modules/caniuse-lite/data/features/css3-boxsizing.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "E F A B", "8": "K D eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "33": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "J IB K D E F" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "33": "J IB kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "J I QD dC RD SD", "33": "GC ND OD PD" }, J: { "1": "A", "33": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "CSS3 Box-sizing", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-filters.js
+var require_css_filters = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-filters.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "1028": "L M G N O P", "1346": "C" }, C: { "1": "4 5 6 7 8 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC", "196": "SB", "516": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB jC" }, D: { "1": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O", "33": "0 1 2 3 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "33": "K D E F mC nC" }, F: { "1": "YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB" }, G: { "1": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "E 2C 3C 4C 5C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "33": "RD SD" }, J: { "2": "D", "33": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "33": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "CSS Filter Effects", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-filter-function.js
+var require_css_filter_function = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-filter-function.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC", "33": "F" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C", "33": "5C 6C" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS filter() function", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-backdrop-filter.js
+var require_css_backdrop_filter = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-backdrop-filter.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N", "257": "O P" }, C: { "1": "4 5 6 7 8 9 m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB iC jC", "578": "0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l" }, D: { "1": "4 5 6 7 8 9 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB", "194": "fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B" }, E: { "1": "FC bC uC", "2": "J IB K D E kC MC lC mC nC", "33": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC" }, F: { "1": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB vC wC xC yC AC cC zC BC", "194": "SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB" }, G: { "1": "FC bC", "2": "E MC 0C dC 1C 2C 3C 4C", "33": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z ZD aD bD cD DC EC FC dD", "2": "J", "194": "TD UD VD WD XD NC YD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "CSS Backdrop Filter", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-element-function.js
+var require_css_element_function = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-element-function.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "33": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "164": "fC GC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "33": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "33": "gD hD" } }, B: 5, C: "CSS element() function", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/multicolumn.js
+var require_multicolumn = __commonJS({
+  "node_modules/caniuse-lite/data/features/multicolumn.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "C L M G N O P", "516": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "132": "kB lB mB nB oB pB qB HC rB IC sB tB uB", "164": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB iC jC", "516": "vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a", "1028": "4 5 6 7 8 9 b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "420": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "516": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "132": "F oC", "164": "D E nC", "420": "J IB K kC MC lC mC" }, F: { "1": "C AC cC zC BC", "2": "F B vC wC xC yC", "420": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB", "516": "VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "132": "5C 6C", "164": "E 3C 4C", "420": "MC 0C dC 1C 2C" }, H: { "1": "MD" }, I: { "420": "GC J ND OD PD QD dC RD SD", "516": "I" }, J: { "420": "D A" }, K: { "1": "C AC cC BC", "2": "A B", "516": "H" }, L: { "516": "I" }, M: { "1028": "9B" }, N: { "1": "A B" }, O: { "516": "CC" }, P: { "420": "J", "516": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "516": "eD" }, R: { "516": "fD" }, S: { "164": "gD hD" } }, B: 4, C: "CSS3 Multiple column layout", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/user-select-none.js
+var require_user_select_none = __commonJS({
+  "node_modules/caniuse-lite/data/features/user-select-none.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "33": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "33": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "33": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB iC jC" }, D: { "1": "4 5 6 7 8 9 mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB" }, E: { "33": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, G: { "33": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "33": "GC J ND OD PD QD dC RD SD" }, J: { "33": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "33": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "33": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "33": "gD" } }, B: 5, C: "CSS user-select: none", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/flexbox.js
+var require_flexbox = __commonJS({
+  "node_modules/caniuse-lite/data/features/flexbox.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "1028": "B", "1316": "A" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "164": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "516": "0 1 2 3 KB LB" }, D: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 z KB LB MB", "164": "J IB K D E F A B C L M G N O P JB y" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "33": "D E mC nC", "164": "J IB K kC MC lC" }, F: { "1": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B C vC wC xC yC AC cC zC", "33": "G N" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "E 3C 4C", "164": "MC 0C dC 1C 2C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "164": "GC J ND OD PD QD dC" }, J: { "1": "A", "164": "D" }, K: { "1": "H BC", "2": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "292": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS Flexible Box Layout Module", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/calc.js
+var require_calc = __commonJS({
+  "node_modules/caniuse-lite/data/features/calc.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "260": "F", "516": "A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "33": "J IB K D E F A B C L M G" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P", "33": "0 1 2 3 JB y z" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "33": "K" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "2C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "132": "RD SD" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "calc() as CSS unit value", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/background-img-opts.js
+var require_background_img_opts = __commonJS({
+  "node_modules/caniuse-lite/data/features/background-img-opts.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC", "36": "jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "516": "J IB K D E F A B C L M" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "772": "J IB K kC MC lC mC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC", "36": "wC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "4": "MC 0C dC 2C", "516": "1C" }, H: { "132": "MD" }, I: { "1": "I RD SD", "36": "ND", "516": "GC J QD dC", "548": "OD PD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS3 Background-image options", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/background-clip-text.js
+var require_background_clip_text = __commonJS({
+  "node_modules/caniuse-lite/data/features/background-clip-text.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "G N O P", "33": "C L M", "132": "9 AB BB CB DB EB FB GB HB I", "164": "4 5 6 7 8 Q H 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" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB iC jC" }, D: { "132": "9 AB BB CB DB EB FB GB HB I 9B KC LC", "164": "0 1 2 3 4 5 6 7 8 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "16": "kC MC", "132": "CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "388": "M G qC rC OC PC", "420": "J IB K D E F A B C L lC mC nC oC NC AC BC pC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "132": "p q r s t u v w x", "164": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l m n o" }, G: { "16": "MC 0C dC 1C", "132": "CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "388": "HD ID JD OC PC", "420": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD" }, H: { "2": "MD" }, I: { "16": "GC ND OD PD", "132": "I", "164": "J QD dC RD SD" }, J: { "164": "D A" }, K: { "16": "A B C AC cC BC", "132": "H" }, L: { "132": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "164": "CC" }, P: { "1": "3", "164": "0 1 2 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "164": "eD" }, R: { "164": "fD" }, S: { "1": "gD hD" } }, B: 7, C: "Background-clip: text", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/font-feature.js
+var require_font_feature = __commonJS({
+  "node_modules/caniuse-lite/data/features/font-feature.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB", "164": "J IB K D E F A B C L M" }, D: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G", "33": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB", "292": "N O P JB y" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "D E F kC MC mC nC", "4": "J IB K lC" }, F: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB" }, G: { "1": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E 3C 4C 5C", "4": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "33": "RD SD" }, J: { "2": "D", "33": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "33": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS font-feature-settings", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/font-kerning.js
+var require_font_kerning = __commonJS({
+  "node_modules/caniuse-lite/data/features/font-kerning.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "194": "2 3 KB LB MB NB OB PB QB RB" }, D: { "1": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB", "33": "NB OB PB QB" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC", "33": "D E F nC" }, F: { "1": "0 1 2 3 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G vC wC xC yC AC cC zC BC", "33": "N O P JB" }, G: { "1": "BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C", "33": "E 4C 5C 6C 7C 8C 9C AD" }, H: { "2": "MD" }, I: { "1": "I SD", "2": "GC J ND OD PD QD dC", "33": "RD" }, J: { "2": "D", "33": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS3 font-kerning", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/border-image.js
+var require_border_image2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/border-image.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "129": "C L" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "260": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "804": "J IB K D E F A B C L M iC jC" }, D: { "1": "4 5 6 7 8 9 oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "260": "jB kB lB mB nB", "388": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "1412": "0 1 2 3 G N O P JB y z KB LB MB NB", "1956": "J IB K D E F A B C L M" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "129": "A B C L M G oC NC AC BC pC qC rC OC", "1412": "K D E F mC nC", "1956": "J IB kC MC lC" }, F: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F vC wC", "260": "WB XB YB ZB aB", "388": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB", "1796": "xC yC", "1828": "B C AC cC zC BC" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "129": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC", "1412": "E 2C 3C 4C 5C", "1956": "MC 0C dC 1C" }, H: { "1828": "MD" }, I: { "1": "I", "388": "RD SD", "1956": "GC J ND OD PD QD dC" }, J: { "1412": "A", "1924": "D" }, K: { "1": "H", "2": "A", "1828": "B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "260": "TD UD", "388": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "260": "gD" } }, B: 4, C: "CSS3 Border images", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-selection.js
+var require_css_selection = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-selection.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "33": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "C H cC BC", "16": "A B AC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "33": "gD" } }, B: 5, C: "::selection CSS pseudo-element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-placeholder.js
+var require_css_placeholder = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-placeholder.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "36": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "33": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "130": "fC GC J IB K D E F A B C L M G N O P iC jC" }, D: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "36": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "36": "IB K D E F A lC mC nC oC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "36": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C", "36": "E dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "36": "GC J ND OD PD QD dC RD SD" }, J: { "36": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "36": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "36": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "33": "gD" } }, B: 5, C: "::placeholder CSS pseudo-element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-placeholder-shown.js
+var require_css_placeholder_shown = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-placeholder-shown.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "292": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "164": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB" }, D: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "164": "gD" } }, B: 5, C: ":placeholder-shown CSS pseudo-class", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-hyphens.js
+var require_css_hyphens = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-hyphens.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "33": "A B" }, B: { "1": "4 5 6 7 8 9 o p q r s t u v w x AB BB CB DB EB FB GB HB I", "33": "C L M G N O P", "132": "Q H R S T U V W", "260": "X Y Z a b c d e f g h i j k l m n" }, C: { "1": "4 5 6 7 8 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC", "33": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB", "132": "nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W" }, E: { "1": "EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC", "33": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC" }, F: { "1": "a b c d e f g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vC wC xC yC AC cC zC BC", "132": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z" }, G: { "1": "EC VC WC XC YC ZC aC FC bC", "2": "MC 0C", "33": "E dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "132": "TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS Hyphenation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/fullscreen.js
+var require_fullscreen2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/fullscreen.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "548": "B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "516": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F iC jC", "676": "0 1 2 3 A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB", "1700": "fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB" }, D: { "1": "4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M", "676": "G N O P JB", "804": "0 1 2 3 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC", "548": "PC CC sC DC QC RC SC", "676": "lC", "804": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B C vC wC xC yC AC cC zC", "804": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD", "2052": "BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D", "292": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A", "548": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "804": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Fullscreen API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js
+var require_mdn_css_backdrop_pseudo_element = __commonJS({
+  "node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB", "33": "QB RB SB TB UB" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "33": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB iC jC" }, M: { "1": "9B" }, A: { "2": "K D E F A eC", "33": "B" }, F: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N O P vC wC xC yC AC cC zC BC", "33": "0 1 JB y z" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC uC" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "33": "RD SD" } }, B: 6, C: "CSS ::backdrop pseudo-element", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-file-selector-button.js
+var require_css_file_selector_button = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-file-selector-button.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "33": "C L M G N O P Q H R S T U V W X" }, C: { "1": "4 5 6 7 8 9 JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R iC jC" }, M: { "1": "9B" }, A: { "2": "K D E F eC", "33": "A B" }, F: { "1": "5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "1": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "uC", "33": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC" }, G: { "1": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD" }, P: { "1": "0 1 2 3 y z cD DC EC FC dD", "33": "J TD UD VD WD XD NC YD ZD aD bD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "33": "RD SD" } }, B: 6, C: "::file-selector-button CSS pseudo-element", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-autofill.js
+var require_css_autofill = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-autofill.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "33": "Q H 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" }, C: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U iC jC" }, M: { "1": "9B" }, A: { "2": "K D E F A B eC" }, F: { "1": "f g h i j k l m n o p q r s t u v w x", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "uC", "33": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC qC" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID" }, P: { "1": "0 1 2 3 z", "33": "J y TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "33": "RD SD" } }, B: 6, C: ":autofill CSS pseudo-class", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css3-tabsize.js
+var require_css3_tabsize = __commonJS({
+  "node_modules/caniuse-lite/data/features/css3-tabsize.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "33": "lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z", "164": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB" }, D: { "1": "4 5 6 7 8 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB y", "132": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB" }, E: { "1": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC", "132": "D E F A B C L mC nC oC NC AC BC" }, F: { "1": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F vC wC xC", "132": "0 1 2 3 G N O P JB y z KB LB MB", "164": "B C yC AC cC zC BC" }, G: { "1": "GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C", "132": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD" }, H: { "164": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "132": "RD SD" }, J: { "132": "D A" }, K: { "1": "H", "2": "A", "164": "B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "164": "gD hD" } }, B: 4, C: "CSS3 tab-size", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/intrinsic-width.js
+var require_intrinsic_width = __commonJS({
+  "node_modules/caniuse-lite/data/features/intrinsic-width.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "1025": "4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "1537": "Q H R S T U V W X Y Z a b c" }, C: { "2": "fC", "932": "0 1 2 3 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB iC jC", "2308": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "J IB K D E F A B C L M G N O P JB y z", "545": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB", "1025": "4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "1537": "eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC", "516": "B C L M G AC BC pC qC rC OC PC CC sC", "548": "F A oC NC", "676": "D E mC nC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "513": "SB", "545": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB", "1025": "e f g h i j k l m n o p q r s t u v w x", "1537": "RB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C", "516": "HD ID JD OC PC CC KD", "548": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD", "676": "E 3C 4C" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC", "545": "RD SD", "1025": "I" }, J: { "2": "D", "545": "A" }, K: { "2": "A B C AC cC BC", "1025": "H" }, L: { "1025": "I" }, M: { "2308": "9B" }, N: { "2": "A B" }, O: { "1537": "CC" }, P: { "545": "J", "1025": "0 1 2 3 y z EC FC dD", "1537": "TD UD VD WD XD NC YD ZD aD bD cD DC" }, Q: { "1537": "eD" }, R: { "1537": "fD" }, S: { "932": "gD", "2308": "hD" } }, B: 5, C: "Intrinsic & Extrinsic Sizing", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-width-stretch.js
+var require_css_width_stretch = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-width-stretch.js"(exports2, module2) {
+    module2.exports = { A: { D: { "2": "J IB K D E F A B C L M G N O P JB y z", "33": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, L: { "33": "I" }, B: { "2": "C L M G N O P", "33": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "fC", "33": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, M: { "33": "9B" }, A: { "2": "K D E F A B eC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, K: { "2": "A B C AC cC BC", "33": "H" }, E: { "2": "J IB K kC MC lC mC uC", "33": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC" }, G: { "2": "MC 0C dC 1C 2C", "33": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, P: { "2": "J", "33": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, I: { "2": "GC J ND OD PD QD dC", "33": "I RD SD" } }, B: 6, C: "width: stretch property", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css3-cursors-newer.js
+var require_css3_cursors_newer = __commonJS({
+  "node_modules/caniuse-lite/data/features/css3-cursors-newer.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "33": "0 1 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "33": "J IB K D E kC MC lC mC nC" }, F: { "1": "2 3 C KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F B vC wC xC yC AC cC", "33": "0 1 G N O P JB y z" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "33": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 2, C: "CSS3 Cursors: zoom-in & zoom-out", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css3-cursors-grab.js
+var require_css3_cursors_grab = __commonJS({
+  "node_modules/caniuse-lite/data/features/css3-cursors-grab.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M" }, C: { "1": "4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "33": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB iC jC" }, D: { "1": "4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "33": "J IB K D E F A kC MC lC mC nC oC NC" }, F: { "1": "C nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F B vC wC xC yC AC cC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "33": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 2, C: "CSS grab & grabbing cursors", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-sticky.js
+var require_css_sticky = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-sticky.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G", "1028": "Q H R S T U V W X Y Z", "4100": "N O P" }, C: { "1": "4 5 6 7 8 9 HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "194": "KB LB MB NB OB PB", "516": "QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB" }, D: { "1": "4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 J IB K D E F A B C L M G N O P JB y z VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB", "322": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB kB lB mB nB", "1028": "oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC", "33": "E F A B C nC oC NC AC BC", "2084": "D mC" }, F: { "1": "8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB vC wC xC yC AC cC zC BC", "322": "XB YB ZB", "1028": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B" }, G: { "1": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "E 4C 5C 6C 7C 8C 9C AD BD CD", "2084": "2C 3C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD" }, Q: { "1028": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "516": "gD" } }, B: 5, C: "CSS position:sticky", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/pointer.js
+var require_pointer = __commonJS({
+  "node_modules/caniuse-lite/data/features/pointer.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F eC", "164": "A" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC", "8": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB", "328": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB" }, D: { "1": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB y z", "8": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB", "584": "kB lB mB" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC", "8": "D E F A B C mC nC oC NC AC", "1096": "BC" }, F: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "8": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB", "584": "XB YB ZB" }, G: { "1": "ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD", "6148": "DD" }, H: { "2": "MD" }, I: { "1": "I", "8": "GC J ND OD PD QD dC RD SD" }, J: { "8": "D A" }, K: { "1": "H", "2": "A", "8": "B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "36": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "TD", "8": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "328": "gD" } }, B: 2, C: "Pointer events", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/text-decoration.js
+var require_text_decoration2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/text-decoration.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "2052": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "fC GC J IB iC jC", "1028": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "1060": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z", "226": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB", "2052": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D kC MC lC mC", "772": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "804": "E F A B C oC NC AC", "1316": "nC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB vC wC xC yC AC cC zC BC", "226": "TB UB VB WB XB YB ZB aB bB", "2052": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "MC 0C dC 1C 2C 3C", "292": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "2052": "H" }, L: { "2052": "I" }, M: { "1028": "9B" }, N: { "2": "A B" }, O: { "2052": "CC" }, P: { "2": "J TD UD", "2052": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2052": "eD" }, R: { "2052": "fD" }, S: { "1028": "gD hD" } }, B: 4, C: "text-decoration styling", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js
+var require_mdn_text_decoration_shorthand = __commonJS({
+  "node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC" }, M: { "1": "9B" }, A: { "2": "K D E F A B eC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB vC wC xC yC AC cC zC BC" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "2": "J IB K D kC MC lC mC nC uC", "33": "E F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC" }, G: { "2": "MC 0C dC 1C 2C 3C", "33": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" } }, B: 6, C: "text-decoration shorthand property", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js
+var require_mdn_text_decoration_color = __commonJS({
+  "node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC", "33": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, M: { "1": "9B" }, A: { "2": "K D E F A B eC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB vC wC xC yC AC cC zC BC" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "J IB K D kC MC lC mC nC uC", "33": "E F A B C oC NC AC" }, G: { "1": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C", "33": "E 4C 5C 6C 7C 8C 9C AD BD" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" } }, B: 6, C: "text-decoration-color property", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js
+var require_mdn_text_decoration_line = __commonJS({
+  "node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC", "33": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, M: { "1": "9B" }, A: { "2": "K D E F A B eC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB vC wC xC yC AC cC zC BC" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "J IB K D kC MC lC mC nC uC", "33": "E F A B C oC NC AC" }, G: { "1": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C", "33": "E 4C 5C 6C 7C 8C 9C AD BD" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" } }, B: 6, C: "text-decoration-line property", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js
+var require_mdn_text_decoration_style = __commonJS({
+  "node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC", "33": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, M: { "1": "9B" }, A: { "2": "K D E F A B eC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB vC wC xC yC AC cC zC BC" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "J IB K D kC MC lC mC nC uC", "33": "E F A B C oC NC AC" }, G: { "1": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C", "33": "E 4C 5C 6C 7C 8C 9C AD BD" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" } }, B: 6, C: "text-decoration-style property", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/text-size-adjust.js
+var require_text_size_adjust = __commonJS({
+  "node_modules/caniuse-lite/data/features/text-size-adjust.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "33": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB", "258": "KB" }, E: { "2": "J IB K D E F A B C L M G kC MC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "258": "lC" }, F: { "1": "bB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB cB vC wC xC yC AC cC zC BC" }, G: { "2": "MC 0C dC", "33": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "33": "9B" }, N: { "161": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "CSS text-size-adjust", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-masks.js
+var require_css_masks = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-masks.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "9 AB BB CB DB EB FB GB HB I", "2": "C L M G N", "164": "4 5 6 7 8 Q H 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", "3138": "O", "12292": "P" }, C: { "1": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "260": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB iC jC" }, D: { "1": "9 AB BB CB DB EB FB GB HB I 9B KC LC", "164": "0 1 2 3 4 5 6 7 8 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC", "164": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "p q r s t u v w x", "2": "F B C vC wC xC yC AC cC zC BC", "164": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l m n o" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "164": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "164": "RD SD", "676": "GC J ND OD PD QD dC" }, J: { "164": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "164": "CC" }, P: { "1": "3", "164": "0 1 2 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "164": "eD" }, R: { "164": "fD" }, S: { "1": "hD", "260": "gD" } }, B: 4, C: "CSS Masks", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-clip-path.js
+var require_css_clip_path = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-clip-path.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O", "260": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "3138": "P" }, C: { "1": "4 5 6 7 8 9 mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "132": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB iC jC", "644": "fB gB hB iB jB kB lB" }, D: { "2": "0 1 J IB K D E F A B C L M G N O P JB y z", "260": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "292": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB" }, E: { "2": "J IB K kC MC lC mC", "260": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "292": "D E F A B C L nC oC NC AC BC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "260": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "292": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB" }, G: { "2": "MC 0C dC 1C 2C", "260": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "292": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC", "260": "I", "292": "RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "260": "H" }, L: { "260": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "260": "CC" }, P: { "260": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "292": "J TD" }, Q: { "260": "eD" }, R: { "260": "fD" }, S: { "1": "hD", "644": "gD" } }, B: 4, C: "CSS clip-path property (for HTML)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js
+var require_css_boxdecorationbreak = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "164": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB iC jC" }, D: { "2": "J IB K D E F A B C L M G N O P JB y z", "164": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K kC MC lC", "164": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F vC wC xC yC", "129": "B C AC cC zC BC", "164": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "MC 0C dC 1C 2C", "164": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "132": "MD" }, I: { "2": "GC J ND OD PD QD dC", "164": "I RD SD" }, J: { "2": "D", "164": "A" }, K: { "2": "A", "129": "B C AC cC BC", "164": "H" }, L: { "164": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "164": "CC" }, P: { "164": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "164": "eD" }, R: { "164": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS box-decoration-break", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/object-fit.js
+var require_object_fit = __commonJS({
+  "node_modules/caniuse-lite/data/features/object-fit.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G", "260": "N O P" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB iC jC" }, D: { "1": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC", "132": "E F nC oC" }, F: { "1": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F G N O P vC wC xC", "33": "B C yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C", "132": "E 4C 5C 6C" }, H: { "33": "MD" }, I: { "1": "I SD", "2": "GC J ND OD PD QD dC RD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A", "33": "B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS3 object-fit/object-position", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-shapes.js
+var require_css_shapes = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-shapes.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB iC jC", "322": "jB kB lB mB nB oB pB qB HC rB IC" }, D: { "1": "4 5 6 7 8 9 VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB", "194": "SB TB UB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC", "33": "E F A nC oC" }, F: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C", "33": "E 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "CSS Shapes Level 1", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/text-overflow.js
+var require_text_overflow = __commonJS({
+  "node_modules/caniuse-lite/data/features/text-overflow.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B", "2": "eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "8": "fC GC J IB K iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "33": "F vC wC xC yC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "H BC", "33": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS3 Text-overflow", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-deviceadaptation.js
+var require_css_deviceadaptation = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-deviceadaptation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "164": "A B" }, B: { "66": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "164": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB", "66": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB vC wC xC yC AC cC zC BC", "66": "YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "292": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A H", "292": "B C AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "164": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "66": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Device Adaptation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-media-resolution.js
+var require_css_media_resolution = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-media-resolution.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "132": "F A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "1028": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "260": "J IB K D E F A B C L M G iC jC", "1028": "0 1 2 3 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC" }, D: { "1": "4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "548": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB", "1028": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC", "548": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "1": "nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F", "548": "B C vC wC xC yC AC cC zC", "1028": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC", "548": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "132": "MD" }, I: { "1": "I", "16": "ND OD", "548": "GC J PD QD dC", "1028": "RD SD" }, J: { "548": "D A" }, K: { "1": "H BC", "548": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "1028": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Media Queries: resolution feature", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-text-align-last.js
+var require_css_text_align_last = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-text-align-last.js"(exports2, module2) {
+    module2.exports = { A: { A: { "132": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "4": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B iC jC", "33": "0 1 2 3 C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB" }, D: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB", "322": "TB UB VB WB XB YB ZB aB bB cB dB eB" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "1": "SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N O P JB y z vC wC xC yC AC cC zC BC", "578": "0 1 2 3 KB LB MB NB OB PB QB RB" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "33": "gD" } }, B: 4, C: "CSS3 text-align-last", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-crisp-edges.js
+var require_css_crisp_edges = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-crisp-edges.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K eC", "2340": "D E F A B" }, B: { "2": "C L M G N O P", "1025": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC", "513": "vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b", "545": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB", "1025": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "164": "K", "4644": "D E F mC nC oC" }, F: { "2": "0 1 2 3 F B G N O P JB y z KB LB vC wC xC yC AC cC", "545": "C zC BC", "1025": "MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC", "4260": "1C 2C", "4644": "E 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "1025": "I" }, J: { "2": "D", "4260": "A" }, K: { "2": "A B AC cC", "545": "C BC", "1025": "H" }, L: { "1025": "I" }, M: { "1": "9B" }, N: { "2340": "A B" }, O: { "1025": "CC" }, P: { "1025": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1025": "eD" }, R: { "1025": "fD" }, S: { "1": "hD", "4097": "gD" } }, B: 4, C: "Crisp edges/pixelated images", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-logical-props.js
+var require_css_logical_props = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-logical-props.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "1028": "W X", "1540": "Q H R S T U V" }, C: { "1": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC", "164": "0 1 2 3 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB iC jC", "1540": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "292": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB", "1028": "W X", "1540": "zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "292": "J IB K D E F A B C kC MC lC mC nC oC NC AC", "1540": "L M BC pC", "3076": "qC" }, F: { "1": "6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "292": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB", "1028": "4B 5B", "1540": "oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "292": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD", "1540": "CD DD ED FD GD HD", "3076": "ID" }, H: { "2": "MD" }, I: { "1": "I", "292": "GC J ND OD PD QD dC RD SD" }, J: { "292": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z cD DC EC FC dD", "292": "J TD UD VD WD XD", "1540": "NC YD ZD aD bD" }, Q: { "1540": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "1540": "gD" } }, B: 5, C: "CSS Logical Properties", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-appearance.js
+var require_css_appearance = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-appearance.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "33": "S", "164": "Q H R", "388": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "164": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q", "676": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "S", "164": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "164": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0B 1B 2B", "164": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "164": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "164": "GC J ND OD PD QD dC RD SD" }, J: { "164": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A", "388": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "164": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "164": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "164": "gD" } }, B: 5, C: "CSS Appearance", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-snappoints.js
+var require_css_snappoints = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-snappoints.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "6308": "A", "6436": "B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "6436": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB iC jC", "2052": "XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB" }, D: { "1": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB", "8258": "wB xB yB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC", "3108": "F A oC NC" }, F: { "1": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB vC wC xC yC AC cC zC BC", "8258": "mB nB oB pB qB rB sB tB" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C", "3108": "5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2052": "gD" } }, B: 4, C: "CSS Scroll Snap", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-regions.js
+var require_css_regions = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-regions.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "420": "A B" }, B: { "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "420": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "4 5 6 7 8 9 J IB K D E F A B C L M TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "36": "G N O P", "66": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB" }, E: { "2": "J IB K C L M G kC MC lC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "33": "D E F A B mC nC oC NC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "MC 0C dC 1C 2C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "33": "E 3C 4C 5C 6C 7C 8C 9C" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "420": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Regions", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-image-set.js
+var require_css_image_set = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-image-set.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "164": "Q H 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", "2049": "w" }, C: { "1": "4 5 6 7 8 9 w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U iC jC", "66": "V W", "2305": "Y Z a b c d e f g h i j k l m n o p q r s t u v", "2820": "X" }, D: { "1": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB y", "164": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "2049": "w" }, E: { "1": "EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "132": "A B C L NC AC BC pC", "164": "K D E F mC nC oC", "1540": "M G qC rC OC PC CC sC DC QC RC SC TC UC tC" }, F: { "1": "j k l m n o p q r s t u v w x", "2": "F B C vC wC xC yC AC cC zC BC", "164": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h", "2049": "i" }, G: { "1": "EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "132": "7C 8C 9C AD BD CD DD ED FD GD", "164": "E 2C 3C 4C 5C 6C", "1540": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "164": "RD SD" }, J: { "2": "D", "164": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "164": "CC" }, P: { "1": "1 2 3", "164": "0 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "164": "eD" }, R: { "164": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS image-set", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-writing-mode.js
+var require_css_writing_mode = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-writing-mode.js"(exports2, module2) {
+    module2.exports = { A: { A: { "132": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB iC jC", "322": "UB VB WB XB YB" }, D: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K", "16": "D", "33": "0 1 2 3 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "16": "IB", "33": "K D E F A lC mC nC oC NC" }, F: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC", "33": "E 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "ND OD PD", "33": "GC J QD dC RD SD" }, J: { "33": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "36": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "33": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS writing-mode property", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-cross-fade.js
+var require_css_cross_fade = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-cross-fade.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "33": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "J IB K D E F A B C L M G N", "33": "0 1 2 3 4 5 6 7 8 9 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC", "33": "K D E F lC mC nC oC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC", "33": "E 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC", "33": "I RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "33": "H" }, L: { "33": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "33": "CC" }, P: { "33": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "33": "eD" }, R: { "33": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "CSS Cross-Fade Function", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-read-only-write.js
+var require_css_read_only_write = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-read-only-write.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C" }, C: { "1": "4 5 6 7 8 9 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "16": "fC", "33": "0 1 2 3 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B iC jC" }, D: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC MC", "132": "J IB K D E lC mC nC" }, F: { "1": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F B vC wC xC yC AC", "132": "0 C G N O P JB y z cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C", "132": "E dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "16": "ND OD", "132": "GC J PD QD dC RD SD" }, J: { "1": "A", "132": "D" }, K: { "1": "H", "2": "A B AC", "132": "C cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "33": "gD" } }, B: 1, C: "CSS :read-only and :read-write selectors", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/text-emphasis.js
+var require_text_emphasis = __commonJS({
+  "node_modules/caniuse-lite/data/features/text-emphasis.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "164": "Q H R S T U V W X Y Z a b c d e f g h" }, C: { "1": "4 5 6 7 8 9 eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB iC jC", "322": "dB" }, D: { "1": "4 5 6 7 8 9 i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 J IB K D E F A B C L M G N O P JB y z", "164": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f g h" }, E: { "1": "E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC", "164": "D mC" }, F: { "1": "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", "2": "F B C vC wC xC yC AC cC zC BC", "164": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "164": "RD SD" }, J: { "2": "D", "164": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z FC dD", "164": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC" }, Q: { "164": "eD" }, R: { "164": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "text-emphasis styling", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-grid.js
+var require_css_grid = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-grid.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "8": "F", "292": "A B" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "292": "C L M G" }, C: { "1": "4 5 6 7 8 9 mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P iC jC", "8": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB", "584": "YB ZB aB bB cB dB eB fB gB hB iB jB", "1025": "kB lB" }, D: { "1": "4 5 6 7 8 9 qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 J IB K D E F A B C L M G N O P JB y z", "8": "3 KB LB MB", "200": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB", "1025": "pB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "8": "K D E F A mC nC oC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB vC wC xC yC AC cC zC BC", "200": "MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "8": "E 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD", "8": "dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "292": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "TD", "8": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS Grid Layout (level 1)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-text-spacing.js
+var require_css_text_spacing = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-text-spacing.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D eC", "161": "E F A B" }, B: { "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "161": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "16": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Text 4 text-spacing", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-any-link.js
+var require_css_any_link = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-any-link.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "16": "fC", "33": "0 1 2 3 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iC jC" }, D: { "1": "4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB K kC MC lC", "33": "D E mC nC" }, F: { "1": "kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC 1C", "33": "E 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "16": "GC J ND OD PD QD dC", "33": "RD SD" }, J: { "16": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "16": "J", "33": "TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "33": "gD" } }, B: 5, C: "CSS :any-link selector", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js
+var require_mdn_css_unicode_bidi_isolate = __commonJS({
+  "node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G", "33": "0 1 2 3 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F iC jC", "33": "0 1 2 3 A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB" }, M: { "1": "9B" }, A: { "2": "K D E F A B eC" }, F: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "J IB kC MC lC uC", "33": "K D E F A mC nC oC NC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "E 2C 3C 4C 5C 6C 7C 8C" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" } }, B: 6, C: "isolate from unicode-bidi", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js
+var require_mdn_css_unicode_bidi_plaintext = __commonJS({
+  "node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F iC jC", "33": "0 1 2 3 A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB" }, M: { "1": "9B" }, A: { "2": "K D E F A B eC" }, F: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB vC wC xC yC AC cC zC BC" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "J IB kC MC lC uC", "33": "K D E F A mC nC oC NC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "E 2C 3C 4C 5C 6C 7C 8C" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" } }, B: 6, C: "plaintext from unicode-bidi", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js
+var require_mdn_css_unicode_bidi_isolate_override = __commonJS({
+  "node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js"(exports2, module2) {
+    module2.exports = { A: { D: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, L: { "1": "I" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N iC jC", "33": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB" }, M: { "1": "9B" }, A: { "2": "K D E F A B eC" }, F: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB vC wC xC yC AC cC zC BC" }, K: { "1": "H", "2": "A B C AC cC BC" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "J IB K kC MC lC mC uC", "33": "D E F A nC oC NC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C", "33": "E 3C 4C 5C 6C 7C 8C" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" } }, B: 6, C: "isolate-override from unicode-bidi", D: void 0 };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-overscroll-behavior.js
+var require_css_overscroll_behavior = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-overscroll-behavior.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "132": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "132": "C L M G N O", "516": "P" }, C: { "1": "4 5 6 7 8 9 HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB iC jC" }, D: { "1": "4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB", "260": "tB uB" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC", "1090": "G qC rC OC PC CC sC" }, F: { "1": "kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB vC wC xC yC AC cC zC BC", "260": "iB jB" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD", "1090": "ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "CSS overscroll-behavior", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-text-orientation.js
+var require_css_text_orientation = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-text-orientation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB iC jC", "194": "WB XB YB" }, D: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, E: { "1": "M G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC", "16": "A", "33": "B C L NC AC BC pC" }, F: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS text-orientation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-print-color-adjust.js
+var require_css_print_color_adjust = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-print-color-adjust.js"(exports2, module2) {
+    module2.exports = { A: { D: { "2": "J IB K D E F A B C L M G N", "33": "0 1 2 3 4 5 6 7 8 9 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, L: { "33": "I" }, B: { "2": "C L M G N O P", "33": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB iC jC", "33": "gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f" }, M: { "1": "9B" }, A: { "2": "K D E F A B eC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, K: { "2": "A B C AC cC BC", "33": "H" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC", "2": "J IB kC MC lC uC", "33": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, P: { "33": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, I: { "2": "GC J ND OD PD QD dC", "33": "I RD SD" } }, B: 6, C: "print-color-adjust property", D: void 0 };
+  }
+});
+
+// node_modules/autoprefixer/data/prefixes.js
+var require_prefixes2 = __commonJS({
+  "node_modules/autoprefixer/data/prefixes.js"(exports2, module2) {
+    var unpack = require_feature();
+    function browsersSort(a, b) {
+      a = a.split(" ");
+      b = b.split(" ");
+      if (a[0] > b[0]) {
+        return 1;
+      } else if (a[0] < b[0]) {
+        return -1;
+      } else {
+        return Math.sign(parseFloat(a[1]) - parseFloat(b[1]));
+      }
+    }
+    function f(data, opts, callback) {
+      data = unpack(data);
+      if (!callback) {
+        ;
+        [callback, opts] = [opts, {}];
+      }
+      let match = opts.match || /\sx($|\s)/;
+      let need = [];
+      for (let browser in data.stats) {
+        let versions = data.stats[browser];
+        for (let version in versions) {
+          let support = versions[version];
+          if (support.match(match)) {
+            need.push(browser + " " + version);
+          }
+        }
+      }
+      callback(need.sort(browsersSort));
+    }
+    var result = {};
+    function prefix(names, data) {
+      for (let name of names) {
+        result[name] = Object.assign({}, data);
+      }
+    }
+    function add(names, data) {
+      for (let name of names) {
+        result[name].browsers = result[name].browsers.concat(data.browsers).sort(browsersSort);
+      }
+    }
+    module2.exports = result;
+    var prefixBorderRadius = require_border_radius2();
+    f(
+      prefixBorderRadius,
+      (browsers) => prefix(
+        [
+          "border-radius",
+          "border-top-left-radius",
+          "border-top-right-radius",
+          "border-bottom-right-radius",
+          "border-bottom-left-radius"
+        ],
+        {
+          browsers,
+          feature: "border-radius",
+          mistakes: ["-khtml-", "-ms-", "-o-"]
+        }
+      )
+    );
+    var prefixBoxshadow = require_css_boxshadow();
+    f(
+      prefixBoxshadow,
+      (browsers) => prefix(["box-shadow"], {
+        browsers,
+        feature: "css-boxshadow",
+        mistakes: ["-khtml-"]
+      })
+    );
+    var prefixAnimation = require_css_animation();
+    f(
+      prefixAnimation,
+      (browsers) => prefix(
+        [
+          "animation",
+          "animation-name",
+          "animation-duration",
+          "animation-delay",
+          "animation-direction",
+          "animation-fill-mode",
+          "animation-iteration-count",
+          "animation-play-state",
+          "animation-timing-function",
+          "@keyframes"
+        ],
+        {
+          browsers,
+          feature: "css-animation",
+          mistakes: ["-khtml-", "-ms-"]
+        }
+      )
+    );
+    var prefixTransition = require_css_transitions();
+    f(
+      prefixTransition,
+      (browsers) => prefix(
+        [
+          "transition",
+          "transition-property",
+          "transition-duration",
+          "transition-delay",
+          "transition-timing-function"
+        ],
+        {
+          browsers,
+          feature: "css-transitions",
+          mistakes: ["-khtml-", "-ms-"]
+        }
+      )
+    );
+    var prefixTransform2d = require_transforms2d();
+    f(
+      prefixTransform2d,
+      (browsers) => prefix(["transform", "transform-origin"], {
+        browsers,
+        feature: "transforms2d"
+      })
+    );
+    var prefixTransforms3d = require_transforms3d();
+    f(prefixTransforms3d, (browsers) => {
+      prefix(["perspective", "perspective-origin"], {
+        browsers,
+        feature: "transforms3d"
+      });
+      return prefix(["transform-style"], {
+        browsers,
+        feature: "transforms3d",
+        mistakes: ["-ms-", "-o-"]
+      });
+    });
+    f(
+      prefixTransforms3d,
+      { match: /y\sx|y\s#2/ },
+      (browsers) => prefix(["backface-visibility"], {
+        browsers,
+        feature: "transforms3d",
+        mistakes: ["-ms-", "-o-"]
+      })
+    );
+    var prefixGradients = require_css_gradients();
+    f(
+      prefixGradients,
+      { match: /y\sx/ },
+      (browsers) => prefix(
+        [
+          "linear-gradient",
+          "repeating-linear-gradient",
+          "radial-gradient",
+          "repeating-radial-gradient"
+        ],
+        {
+          browsers,
+          feature: "css-gradients",
+          mistakes: ["-ms-"],
+          props: [
+            "background",
+            "background-image",
+            "border-image",
+            "mask",
+            "list-style",
+            "list-style-image",
+            "content",
+            "mask-image"
+          ]
+        }
+      )
+    );
+    f(prefixGradients, { match: /a\sx/ }, (browsers) => {
+      browsers = browsers.map((i) => {
+        if (/firefox|op/.test(i)) {
+          return i;
+        } else {
+          return `${i} old`;
+        }
+      });
+      return add(
+        [
+          "linear-gradient",
+          "repeating-linear-gradient",
+          "radial-gradient",
+          "repeating-radial-gradient"
+        ],
+        {
+          browsers,
+          feature: "css-gradients"
+        }
+      );
+    });
+    var prefixBoxsizing = require_css3_boxsizing();
+    f(
+      prefixBoxsizing,
+      (browsers) => prefix(["box-sizing"], {
+        browsers,
+        feature: "css3-boxsizing"
+      })
+    );
+    var prefixFilters = require_css_filters();
+    f(
+      prefixFilters,
+      (browsers) => prefix(["filter"], {
+        browsers,
+        feature: "css-filters"
+      })
+    );
+    var prefixFilterFunction = require_css_filter_function();
+    f(
+      prefixFilterFunction,
+      (browsers) => prefix(["filter-function"], {
+        browsers,
+        feature: "css-filter-function",
+        props: [
+          "background",
+          "background-image",
+          "border-image",
+          "mask",
+          "list-style",
+          "list-style-image",
+          "content",
+          "mask-image"
+        ]
+      })
+    );
+    var prefixBackdropFilter = require_css_backdrop_filter();
+    f(
+      prefixBackdropFilter,
+      { match: /y\sx|y\s#2/ },
+      (browsers) => prefix(["backdrop-filter"], {
+        browsers,
+        feature: "css-backdrop-filter"
+      })
+    );
+    var prefixElementFunction = require_css_element_function();
+    f(
+      prefixElementFunction,
+      (browsers) => prefix(["element"], {
+        browsers,
+        feature: "css-element-function",
+        props: [
+          "background",
+          "background-image",
+          "border-image",
+          "mask",
+          "list-style",
+          "list-style-image",
+          "content",
+          "mask-image"
+        ]
+      })
+    );
+    var prefixMulticolumns = require_multicolumn();
+    f(prefixMulticolumns, (browsers) => {
+      prefix(
+        [
+          "columns",
+          "column-width",
+          "column-gap",
+          "column-rule",
+          "column-rule-color",
+          "column-rule-width",
+          "column-count",
+          "column-rule-style",
+          "column-span",
+          "column-fill"
+        ],
+        {
+          browsers,
+          feature: "multicolumn"
+        }
+      );
+      let noff = browsers.filter((i) => !/firefox/.test(i));
+      prefix(["break-before", "break-after", "break-inside"], {
+        browsers: noff,
+        feature: "multicolumn"
+      });
+    });
+    var prefixUserSelect = require_user_select_none();
+    f(
+      prefixUserSelect,
+      (browsers) => prefix(["user-select"], {
+        browsers,
+        feature: "user-select-none",
+        mistakes: ["-khtml-"]
+      })
+    );
+    var prefixFlexbox = require_flexbox();
+    f(prefixFlexbox, { match: /a\sx/ }, (browsers) => {
+      browsers = browsers.map((i) => {
+        if (/ie|firefox/.test(i)) {
+          return i;
+        } else {
+          return `${i} 2009`;
+        }
+      });
+      prefix(["display-flex", "inline-flex"], {
+        browsers,
+        feature: "flexbox",
+        props: ["display"]
+      });
+      prefix(["flex", "flex-grow", "flex-shrink", "flex-basis"], {
+        browsers,
+        feature: "flexbox"
+      });
+      prefix(
+        [
+          "flex-direction",
+          "flex-wrap",
+          "flex-flow",
+          "justify-content",
+          "order",
+          "align-items",
+          "align-self",
+          "align-content"
+        ],
+        {
+          browsers,
+          feature: "flexbox"
+        }
+      );
+    });
+    f(prefixFlexbox, { match: /y\sx/ }, (browsers) => {
+      add(["display-flex", "inline-flex"], {
+        browsers,
+        feature: "flexbox"
+      });
+      add(["flex", "flex-grow", "flex-shrink", "flex-basis"], {
+        browsers,
+        feature: "flexbox"
+      });
+      add(
+        [
+          "flex-direction",
+          "flex-wrap",
+          "flex-flow",
+          "justify-content",
+          "order",
+          "align-items",
+          "align-self",
+          "align-content"
+        ],
+        {
+          browsers,
+          feature: "flexbox"
+        }
+      );
+    });
+    var prefixCalc = require_calc();
+    f(
+      prefixCalc,
+      (browsers) => prefix(["calc"], {
+        browsers,
+        feature: "calc",
+        props: ["*"]
+      })
+    );
+    var prefixBackgroundOptions = require_background_img_opts();
+    f(
+      prefixBackgroundOptions,
+      (browsers) => prefix(["background-origin", "background-size"], {
+        browsers,
+        feature: "background-img-opts"
+      })
+    );
+    var prefixBackgroundClipText = require_background_clip_text();
+    f(
+      prefixBackgroundClipText,
+      (browsers) => prefix(["background-clip"], {
+        browsers,
+        feature: "background-clip-text"
+      })
+    );
+    var prefixFontFeature = require_font_feature();
+    f(
+      prefixFontFeature,
+      (browsers) => prefix(
+        [
+          "font-feature-settings",
+          "font-variant-ligatures",
+          "font-language-override"
+        ],
+        {
+          browsers,
+          feature: "font-feature"
+        }
+      )
+    );
+    var prefixFontKerning = require_font_kerning();
+    f(
+      prefixFontKerning,
+      (browsers) => prefix(["font-kerning"], {
+        browsers,
+        feature: "font-kerning"
+      })
+    );
+    var prefixBorderImage = require_border_image2();
+    f(
+      prefixBorderImage,
+      (browsers) => prefix(["border-image"], {
+        browsers,
+        feature: "border-image"
+      })
+    );
+    var prefixSelection = require_css_selection();
+    f(
+      prefixSelection,
+      (browsers) => prefix(["::selection"], {
+        browsers,
+        feature: "css-selection",
+        selector: true
+      })
+    );
+    var prefixPlaceholder = require_css_placeholder();
+    f(prefixPlaceholder, (browsers) => {
+      prefix(["::placeholder"], {
+        browsers: browsers.concat(["ie 10 old", "ie 11 old", "firefox 18 old"]),
+        feature: "css-placeholder",
+        selector: true
+      });
+    });
+    var prefixPlaceholderShown = require_css_placeholder_shown();
+    f(prefixPlaceholderShown, (browsers) => {
+      prefix([":placeholder-shown"], {
+        browsers,
+        feature: "css-placeholder-shown",
+        selector: true
+      });
+    });
+    var prefixHyphens = require_css_hyphens();
+    f(
+      prefixHyphens,
+      (browsers) => prefix(["hyphens"], {
+        browsers,
+        feature: "css-hyphens"
+      })
+    );
+    var prefixFullscreen = require_fullscreen2();
+    f(
+      prefixFullscreen,
+      (browsers) => prefix([":fullscreen"], {
+        browsers,
+        feature: "fullscreen",
+        selector: true
+      })
+    );
+    var prefixBackdrop = require_mdn_css_backdrop_pseudo_element();
+    f(
+      prefixBackdrop,
+      (browsers) => prefix(["::backdrop"], {
+        browsers,
+        feature: "backdrop",
+        selector: true
+      })
+    );
+    var prefixFileSelectorButton = require_css_file_selector_button();
+    f(
+      prefixFileSelectorButton,
+      (browsers) => prefix(["::file-selector-button"], {
+        browsers,
+        feature: "file-selector-button",
+        selector: true
+      })
+    );
+    var prefixAutofill = require_css_autofill();
+    f(
+      prefixAutofill,
+      (browsers) => prefix([":autofill"], {
+        browsers,
+        feature: "css-autofill",
+        selector: true
+      })
+    );
+    var prefixTabsize = require_css3_tabsize();
+    f(
+      prefixTabsize,
+      (browsers) => prefix(["tab-size"], {
+        browsers,
+        feature: "css3-tabsize"
+      })
+    );
+    var prefixIntrinsic = require_intrinsic_width();
+    var sizeProps = [
+      "width",
+      "min-width",
+      "max-width",
+      "height",
+      "min-height",
+      "max-height",
+      "inline-size",
+      "min-inline-size",
+      "max-inline-size",
+      "block-size",
+      "min-block-size",
+      "max-block-size",
+      "grid",
+      "grid-template",
+      "grid-template-rows",
+      "grid-template-columns",
+      "grid-auto-columns",
+      "grid-auto-rows"
+    ];
+    f(
+      prefixIntrinsic,
+      (browsers) => prefix(["max-content", "min-content"], {
+        browsers,
+        feature: "intrinsic-width",
+        props: sizeProps
+      })
+    );
+    f(
+      prefixIntrinsic,
+      { match: /x|\s#4/ },
+      (browsers) => prefix(["fill", "fill-available"], {
+        browsers,
+        feature: "intrinsic-width",
+        props: sizeProps
+      })
+    );
+    f(prefixIntrinsic, { match: /x|\s#5/ }, (browsers) => {
+      let ffFix = browsers.filter((i) => {
+        let [name, version] = i.split(" ");
+        if (name === "firefox" || name === "and_ff") {
+          return parseInt(version) < 94;
+        } else {
+          return true;
+        }
+      });
+      return prefix(["fit-content"], {
+        browsers: ffFix,
+        feature: "intrinsic-width",
+        props: sizeProps
+      });
+    });
+    var prefixStretch = require_css_width_stretch();
+    f(
+      prefixStretch,
+      (browsers) => prefix(["stretch"], {
+        browsers,
+        feature: "css-width-stretch",
+        props: sizeProps
+      })
+    );
+    var prefixCursorsNewer = require_css3_cursors_newer();
+    f(
+      prefixCursorsNewer,
+      (browsers) => prefix(["zoom-in", "zoom-out"], {
+        browsers,
+        feature: "css3-cursors-newer",
+        props: ["cursor"]
+      })
+    );
+    var prefixCursorsGrab = require_css3_cursors_grab();
+    f(
+      prefixCursorsGrab,
+      (browsers) => prefix(["grab", "grabbing"], {
+        browsers,
+        feature: "css3-cursors-grab",
+        props: ["cursor"]
+      })
+    );
+    var prefixSticky = require_css_sticky();
+    f(
+      prefixSticky,
+      (browsers) => prefix(["sticky"], {
+        browsers,
+        feature: "css-sticky",
+        props: ["position"]
+      })
+    );
+    var prefixPointer = require_pointer();
+    f(
+      prefixPointer,
+      (browsers) => prefix(["touch-action"], {
+        browsers,
+        feature: "pointer"
+      })
+    );
+    var prefixDecoration = require_text_decoration2();
+    f(
+      prefixDecoration,
+      { match: /x.*#[235]/ },
+      (browsers) => prefix(["text-decoration-skip", "text-decoration-skip-ink"], {
+        browsers,
+        feature: "text-decoration"
+      })
+    );
+    var prefixDecorationShorthand = require_mdn_text_decoration_shorthand();
+    f(
+      prefixDecorationShorthand,
+      (browsers) => prefix(["text-decoration"], {
+        browsers,
+        feature: "text-decoration"
+      })
+    );
+    var prefixDecorationColor = require_mdn_text_decoration_color();
+    f(
+      prefixDecorationColor,
+      (browsers) => prefix(["text-decoration-color"], {
+        browsers,
+        feature: "text-decoration"
+      })
+    );
+    var prefixDecorationLine = require_mdn_text_decoration_line();
+    f(
+      prefixDecorationLine,
+      (browsers) => prefix(["text-decoration-line"], {
+        browsers,
+        feature: "text-decoration"
+      })
+    );
+    var prefixDecorationStyle = require_mdn_text_decoration_style();
+    f(
+      prefixDecorationStyle,
+      (browsers) => prefix(["text-decoration-style"], {
+        browsers,
+        feature: "text-decoration"
+      })
+    );
+    var prefixTextSizeAdjust = require_text_size_adjust();
+    f(
+      prefixTextSizeAdjust,
+      (browsers) => prefix(["text-size-adjust"], {
+        browsers,
+        feature: "text-size-adjust"
+      })
+    );
+    var prefixCssMasks = require_css_masks();
+    f(prefixCssMasks, (browsers) => {
+      prefix(
+        [
+          "mask-clip",
+          "mask-composite",
+          "mask-image",
+          "mask-origin",
+          "mask-repeat",
+          "mask-border-repeat",
+          "mask-border-source"
+        ],
+        {
+          browsers,
+          feature: "css-masks"
+        }
+      );
+      prefix(
+        [
+          "mask",
+          "mask-position",
+          "mask-size",
+          "mask-border",
+          "mask-border-outset",
+          "mask-border-width",
+          "mask-border-slice"
+        ],
+        {
+          browsers,
+          feature: "css-masks"
+        }
+      );
+    });
+    var prefixClipPath = require_css_clip_path();
+    f(
+      prefixClipPath,
+      (browsers) => prefix(["clip-path"], {
+        browsers,
+        feature: "css-clip-path"
+      })
+    );
+    var prefixBoxdecoration = require_css_boxdecorationbreak();
+    f(
+      prefixBoxdecoration,
+      (browsers) => prefix(["box-decoration-break"], {
+        browsers,
+        feature: "css-boxdecorationbreak"
+      })
+    );
+    var prefixObjectFit = require_object_fit();
+    f(
+      prefixObjectFit,
+      (browsers) => prefix(["object-fit", "object-position"], {
+        browsers,
+        feature: "object-fit"
+      })
+    );
+    var prefixShapes = require_css_shapes();
+    f(
+      prefixShapes,
+      (browsers) => prefix(["shape-margin", "shape-outside", "shape-image-threshold"], {
+        browsers,
+        feature: "css-shapes"
+      })
+    );
+    var prefixTextOverflow = require_text_overflow();
+    f(
+      prefixTextOverflow,
+      (browsers) => prefix(["text-overflow"], {
+        browsers,
+        feature: "text-overflow"
+      })
+    );
+    var prefixDeviceadaptation = require_css_deviceadaptation();
+    f(
+      prefixDeviceadaptation,
+      (browsers) => prefix(["@viewport"], {
+        browsers,
+        feature: "css-deviceadaptation"
+      })
+    );
+    var prefixResolut = require_css_media_resolution();
+    f(
+      prefixResolut,
+      { match: /( x($| )|a #2)/ },
+      (browsers) => prefix(["@resolution"], {
+        browsers,
+        feature: "css-media-resolution"
+      })
+    );
+    var prefixTextAlignLast = require_css_text_align_last();
+    f(
+      prefixTextAlignLast,
+      (browsers) => prefix(["text-align-last"], {
+        browsers,
+        feature: "css-text-align-last"
+      })
+    );
+    var prefixCrispedges = require_css_crisp_edges();
+    f(
+      prefixCrispedges,
+      { match: /y x|a x #1/ },
+      (browsers) => prefix(["pixelated"], {
+        browsers,
+        feature: "css-crisp-edges",
+        props: ["image-rendering"]
+      })
+    );
+    f(
+      prefixCrispedges,
+      { match: /a x #2/ },
+      (browsers) => prefix(["image-rendering"], {
+        browsers,
+        feature: "css-crisp-edges"
+      })
+    );
+    var prefixLogicalProps = require_css_logical_props();
+    f(
+      prefixLogicalProps,
+      (browsers) => prefix(
+        [
+          "border-inline-start",
+          "border-inline-end",
+          "margin-inline-start",
+          "margin-inline-end",
+          "padding-inline-start",
+          "padding-inline-end"
+        ],
+        {
+          browsers,
+          feature: "css-logical-props"
+        }
+      )
+    );
+    f(
+      prefixLogicalProps,
+      { match: /x\s#2/ },
+      (browsers) => prefix(
+        [
+          "border-block-start",
+          "border-block-end",
+          "margin-block-start",
+          "margin-block-end",
+          "padding-block-start",
+          "padding-block-end"
+        ],
+        {
+          browsers,
+          feature: "css-logical-props"
+        }
+      )
+    );
+    var prefixAppearance = require_css_appearance();
+    f(
+      prefixAppearance,
+      { match: /#2|x/ },
+      (browsers) => prefix(["appearance"], {
+        browsers,
+        feature: "css-appearance"
+      })
+    );
+    var prefixSnappoints = require_css_snappoints();
+    f(
+      prefixSnappoints,
+      (browsers) => prefix(
+        [
+          "scroll-snap-type",
+          "scroll-snap-coordinate",
+          "scroll-snap-destination",
+          "scroll-snap-points-x",
+          "scroll-snap-points-y"
+        ],
+        {
+          browsers,
+          feature: "css-snappoints"
+        }
+      )
+    );
+    var prefixRegions = require_css_regions();
+    f(
+      prefixRegions,
+      (browsers) => prefix(["flow-into", "flow-from", "region-fragment"], {
+        browsers,
+        feature: "css-regions"
+      })
+    );
+    var prefixImageSet = require_css_image_set();
+    f(
+      prefixImageSet,
+      (browsers) => prefix(["image-set"], {
+        browsers,
+        feature: "css-image-set",
+        props: [
+          "background",
+          "background-image",
+          "border-image",
+          "cursor",
+          "mask",
+          "mask-image",
+          "list-style",
+          "list-style-image",
+          "content"
+        ]
+      })
+    );
+    var prefixWritingMode = require_css_writing_mode();
+    f(
+      prefixWritingMode,
+      { match: /a|x/ },
+      (browsers) => prefix(["writing-mode"], {
+        browsers,
+        feature: "css-writing-mode"
+      })
+    );
+    var prefixCrossFade = require_css_cross_fade();
+    f(
+      prefixCrossFade,
+      (browsers) => prefix(["cross-fade"], {
+        browsers,
+        feature: "css-cross-fade",
+        props: [
+          "background",
+          "background-image",
+          "border-image",
+          "mask",
+          "list-style",
+          "list-style-image",
+          "content",
+          "mask-image"
+        ]
+      })
+    );
+    var prefixReadOnly = require_css_read_only_write();
+    f(
+      prefixReadOnly,
+      (browsers) => prefix([":read-only", ":read-write"], {
+        browsers,
+        feature: "css-read-only-write",
+        selector: true
+      })
+    );
+    var prefixTextEmphasis = require_text_emphasis();
+    f(
+      prefixTextEmphasis,
+      (browsers) => prefix(
+        [
+          "text-emphasis",
+          "text-emphasis-position",
+          "text-emphasis-style",
+          "text-emphasis-color"
+        ],
+        {
+          browsers,
+          feature: "text-emphasis"
+        }
+      )
+    );
+    var prefixGrid = require_css_grid();
+    f(prefixGrid, (browsers) => {
+      prefix(["display-grid", "inline-grid"], {
+        browsers,
+        feature: "css-grid",
+        props: ["display"]
+      });
+      prefix(
+        [
+          "grid-template-columns",
+          "grid-template-rows",
+          "grid-row-start",
+          "grid-column-start",
+          "grid-row-end",
+          "grid-column-end",
+          "grid-row",
+          "grid-column",
+          "grid-area",
+          "grid-template",
+          "grid-template-areas",
+          "place-self"
+        ],
+        {
+          browsers,
+          feature: "css-grid"
+        }
+      );
+    });
+    f(
+      prefixGrid,
+      { match: /a x/ },
+      (browsers) => prefix(["grid-column-align", "grid-row-align"], {
+        browsers,
+        feature: "css-grid"
+      })
+    );
+    var prefixTextSpacing = require_css_text_spacing();
+    f(
+      prefixTextSpacing,
+      (browsers) => prefix(["text-spacing"], {
+        browsers,
+        feature: "css-text-spacing"
+      })
+    );
+    var prefixAnyLink = require_css_any_link();
+    f(
+      prefixAnyLink,
+      (browsers) => prefix([":any-link"], {
+        browsers,
+        feature: "css-any-link",
+        selector: true
+      })
+    );
+    var bidiIsolate = require_mdn_css_unicode_bidi_isolate();
+    f(
+      bidiIsolate,
+      (browsers) => prefix(["isolate"], {
+        browsers,
+        feature: "css-unicode-bidi",
+        props: ["unicode-bidi"]
+      })
+    );
+    var bidiPlaintext = require_mdn_css_unicode_bidi_plaintext();
+    f(
+      bidiPlaintext,
+      (browsers) => prefix(["plaintext"], {
+        browsers,
+        feature: "css-unicode-bidi",
+        props: ["unicode-bidi"]
+      })
+    );
+    var bidiOverride = require_mdn_css_unicode_bidi_isolate_override();
+    f(
+      bidiOverride,
+      { match: /y x/ },
+      (browsers) => prefix(["isolate-override"], {
+        browsers,
+        feature: "css-unicode-bidi",
+        props: ["unicode-bidi"]
+      })
+    );
+    var prefixOverscroll = require_css_overscroll_behavior();
+    f(
+      prefixOverscroll,
+      { match: /a #1/ },
+      (browsers) => prefix(["overscroll-behavior"], {
+        browsers,
+        feature: "css-overscroll-behavior"
+      })
+    );
+    var prefixTextOrientation = require_css_text_orientation();
+    f(
+      prefixTextOrientation,
+      (browsers) => prefix(["text-orientation"], {
+        browsers,
+        feature: "css-text-orientation"
+      })
+    );
+    var prefixPrintAdjust = require_css_print_color_adjust();
+    f(
+      prefixPrintAdjust,
+      (browsers) => prefix(["print-color-adjust", "color-adjust"], {
+        browsers,
+        feature: "css-print-color-adjust"
+      })
+    );
+  }
+});
+
+// node_modules/autoprefixer/lib/info.js
+var require_info = __commonJS({
+  "node_modules/autoprefixer/lib/info.js"(exports2, module2) {
+    var browserslist = require_browserslist();
+    function capitalize(str) {
+      return str.slice(0, 1).toUpperCase() + str.slice(1);
+    }
+    var NAMES = {
+      and_chr: "Chrome for Android",
+      and_ff: "Firefox for Android",
+      and_qq: "QQ Browser",
+      and_uc: "UC for Android",
+      baidu: "Baidu Browser",
+      ie: "IE",
+      ie_mob: "IE Mobile",
+      ios_saf: "iOS Safari",
+      kaios: "KaiOS Browser",
+      op_mini: "Opera Mini",
+      op_mob: "Opera Mobile",
+      samsung: "Samsung Internet"
+    };
+    function prefix(name, prefixes, note) {
+      let out = `  ${name}`;
+      if (note) out += " *";
+      out += ": ";
+      out += prefixes.map((i) => i.replace(/^-(.*)-$/g, "$1")).join(", ");
+      out += "\n";
+      return out;
+    }
+    module2.exports = function(prefixes) {
+      if (prefixes.browsers.selected.length === 0) {
+        return "No browsers selected";
+      }
+      let versions = {};
+      for (let browser of prefixes.browsers.selected) {
+        let parts = browser.split(" ");
+        let name = parts[0];
+        let version = parts[1];
+        name = NAMES[name] || capitalize(name);
+        if (versions[name]) {
+          versions[name].push(version);
+        } else {
+          versions[name] = [version];
+        }
+      }
+      let out = "Browsers:\n";
+      for (let browser in versions) {
+        let list = versions[browser];
+        list = list.sort((a, b) => parseFloat(b) - parseFloat(a));
+        out += `  ${browser}: ${list.join(", ")}
+`;
+      }
+      let coverage = browserslist.coverage(prefixes.browsers.selected);
+      let round = Math.round(coverage * 100) / 100;
+      out += `
+These browsers account for ${round}% of all users globally
+`;
+      let atrules = [];
+      for (let name in prefixes.add) {
+        let data = prefixes.add[name];
+        if (name[0] === "@" && data.prefixes) {
+          atrules.push(prefix(name, data.prefixes));
+        }
+      }
+      if (atrules.length > 0) {
+        out += `
+At-Rules:
+${atrules.sort().join("")}`;
+      }
+      let selectors = [];
+      for (let selector of prefixes.add.selectors) {
+        if (selector.prefixes) {
+          selectors.push(prefix(selector.name, selector.prefixes));
+        }
+      }
+      if (selectors.length > 0) {
+        out += `
+Selectors:
+${selectors.sort().join("")}`;
+      }
+      let values = [];
+      let props = [];
+      let hadGrid = false;
+      for (let name in prefixes.add) {
+        let data = prefixes.add[name];
+        if (name[0] !== "@" && data.prefixes) {
+          let grid = name.indexOf("grid-") === 0;
+          if (grid) hadGrid = true;
+          props.push(prefix(name, data.prefixes, grid));
+        }
+        if (!Array.isArray(data.values)) {
+          continue;
+        }
+        for (let value of data.values) {
+          let grid = value.name.includes("grid");
+          if (grid) hadGrid = true;
+          let string = prefix(value.name, value.prefixes, grid);
+          if (!values.includes(string)) {
+            values.push(string);
+          }
+        }
+      }
+      if (props.length > 0) {
+        out += `
+Properties:
+${props.sort().join("")}`;
+      }
+      if (values.length > 0) {
+        out += `
+Values:
+${values.sort().join("")}`;
+      }
+      if (hadGrid) {
+        out += "\n* - Prefixes will be added only on grid: true option.\n";
+      }
+      if (!atrules.length && !selectors.length && !props.length && !values.length) {
+        out += "\nAwesome! Your browsers don't require any vendor prefixes.\nNow you can remove Autoprefixer from build steps.";
+      }
+      return out;
+    };
+  }
+});
+
+// node_modules/autoprefixer/lib/autoprefixer.js
+var require_autoprefixer = __commonJS({
+  "node_modules/autoprefixer/lib/autoprefixer.js"(exports2, module2) {
+    var browserslist = require_browserslist();
+    var { agents } = require_agents2();
+    var pico = require_picocolors();
+    var Browsers = require_browsers3();
+    var Prefixes = require_prefixes();
+    var dataPrefixes = require_prefixes2();
+    var getInfo = require_info();
+    var autoprefixerData = { browsers: agents, prefixes: dataPrefixes };
+    var WARNING = "\n  Replace Autoprefixer `browsers` option to Browserslist config.\n  Use `browserslist` key in `package.json` or `.browserslistrc` file.\n\n  Using `browsers` option can cause errors. Browserslist config can\n  be used for Babel, Autoprefixer, postcss-normalize and other tools.\n\n  If you really need to use option, rename it to `overrideBrowserslist`.\n\n  Learn more at:\n  https://github.com/browserslist/browserslist#readme\n  https://twitter.com/browserslist\n\n";
+    function isPlainObject(obj) {
+      return Object.prototype.toString.apply(obj) === "[object Object]";
+    }
+    var cache = /* @__PURE__ */ new Map();
+    function timeCapsule(result, prefixes) {
+      if (prefixes.browsers.selected.length === 0) {
+        return;
+      }
+      if (prefixes.add.selectors.length > 0) {
+        return;
+      }
+      if (Object.keys(prefixes.add).length > 2) {
+        return;
+      }
+      result.warn(
+        "Autoprefixer target browsers do not need any prefixes.You do not need Autoprefixer anymore.\nCheck your Browserslist config to be sure that your targets are set up correctly.\n\n  Learn more at:\n  https://github.com/postcss/autoprefixer#readme\n  https://github.com/browserslist/browserslist#readme\n\n"
+      );
+    }
+    module2.exports = plugin;
+    function plugin(...reqs) {
+      let options;
+      if (reqs.length === 1 && isPlainObject(reqs[0])) {
+        options = reqs[0];
+        reqs = void 0;
+      } else if (reqs.length === 0 || reqs.length === 1 && !reqs[0]) {
+        reqs = void 0;
+      } else if (reqs.length <= 2 && (Array.isArray(reqs[0]) || !reqs[0])) {
+        options = reqs[1];
+        reqs = reqs[0];
+      } else if (typeof reqs[reqs.length - 1] === "object") {
+        options = reqs.pop();
+      }
+      if (!options) {
+        options = {};
+      }
+      if (options.browser) {
+        throw new Error(
+          "Change `browser` option to `overrideBrowserslist` in Autoprefixer"
+        );
+      } else if (options.browserslist) {
+        throw new Error(
+          "Change `browserslist` option to `overrideBrowserslist` in Autoprefixer"
+        );
+      }
+      if (options.overrideBrowserslist) {
+        reqs = options.overrideBrowserslist;
+      } else if (options.browsers) {
+        if (typeof console !== "undefined" && console.warn) {
+          console.warn(
+            pico.red(WARNING.replace(/`[^`]+`/g, (i) => pico.yellow(i.slice(1, -1))))
+          );
+        }
+        reqs = options.browsers;
+      }
+      let brwlstOpts = {
+        env: options.env,
+        ignoreUnknownVersions: options.ignoreUnknownVersions,
+        stats: options.stats
+      };
+      function loadPrefixes(opts) {
+        let d = autoprefixerData;
+        let browsers = new Browsers(d.browsers, reqs, opts, brwlstOpts);
+        let key = browsers.selected.join(", ") + JSON.stringify(options);
+        if (!cache.has(key)) {
+          cache.set(key, new Prefixes(d.prefixes, browsers, options));
+        }
+        return cache.get(key);
+      }
+      return {
+        browsers: reqs,
+        info(opts) {
+          opts = opts || {};
+          opts.from = opts.from || process.cwd();
+          return getInfo(loadPrefixes(opts));
+        },
+        options,
+        postcssPlugin: "autoprefixer",
+        prepare(result) {
+          let prefixes = loadPrefixes({
+            env: options.env,
+            from: result.opts.from
+          });
+          return {
+            OnceExit(root) {
+              timeCapsule(result, prefixes);
+              if (options.remove !== false) {
+                prefixes.processor.remove(root, result);
+              }
+              if (options.add !== false) {
+                prefixes.processor.add(root, result);
+              }
+            }
+          };
+        }
+      };
+    }
+    plugin.postcss = true;
+    plugin.data = autoprefixerData;
+    plugin.defaults = browserslist.defaults;
+    plugin.info = () => plugin().info();
+  }
+});
+
+// node_modules/lilconfig/src/index.js
+var require_src = __commonJS({
+  "node_modules/lilconfig/src/index.js"(exports2, module2) {
+    var path = require("path");
+    var fs = require("fs");
+    var os = require("os");
+    var url = require("url");
+    var fsReadFileAsync = fs.promises.readFile;
+    function getDefaultSearchPlaces(name, sync) {
+      return [
+        "package.json",
+        `.${name}rc.json`,
+        `.${name}rc.js`,
+        `.${name}rc.cjs`,
+        ...sync ? [] : [`.${name}rc.mjs`],
+        `.config/${name}rc`,
+        `.config/${name}rc.json`,
+        `.config/${name}rc.js`,
+        `.config/${name}rc.cjs`,
+        ...sync ? [] : [`.config/${name}rc.mjs`],
+        `${name}.config.js`,
+        `${name}.config.cjs`,
+        ...sync ? [] : [`${name}.config.mjs`]
+      ];
+    }
+    function parentDir(p) {
+      return path.dirname(p) || path.sep;
+    }
+    var jsonLoader = (_, content) => JSON.parse(content);
+    var requireFunc = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require;
+    var defaultLoadersSync = Object.freeze({
+      ".js": requireFunc,
+      ".json": requireFunc,
+      ".cjs": requireFunc,
+      noExt: jsonLoader
+    });
+    module2.exports.defaultLoadersSync = defaultLoadersSync;
+    var dynamicImport = async (id) => {
+      try {
+        const fileUrl = url.pathToFileURL(id).href;
+        const mod = await import(
+          /* webpackIgnore: true */
+          fileUrl
+        );
+        return mod.default;
+      } catch (e) {
+        try {
+          return requireFunc(id);
+        } catch (requireE) {
+          if (requireE.code === "ERR_REQUIRE_ESM" || requireE instanceof SyntaxError && requireE.toString().includes("Cannot use import statement outside a module")) {
+            throw e;
+          }
+          throw requireE;
+        }
+      }
+    };
+    var defaultLoaders = Object.freeze({
+      ".js": dynamicImport,
+      ".mjs": dynamicImport,
+      ".cjs": dynamicImport,
+      ".json": jsonLoader,
+      noExt: jsonLoader
+    });
+    module2.exports.defaultLoaders = defaultLoaders;
+    function getOptions(name, options, sync) {
+      const conf = {
+        stopDir: os.homedir(),
+        searchPlaces: getDefaultSearchPlaces(name, sync),
+        ignoreEmptySearchPlaces: true,
+        cache: true,
+        transform: (x) => x,
+        packageProp: [name],
+        ...options,
+        loaders: {
+          ...sync ? defaultLoadersSync : defaultLoaders,
+          ...options.loaders
+        }
+      };
+      conf.searchPlaces.forEach((place) => {
+        const key = path.extname(place) || "noExt";
+        const loader = conf.loaders[key];
+        if (!loader) {
+          throw new Error(`Missing loader for extension "${place}"`);
+        }
+        if (typeof loader !== "function") {
+          throw new Error(
+            `Loader for extension "${place}" is not a function: Received ${typeof loader}.`
+          );
+        }
+      });
+      return conf;
+    }
+    function getPackageProp(props, obj) {
+      if (typeof props === "string" && props in obj) return obj[props];
+      return (Array.isArray(props) ? props : props.split(".")).reduce(
+        (acc, prop) => acc === void 0 ? acc : acc[prop],
+        obj
+      ) || null;
+    }
+    function validateFilePath(filepath) {
+      if (!filepath) throw new Error("load must pass a non-empty string");
+    }
+    function validateLoader(loader, ext) {
+      if (!loader) throw new Error(`No loader specified for extension "${ext}"`);
+      if (typeof loader !== "function") throw new Error("loader is not a function");
+    }
+    var makeEmplace = (enableCache) => (c, filepath, res) => {
+      if (enableCache) c.set(filepath, res);
+      return res;
+    };
+    module2.exports.lilconfig = function lilconfig(name, options) {
+      const {
+        ignoreEmptySearchPlaces,
+        loaders,
+        packageProp,
+        searchPlaces,
+        stopDir,
+        transform,
+        cache
+      } = getOptions(name, options ?? {}, false);
+      const searchCache = /* @__PURE__ */ new Map();
+      const loadCache = /* @__PURE__ */ new Map();
+      const emplace = makeEmplace(cache);
+      return {
+        async search(searchFrom = process.cwd()) {
+          const result = {
+            config: null,
+            filepath: ""
+          };
+          const visited = /* @__PURE__ */ new Set();
+          let dir = searchFrom;
+          dirLoop: while (true) {
+            if (cache) {
+              const r = searchCache.get(dir);
+              if (r !== void 0) {
+                for (const p of visited) searchCache.set(p, r);
+                return r;
+              }
+              visited.add(dir);
+            }
+            for (const searchPlace of searchPlaces) {
+              const filepath = path.join(dir, searchPlace);
+              try {
+                await fs.promises.access(filepath);
+              } catch {
+                continue;
+              }
+              const content = String(await fsReadFileAsync(filepath));
+              const loaderKey = path.extname(searchPlace) || "noExt";
+              const loader = loaders[loaderKey];
+              if (searchPlace === "package.json") {
+                const pkg = await loader(filepath, content);
+                const maybeConfig = getPackageProp(packageProp, pkg);
+                if (maybeConfig != null) {
+                  result.config = maybeConfig;
+                  result.filepath = filepath;
+                  break dirLoop;
+                }
+                continue;
+              }
+              const isEmpty = content.trim() === "";
+              if (isEmpty && ignoreEmptySearchPlaces) continue;
+              if (isEmpty) {
+                result.isEmpty = true;
+                result.config = void 0;
+              } else {
+                validateLoader(loader, loaderKey);
+                result.config = await loader(filepath, content);
+              }
+              result.filepath = filepath;
+              break dirLoop;
+            }
+            if (dir === stopDir || dir === parentDir(dir)) break dirLoop;
+            dir = parentDir(dir);
+          }
+          const transformed = (
+            // not found
+            result.filepath === "" && result.config === null ? transform(null) : transform(result)
+          );
+          if (cache) {
+            for (const p of visited) searchCache.set(p, transformed);
+          }
+          return transformed;
+        },
+        async load(filepath) {
+          validateFilePath(filepath);
+          const absPath = path.resolve(process.cwd(), filepath);
+          if (cache && loadCache.has(absPath)) {
+            return loadCache.get(absPath);
+          }
+          const { base, ext } = path.parse(absPath);
+          const loaderKey = ext || "noExt";
+          const loader = loaders[loaderKey];
+          validateLoader(loader, loaderKey);
+          const content = String(await fsReadFileAsync(absPath));
+          if (base === "package.json") {
+            const pkg = await loader(absPath, content);
+            return emplace(
+              loadCache,
+              absPath,
+              transform({
+                config: getPackageProp(packageProp, pkg),
+                filepath: absPath
+              })
+            );
+          }
+          const result = {
+            config: null,
+            filepath: absPath
+          };
+          const isEmpty = content.trim() === "";
+          if (isEmpty && ignoreEmptySearchPlaces)
+            return emplace(
+              loadCache,
+              absPath,
+              transform({
+                config: void 0,
+                filepath: absPath,
+                isEmpty: true
+              })
+            );
+          result.config = isEmpty ? void 0 : await loader(absPath, content);
+          return emplace(
+            loadCache,
+            absPath,
+            transform(isEmpty ? { ...result, isEmpty, config: void 0 } : result)
+          );
+        },
+        clearLoadCache() {
+          if (cache) loadCache.clear();
+        },
+        clearSearchCache() {
+          if (cache) searchCache.clear();
+        },
+        clearCaches() {
+          if (cache) {
+            loadCache.clear();
+            searchCache.clear();
+          }
+        }
+      };
+    };
+    module2.exports.lilconfigSync = function lilconfigSync(name, options) {
+      const {
+        ignoreEmptySearchPlaces,
+        loaders,
+        packageProp,
+        searchPlaces,
+        stopDir,
+        transform,
+        cache
+      } = getOptions(name, options ?? {}, true);
+      const searchCache = /* @__PURE__ */ new Map();
+      const loadCache = /* @__PURE__ */ new Map();
+      const emplace = makeEmplace(cache);
+      return {
+        search(searchFrom = process.cwd()) {
+          const result = {
+            config: null,
+            filepath: ""
+          };
+          const visited = /* @__PURE__ */ new Set();
+          let dir = searchFrom;
+          dirLoop: while (true) {
+            if (cache) {
+              const r = searchCache.get(dir);
+              if (r !== void 0) {
+                for (const p of visited) searchCache.set(p, r);
+                return r;
+              }
+              visited.add(dir);
+            }
+            for (const searchPlace of searchPlaces) {
+              const filepath = path.join(dir, searchPlace);
+              try {
+                fs.accessSync(filepath);
+              } catch {
+                continue;
+              }
+              const loaderKey = path.extname(searchPlace) || "noExt";
+              const loader = loaders[loaderKey];
+              const content = String(fs.readFileSync(filepath));
+              if (searchPlace === "package.json") {
+                const pkg = loader(filepath, content);
+                const maybeConfig = getPackageProp(packageProp, pkg);
+                if (maybeConfig != null) {
+                  result.config = maybeConfig;
+                  result.filepath = filepath;
+                  break dirLoop;
+                }
+                continue;
+              }
+              const isEmpty = content.trim() === "";
+              if (isEmpty && ignoreEmptySearchPlaces) continue;
+              if (isEmpty) {
+                result.isEmpty = true;
+                result.config = void 0;
+              } else {
+                validateLoader(loader, loaderKey);
+                result.config = loader(filepath, content);
+              }
+              result.filepath = filepath;
+              break dirLoop;
+            }
+            if (dir === stopDir || dir === parentDir(dir)) break dirLoop;
+            dir = parentDir(dir);
+          }
+          const transformed = (
+            // not found
+            result.filepath === "" && result.config === null ? transform(null) : transform(result)
+          );
+          if (cache) {
+            for (const p of visited) searchCache.set(p, transformed);
+          }
+          return transformed;
+        },
+        load(filepath) {
+          validateFilePath(filepath);
+          const absPath = path.resolve(process.cwd(), filepath);
+          if (cache && loadCache.has(absPath)) {
+            return loadCache.get(absPath);
+          }
+          const { base, ext } = path.parse(absPath);
+          const loaderKey = ext || "noExt";
+          const loader = loaders[loaderKey];
+          validateLoader(loader, loaderKey);
+          const content = String(fs.readFileSync(absPath));
+          if (base === "package.json") {
+            const pkg = loader(absPath, content);
+            return transform({
+              config: getPackageProp(packageProp, pkg),
+              filepath: absPath
+            });
+          }
+          const result = {
+            config: null,
+            filepath: absPath
+          };
+          const isEmpty = content.trim() === "";
+          if (isEmpty && ignoreEmptySearchPlaces)
+            return emplace(
+              loadCache,
+              absPath,
+              transform({
+                filepath: absPath,
+                config: void 0,
+                isEmpty: true
+              })
+            );
+          result.config = isEmpty ? void 0 : loader(absPath, content);
+          return emplace(
+            loadCache,
+            absPath,
+            transform(isEmpty ? { ...result, isEmpty, config: void 0 } : result)
+          );
+        },
+        clearLoadCache() {
+          if (cache) loadCache.clear();
+        },
+        clearSearchCache() {
+          if (cache) searchCache.clear();
+        },
+        clearCaches() {
+          if (cache) {
+            loadCache.clear();
+            searchCache.clear();
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/css-declaration-sorter/dist/main.cjs
+var require_main = __commonJS({
+  "node_modules/css-declaration-sorter/dist/main.cjs"(exports2, module2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    var shorthandData = {
+      "animation": [
+        "animation-name",
+        "animation-duration",
+        "animation-timing-function",
+        "animation-delay",
+        "animation-iteration-count",
+        "animation-direction",
+        "animation-fill-mode",
+        "animation-play-state"
+      ],
+      "background": [
+        "background-image",
+        "background-size",
+        "background-position",
+        "background-repeat",
+        "background-origin",
+        "background-clip",
+        "background-attachment",
+        "background-color"
+      ],
+      "columns": [
+        "column-width",
+        "column-count"
+      ],
+      "column-rule": [
+        "column-rule-width",
+        "column-rule-style",
+        "column-rule-color"
+      ],
+      "flex": [
+        "flex-grow",
+        "flex-shrink",
+        "flex-basis"
+      ],
+      "flex-flow": [
+        "flex-direction",
+        "flex-wrap"
+      ],
+      "font": [
+        "font-style",
+        "font-variant",
+        "font-weight",
+        "font-stretch",
+        "font-size",
+        "font-family",
+        "line-height"
+      ],
+      "gap": [
+        "column-gap",
+        "row-gap"
+      ],
+      "grid": [
+        "grid-template-rows",
+        "grid-template-columns",
+        "grid-template-areas",
+        "grid-auto-rows",
+        "grid-auto-columns",
+        "grid-auto-flow",
+        "column-gap",
+        "row-gap"
+      ],
+      "grid-area": [
+        "grid-row-start",
+        "grid-column-start",
+        "grid-row-end",
+        "grid-column-end"
+      ],
+      "grid-column": [
+        "grid-column-start",
+        "grid-column-end"
+      ],
+      "grid-row": [
+        "grid-row-start",
+        "grid-row-end"
+      ],
+      "grid-template": [
+        "grid-template-columns",
+        "grid-template-rows",
+        "grid-template-areas"
+      ],
+      "list-style": [
+        "list-style-type",
+        "list-style-position",
+        "list-style-image"
+      ],
+      "offset": [
+        "offset-anchor",
+        "offset-distance",
+        "offset-path",
+        "offset-position",
+        "offset-rotate"
+      ],
+      "padding": [
+        "padding-block",
+        "padding-block-start",
+        "padding-block-end",
+        "padding-inline",
+        "padding-inline-start",
+        "padding-inline-end",
+        "padding-top",
+        "padding-right",
+        "padding-bottom",
+        "padding-left"
+      ],
+      "padding-block": [
+        "padding-block-start",
+        "padding-block-end",
+        "padding-top",
+        "padding-right",
+        "padding-bottom",
+        "padding-left"
+      ],
+      "padding-block-start": [
+        "padding-top",
+        "padding-right",
+        "padding-left"
+      ],
+      "padding-block-end": [
+        "padding-right",
+        "padding-bottom",
+        "padding-left"
+      ],
+      "padding-inline": [
+        "padding-inline-start",
+        "padding-inline-end",
+        "padding-top",
+        "padding-right",
+        "padding-bottom",
+        "padding-left"
+      ],
+      "padding-inline-start": [
+        "padding-top",
+        "padding-right",
+        "padding-left"
+      ],
+      "padding-inline-end": [
+        "padding-right",
+        "padding-bottom",
+        "padding-left"
+      ],
+      "margin": [
+        "margin-block",
+        "margin-block-start",
+        "margin-block-end",
+        "margin-inline",
+        "margin-inline-start",
+        "margin-inline-end",
+        "margin-top",
+        "margin-right",
+        "margin-bottom",
+        "margin-left"
+      ],
+      "margin-block": [
+        "margin-block-start",
+        "margin-block-end",
+        "margin-top",
+        "margin-right",
+        "margin-bottom",
+        "margin-left"
+      ],
+      "margin-inline": [
+        "margin-inline-start",
+        "margin-inline-end",
+        "margin-top",
+        "margin-right",
+        "margin-bottom",
+        "margin-left"
+      ],
+      "margin-inline-start": [
+        "margin-top",
+        "margin-right",
+        "margin-bottom",
+        "margin-left"
+      ],
+      "margin-inline-end": [
+        "margin-top",
+        "margin-right",
+        "margin-bottom",
+        "margin-left"
+      ],
+      "border": [
+        "border-top",
+        "border-right",
+        "border-bottom",
+        "border-left",
+        "border-width",
+        "border-style",
+        "border-color",
+        "border-top-width",
+        "border-right-width",
+        "border-bottom-width",
+        "border-left-width",
+        "border-inline-start-width",
+        "border-inline-end-width",
+        "border-block-start-width",
+        "border-block-end-width",
+        "border-top-style",
+        "border-right-style",
+        "border-bottom-style",
+        "border-left-style",
+        "border-inline-start-style",
+        "border-inline-end-style",
+        "border-block-start-style",
+        "border-block-end-style",
+        "border-top-color",
+        "border-right-color",
+        "border-bottom-color",
+        "border-left-color",
+        "border-inline-start-color",
+        "border-inline-end-color",
+        "border-block-start-color",
+        "border-block-end-color",
+        "border-block",
+        "border-block-start",
+        "border-block-end",
+        "border-block-width",
+        "border-block-style",
+        "border-block-color",
+        "border-inline",
+        "border-inline-start",
+        "border-inline-end",
+        "border-inline-width",
+        "border-inline-style",
+        "border-inline-color"
+      ],
+      "border-top": [
+        "border-width",
+        "border-style",
+        "border-color",
+        "border-top-width",
+        "border-top-style",
+        "border-top-color"
+      ],
+      "border-right": [
+        "border-width",
+        "border-style",
+        "border-color",
+        "border-right-width",
+        "border-right-style",
+        "border-right-color"
+      ],
+      "border-bottom": [
+        "border-width",
+        "border-style",
+        "border-color",
+        "border-bottom-width",
+        "border-bottom-style",
+        "border-bottom-color"
+      ],
+      "border-left": [
+        "border-width",
+        "border-style",
+        "border-color",
+        "border-left-width",
+        "border-left-style",
+        "border-left-color"
+      ],
+      "border-color": [
+        "border-top-color",
+        "border-bottom-color",
+        "border-left-color",
+        "border-right-color",
+        "border-inline-start-color",
+        "border-inline-end-color",
+        "border-block-start-color",
+        "border-block-end-color"
+      ],
+      "border-width": [
+        "border-top-width",
+        "border-bottom-width",
+        "border-left-width",
+        "border-right-width",
+        "border-inline-start-width",
+        "border-inline-end-width",
+        "border-block-start-width",
+        "border-block-end-width"
+      ],
+      "border-style": [
+        "border-top-style",
+        "border-bottom-style",
+        "border-left-style",
+        "border-right-style",
+        "border-inline-start-style",
+        "border-inline-end-style",
+        "border-block-start-style",
+        "border-block-end-style"
+      ],
+      "border-radius": [
+        "border-top-right-radius",
+        "border-top-left-radius",
+        "border-bottom-right-radius",
+        "border-bottom-left-radius",
+        "border-end-end-radius",
+        "border-end-start-radius",
+        "border-start-end-radius",
+        "border-start-start-radius"
+      ],
+      "border-block": [
+        "border-block-start",
+        "border-block-end",
+        "border-block-width",
+        "border-width",
+        "border-block-style",
+        "border-style",
+        "border-block-color",
+        "border-color"
+      ],
+      "border-block-start": [
+        "border-block-start-width",
+        "border-width",
+        "border-block-start-style",
+        "border-style",
+        "border-block-start-color",
+        "border-color"
+      ],
+      "border-block-end": [
+        "border-block-end-width",
+        "border-width",
+        "border-block-end-style",
+        "border-style",
+        "border-block-end-color",
+        "border-color"
+      ],
+      "border-inline": [
+        "border-inline-start",
+        "border-inline-end",
+        "border-inline-width",
+        "border-width",
+        "border-inline-style",
+        "border-style",
+        "border-inline-color",
+        "border-color"
+      ],
+      "border-inline-start": [
+        "border-inline-start-width",
+        "border-width",
+        "border-inline-start-style",
+        "border-style",
+        "border-inline-start-color",
+        "border-color"
+      ],
+      "border-inline-end": [
+        "border-inline-end-width",
+        "border-width",
+        "border-inline-end-style",
+        "border-style",
+        "border-inline-end-color",
+        "border-color"
+      ],
+      "border-image": [
+        "border-image-source",
+        "border-image-slice",
+        "border-image-width",
+        "border-image-outset",
+        "border-image-repeat"
+      ],
+      "mask": [
+        "mask-image",
+        "mask-mode",
+        "mask-position",
+        "mask-size",
+        "mask-repeat",
+        "mask-origin",
+        "mask-clip",
+        "mask-composite"
+      ],
+      "inline-size": [
+        "width",
+        "height"
+      ],
+      "block-size": [
+        "width",
+        "height"
+      ],
+      "max-inline-size": [
+        "max-width",
+        "max-height"
+      ],
+      "max-block-size": [
+        "max-width",
+        "max-height"
+      ],
+      "inset": [
+        "inset-block",
+        "inset-block-start",
+        "inset-block-end",
+        "inset-inline",
+        "inset-inline-start",
+        "inset-inline-end",
+        "top",
+        "right",
+        "bottom",
+        "left"
+      ],
+      "inset-block": [
+        "inset-block-start",
+        "inset-block-end",
+        "top",
+        "right",
+        "bottom",
+        "left"
+      ],
+      "inset-inline": [
+        "inset-inline-start",
+        "inset-inline-end",
+        "top",
+        "right",
+        "bottom",
+        "left"
+      ],
+      "outline": [
+        "outline-color",
+        "outline-style",
+        "outline-width"
+      ],
+      "overflow": [
+        "overflow-x",
+        "overflow-y"
+      ],
+      "place-content": [
+        "align-content",
+        "justify-content"
+      ],
+      "place-items": [
+        "align-items",
+        "justify-items"
+      ],
+      "place-self": [
+        "align-self",
+        "justify-self"
+      ],
+      "text-decoration": [
+        "text-decoration-color",
+        "text-decoration-style",
+        "text-decoration-line"
+      ],
+      "transition": [
+        "transition-delay",
+        "transition-duration",
+        "transition-property",
+        "transition-timing-function"
+      ],
+      "text-emphasis": [
+        "text-emphasis-style",
+        "text-emphasis-color"
+      ],
+      "font-synthesis": [
+        "font-synthesis-weight",
+        "font-synthesis-style",
+        "font-synthesis-small-caps",
+        "font-synthesis-position"
+      ]
+    };
+    function bubbleSort(list, comparator) {
+      let upperIndex = list.length - 1;
+      while (upperIndex > 0) {
+        let swapIndex = 0;
+        for (let i = 0; i < upperIndex; i += 1) {
+          if (comparator(list[i], list[i + 1]) > 0) {
+            const temp = list[i + 1];
+            list[i + 1] = list[i];
+            list[i] = temp;
+            swapIndex = i;
+          }
+        }
+        upperIndex = swapIndex;
+      }
+      return list;
+    }
+    function __variableDynamicImportRuntime0__(path) {
+      switch (path) {
+        case "../orders/alphabetical.mjs":
+          return Promise.resolve().then(function() {
+            return alphabetical;
+          });
+        case "../orders/concentric-css.mjs":
+          return Promise.resolve().then(function() {
+            return concentricCss;
+          });
+        case "../orders/smacss.mjs":
+          return Promise.resolve().then(function() {
+            return smacss;
+          });
+        default:
+          return new Promise(function(resolve, reject) {
+            (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
+              reject.bind(null, new Error("Unknown variable dynamic import: " + path))
+            );
+          });
+      }
+    }
+    var builtInOrders = [
+      "alphabetical",
+      "concentric-css",
+      "smacss"
+    ];
+    var cssDeclarationSorter = ({ order = "alphabetical", keepOverrides = false } = {}) => ({
+      postcssPlugin: "css-declaration-sorter",
+      OnceExit(css) {
+        let withKeepOverrides = (comparator) => comparator;
+        if (keepOverrides) {
+          withKeepOverrides = withOverridesComparator(shorthandData);
+        }
+        if (typeof order === "function") {
+          return processCss({ css, comparator: withKeepOverrides(order) });
+        }
+        if (!builtInOrders.includes(order))
+          return Promise.reject(
+            Error([
+              `Invalid built-in order '${order}' provided.`,
+              `Available built-in orders are: ${builtInOrders}`
+            ].join("\n"))
+          );
+        return __variableDynamicImportRuntime0__(`../orders/${order}.mjs`).then(({ properties: properties2 }) => processCss({
+          css,
+          comparator: withKeepOverrides(orderComparator(properties2))
+        }));
+      }
+    });
+    cssDeclarationSorter.postcss = true;
+    function processCss({ css, comparator }) {
+      const comments = [];
+      const rulesCache = [];
+      css.walk((node) => {
+        const nodes = node.nodes;
+        const type = node.type;
+        if (type === "comment") {
+          const isNewlineNode = node.raws.before && node.raws.before.includes("\n");
+          const lastNewlineNode = isNewlineNode && !node.next();
+          const onlyNode = !node.prev() && !node.next() || !node.parent;
+          if (lastNewlineNode || onlyNode || node.parent.type === "root") {
+            return;
+          }
+          if (isNewlineNode) {
+            const pairedNode = node.next() || node.prev();
+            if (pairedNode) {
+              comments.unshift({
+                "comment": node,
+                "pairedNode": pairedNode,
+                "insertPosition": node.next() ? "Before" : "After"
+              });
+              node.remove();
+            }
+          } else {
+            const pairedNode = node.prev() || node.next();
+            if (pairedNode) {
+              comments.push({
+                "comment": node,
+                "pairedNode": pairedNode,
+                "insertPosition": "After"
+              });
+              node.remove();
+            }
+          }
+          return;
+        }
+        const isRule = type === "rule" || type === "atrule";
+        if (isRule && nodes && nodes.length > 1) {
+          rulesCache.push(nodes);
+        }
+      });
+      rulesCache.forEach((nodes) => {
+        sortCssDeclarations({ nodes, comparator });
+      });
+      comments.forEach((node) => {
+        const pairedNode = node.pairedNode;
+        node.comment.remove();
+        pairedNode.parent && pairedNode.parent["insert" + node.insertPosition](pairedNode, node.comment);
+      });
+    }
+    function sortCssDeclarations({ nodes, comparator }) {
+      bubbleSort(nodes, (a, b) => {
+        if (a.type === "decl" && b.type === "decl") {
+          return comparator(a.prop, b.prop);
+        } else {
+          return compareDifferentType(a, b);
+        }
+      });
+    }
+    function withOverridesComparator(shorthandData2) {
+      return function(comparator) {
+        return function(a, b) {
+          a = removeVendorPrefix(a);
+          b = removeVendorPrefix(b);
+          if (shorthandData2[a] && shorthandData2[a].includes(b)) return 0;
+          if (shorthandData2[b] && shorthandData2[b].includes(a)) return 0;
+          return comparator(a, b);
+        };
+      };
+    }
+    function orderComparator(order) {
+      return function(a, b) {
+        const bIndex = order.indexOf(b);
+        if (bIndex === -1) {
+          return 0;
+        }
+        return order.indexOf(a) - bIndex;
+      };
+    }
+    function compareDifferentType(a, b) {
+      if (b.type === "atrule" || a.type === "atrule") {
+        return 0;
+      }
+      return a.type === "decl" ? -1 : b.type === "decl" ? 1 : 0;
+    }
+    function removeVendorPrefix(property) {
+      return property.replace(/^-\w+-/, "");
+    }
+    var properties$2 = [
+      "all",
+      "-webkit-line-clamp",
+      "-webkit-text-fill-color",
+      "-webkit-text-stroke",
+      "-webkit-text-stroke-color",
+      "-webkit-text-stroke-width",
+      "accent-color",
+      "align-content",
+      "align-items",
+      "align-self",
+      "animation",
+      "animation-composition",
+      "animation-delay",
+      "animation-direction",
+      "animation-duration",
+      "animation-fill-mode",
+      "animation-iteration-count",
+      "animation-name",
+      "animation-play-state",
+      "animation-timing-function",
+      "appearance",
+      "ascent-override",
+      "aspect-ratio",
+      "backdrop-filter",
+      "backface-visibility",
+      "background",
+      "background-attachment",
+      "background-blend-mode",
+      "background-clip",
+      "background-color",
+      "background-image",
+      "background-origin",
+      "background-position",
+      "background-position-x",
+      "background-position-y",
+      "background-repeat",
+      "background-size",
+      "baseline-source",
+      "block-size",
+      "border",
+      "border-block",
+      "border-block-color",
+      "border-block-end",
+      "border-block-end-color",
+      "border-block-end-style",
+      "border-block-end-width",
+      "border-block-start",
+      "border-block-start-color",
+      "border-block-start-style",
+      "border-block-start-width",
+      "border-block-style",
+      "border-block-width",
+      "border-bottom",
+      "border-bottom-color",
+      "border-bottom-left-radius",
+      "border-bottom-right-radius",
+      "border-bottom-style",
+      "border-bottom-width",
+      "border-collapse",
+      "border-color",
+      "border-end-end-radius",
+      "border-end-start-radius",
+      "border-image",
+      "border-image-outset",
+      "border-image-repeat",
+      "border-image-slice",
+      "border-image-source",
+      "border-image-width",
+      "border-inline",
+      "border-inline-color",
+      "border-inline-end",
+      "border-inline-end-color",
+      "border-inline-end-style",
+      "border-inline-end-width",
+      "border-inline-start",
+      "border-inline-start-color",
+      "border-inline-start-style",
+      "border-inline-start-width",
+      "border-inline-style",
+      "border-inline-width",
+      "border-left",
+      "border-left-color",
+      "border-left-style",
+      "border-left-width",
+      "border-radius",
+      "border-right",
+      "border-right-color",
+      "border-right-style",
+      "border-right-width",
+      "border-spacing",
+      "border-start-end-radius",
+      "border-start-start-radius",
+      "border-style",
+      "border-top",
+      "border-top-color",
+      "border-top-left-radius",
+      "border-top-right-radius",
+      "border-top-style",
+      "border-top-width",
+      "border-width",
+      "bottom",
+      "box-decoration-break",
+      "box-shadow",
+      "box-sizing",
+      "break-after",
+      "break-before",
+      "break-inside",
+      "caption-side",
+      "caret-color",
+      "clear",
+      "clip-path",
+      "color",
+      "color-interpolation",
+      "color-scheme",
+      "column-count",
+      "column-fill",
+      "column-gap",
+      "column-rule",
+      "column-rule-color",
+      "column-rule-style",
+      "column-rule-width",
+      "column-span",
+      "column-width",
+      "columns",
+      "contain",
+      "contain-intrinsic-height",
+      "contain-intrinsic-size",
+      "contain-intrinsic-width",
+      "container",
+      "container-name",
+      "container-type",
+      "content",
+      "content-visibility",
+      "counter-increment",
+      "counter-reset",
+      "counter-set",
+      "cursor",
+      "descent-override",
+      "direction",
+      "display",
+      "empty-cells",
+      "filter",
+      "flex",
+      "flex-basis",
+      "flex-direction",
+      "flex-flow",
+      "flex-grow",
+      "flex-shrink",
+      "flex-wrap",
+      "float",
+      "font",
+      "font-display",
+      "font-family",
+      "font-feature-settings",
+      "font-kerning",
+      "font-language-override",
+      "font-optical-sizing",
+      "font-palette",
+      "font-size",
+      "font-size-adjust",
+      "font-stretch",
+      "font-style",
+      "font-synthesis",
+      "font-synthesis-position",
+      "font-synthesis-small-caps",
+      "font-synthesis-style",
+      "font-synthesis-weight",
+      "font-variant",
+      "font-variant-alternates",
+      "font-variant-caps",
+      "font-variant-east-asian",
+      "font-variant-emoji",
+      "font-variant-ligatures",
+      "font-variant-numeric",
+      "font-variant-position",
+      "font-variation-settings",
+      "font-weight",
+      "forced-color-adjust",
+      "gap",
+      "grid",
+      "grid-area",
+      "grid-auto-columns",
+      "grid-auto-flow",
+      "grid-auto-rows",
+      "grid-column",
+      "grid-column-end",
+      "grid-column-start",
+      "grid-row",
+      "grid-row-end",
+      "grid-row-start",
+      "grid-template",
+      "grid-template-areas",
+      "grid-template-columns",
+      "grid-template-rows",
+      "hanging-punctuation",
+      "height",
+      "hyphenate-character",
+      "hyphens",
+      "image-orientation",
+      "image-rendering",
+      "inline-size",
+      "inset",
+      "inset-block",
+      "inset-block-end",
+      "inset-block-start",
+      "inset-inline",
+      "inset-inline-end",
+      "inset-inline-start",
+      "isolation",
+      "justify-content",
+      "justify-items",
+      "justify-self",
+      "left",
+      "letter-spacing",
+      "line-break",
+      "line-gap-override",
+      "line-height",
+      "list-style",
+      "list-style-image",
+      "list-style-position",
+      "list-style-type",
+      "margin",
+      "margin-block",
+      "margin-block-end",
+      "margin-block-start",
+      "margin-bottom",
+      "margin-inline",
+      "margin-inline-end",
+      "margin-inline-start",
+      "margin-left",
+      "margin-right",
+      "margin-top",
+      "mask",
+      "mask-border",
+      "mask-border-outset",
+      "mask-border-repeat",
+      "mask-border-slice",
+      "mask-border-source",
+      "mask-border-width",
+      "mask-clip",
+      "mask-composite",
+      "mask-image",
+      "mask-mode",
+      "mask-origin",
+      "mask-position",
+      "mask-repeat",
+      "mask-size",
+      "mask-type",
+      "math-depth",
+      "math-style",
+      "max-block-size",
+      "max-height",
+      "max-inline-size",
+      "max-width",
+      "min-block-size",
+      "min-height",
+      "min-inline-size",
+      "min-width",
+      "mix-blend-mode",
+      "object-fit",
+      "object-position",
+      "offset",
+      "offset-anchor",
+      "offset-distance",
+      "offset-path",
+      "offset-position",
+      "offset-rotate",
+      "opacity",
+      "order",
+      "orphans",
+      "outline",
+      "outline-color",
+      "outline-offset",
+      "outline-style",
+      "outline-width",
+      "overflow",
+      "overflow-anchor",
+      "overflow-block",
+      "overflow-clip-margin",
+      "overflow-inline",
+      "overflow-wrap",
+      "overflow-x",
+      "overflow-y",
+      "overscroll-behavior",
+      "overscroll-behavior-block",
+      "overscroll-behavior-inline",
+      "overscroll-behavior-x",
+      "overscroll-behavior-y",
+      "padding",
+      "padding-block",
+      "padding-block-end",
+      "padding-block-start",
+      "padding-bottom",
+      "padding-inline",
+      "padding-inline-end",
+      "padding-inline-start",
+      "padding-left",
+      "padding-right",
+      "padding-top",
+      "page",
+      "page-break-after",
+      "page-break-before",
+      "page-break-inside",
+      "paint-order",
+      "perspective",
+      "perspective-origin",
+      "place-content",
+      "place-items",
+      "place-self",
+      "pointer-events",
+      "position",
+      "print-color-adjust",
+      "quotes",
+      "resize",
+      "right",
+      "rotate",
+      "row-gap",
+      "ruby-position",
+      "scale",
+      "scroll-behavior",
+      "scroll-margin",
+      "scroll-margin-block",
+      "scroll-margin-block-end",
+      "scroll-margin-block-start",
+      "scroll-margin-bottom",
+      "scroll-margin-inline",
+      "scroll-margin-inline-end",
+      "scroll-margin-inline-start",
+      "scroll-margin-left",
+      "scroll-margin-right",
+      "scroll-margin-top",
+      "scroll-padding",
+      "scroll-padding-block",
+      "scroll-padding-block-end",
+      "scroll-padding-block-start",
+      "scroll-padding-bottom",
+      "scroll-padding-inline",
+      "scroll-padding-inline-end",
+      "scroll-padding-inline-start",
+      "scroll-padding-left",
+      "scroll-padding-right",
+      "scroll-padding-top",
+      "scroll-snap-align",
+      "scroll-snap-stop",
+      "scroll-snap-type",
+      "scrollbar-color",
+      "scrollbar-gutter",
+      "scrollbar-width",
+      "shape-image-threshold",
+      "shape-margin",
+      "shape-outside",
+      "size-adjust",
+      "src",
+      "tab-size",
+      "table-layout",
+      "text-align",
+      "text-align-last",
+      "text-combine-upright",
+      "text-decoration",
+      "text-decoration-color",
+      "text-decoration-line",
+      "text-decoration-skip-ink",
+      "text-decoration-style",
+      "text-decoration-thickness",
+      "text-emphasis",
+      "text-emphasis-color",
+      "text-emphasis-position",
+      "text-emphasis-style",
+      "text-indent",
+      "text-justify",
+      "text-orientation",
+      "text-overflow",
+      "text-rendering",
+      "text-shadow",
+      "text-transform",
+      "text-underline-offset",
+      "text-underline-position",
+      "text-wrap",
+      "top",
+      "touch-action",
+      "transform",
+      "transform-box",
+      "transform-origin",
+      "transform-style",
+      "transition",
+      "transition-behavior",
+      "transition-delay",
+      "transition-duration",
+      "transition-property",
+      "transition-timing-function",
+      "translate",
+      "unicode-bidi",
+      "unicode-range",
+      "user-select",
+      "vertical-align",
+      "visibility",
+      "white-space",
+      "white-space-collapse",
+      "widows",
+      "width",
+      "will-change",
+      "word-break",
+      "word-spacing",
+      "writing-mode",
+      "z-index"
+    ];
+    var alphabetical = /* @__PURE__ */ Object.freeze({
+      __proto__: null,
+      properties: properties$2
+    });
+    var properties$1 = [
+      "all",
+      "display",
+      "position",
+      "top",
+      "right",
+      "bottom",
+      "left",
+      "offset",
+      "offset-anchor",
+      "offset-distance",
+      "offset-path",
+      "offset-position",
+      "offset-rotate",
+      "grid",
+      "grid-template-rows",
+      "grid-template-columns",
+      "grid-template-areas",
+      "grid-auto-rows",
+      "grid-auto-columns",
+      "grid-auto-flow",
+      "column-gap",
+      "row-gap",
+      "grid-area",
+      "grid-row",
+      "grid-row-start",
+      "grid-row-end",
+      "grid-column",
+      "grid-column-start",
+      "grid-column-end",
+      "grid-template",
+      "flex",
+      "flex-grow",
+      "flex-shrink",
+      "flex-basis",
+      "flex-direction",
+      "flex-flow",
+      "flex-wrap",
+      "box-decoration-break",
+      "place-content",
+      "align-content",
+      "justify-content",
+      "place-items",
+      "align-items",
+      "justify-items",
+      "place-self",
+      "align-self",
+      "justify-self",
+      "vertical-align",
+      "baseline-source",
+      "order",
+      "float",
+      "clear",
+      "shape-margin",
+      "shape-outside",
+      "shape-image-threshold",
+      "orphans",
+      "gap",
+      "columns",
+      "column-fill",
+      "column-rule",
+      "column-rule-width",
+      "column-rule-style",
+      "column-rule-color",
+      "column-width",
+      "column-span",
+      "column-count",
+      "break-before",
+      "break-after",
+      "break-inside",
+      "page",
+      "page-break-before",
+      "page-break-after",
+      "page-break-inside",
+      "transform",
+      "transform-box",
+      "transform-origin",
+      "transform-style",
+      "translate",
+      "rotate",
+      "scale",
+      "perspective",
+      "perspective-origin",
+      "appearance",
+      "visibility",
+      "content-visibility",
+      "opacity",
+      "z-index",
+      "paint-order",
+      "mix-blend-mode",
+      "backface-visibility",
+      "backdrop-filter",
+      "clip-path",
+      "mask",
+      "mask-border",
+      "mask-border-outset",
+      "mask-border-repeat",
+      "mask-border-slice",
+      "mask-border-source",
+      "mask-border-width",
+      "mask-image",
+      "mask-mode",
+      "mask-position",
+      "mask-size",
+      "mask-repeat",
+      "mask-origin",
+      "mask-clip",
+      "mask-composite",
+      "mask-type",
+      "filter",
+      "animation",
+      "animation-composition",
+      "animation-duration",
+      "animation-timing-function",
+      "animation-delay",
+      "animation-iteration-count",
+      "animation-direction",
+      "animation-fill-mode",
+      "animation-play-state",
+      "animation-name",
+      "transition",
+      "transition-behavior",
+      "transition-delay",
+      "transition-duration",
+      "transition-property",
+      "transition-timing-function",
+      "will-change",
+      "counter-increment",
+      "counter-reset",
+      "counter-set",
+      "cursor",
+      "box-sizing",
+      "contain",
+      "contain-intrinsic-height",
+      "contain-intrinsic-size",
+      "contain-intrinsic-width",
+      "container",
+      "container-name",
+      "container-type",
+      "margin",
+      "margin-top",
+      "margin-right",
+      "margin-bottom",
+      "margin-left",
+      "margin-inline",
+      "margin-inline-start",
+      "margin-inline-end",
+      "margin-block",
+      "margin-block-start",
+      "margin-block-end",
+      "inset",
+      "inset-block",
+      "inset-block-end",
+      "inset-block-start",
+      "inset-inline",
+      "inset-inline-end",
+      "inset-inline-start",
+      "outline",
+      "outline-color",
+      "outline-style",
+      "outline-width",
+      "outline-offset",
+      "box-shadow",
+      "border",
+      "border-top",
+      "border-right",
+      "border-bottom",
+      "border-left",
+      "border-width",
+      "border-top-width",
+      "border-right-width",
+      "border-bottom-width",
+      "border-left-width",
+      "border-style",
+      "border-top-style",
+      "border-right-style",
+      "border-bottom-style",
+      "border-left-style",
+      "border-color",
+      "border-top-color",
+      "border-right-color",
+      "border-bottom-color",
+      "border-left-color",
+      "border-radius",
+      "border-top-right-radius",
+      "border-top-left-radius",
+      "border-bottom-right-radius",
+      "border-bottom-left-radius",
+      "border-inline",
+      "border-inline-width",
+      "border-inline-style",
+      "border-inline-color",
+      "border-inline-start",
+      "border-inline-start-width",
+      "border-inline-start-style",
+      "border-inline-start-color",
+      "border-inline-end",
+      "border-inline-end-width",
+      "border-inline-end-style",
+      "border-inline-end-color",
+      "border-block",
+      "border-block-width",
+      "border-block-style",
+      "border-block-color",
+      "border-block-start",
+      "border-block-start-width",
+      "border-block-start-style",
+      "border-block-start-color",
+      "border-block-end",
+      "border-block-end-width",
+      "border-block-end-style",
+      "border-block-end-color",
+      "border-image",
+      "border-image-source",
+      "border-image-slice",
+      "border-image-width",
+      "border-image-outset",
+      "border-image-repeat",
+      "border-collapse",
+      "border-spacing",
+      "border-start-start-radius",
+      "border-start-end-radius",
+      "border-end-start-radius",
+      "border-end-end-radius",
+      "background",
+      "background-image",
+      "background-position",
+      "background-size",
+      "background-repeat",
+      "background-origin",
+      "background-clip",
+      "background-attachment",
+      "background-color",
+      "background-blend-mode",
+      "background-position-x",
+      "background-position-y",
+      "isolation",
+      "padding",
+      "padding-top",
+      "padding-right",
+      "padding-bottom",
+      "padding-left",
+      "padding-inline",
+      "padding-inline-start",
+      "padding-inline-end",
+      "padding-block",
+      "padding-block-start",
+      "padding-block-end",
+      "image-orientation",
+      "image-rendering",
+      "aspect-ratio",
+      "width",
+      "min-width",
+      "max-width",
+      "height",
+      "min-height",
+      "max-height",
+      "-webkit-line-clamp",
+      "-webkit-text-fill-color",
+      "-webkit-text-stroke",
+      "-webkit-text-stroke-color",
+      "-webkit-text-stroke-width",
+      "inline-size",
+      "min-inline-size",
+      "max-inline-size",
+      "block-size",
+      "min-block-size",
+      "max-block-size",
+      "table-layout",
+      "caption-side",
+      "empty-cells",
+      "overflow",
+      "overflow-anchor",
+      "overflow-block",
+      "overflow-clip-margin",
+      "overflow-inline",
+      "overflow-x",
+      "overflow-y",
+      "overscroll-behavior",
+      "overscroll-behavior-block",
+      "overscroll-behavior-inline",
+      "overscroll-behavior-x",
+      "overscroll-behavior-y",
+      "resize",
+      "object-fit",
+      "object-position",
+      "scroll-behavior",
+      "scroll-margin",
+      "scroll-margin-block",
+      "scroll-margin-block-end",
+      "scroll-margin-block-start",
+      "scroll-margin-bottom",
+      "scroll-margin-inline",
+      "scroll-margin-inline-end",
+      "scroll-margin-inline-start",
+      "scroll-margin-left",
+      "scroll-margin-right",
+      "scroll-margin-top",
+      "scroll-padding",
+      "scroll-padding-block",
+      "scroll-padding-block-end",
+      "scroll-padding-block-start",
+      "scroll-padding-bottom",
+      "scroll-padding-inline",
+      "scroll-padding-inline-end",
+      "scroll-padding-inline-start",
+      "scroll-padding-left",
+      "scroll-padding-right",
+      "scroll-padding-top",
+      "scroll-snap-align",
+      "scroll-snap-stop",
+      "scroll-snap-type",
+      "scrollbar-color",
+      "scrollbar-gutter",
+      "scrollbar-width",
+      "touch-action",
+      "pointer-events",
+      "content",
+      "quotes",
+      "hanging-punctuation",
+      "color",
+      "color-interpolation",
+      "accent-color",
+      "print-color-adjust",
+      "forced-color-adjust",
+      "color-scheme",
+      "caret-color",
+      "font",
+      "font-style",
+      "font-variant",
+      "font-weight",
+      "font-stretch",
+      "font-size",
+      "size-adjust",
+      "line-height",
+      "src",
+      "font-family",
+      "font-display",
+      "font-kerning",
+      "font-language-override",
+      "font-optical-sizing",
+      "font-palette",
+      "font-size-adjust",
+      "font-synthesis",
+      "font-synthesis-weight",
+      "font-synthesis-style",
+      "font-synthesis-small-caps",
+      "font-synthesis-position",
+      "font-variant-alternates",
+      "font-variant-caps",
+      "font-variant-east-asian",
+      "font-variant-emoji",
+      "font-variant-ligatures",
+      "font-variant-numeric",
+      "font-variant-position",
+      "font-variation-settings",
+      "font-feature-settings",
+      "ascent-override",
+      "descent-override",
+      "line-gap-override",
+      "hyphens",
+      "hyphenate-character",
+      "letter-spacing",
+      "line-break",
+      "list-style",
+      "list-style-type",
+      "list-style-image",
+      "list-style-position",
+      "writing-mode",
+      "direction",
+      "unicode-bidi",
+      "unicode-range",
+      "user-select",
+      "ruby-position",
+      "math-depth",
+      "math-style",
+      "text-combine-upright",
+      "text-align",
+      "text-align-last",
+      "text-decoration",
+      "text-decoration-line",
+      "text-decoration-style",
+      "text-decoration-color",
+      "text-decoration-thickness",
+      "text-decoration-skip-ink",
+      "text-emphasis",
+      "text-emphasis-style",
+      "text-emphasis-color",
+      "text-emphasis-position",
+      "text-indent",
+      "text-justify",
+      "text-underline-position",
+      "text-underline-offset",
+      "text-orientation",
+      "text-overflow",
+      "text-rendering",
+      "text-shadow",
+      "text-transform",
+      "text-wrap",
+      "white-space",
+      "white-space-collapse",
+      "word-break",
+      "word-spacing",
+      "overflow-wrap",
+      "tab-size",
+      "widows"
+    ];
+    var concentricCss = /* @__PURE__ */ Object.freeze({
+      __proto__: null,
+      properties: properties$1
+    });
+    var properties = [
+      "all",
+      "box-sizing",
+      "contain",
+      "contain-intrinsic-height",
+      "contain-intrinsic-size",
+      "contain-intrinsic-width",
+      "container",
+      "container-name",
+      "container-type",
+      "display",
+      "appearance",
+      "visibility",
+      "content-visibility",
+      "z-index",
+      "paint-order",
+      "position",
+      "top",
+      "right",
+      "bottom",
+      "left",
+      "offset",
+      "offset-anchor",
+      "offset-distance",
+      "offset-path",
+      "offset-position",
+      "offset-rotate",
+      "grid",
+      "grid-template-rows",
+      "grid-template-columns",
+      "grid-template-areas",
+      "grid-auto-rows",
+      "grid-auto-columns",
+      "grid-auto-flow",
+      "column-gap",
+      "row-gap",
+      "grid-area",
+      "grid-row",
+      "grid-row-start",
+      "grid-row-end",
+      "grid-column",
+      "grid-column-start",
+      "grid-column-end",
+      "grid-template",
+      "flex",
+      "flex-grow",
+      "flex-shrink",
+      "flex-basis",
+      "flex-direction",
+      "flex-flow",
+      "flex-wrap",
+      "box-decoration-break",
+      "place-content",
+      "place-items",
+      "place-self",
+      "align-content",
+      "align-items",
+      "align-self",
+      "justify-content",
+      "justify-items",
+      "justify-self",
+      "order",
+      "aspect-ratio",
+      "width",
+      "min-width",
+      "max-width",
+      "height",
+      "min-height",
+      "max-height",
+      "-webkit-line-clamp",
+      "-webkit-text-fill-color",
+      "-webkit-text-stroke",
+      "-webkit-text-stroke-color",
+      "-webkit-text-stroke-width",
+      "inline-size",
+      "min-inline-size",
+      "max-inline-size",
+      "block-size",
+      "min-block-size",
+      "max-block-size",
+      "margin",
+      "margin-top",
+      "margin-right",
+      "margin-bottom",
+      "margin-left",
+      "margin-inline",
+      "margin-inline-start",
+      "margin-inline-end",
+      "margin-block",
+      "margin-block-start",
+      "margin-block-end",
+      "inset",
+      "inset-block",
+      "inset-block-end",
+      "inset-block-start",
+      "inset-inline",
+      "inset-inline-end",
+      "inset-inline-start",
+      "padding",
+      "padding-top",
+      "padding-right",
+      "padding-bottom",
+      "padding-left",
+      "padding-inline",
+      "padding-inline-start",
+      "padding-inline-end",
+      "padding-block",
+      "padding-block-start",
+      "padding-block-end",
+      "float",
+      "clear",
+      "overflow",
+      "overflow-anchor",
+      "overflow-block",
+      "overflow-clip-margin",
+      "overflow-inline",
+      "overflow-x",
+      "overflow-y",
+      "overscroll-behavior",
+      "overscroll-behavior-block",
+      "overscroll-behavior-inline",
+      "overscroll-behavior-x",
+      "overscroll-behavior-y",
+      "orphans",
+      "gap",
+      "columns",
+      "column-fill",
+      "column-rule",
+      "column-rule-color",
+      "column-rule-style",
+      "column-rule-width",
+      "column-span",
+      "column-count",
+      "column-width",
+      "object-fit",
+      "object-position",
+      "transform",
+      "transform-box",
+      "transform-origin",
+      "transform-style",
+      "translate",
+      "rotate",
+      "scale",
+      "border",
+      "border-top",
+      "border-right",
+      "border-bottom",
+      "border-left",
+      "border-width",
+      "border-top-width",
+      "border-right-width",
+      "border-bottom-width",
+      "border-left-width",
+      "border-style",
+      "border-top-style",
+      "border-right-style",
+      "border-bottom-style",
+      "border-left-style",
+      "border-radius",
+      "border-top-right-radius",
+      "border-top-left-radius",
+      "border-bottom-right-radius",
+      "border-bottom-left-radius",
+      "border-inline",
+      "border-inline-color",
+      "border-inline-style",
+      "border-inline-width",
+      "border-inline-start",
+      "border-inline-start-color",
+      "border-inline-start-style",
+      "border-inline-start-width",
+      "border-inline-end",
+      "border-inline-end-color",
+      "border-inline-end-style",
+      "border-inline-end-width",
+      "border-block",
+      "border-block-color",
+      "border-block-style",
+      "border-block-width",
+      "border-block-start",
+      "border-block-start-color",
+      "border-block-start-style",
+      "border-block-start-width",
+      "border-block-end",
+      "border-block-end-color",
+      "border-block-end-style",
+      "border-block-end-width",
+      "border-color",
+      "border-image",
+      "border-image-outset",
+      "border-image-repeat",
+      "border-image-slice",
+      "border-image-source",
+      "border-image-width",
+      "border-top-color",
+      "border-right-color",
+      "border-bottom-color",
+      "border-left-color",
+      "border-collapse",
+      "border-spacing",
+      "border-start-start-radius",
+      "border-start-end-radius",
+      "border-end-start-radius",
+      "border-end-end-radius",
+      "outline",
+      "outline-color",
+      "outline-style",
+      "outline-width",
+      "outline-offset",
+      "backdrop-filter",
+      "backface-visibility",
+      "background",
+      "background-image",
+      "background-position",
+      "background-size",
+      "background-repeat",
+      "background-origin",
+      "background-clip",
+      "background-attachment",
+      "background-color",
+      "background-blend-mode",
+      "background-position-x",
+      "background-position-y",
+      "box-shadow",
+      "isolation",
+      "content",
+      "quotes",
+      "hanging-punctuation",
+      "color",
+      "color-interpolation",
+      "accent-color",
+      "print-color-adjust",
+      "forced-color-adjust",
+      "color-scheme",
+      "caret-color",
+      "font",
+      "font-style",
+      "font-variant",
+      "font-weight",
+      "src",
+      "font-stretch",
+      "font-size",
+      "size-adjust",
+      "line-height",
+      "font-family",
+      "font-display",
+      "font-kerning",
+      "font-language-override",
+      "font-optical-sizing",
+      "font-palette",
+      "font-size-adjust",
+      "font-synthesis",
+      "font-synthesis-weight",
+      "font-synthesis-style",
+      "font-synthesis-small-caps",
+      "font-synthesis-position",
+      "font-variant-alternates",
+      "font-variant-caps",
+      "font-variant-east-asian",
+      "font-variant-emoji",
+      "font-variant-ligatures",
+      "font-variant-numeric",
+      "font-variant-position",
+      "font-variation-settings",
+      "font-feature-settings",
+      "ascent-override",
+      "descent-override",
+      "line-gap-override",
+      "hyphens",
+      "hyphenate-character",
+      "letter-spacing",
+      "line-break",
+      "list-style",
+      "list-style-image",
+      "list-style-position",
+      "list-style-type",
+      "direction",
+      "text-align",
+      "text-align-last",
+      "text-decoration",
+      "text-decoration-line",
+      "text-decoration-style",
+      "text-decoration-color",
+      "text-decoration-thickness",
+      "text-decoration-skip-ink",
+      "text-emphasis",
+      "text-emphasis-style",
+      "text-emphasis-color",
+      "text-emphasis-position",
+      "text-indent",
+      "text-justify",
+      "text-underline-position",
+      "text-underline-offset",
+      "text-orientation",
+      "text-overflow",
+      "text-rendering",
+      "text-shadow",
+      "text-transform",
+      "text-wrap",
+      "vertical-align",
+      "baseline-source",
+      "white-space",
+      "white-space-collapse",
+      "word-break",
+      "word-spacing",
+      "overflow-wrap",
+      "animation",
+      "animation-composition",
+      "animation-duration",
+      "animation-timing-function",
+      "animation-delay",
+      "animation-iteration-count",
+      "animation-direction",
+      "animation-fill-mode",
+      "animation-play-state",
+      "animation-name",
+      "mix-blend-mode",
+      "break-before",
+      "break-after",
+      "break-inside",
+      "page",
+      "page-break-before",
+      "page-break-after",
+      "page-break-inside",
+      "caption-side",
+      "clip-path",
+      "counter-increment",
+      "counter-reset",
+      "counter-set",
+      "cursor",
+      "empty-cells",
+      "filter",
+      "image-orientation",
+      "image-rendering",
+      "mask",
+      "mask-border",
+      "mask-border-outset",
+      "mask-border-repeat",
+      "mask-border-slice",
+      "mask-border-source",
+      "mask-border-width",
+      "mask-clip",
+      "mask-composite",
+      "mask-image",
+      "mask-mode",
+      "mask-origin",
+      "mask-position",
+      "mask-repeat",
+      "mask-size",
+      "mask-type",
+      "opacity",
+      "perspective",
+      "perspective-origin",
+      "pointer-events",
+      "resize",
+      "scroll-behavior",
+      "scroll-margin",
+      "scroll-margin-block",
+      "scroll-margin-block-end",
+      "scroll-margin-block-start",
+      "scroll-margin-bottom",
+      "scroll-margin-inline",
+      "scroll-margin-inline-end",
+      "scroll-margin-inline-start",
+      "scroll-margin-left",
+      "scroll-margin-right",
+      "scroll-margin-top",
+      "scroll-padding",
+      "scroll-padding-block",
+      "scroll-padding-block-end",
+      "scroll-padding-block-start",
+      "scroll-padding-bottom",
+      "scroll-padding-inline",
+      "scroll-padding-inline-end",
+      "scroll-padding-inline-start",
+      "scroll-padding-left",
+      "scroll-padding-right",
+      "scroll-padding-top",
+      "scroll-snap-align",
+      "scroll-snap-stop",
+      "scroll-snap-type",
+      "scrollbar-color",
+      "scrollbar-gutter",
+      "scrollbar-width",
+      "shape-image-threshold",
+      "shape-margin",
+      "shape-outside",
+      "tab-size",
+      "table-layout",
+      "ruby-position",
+      "math-depth",
+      "math-style",
+      "text-combine-upright",
+      "touch-action",
+      "transition",
+      "transition-behavior",
+      "transition-delay",
+      "transition-duration",
+      "transition-property",
+      "transition-timing-function",
+      "will-change",
+      "unicode-bidi",
+      "unicode-range",
+      "user-select",
+      "widows",
+      "writing-mode"
+    ];
+    var smacss = /* @__PURE__ */ Object.freeze({
+      __proto__: null,
+      properties
+    });
+    exports2.cssDeclarationSorter = cssDeclarationSorter;
+    exports2.default = cssDeclarationSorter;
+    module2.exports = cssDeclarationSorter;
+  }
+});
+
+// node_modules/postcss-discard-comments/src/lib/commentRemover.js
+var require_commentRemover = __commonJS({
+  "node_modules/postcss-discard-comments/src/lib/commentRemover.js"(exports2, module2) {
+    "use strict";
+    function CommentRemover(options) {
+      this.options = options;
+    }
+    CommentRemover.prototype.canRemove = function(comment) {
+      const remove = this.options.remove;
+      if (remove) {
+        return remove(comment);
+      } else {
+        const isImportant = comment.indexOf("!") === 0;
+        if (!isImportant) {
+          return true;
+        }
+        if (this.options.removeAll || this._hasFirst) {
+          return true;
+        } else if (this.options.removeAllButFirst && !this._hasFirst) {
+          this._hasFirst = true;
+          return false;
+        }
+      }
+    };
+    module2.exports = CommentRemover;
+  }
+});
+
+// node_modules/postcss-discard-comments/src/lib/commentParser.js
+var require_commentParser = __commonJS({
+  "node_modules/postcss-discard-comments/src/lib/commentParser.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function commentParser(input) {
+      const tokens = [];
+      const length = input.length;
+      let pos = 0;
+      let next;
+      while (pos < length) {
+        next = input.indexOf("/*", pos);
+        if (~next) {
+          tokens.push([0, pos, next]);
+          pos = next;
+          next = input.indexOf("*/", pos + 2);
+          tokens.push([1, pos + 2, next]);
+          pos = next + 2;
+        } else {
+          tokens.push([0, pos, length]);
+          pos = length;
+        }
+      }
+      return tokens;
+    };
+  }
+});
+
+// node_modules/postcss-discard-comments/src/index.js
+var require_src2 = __commonJS({
+  "node_modules/postcss-discard-comments/src/index.js"(exports2, module2) {
+    "use strict";
+    var CommentRemover = require_commentRemover();
+    var commentParser = require_commentParser();
+    function pluginCreator(opts = {}) {
+      const remover = new CommentRemover(opts);
+      const matcherCache = /* @__PURE__ */ new Map();
+      const replacerCache = /* @__PURE__ */ new Map();
+      function matchesComments(source) {
+        if (matcherCache.has(source)) {
+          return matcherCache.get(source);
+        }
+        const result = commentParser(source).filter(([type]) => type);
+        matcherCache.set(source, result);
+        return result;
+      }
+      function replaceComments(source, space, separator = " ") {
+        const key = source + "@|@" + separator;
+        if (replacerCache.has(key)) {
+          return replacerCache.get(key);
+        }
+        const parsed = commentParser(source).reduce((value, [type, start, end]) => {
+          const contents = source.slice(start, end);
+          if (!type) {
+            return value + contents;
+          }
+          if (remover.canRemove(contents)) {
+            return value + separator;
+          }
+          return `${value}/*${contents}*/`;
+        }, "");
+        const result = space(parsed).join(" ");
+        replacerCache.set(key, result);
+        return result;
+      }
+      return {
+        postcssPlugin: "postcss-discard-comments",
+        OnceExit(css, { list }) {
+          css.walk((node) => {
+            if (node.type === "comment" && remover.canRemove(node.text)) {
+              node.remove();
+              return;
+            }
+            if (typeof node.raws.between === "string") {
+              node.raws.between = replaceComments(node.raws.between, list.space);
+            }
+            if (node.type === "decl") {
+              if (node.raws.value && node.raws.value.raw) {
+                if (node.raws.value.value === node.value) {
+                  node.value = replaceComments(node.raws.value.raw, list.space);
+                } else {
+                  node.value = replaceComments(node.value, list.space);
+                }
+                node.raws.value = null;
+              }
+              if (node.raws.important) {
+                node.raws.important = replaceComments(
+                  node.raws.important,
+                  list.space
+                );
+                const b = matchesComments(node.raws.important);
+                node.raws.important = b.length ? node.raws.important : "!important";
+              } else {
+                node.value = replaceComments(node.value, list.space);
+              }
+              return;
+            }
+            if (node.type === "rule" && node.raws.selector && node.raws.selector.raw) {
+              node.raws.selector.raw = replaceComments(
+                node.raws.selector.raw,
+                list.space,
+                ""
+              );
+              return;
+            }
+            if (node.type === "atrule") {
+              if (node.raws.afterName) {
+                const commentsReplaced = replaceComments(
+                  node.raws.afterName,
+                  list.space
+                );
+                if (!commentsReplaced.length) {
+                  node.raws.afterName = commentsReplaced + " ";
+                } else {
+                  node.raws.afterName = " " + commentsReplaced + " ";
+                }
+              }
+              if (node.raws.params && node.raws.params.raw) {
+                node.raws.params.raw = replaceComments(
+                  node.raws.params.raw,
+                  list.space
+                );
+              }
+            }
+          });
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/lodash.memoize/index.js
+var require_lodash = __commonJS({
+  "node_modules/lodash.memoize/index.js"(exports2, module2) {
+    var FUNC_ERROR_TEXT = "Expected a function";
+    var HASH_UNDEFINED = "__lodash_hash_undefined__";
+    var funcTag = "[object Function]";
+    var genTag = "[object GeneratorFunction]";
+    var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+    var reIsHostCtor = /^\[object .+?Constructor\]$/;
+    var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
+    var freeSelf = typeof self == "object" && self && self.Object === Object && self;
+    var root = freeGlobal || freeSelf || Function("return this")();
+    function getValue(object, key) {
+      return object == null ? void 0 : object[key];
+    }
+    function isHostObject(value) {
+      var result = false;
+      if (value != null && typeof value.toString != "function") {
+        try {
+          result = !!(value + "");
+        } catch (e) {
+        }
+      }
+      return result;
+    }
+    var arrayProto = Array.prototype;
+    var funcProto = Function.prototype;
+    var objectProto = Object.prototype;
+    var coreJsData = root["__core-js_shared__"];
+    var maskSrcKey = function() {
+      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
+      return uid ? "Symbol(src)_1." + uid : "";
+    }();
+    var funcToString = funcProto.toString;
+    var hasOwnProperty2 = objectProto.hasOwnProperty;
+    var objectToString = objectProto.toString;
+    var reIsNative = RegExp(
+      "^" + funcToString.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
+    );
+    var splice = arrayProto.splice;
+    var Map2 = getNative(root, "Map");
+    var nativeCreate = getNative(Object, "create");
+    function Hash(entries) {
+      var index = -1, length = entries ? entries.length : 0;
+      this.clear();
+      while (++index < length) {
+        var entry = entries[index];
+        this.set(entry[0], entry[1]);
+      }
+    }
+    function hashClear() {
+      this.__data__ = nativeCreate ? nativeCreate(null) : {};
+    }
+    function hashDelete(key) {
+      return this.has(key) && delete this.__data__[key];
+    }
+    function hashGet(key) {
+      var data = this.__data__;
+      if (nativeCreate) {
+        var result = data[key];
+        return result === HASH_UNDEFINED ? void 0 : result;
+      }
+      return hasOwnProperty2.call(data, key) ? data[key] : void 0;
+    }
+    function hashHas(key) {
+      var data = this.__data__;
+      return nativeCreate ? data[key] !== void 0 : hasOwnProperty2.call(data, key);
+    }
+    function hashSet(key, value) {
+      var data = this.__data__;
+      data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
+      return this;
+    }
+    Hash.prototype.clear = hashClear;
+    Hash.prototype["delete"] = hashDelete;
+    Hash.prototype.get = hashGet;
+    Hash.prototype.has = hashHas;
+    Hash.prototype.set = hashSet;
+    function ListCache(entries) {
+      var index = -1, length = entries ? entries.length : 0;
+      this.clear();
+      while (++index < length) {
+        var entry = entries[index];
+        this.set(entry[0], entry[1]);
+      }
+    }
+    function listCacheClear() {
+      this.__data__ = [];
+    }
+    function listCacheDelete(key) {
+      var data = this.__data__, index = assocIndexOf(data, key);
+      if (index < 0) {
+        return false;
+      }
+      var lastIndex = data.length - 1;
+      if (index == lastIndex) {
+        data.pop();
+      } else {
+        splice.call(data, index, 1);
+      }
+      return true;
+    }
+    function listCacheGet(key) {
+      var data = this.__data__, index = assocIndexOf(data, key);
+      return index < 0 ? void 0 : data[index][1];
+    }
+    function listCacheHas(key) {
+      return assocIndexOf(this.__data__, key) > -1;
+    }
+    function listCacheSet(key, value) {
+      var data = this.__data__, index = assocIndexOf(data, key);
+      if (index < 0) {
+        data.push([key, value]);
+      } else {
+        data[index][1] = value;
+      }
+      return this;
+    }
+    ListCache.prototype.clear = listCacheClear;
+    ListCache.prototype["delete"] = listCacheDelete;
+    ListCache.prototype.get = listCacheGet;
+    ListCache.prototype.has = listCacheHas;
+    ListCache.prototype.set = listCacheSet;
+    function MapCache(entries) {
+      var index = -1, length = entries ? entries.length : 0;
+      this.clear();
+      while (++index < length) {
+        var entry = entries[index];
+        this.set(entry[0], entry[1]);
+      }
+    }
+    function mapCacheClear() {
+      this.__data__ = {
+        "hash": new Hash(),
+        "map": new (Map2 || ListCache)(),
+        "string": new Hash()
+      };
+    }
+    function mapCacheDelete(key) {
+      return getMapData(this, key)["delete"](key);
+    }
+    function mapCacheGet(key) {
+      return getMapData(this, key).get(key);
+    }
+    function mapCacheHas(key) {
+      return getMapData(this, key).has(key);
+    }
+    function mapCacheSet(key, value) {
+      getMapData(this, key).set(key, value);
+      return this;
+    }
+    MapCache.prototype.clear = mapCacheClear;
+    MapCache.prototype["delete"] = mapCacheDelete;
+    MapCache.prototype.get = mapCacheGet;
+    MapCache.prototype.has = mapCacheHas;
+    MapCache.prototype.set = mapCacheSet;
+    function assocIndexOf(array, key) {
+      var length = array.length;
+      while (length--) {
+        if (eq(array[length][0], key)) {
+          return length;
+        }
+      }
+      return -1;
+    }
+    function baseIsNative(value) {
+      if (!isObject(value) || isMasked(value)) {
+        return false;
+      }
+      var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
+      return pattern.test(toSource(value));
+    }
+    function getMapData(map, key) {
+      var data = map.__data__;
+      return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
+    }
+    function getNative(object, key) {
+      var value = getValue(object, key);
+      return baseIsNative(value) ? value : void 0;
+    }
+    function isKeyable(value) {
+      var type = typeof value;
+      return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
+    }
+    function isMasked(func) {
+      return !!maskSrcKey && maskSrcKey in func;
+    }
+    function toSource(func) {
+      if (func != null) {
+        try {
+          return funcToString.call(func);
+        } catch (e) {
+        }
+        try {
+          return func + "";
+        } catch (e) {
+        }
+      }
+      return "";
+    }
+    function memoize(func, resolver) {
+      if (typeof func != "function" || resolver && typeof resolver != "function") {
+        throw new TypeError(FUNC_ERROR_TEXT);
+      }
+      var memoized = function() {
+        var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
+        if (cache.has(key)) {
+          return cache.get(key);
+        }
+        var result = func.apply(this, args);
+        memoized.cache = cache.set(key, result);
+        return result;
+      };
+      memoized.cache = new (memoize.Cache || MapCache)();
+      return memoized;
+    }
+    memoize.Cache = MapCache;
+    function eq(value, other) {
+      return value === other || value !== value && other !== other;
+    }
+    function isFunction(value) {
+      var tag = isObject(value) ? objectToString.call(value) : "";
+      return tag == funcTag || tag == genTag;
+    }
+    function isObject(value) {
+      var type = typeof value;
+      return !!value && (type == "object" || type == "function");
+    }
+    module2.exports = memoize;
+  }
+});
+
+// node_modules/caniuse-lite/data/features/aac.js
+var require_aac = __commonJS({
+  "node_modules/caniuse-lite/data/features/aac.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "132": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F", "16": "A B" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "132": "9B" }, N: { "1": "A", "2": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "132": "gD hD" } }, B: 6, C: "AAC audio file format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/abortcontroller.js
+var require_abortcontroller = __commonJS({
+  "node_modules/caniuse-lite/data/features/abortcontroller.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G" }, C: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB iC jC" }, D: { "1": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC", "130": "C AC" }, F: { "1": "lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB vC wC xC yC AC cC zC BC" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "AbortController & AbortSignal", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ac3-ec3.js
+var require_ac3_ec3 = __commonJS({
+  "node_modules/caniuse-lite/data/features/ac3-ec3.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "C L M G N O P", "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C", "132": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D", "132": "A" }, K: { "2": "A B C H AC cC", "132": "BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/accelerometer.js
+var require_accelerometer = __commonJS({
+  "node_modules/caniuse-lite/data/features/accelerometer.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB", "194": "qB HC rB IC sB tB uB vB wB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "Accelerometer", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/addeventlistener.js
+var require_addeventlistener = __commonJS({
+  "node_modules/caniuse-lite/data/features/addeventlistener.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "130": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "257": "fC GC J IB K iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "EventTarget.addEventListener()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/alternate-stylesheet.js
+var require_alternate_stylesheet = __commonJS({
+  "node_modules/caniuse-lite/data/features/alternate-stylesheet.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "E F A B", "2": "K D eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "F B C vC wC xC yC AC cC zC BC", "16": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "16": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "16": "D A" }, K: { "2": "H", "16": "A B C AC cC BC" }, L: { "16": "I" }, M: { "16": "9B" }, N: { "16": "A B" }, O: { "16": "CC" }, P: { "16": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "16": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Alternate stylesheet", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ambient-light.js
+var require_ambient_light = __commonJS({
+  "node_modules/caniuse-lite/data/features/ambient-light.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L", "132": "M G N O P", "322": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "132": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC", "194": "4 5 6 7 8 9 rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB", "322": "4 5 6 7 8 9 qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B vC wC xC yC AC cC zC BC", "322": "3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "132": "gD hD" } }, B: 4, C: "Ambient Light Sensor", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/apng.js
+var require_apng = __commonJS({
+  "node_modules/caniuse-lite/data/features/apng.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC" }, D: { "1": "4 5 6 7 8 9 HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB" }, E: { "1": "E F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC nC" }, F: { "1": "B C eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "0 1 2 3 F G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Animated PNG (APNG)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/array-find-index.js
+var require_array_find_index = __commonJS({
+  "node_modules/caniuse-lite/data/features/array-find-index.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB" }, E: { "1": "E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC" }, F: { "1": "QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB vC wC xC yC AC cC zC BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D", "16": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Array.prototype.findIndex", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/array-find.js
+var require_array_find = __commonJS({
+  "node_modules/caniuse-lite/data/features/array-find.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "16": "C L M" }, C: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB" }, E: { "1": "E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC" }, F: { "1": "QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB vC wC xC yC AC cC zC BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D", "16": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Array.prototype.find", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/array-flat.js
+var require_array_flat = __commonJS({
+  "node_modules/caniuse-lite/data/features/array-flat.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC iC jC" }, D: { "1": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB" }, E: { "1": "C L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC AC" }, F: { "1": "oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB vC wC xC yC AC cC zC BC" }, G: { "1": "BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "flat & flatMap array methods", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/array-includes.js
+var require_array_includes = __commonJS({
+  "node_modules/caniuse-lite/data/features/array-includes.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "4 5 6 7 8 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB iC jC" }, D: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Array.prototype.includes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/arrow-functions.js
+var require_arrow_functions = __commonJS({
+  "node_modules/caniuse-lite/data/features/arrow-functions.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Arrow functions", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/asmjs.js
+var require_asmjs = __commonJS({
+  "node_modules/caniuse-lite/data/features/asmjs.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "L M G N O P", "132": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "322": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB", "132": "4 5 6 7 8 9 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "132": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "132": "H" }, L: { "132": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "132": "CC" }, P: { "2": "J", "132": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "132": "eD" }, R: { "132": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "asm.js", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/async-clipboard.js
+var require_async_clipboard = __commonJS({
+  "node_modules/caniuse-lite/data/features/async-clipboard.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB iC jC", "132": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB" }, D: { "1": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB" }, E: { "1": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC" }, F: { "1": "lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB vC wC xC yC AC cC zC BC" }, G: { "1": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "260": "I" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "3", "2": "J TD UD VD WD", "260": "0 1 2 y z XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD", "132": "hD" } }, B: 5, C: "Asynchronous Clipboard API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/async-functions.js
+var require_async_functions = __commonJS({
+  "node_modules/caniuse-lite/data/features/async-functions.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L", "194": "M" }, C: { "1": "4 5 6 7 8 9 kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB iC jC" }, D: { "1": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC", "258": "NC" }, F: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vC wC xC yC AC cC zC BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C", "258": "8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "Async functions", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/atob-btoa.js
+var require_atob_btoa = __commonJS({
+  "node_modules/caniuse-lite/data/features/atob-btoa.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "2": "F vC wC", "16": "xC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "16": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Base64 encoding and decoding", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/audio-api.js
+var require_audio_api = __commonJS({
+  "node_modules/caniuse-lite/data/features/audio-api.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L", "33": "0 1 2 3 M G N O P JB y z KB LB MB NB OB PB QB RB" }, E: { "1": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "33": "K D E F A B C L M mC nC oC NC AC BC pC" }, F: { "1": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "G N O P JB y z" }, G: { "1": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Web Audio API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/audio.js
+var require_audio = __commonJS({
+  "node_modules/caniuse-lite/data/features/audio.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "132": "J IB K D E F A B C L M G N O P JB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F", "4": "vC wC" }, G: { "260": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "2": "ND OD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Audio element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/audiotracks.js
+var require_audiotracks = __commonJS({
+  "node_modules/caniuse-lite/data/features/audiotracks.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "C L M G N O P", "322": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB iC jC", "194": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB", "322": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB vC wC xC yC AC cC zC BC", "322": "QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "322": "H" }, L: { "322": "I" }, M: { "2": "9B" }, N: { "1": "A B" }, O: { "322": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "322": "eD" }, R: { "322": "fD" }, S: { "194": "gD hD" } }, B: 1, C: "Audio Tracks", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/autofocus.js
+var require_autofocus = __commonJS({
+  "node_modules/caniuse-lite/data/features/autofocus.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "Autofocus attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/auxclick.js
+var require_auxclick = __commonJS({
+  "node_modules/caniuse-lite/data/features/auxclick.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB iC jC", "129": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "Auxclick", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/av1.js
+var require_av1 = __commonJS({
+  "node_modules/caniuse-lite/data/features/av1.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "AB BB CB DB EB FB GB HB I", "2": "5 6 7 8 9 C L M G N O", "194": "4 P Q H 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" }, C: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB iC jC", "66": "nB oB pB qB HC rB IC sB tB uB", "260": "vB", "516": "wB" }, D: { "1": "4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB", "66": "xB yB zB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC", "1028": "EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD", "1028": "EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "AV1 video format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/avif.js
+var require_avif = __commonJS({
+  "node_modules/caniuse-lite/data/features/avif.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "AB BB CB DB EB FB GB HB I", "2": "7 8 9 C L M G N O P Q H 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", "4162": "4 5 6 x" }, C: { "1": "4 5 6 7 8 9 w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B iC jC", "194": "7B 8B Q H R JC S T U V W X Y Z a b", "257": "c d e f g h i j k l m n o p q r s t", "2049": "u v" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC", "1796": "QC RC SC" }, F: { "1": "1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B vC wC xC yC AC cC zC BC" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD", "1281": "DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "AVIF image format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/background-attachment.js
+var require_background_attachment = __commonJS({
+  "node_modules/caniuse-lite/data/features/background-attachment.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "132": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "132": "0 1 2 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K D E F A B C lC mC nC oC NC AC BC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "132": "J L kC MC pC", "2050": "M G qC rC OC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "132": "F vC wC" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC", "772": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD", "2050": "DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD RD SD", "132": "QD dC" }, J: { "260": "D A" }, K: { "1": "B C H AC cC BC", "132": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "2": "J", "1028": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS background-attachment", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/background-position-x-y.js
+var require_background_position_x_y = __commonJS({
+  "node_modules/caniuse-lite/data/features/background-position-x-y.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 7, C: "background-position-x & background-position-y", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/background-repeat-round-space.js
+var require_background_repeat_round_space = __commonJS({
+  "node_modules/caniuse-lite/data/features/background-repeat-round-space.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E eC", "132": "F" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB iC jC" }, D: { "1": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC" }, F: { "1": "0 1 2 3 B C JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F G N O P vC wC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "CSS background-repeat round and space", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/background-sync.js
+var require_background_sync = __commonJS({
+  "node_modules/caniuse-lite/data/features/background-sync.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC iC jC", "16": "LC gC hC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Background Sync API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/battery-status.js
+var require_battery_status = __commonJS({
+  "node_modules/caniuse-lite/data/features/battery-status.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "bB cB dB eB fB gB hB iB jB", "2": "4 5 6 7 8 9 fC GC J IB K D E F kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "132": "0 1 2 3 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB", "164": "A B C L M G" }, D: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB", "66": "VB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD", "2": "hD" } }, B: 4, C: "Battery Status API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/beacon.js
+var require_beacon = __commonJS({
+  "node_modules/caniuse-lite/data/features/beacon.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "4 5 6 7 8 9 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB iC jC" }, D: { "1": "4 5 6 7 8 9 XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC" }, F: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Beacon API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/beforeafterprint.js
+var require_beforeafterprint = __commonJS({
+  "node_modules/caniuse-lite/data/features/beforeafterprint.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B", "16": "eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC" }, D: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC BC" }, F: { "1": "iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB vC wC xC yC AC cC zC BC" }, G: { "1": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "16": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "16": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "16": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Printing Events", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/bigint.js
+var require_bigint = __commonJS({
+  "node_modules/caniuse-lite/data/features/bigint.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB iC jC", "194": "vB wB xB" }, D: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB" }, E: { "1": "M G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC pC" }, F: { "1": "mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB vC wC xC yC AC cC zC BC" }, G: { "1": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "BigInt", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/blobbuilder.js
+var require_blobbuilder = __commonJS({
+  "node_modules/caniuse-lite/data/features/blobbuilder.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC", "36": "K D E F A B C" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D", "36": "E F A B C L M G N O P JB" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B C vC wC xC yC AC cC zC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C" }, H: { "2": "MD" }, I: { "1": "I", "2": "ND OD PD", "36": "GC J QD dC RD SD" }, J: { "1": "A", "2": "D" }, K: { "1": "H BC", "2": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Blob constructing", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/bloburls.js
+var require_bloburls = __commonJS({
+  "node_modules/caniuse-lite/data/features/bloburls.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "129": "A B" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "129": "C L M" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D", "33": "0 E F A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "33": "K" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC ND OD PD", "33": "J QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Blob URLs", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/broadcastchannel.js
+var require_broadcastchannel = __commonJS({
+  "node_modules/caniuse-lite/data/features/broadcastchannel.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB iC jC" }, D: { "1": "4 5 6 7 8 9 mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB vC wC xC yC AC cC zC BC" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "BroadcastChannel", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/brotli.js
+var require_brotli = __commonJS({
+  "node_modules/caniuse-lite/data/features/brotli.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M" }, C: { "1": "4 5 6 7 8 9 cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB iC jC" }, D: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB", "194": "hB", "257": "iB" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "513": "B C AC BC" }, F: { "1": "WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC", "194": "UB VB" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Brotli Accept-Encoding/Content-Encoding", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/canvas-blending.js
+var require_canvas_blending = __commonJS({
+  "node_modules/caniuse-lite/data/features/canvas-blending.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB iC jC" }, D: { "1": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC" }, F: { "1": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Canvas blend modes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/canvas-text.js
+var require_canvas_text = __commonJS({
+  "node_modules/caniuse-lite/data/features/canvas-text.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "eC", "8": "K D E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "8": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "8": "F vC wC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "8": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Text API for Canvas", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/canvas.js
+var require_canvas = __commonJS({
+  "node_modules/caniuse-lite/data/features/canvas.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "eC", "8": "K D E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "132": "fC GC iC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "132": "kC MC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "260": "MD" }, I: { "1": "GC J I QD dC RD SD", "132": "ND OD PD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Canvas (basic support)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ch-unit.js
+var require_ch_unit = __commonJS({
+  "node_modules/caniuse-lite/data/features/ch-unit.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "132": "F A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "ch (character) unit", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/chacha20-poly1305.js
+var require_chacha20_poly1305 = __commonJS({
+  "node_modules/caniuse-lite/data/features/chacha20-poly1305.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB iC jC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB", "129": "RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD", "16": "SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "ChaCha20-Poly1305 cipher suites for TLS", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/channel-messaging.js
+var require_channel_messaging = __commonJS({
+  "node_modules/caniuse-lite/data/features/channel-messaging.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "194": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "2": "F vC wC", "16": "xC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Channel messaging", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/childnode-remove.js
+var require_childnode_remove = __commonJS({
+  "node_modules/caniuse-lite/data/features/childnode-remove.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "16": "C" }, C: { "1": "1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "16": "K" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "ChildNode.remove()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/classlist.js
+var require_classlist = __commonJS({
+  "node_modules/caniuse-lite/data/features/classlist.js"(exports2, module2) {
+    module2.exports = { A: { A: { "8": "K D E F eC", "1924": "A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "8": "fC GC iC", "516": "2 3", "772": "0 1 J IB K D E F A B C L M G N O P JB y z jC" }, D: { "1": "4 5 6 7 8 9 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "8": "J IB K D", "516": "2 3 KB LB", "772": "1", "900": "0 E F A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J IB kC MC", "900": "K lC mC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "8": "F B vC wC xC yC AC", "900": "C cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "MC 0C dC", "900": "1C 2C" }, H: { "900": "MD" }, I: { "1": "I RD SD", "8": "ND OD PD", "900": "GC J QD dC" }, J: { "1": "A", "900": "D" }, K: { "1": "H", "8": "A B", "900": "C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "900": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "classList (DOMTokenList)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js
+var require_client_hints_dpr_width_viewport = __commonJS({
+  "node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "Client Hints: DPR, Width, Viewport-Width", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/clipboard.js
+var require_clipboard = __commonJS({
+  "node_modules/caniuse-lite/data/features/clipboard.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2436": "K D E F A B eC" }, B: { "260": "O P", "2436": "C L M G N", "8196": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "772": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB", "4100": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "J IB K D E F A B C", "2564": "0 1 2 3 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB", "8196": "4 5 6 7 8 9 qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "10244": "bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB" }, E: { "1": "C L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC MC", "2308": "A B NC AC", "2820": "J IB K D E F lC mC nC oC" }, F: { "2": "F B vC wC xC yC AC cC zC", "16": "C", "516": "BC", "2564": "0 1 2 3 G N O P JB y z KB LB MB NB", "8196": "dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "10244": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB" }, G: { "1": "BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC", "2820": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC", "260": "I", "2308": "RD SD" }, J: { "2": "D", "2308": "A" }, K: { "2": "A B C AC cC", "16": "BC", "8196": "H" }, L: { "8196": "I" }, M: { "1028": "9B" }, N: { "2": "A B" }, O: { "8196": "CC" }, P: { "2052": "TD UD", "2308": "J", "8196": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "8196": "eD" }, R: { "8196": "fD" }, S: { "4100": "gD hD" } }, B: 5, C: "Synchronous Clipboard API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/colr-v1.js
+var require_colr_v1 = __commonJS({
+  "node_modules/caniuse-lite/data/features/colr-v1.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g" }, C: { "1": "4 5 6 7 8 9 q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g iC jC", "258": "h i j k l m n", "578": "o p" }, D: { "1": "4 5 6 7 8 9 h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y", "194": "Z a b c d e f g" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "16": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "16": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z FC dD", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "COLR/CPAL(v1) Font Formats", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/colr.js
+var require_colr = __commonJS({
+  "node_modules/caniuse-lite/data/features/colr.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "257": "F A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P t u v w x AB BB CB DB EB FB GB HB I", "513": "Q H 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" }, C: { "1": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB iC jC" }, D: { "1": "4 5 6 7 8 9 t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B", "513": "1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "1": "M G qC rC OC PC CC sC DC QC RC SC TC UC tC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "129": "B C L AC BC pC", "1026": "EC VC" }, F: { "1": "f g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB vC wC xC yC AC cC zC BC", "513": "qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "1026": "EC VC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "16": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "16": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "COLR/CPAL(v0) Font Formats", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/comparedocumentposition.js
+var require_comparedocumentposition = __commonJS({
+  "node_modules/caniuse-lite/data/features/comparedocumentposition.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "16": "fC GC iC jC" }, D: { "1": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M", "132": "0 1 2 3 G N O P JB y z KB LB MB NB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB K kC MC", "132": "D E F mC nC oC", "260": "lC" }, F: { "1": "0 1 2 3 C O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "16": "F B vC wC xC yC AC cC", "132": "G N" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC", "132": "E 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "16": "ND OD", "132": "GC J PD QD dC" }, J: { "132": "D A" }, K: { "1": "C H BC", "16": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Node.compareDocumentPosition()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/console-basic.js
+var require_console_basic = __commonJS({
+  "node_modules/caniuse-lite/data/features/console-basic.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D eC", "132": "E F" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "2": "F vC wC xC yC" }, G: { "1": "MC 0C dC 1C", "513": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "4097": "MD" }, I: { "1025": "GC J I ND OD PD QD dC RD SD" }, J: { "258": "D A" }, K: { "2": "A", "258": "B C AC cC BC", "1025": "H" }, L: { "1025": "I" }, M: { "2049": "9B" }, N: { "258": "A B" }, O: { "258": "CC" }, P: { "1025": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1025": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Basic console logging functions", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/console-time.js
+var require_console_time = __commonJS({
+  "node_modules/caniuse-lite/data/features/console-time.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "2": "F vC wC xC yC", "16": "B" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "H", "16": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "console.time and console.timeEnd", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/const.js
+var require_const = __commonJS({
+  "node_modules/caniuse-lite/data/features/const.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "2052": "B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "132": "fC GC J IB K D E F A B C iC jC", "260": "0 1 2 3 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "260": "J IB K D E F A B C L M G N O P JB y", "772": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB", "1028": "ZB aB bB cB dB eB fB gB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "260": "J IB A kC MC NC", "772": "K D E F lC mC nC oC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F vC", "132": "B wC xC yC AC cC", "644": "C zC BC", "772": "0 1 2 3 G N O P JB y z KB LB", "1028": "MB NB OB PB QB RB SB TB" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "260": "MC 0C dC 7C 8C", "772": "E 1C 2C 3C 4C 5C 6C" }, H: { "644": "MD" }, I: { "1": "I", "16": "ND OD", "260": "PD", "772": "GC J QD dC RD SD" }, J: { "772": "D A" }, K: { "1": "H", "132": "A B AC cC", "644": "C BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "1028": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "const", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/constraint-validation.js
+var require_constraint_validation = __commonJS({
+  "node_modules/caniuse-lite/data/features/constraint-validation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "900": "A B" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "388": "M G N", "900": "C L" }, C: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "260": "hB iB", "388": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB", "900": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB" }, D: { "1": "4 5 6 7 8 9 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M", "388": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB", "900": "0 1 2 G N O P JB y z" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC", "388": "E F nC oC", "900": "K D lC mC" }, F: { "1": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F B vC wC xC yC AC cC", "388": "0 1 2 3 G N O P JB y z KB", "900": "C zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC", "388": "E 3C 4C 5C 6C", "900": "1C 2C" }, H: { "2": "MD" }, I: { "1": "I", "16": "GC ND OD PD", "388": "RD SD", "900": "J QD dC" }, J: { "16": "D", "388": "A" }, K: { "1": "H", "16": "A B AC cC", "900": "C BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "900": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "388": "gD" } }, B: 1, C: "Constraint Validation API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/contenteditable.js
+var require_contenteditable = __commonJS({
+  "node_modules/caniuse-lite/data/features/contenteditable.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC", "4": "GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "D A" }, K: { "1": "H BC", "2": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "contenteditable attribute (basic support)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/contentsecuritypolicy.js
+var require_contentsecuritypolicy = __commonJS({
+  "node_modules/caniuse-lite/data/features/contentsecuritypolicy.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "132": "A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "129": "0 J IB K D E F A B C L M G N O P JB y z" }, D: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L", "257": "0 1 2 M G N O P JB y z" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC", "257": "K mC", "260": "lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC", "257": "2C", "260": "1C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D", "257": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Content Security Policy 1.0", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js
+var require_contentsecuritypolicy2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M", "4100": "G N O P" }, C: { "1": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB iC jC", "132": "PB QB RB SB", "260": "TB", "516": "UB VB WB XB YB ZB aB bB cB" }, D: { "1": "4 5 6 7 8 9 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB", "1028": "UB VB WB", "2052": "XB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 F B C G N O P JB y z vC wC xC yC AC cC zC BC", "1028": "1 2 3", "2052": "KB" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Content Security Policy Level 2", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/cookie-store-api.js
+var require_cookie_store_api = __commonJS({
+  "node_modules/caniuse-lite/data/features/cookie-store-api.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "194": "Q H R S T U V" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC iC jC", "322": "LC gC hC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB", "194": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V" }, E: { "1": "uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC" }, F: { "1": "4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB vC wC xC yC AC cC zC BC", "194": "jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Cookie Store API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/cors.js
+var require_cors = __commonJS({
+  "node_modules/caniuse-lite/data/features/cors.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D eC", "132": "A", "260": "E F" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC", "1025": "IC sB tB uB vB wB xB yB zB 0B" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "J IB K D E F A B C" }, E: { "2": "kC MC", "513": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "644": "J IB lC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC AC cC zC" }, G: { "513": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "644": "MC 0C dC 1C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "132": "GC J ND OD PD QD dC" }, J: { "1": "A", "132": "D" }, K: { "1": "C H BC", "2": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "132": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Cross-Origin Resource Sharing", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/createimagebitmap.js
+var require_createimagebitmap = __commonJS({
+  "node_modules/caniuse-lite/data/features/createimagebitmap.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB iC jC", "1028": "c d e f g", "3076": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b", "8196": "4 5 6 7 8 9 h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "132": "iB jB", "260": "kB lB", "516": "mB nB oB pB qB" }, E: { "1": "EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC qC", "4100": "G rC OC PC CC sC DC QC RC SC TC UC tC" }, F: { "1": "eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB vC wC xC yC AC cC zC BC", "132": "VB WB", "260": "XB YB", "516": "ZB aB bB cB dB" }, G: { "1": "EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID", "4100": "JD OC PC CC KD DC QC RC SC TC UC LD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "8196": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "16": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "3076": "gD hD" } }, B: 1, C: "createImageBitmap", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/credential-management.js
+var require_credential_management = __commonJS({
+  "node_modules/caniuse-lite/data/features/credential-management.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB", "66": "gB hB iB", "129": "jB kB lB mB nB oB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB vC wC xC yC AC cC zC BC" }, G: { "1": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "Credential Management API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/cryptography.js
+var require_cryptography = __commonJS({
+  "node_modules/caniuse-lite/data/features/cryptography.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "8": "K D E F A", "164": "B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "513": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "8": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB iC jC", "66": "QB RB" }, D: { "1": "4 5 6 7 8 9 VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "8": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J IB K D kC MC lC mC", "289": "E F A nC oC NC" }, F: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "8": "0 1 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "MC 0C dC 1C 2C 3C", "289": "E 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "8": "GC J ND OD PD QD dC RD SD" }, J: { "8": "D A" }, K: { "1": "H", "8": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "8": "A", "164": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Web Cryptography", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-all.js
+var require_css_all = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-all.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB iC jC" }, D: { "1": "4 5 6 7 8 9 VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC" }, F: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C" }, H: { "2": "MD" }, I: { "1": "I SD", "2": "GC J ND OD PD QD dC RD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS all property", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-anchor-positioning.js
+var require_css_anchor_positioning = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-anchor-positioning.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "EB FB GB HB I", "2": "4 5 C L M G N O P Q H 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", "194": "6 7 8 9 AB BB CB DB" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "EB FB GB HB I 9B KC LC", "2": "0 1 2 3 4 5 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "194": "6 7 8 9 AB BB CB DB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l vC wC xC yC AC cC zC BC", "194": "m n o p q r s t" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Anchor Positioning", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-at-counter-style.js
+var require_css_at_counter_style = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-at-counter-style.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P Q H R S T U V W X Y Z", "132": "4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB iC jC", "132": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z", "132": "4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC", "4": "EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B vC wC xC yC AC cC zC BC", "132": "7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD", "4": "EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "132": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "132": "H" }, L: { "132": "I" }, M: { "132": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "J TD UD VD WD XD NC YD ZD aD bD cD", "132": "0 1 2 3 y z DC EC FC dD" }, Q: { "2": "eD" }, R: { "132": "fD" }, S: { "132": "gD hD" } }, B: 4, C: "CSS Counter Styles", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-background-offsets.js
+var require_css_background_offsets = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-background-offsets.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C iC jC" }, D: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS background-position edge offsets", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-backgroundblendmode.js
+var require_css_backgroundblendmode = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-backgroundblendmode.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB iC jC" }, D: { "1": "4 5 6 7 8 9 TB UB VB WB XB YB ZB aB bB cB dB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB", "260": "eB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC", "132": "E F A nC oC" }, F: { "1": "0 1 2 3 KB LB MB NB OB PB QB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N O P JB y z vC wC xC yC AC cC zC BC", "260": "RB" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C", "132": "E 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS background-blend-mode", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-canvas.js
+var require_css_canvas = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-canvas.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, E: { "2": "kC MC", "33": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB" }, G: { "33": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "I", "33": "GC J ND OD PD QD dC RD SD" }, J: { "33": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "33": "J" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "CSS Canvas Drawings", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-caret-color.js
+var require_css_caret_color = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-caret-color.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB iC jC" }, D: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB vC wC xC yC AC cC zC BC" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 2, C: "CSS caret-color", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-cascade-layers.js
+var require_css_cascade_layers = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-cascade-layers.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e", "322": "f g h" }, C: { "1": "4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c iC jC", "194": "d e f" }, D: { "1": "4 5 6 7 8 9 i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e", "322": "f g h" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U vC wC xC yC AC cC zC BC" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z FC dD", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "CSS Cascade Layers", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-cascade-scope.js
+var require_css_cascade_scope = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-cascade-scope.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "7 8 9 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m", "194": "4 5 6 n o p q r s t u v w x" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "7 8 9 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f g h i j k l m", "194": "4 5 6 n o p q r s t u v w x" }, E: { "1": "YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC" }, F: { "1": "p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y vC wC xC yC AC cC zC BC", "194": "Z a b c d e f g h i j k l m n o" }, G: { "1": "YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "3", "2": "0 1 2 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "Scoped Styles: the @scope rule", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-case-insensitive.js
+var require_css_case_insensitive = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-case-insensitive.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB iC jC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Case-insensitive CSS attribute selectors", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-color-adjust.js
+var require_css_color_adjust = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-color-adjust.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "33": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB iC jC" }, D: { "16": "J IB K D E F A B C L M G N O P", "33": "0 1 2 3 4 5 6 7 8 9 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "33": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "16": "GC J ND OD PD QD dC RD SD", "33": "I" }, J: { "16": "D A" }, K: { "2": "A B C AC cC BC", "33": "H" }, L: { "16": "I" }, M: { "1": "9B" }, N: { "16": "A B" }, O: { "16": "CC" }, P: { "16": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "33": "eD" }, R: { "16": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS print-color-adjust", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-color-function.js
+var require_css_color_function = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-color-function.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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", "322": "r s t" }, C: { "1": "4 5 6 7 8 9 w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC", "578": "u v" }, D: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "322": "r s t" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC", "132": "B C L M NC AC BC pC qC" }, F: { "1": "h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d vC wC xC yC AC cC zC BC", "322": "e f g" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C", "132": "8C 9C AD BD CD DD ED FD GD HD ID" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3", "2": "J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "CSS color() function", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-conic-gradients.js
+var require_css_conic_gradients = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-conic-gradients.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B iC jC", "578": "5B 6B 7B 8B Q H R JC" }, D: { "1": "4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB", "257": "zB 0B", "450": "HC rB IC sB tB uB vB wB xB yB" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC" }, F: { "1": "qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB vC wC xC yC AC cC zC BC", "257": "oB pB", "450": "eB fB gB hB iB jB kB lB mB nB" }, G: { "1": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "CSS Conical Gradients", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-container-queries-style.js
+var require_css_container_queries_style = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-container-queries-style.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P Q H 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", "194": "q r s t", "260": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "194": "q r s t", "260": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC", "260": "bC uC", "772": "FC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b vC wC xC yC AC cC zC BC", "194": "c d e f g", "260": "h i j k l m n o p q r s t u v w x" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC", "260": "bC", "772": "FC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "260": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "260": "H" }, L: { "260": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "260": "0 1 2 3" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Container Style Queries", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-container-queries.js
+var require_css_container_queries = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-container-queries.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n", "516": "o" }, C: { "1": "4 5 6 7 8 9 t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "1": "4 5 6 7 8 9 p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a", "194": "c d e f g h i j k l m n", "450": "b", "516": "o" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "1": "d e f g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B vC wC xC yC AC cC zC BC", "194": "Q H R JC S T U V W X Y Z", "516": "a b c" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Container Queries (Size)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-container-query-units.js
+var require_css_container_query_units = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-container-query-units.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n" }, C: { "1": "4 5 6 7 8 9 t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "1": "4 5 6 7 8 9 o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b", "194": "k l m n", "450": "c d e f g h i j" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "1": "a b c d e f g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B vC wC xC yC AC cC zC BC", "194": "Q H R JC S T U V W X Y Z" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Container Query Units", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-containment.js
+var require_css_containment = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-containment.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB iC jC", "194": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB" }, D: { "1": "4 5 6 7 8 9 kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "66": "jB" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB vC wC xC yC AC cC zC BC", "66": "WB XB" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "194": "gD" } }, B: 2, C: "CSS Containment", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-content-visibility.js
+var require_css_content_visibility = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-content-visibility.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T" }, C: { "1": "EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC", "194": "4 5 6 7 8 9 s t u v w x AB BB CB DB" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T" }, E: { "1": "FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC" }, F: { "1": "1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B vC wC xC yC AC cC zC BC" }, G: { "1": "FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS content-visibility", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-counters.js
+var require_css_counters = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-counters.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "E F A B", "2": "K D eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS Counters", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-default-pseudo.js
+var require_css_default_pseudo = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-default-pseudo.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "16": "fC GC iC jC" }, D: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC", "132": "K D E F A lC mC nC oC" }, F: { "1": "WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F B vC wC xC yC AC cC", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB", "260": "C zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC 1C 2C", "132": "E 3C 4C 5C 6C 7C" }, H: { "260": "MD" }, I: { "1": "I", "16": "GC ND OD PD", "132": "J QD dC RD SD" }, J: { "16": "D", "132": "A" }, K: { "1": "H", "16": "A B C AC cC", "260": "BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "132": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: ":default CSS pseudo-class", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-descendant-gtgt.js
+var require_css_descendant_gtgt = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-descendant-gtgt.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P H 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 AB BB CB DB EB FB GB HB I", "16": "Q" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "B", "2": "J IB K D E F A C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Explicit descendant combinator >>", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-dir-pseudo.js
+var require_css_dir_pseudo = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-dir-pseudo.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "9 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n", "194": "4 5 6 7 8 o p q r s t u v w x" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N iC jC", "33": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB" }, D: { "1": "9 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z", "194": "4 5 6 7 8 a b c d e f g h i j k l m n o p q r s t u v w x" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC" }, F: { "1": "p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z vC wC xC yC AC cC zC BC", "194": "a b c d e f g h i j k l m n o" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "3", "2": "0 1 2 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "hD", "33": "gD" } }, B: 5, C: ":dir() CSS pseudo-class", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-display-contents.js
+var require_css_display_contents = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-display-contents.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "132": "Q H R S T U V W X", "260": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB iC jC", "132": "VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC", "260": "4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB", "132": "vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X", "194": "qB HC rB IC sB tB uB", "260": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B kC MC lC mC nC oC NC", "132": "C L M G AC BC pC qC rC OC PC CC sC", "260": "EC VC WC XC YC ZC aC FC bC uC", "772": "DC QC RC SC TC UC tC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB vC wC xC yC AC cC zC BC", "132": "kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B", "260": "6B 7B 8B Q H R JC 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" }, G: { "1": "EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C", "132": "AD BD CD DD ED FD", "260": "GD HD ID JD OC PC CC KD", "516": "QC RC SC TC UC LD", "772": "DC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "260": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "260": "H" }, L: { "260": "I" }, M: { "260": "9B" }, N: { "2": "A B" }, O: { "132": "CC" }, P: { "2": "J TD UD VD WD", "132": "XD NC YD ZD aD bD", "260": "0 1 2 3 y z cD DC EC FC dD" }, Q: { "132": "eD" }, R: { "260": "fD" }, S: { "132": "gD", "260": "hD" } }, B: 4, C: "CSS display: contents", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-env-function.js
+var require_css_env_function = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-env-function.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB iC jC" }, D: { "1": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "132": "B" }, F: { "1": "oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB vC wC xC yC AC cC zC BC" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "132": "9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 7, C: "CSS Environment Variables env()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-exclusions.js
+var require_css_exclusions = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-exclusions.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "33": "A B" }, B: { "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "33": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "33": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Exclusions Level 1", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-first-letter.js
+var require_css_first_letter = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-first-letter.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "16": "eC", "516": "E", "1540": "K D" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "132": "GC", "260": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "IB K D E", "132": "J" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "IB kC", "132": "J MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "16": "F vC", "260": "B wC xC yC AC cC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "GC J I QD dC RD SD", "16": "ND OD", "132": "PD" }, J: { "1": "D A" }, K: { "1": "C H BC", "260": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "::first-letter CSS pseudo-element selector", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-first-line.js
+var require_css_first_line = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-first-line.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "132": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS first-line pseudo-element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-fixed.js
+var require_css_fixed = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-fixed.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "D E F A B", "2": "eC", "8": "K" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "1025": "oC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC", "132": "1C 2C 3C" }, H: { "2": "MD" }, I: { "1": "GC I RD SD", "260": "ND OD PD", "513": "J QD dC" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS position:fixed", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-focus-visible.js
+var require_css_focus_visible = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-focus-visible.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "328": "Q H R S T U" }, C: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "161": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB", "328": "xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC qC", "578": "G rC OC" }, F: { "1": "2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB vC wC xC yC AC cC zC BC", "328": "wB xB yB zB 0B 1B" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID", "578": "JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "161": "gD hD" } }, B: 5, C: ":focus-visible CSS pseudo-class", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-focus-within.js
+var require_css_focus_within = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-focus-within.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB iC jC" }, D: { "1": "4 5 6 7 8 9 rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB", "194": "HC" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB vC wC xC yC AC cC zC BC", "194": "eB" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 7, C: ":focus-within CSS pseudo-class", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-font-palette.js
+var require_css_font_palette = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-font-palette.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n" }, C: { "1": "4 5 6 7 8 9 q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l m n o p iC jC" }, D: { "1": "4 5 6 7 8 9 k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f g h i j" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V vC wC xC yC AC cC zC BC" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z dD", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC FC" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS font-palette", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-font-rendering-controls.js
+var require_css_font_rendering_controls = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-font-rendering-controls.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB iC jC", "194": "eB fB gB hB iB jB kB lB mB nB oB pB" }, D: { "1": "4 5 6 7 8 9 rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB", "66": "hB iB jB kB lB mB nB oB pB qB HC" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC" }, F: { "1": "fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC", "66": "UB VB WB XB YB ZB aB bB cB dB eB" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "66": "TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "194": "gD" } }, B: 5, C: "CSS font-display", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-font-stretch.js
+var require_css_font_stretch = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-font-stretch.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E iC jC" }, D: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC" }, F: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS font-stretch", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-gencontent.js
+var require_css_gencontent = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-gencontent.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D eC", "132": "E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS Generated content for pseudo-elements", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-grid-animation.js
+var require_css_grid_animation = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-grid-animation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "CSS Grid animation", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-hanging-punctuation.js
+var require_css_hanging_punctuation = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-hanging-punctuation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "CSS hanging-punctuation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-has.js
+var require_css_has = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-has.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n" }, C: { "1": "AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l iC jC", "322": "4 5 6 7 8 9 m n o p q r s t u v w x" }, D: { "1": "4 5 6 7 8 9 o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f g h i j", "194": "k l m n" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "a b c d e f g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z vC wC xC yC AC cC zC BC" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: ":has() CSS relational pseudo-class", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-image-orientation.js
+var require_css_image_orientation = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-image-orientation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H", "257": "R S T U V W X" }, C: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H", "257": "R S T U V W X" }, E: { "1": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC" }, F: { "1": "7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB vC wC xC yC AC cC zC BC", "257": "yB zB 0B 1B 2B 3B 4B 5B 6B" }, G: { "1": "GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "132": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD", "257": "aD bD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS3 image-orientation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-in-out-of-range.js
+var require_css_in_out_of_range = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-in-out-of-range.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C", "260": "L M G N O P" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC", "516": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB" }, D: { "1": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J", "16": "IB K D E F A B C L M", "260": "kB", "772": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "16": "IB", "772": "K D E F A lC mC nC oC" }, F: { "1": "YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F vC", "260": "B C XB wC xC yC AC cC zC BC", "772": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC", "772": "E 1C 2C 3C 4C 5C 6C 7C" }, H: { "132": "MD" }, I: { "1": "I", "2": "GC ND OD PD", "260": "J QD dC RD SD" }, J: { "2": "D", "260": "A" }, K: { "1": "H", "260": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "260": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "516": "gD" } }, B: 5, C: ":in-range and :out-of-range CSS pseudo-classes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js
+var require_css_indeterminate_pseudo = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "132": "A B", "388": "F" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "132": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "16": "fC GC iC jC", "132": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "388": "J IB" }, D: { "1": "4 5 6 7 8 9 XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB K kC MC", "132": "D E F A mC nC oC", "388": "lC" }, F: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F B vC wC xC yC AC cC", "132": "0 1 2 3 G N O P JB y z", "516": "C zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC 1C 2C", "132": "E 3C 4C 5C 6C 7C" }, H: { "516": "MD" }, I: { "1": "I", "16": "GC ND OD PD SD", "132": "RD", "388": "J QD dC" }, J: { "16": "D", "132": "A" }, K: { "1": "H", "16": "A B C AC cC", "516": "BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "132": "gD" } }, B: 5, C: ":indeterminate CSS pseudo-class", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-initial-letter.js
+var require_css_initial_letter = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-initial-letter.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P Q H 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", "260": "4 5 6 7 8 9 t u v w x AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "260": "4 5 6 7 8 9 t u v w x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E kC MC lC mC nC", "260": "F", "420": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g vC wC xC yC AC cC zC BC", "260": "h i j k l m n o p q r s t u v w x" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C", "420": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "260": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "260": "H" }, L: { "260": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "J y TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "260": "0 1 2 3 z" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Initial Letter", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-initial-value.js
+var require_css_initial_value = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-initial-value.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "33": "J IB K D E F A B C L M G N O P iC jC", "164": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS initial value", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-lch-lab.js
+var require_css_lch_lab = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-lch-lab.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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", "322": "t" }, C: { "1": "4 5 6 7 8 9 w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC", "194": "u v" }, D: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "322": "t" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC qC" }, F: { "1": "h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g vC wC xC yC AC cC zC BC" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3", "2": "J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "LCH and Lab color values", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-letter-spacing.js
+var require_css_letter_spacing = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-letter-spacing.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "16": "eC", "132": "K D E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC", "132": "J IB K MC lC" }, F: { "1": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F vC", "132": "B C G N wC xC yC AC cC zC BC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "16": "ND OD", "132": "GC J PD QD dC" }, J: { "132": "D A" }, K: { "1": "H", "132": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "letter-spacing CSS property", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-line-clamp.js
+var require_css_line_clamp = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-line-clamp.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N", "33": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "129": "O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB iC jC", "33": "4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "16": "J IB K D E F A B C L", "33": "0 1 2 3 4 5 6 7 8 9 M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J kC MC", "33": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "MC 0C dC", "33": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "16": "ND OD", "33": "GC J I PD QD dC RD SD" }, J: { "33": "D A" }, K: { "2": "A B C AC cC BC", "33": "H" }, L: { "33": "I" }, M: { "33": "9B" }, N: { "2": "A B" }, O: { "33": "CC" }, P: { "33": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "33": "eD" }, R: { "33": "fD" }, S: { "2": "gD", "33": "hD" } }, B: 5, C: "CSS line-clamp", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-marker-pseudo.js
+var require_css_marker_pseudo = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-marker-pseudo.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U" }, C: { "1": "4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U" }, E: { "1": "uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC", "132": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC" }, F: { "1": "2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C", "132": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "CSS ::marker pseudo-element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-matches-pseudo.js
+var require_css_matches_pseudo = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-matches-pseudo.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "1220": "Q H R S T U V W" }, C: { "1": "4 5 6 7 8 9 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "548": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M", "164": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB", "196": "vB wB xB", "1220": "yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W" }, E: { "1": "M G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "16": "IB", "164": "K D E lC mC nC", "260": "F A B C L oC NC AC BC pC" }, F: { "1": "5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "164": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB", "196": "kB lB mB", "1220": "nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B" }, G: { "1": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC 1C 2C", "164": "E 3C 4C", "260": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD" }, H: { "2": "MD" }, I: { "1": "I", "16": "GC ND OD PD", "164": "J QD dC RD SD" }, J: { "16": "D", "164": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z cD DC EC FC dD", "164": "J TD UD VD WD XD NC YD ZD aD bD" }, Q: { "1220": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "548": "gD" } }, B: 5, C: ":is() CSS pseudo-class", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-math-functions.js
+var require_css_math_functions = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-math-functions.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B iC jC" }, D: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B" }, E: { "1": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC", "132": "C L AC BC" }, F: { "1": "wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB vC wC xC yC AC cC zC BC" }, G: { "1": "GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C", "132": "AD BD CD DD ED FD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "CSS math functions min(), max() and clamp()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-media-interaction.js
+var require_css_media_interaction = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-media-interaction.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB iC jC" }, D: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "Media Queries: interaction media features", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-media-range-syntax.js
+var require_css_media_range_syntax = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-media-range-syntax.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m" }, C: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB iC jC" }, D: { "1": "4 5 6 7 8 9 n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f g h i j k l m" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC" }, F: { "1": "a b c d e f g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z vC wC xC yC AC cC zC BC" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "Media Queries: Range Syntax", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-media-scripting.js
+var require_css_media_scripting = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-media-scripting.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "Media Queries: scripting media feature", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-mediaqueries.js
+var require_css_mediaqueries = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-mediaqueries.js"(exports2, module2) {
+    module2.exports = { A: { A: { "8": "K D E eC", "129": "F A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "129": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "129": "J IB K lC", "388": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "129": "MC 0C dC 1C 2C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "129": "GC J ND OD PD QD dC" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "129": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS3 Media Queries", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-mixblendmode.js
+var require_css_mixblendmode = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-mixblendmode.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB iC jC" }, D: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB", "194": "NB OB PB QB RB SB TB UB VB WB XB YB" }, E: { "2": "J IB K D kC MC lC mC", "260": "E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB vC wC xC yC AC cC zC BC" }, G: { "2": "MC 0C dC 1C 2C 3C", "260": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Blending of HTML/SVG elements", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-module-scripts.js
+var require_css_module_scripts = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-module-scripts.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b", "132": "4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x AB BB" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b", "132": "4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x AB BB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "16": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "194": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "CSS Module Scripts", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-motion-paths.js
+var require_css_motion_paths = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-motion-paths.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B iC jC" }, D: { "1": "4 5 6 7 8 9 eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB", "194": "bB cB dB" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "1": "RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB vC wC xC yC AC cC zC BC", "194": "OB PB QB" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "CSS Motion Path", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-namespaces.js
+var require_css_namespaces = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-namespaces.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC MC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS namespaces", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-nesting.js
+var require_css_nesting = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-nesting.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "9 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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", "194": "s t u", "516": "4 5 6 7 8 v w x" }, C: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC", "322": "4 5" }, D: { "1": "9 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "194": "s t u", "516": "4 5 6 7 8 v w x" }, E: { "1": "WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC", "516": "UC tC EC VC" }, F: { "1": "p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d vC wC xC yC AC cC zC BC", "194": "e f g", "516": "h i j k l m n o" }, G: { "1": "WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC", "516": "UC LD EC VC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "516": "1 2 3" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Nesting", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-not-sel-list.js
+var require_css_not_sel_list = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-not-sel-list.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P H R S T U V W", "16": "Q" }, C: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD bD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "selector list argument of :not()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-nth-child-of.js
+var require_css_nth_child_of = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-nth-child-of.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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" }, C: { "1": "4 5 6 7 8 9 w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3", "2": "J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "selector list argument of :nth-child and :nth-last-child CSS pseudo-classes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-opacity.js
+var require_css_opacity = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-opacity.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "4": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS3 Opacity", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-optional-pseudo.js
+var require_css_optional_pseudo = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-optional-pseudo.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F vC", "132": "B C wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "132": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "H", "132": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: ":optional CSS pseudo-class", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-overflow-anchor.js
+var require_css_overflow_anchor = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-overflow-anchor.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB iC jC" }, D: { "1": "4 5 6 7 8 9 oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "CSS overflow-anchor (Scroll Anchoring)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-overflow-overlay.js
+var require_css_overflow_overlay = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-overflow-overlay.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "Q H 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", "2": "C L M G N O P", "130": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "16": "J IB K D E F A B C L M", "130": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B lC mC nC oC NC AC", "16": "kC MC", "130": "C L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i", "2": "F B C vC wC xC yC AC cC zC BC", "130": "j k l m n o p q r s t u v w x" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD", "16": "MC", "130": "BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J ND OD PD QD dC RD SD", "130": "I" }, J: { "16": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "130": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "CSS overflow: overlay", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-overflow.js
+var require_css_overflow = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-overflow.js"(exports2, module2) {
+    module2.exports = { A: { A: { "388": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "260": "Q H R S T U V W X Y", "388": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "260": "IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H", "388": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "260": "yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y", "388": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "260": "M G pC qC rC OC PC CC sC", "388": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC" }, F: { "1": "6B 7B 8B Q H R JC 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", "260": "nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B", "388": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB vC wC xC yC AC cC zC BC" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "260": "GD HD ID JD OC PC CC KD", "388": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD" }, H: { "388": "MD" }, I: { "1": "I", "388": "GC J ND OD PD QD dC RD SD" }, J: { "388": "D A" }, K: { "1": "H", "388": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "388": "A B" }, O: { "388": "CC" }, P: { "1": "0 1 2 3 y z cD DC EC FC dD", "388": "J TD UD VD WD XD NC YD ZD aD bD" }, Q: { "388": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "388": "gD" } }, B: 5, C: "CSS overflow property", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-page-break.js
+var require_css_page_break = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-page-break.js"(exports2, module2) {
+    module2.exports = { A: { A: { "388": "A B", "900": "K D E F eC" }, B: { "388": "C L M G N O P", "641": "4 5 6 7 8 9 r s t u v w x AB BB CB DB EB FB GB HB I", "900": "Q H 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" }, C: { "772": "4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "900": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB iC jC" }, D: { "641": "4 5 6 7 8 9 r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "900": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "772": "A", "900": "J IB K D E F B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "16": "F vC", "129": "B C wC xC yC AC cC zC BC", "641": "d e f g h i j k l m n o p q r s t u v w x", "900": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c" }, G: { "900": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "129": "MD" }, I: { "641": "I", "900": "GC J ND OD PD QD dC RD SD" }, J: { "900": "D A" }, K: { "129": "A B C AC cC BC", "641": "H" }, L: { "900": "I" }, M: { "772": "9B" }, N: { "388": "A B" }, O: { "900": "CC" }, P: { "641": "0 1 2 3 z", "900": "J y TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "900": "eD" }, R: { "900": "fD" }, S: { "772": "hD", "900": "gD" } }, B: 2, C: "CSS page-break properties", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-paged-media.js
+var require_css_paged_media = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-paged-media.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D eC", "132": "E F A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "132": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P iC jC", "132": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "132": "F B C vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "16": "MD" }, I: { "16": "GC J I ND OD PD QD dC RD SD" }, J: { "16": "D A" }, K: { "1": "H", "16": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "258": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "132": "gD hD" } }, B: 5, C: "CSS Paged Media (@page)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-paint-api.js
+var require_css_paint_api = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-paint-api.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB" }, E: { "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC", "194": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "CSS Painting API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-rebeccapurple.js
+var require_css_rebeccapurple = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-rebeccapurple.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "132": "B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB iC jC" }, D: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC", "16": "mC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Rebeccapurple color", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-reflections.js
+var require_css_reflections = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-reflections.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "33": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "33": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "kC MC", "33": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "33": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "33": "GC J I ND OD PD QD dC RD SD" }, J: { "33": "D A" }, K: { "2": "A B C AC cC BC", "33": "H" }, L: { "33": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "33": "CC" }, P: { "33": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "33": "eD" }, R: { "33": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "CSS Reflections", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-relative-colors.js
+var require_css_relative_colors = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-relative-colors.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 C L M G N O P Q H 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", "194": "7", "260": "8 9 AB BB CB DB EB FB GB HB I" }, C: { "1": "KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB iC jC", "260": "HB I 9B" }, D: { "2": "0 1 2 3 4 5 6 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "194": "7", "260": "8 9 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC", "260": "TC UC tC EC VC WC XC YC ZC aC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l m vC wC xC yC AC cC zC BC", "194": "n o", "260": "p q r s t u v w x" }, G: { "1": "FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC", "260": "TC UC LD EC VC WC XC YC ZC aC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "260": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "260": "H" }, L: { "260": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "260": "3" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS Relative color syntax", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-repeating-gradients.js
+var require_css_repeating_gradients = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-repeating-gradients.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC", "33": "J IB K D E F A B C L M G jC" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F", "33": "0 1 2 3 A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC", "33": "K lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC", "33": "C zC", "36": "AC cC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC", "33": "1C 2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC ND OD PD", "33": "J QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H BC", "2": "A B", "33": "C", "36": "AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS Repeating Gradients", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-resize.js
+var require_css_resize = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-resize.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "33": "J" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC", "132": "BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 2, C: "CSS resize property", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-revert-value.js
+var require_css_revert_value = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-revert-value.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S" }, C: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC" }, F: { "1": "3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B vC wC xC yC AC cC zC BC" }, G: { "1": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "CSS revert value", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-rrggbbaa.js
+var require_css_rrggbbaa = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-rrggbbaa.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB iC jC" }, D: { "1": "4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB", "194": "kB lB mB nB oB pB qB HC rB IC" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB vC wC xC yC AC cC zC BC", "194": "XB YB ZB aB bB cB dB eB fB gB hB iB jB" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "194": "TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "#rrggbbaa hex color notation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-scroll-behavior.js
+var require_css_scroll_behavior = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-scroll-behavior.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "129": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB", "129": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "450": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC pC", "578": "M G qC rC OC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB vC wC xC yC AC cC zC BC", "129": "gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "450": "MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD", "578": "ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "129": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "129": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "CSS Scroll-behavior", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-scrollbar.js
+var require_css_scrollbar = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-scrollbar.js"(exports2, module2) {
+    module2.exports = { A: { A: { "132": "K D E F A B eC" }, B: { "1": "AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "292": "4 5 6 7 8 9 Q H 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" }, C: { "1": "4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB iC jC", "3138": "tB" }, D: { "1": "AB BB CB DB EB FB GB HB I 9B KC LC", "292": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "16": "J IB kC MC", "292": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "q r s t u v w x", "2": "F B C vC wC xC yC AC cC zC BC", "292": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l m n o p" }, G: { "2": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC 1C 2C", "292": "3C", "804": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD" }, H: { "2": "MD" }, I: { "16": "ND OD", "292": "GC J I PD QD dC RD SD" }, J: { "292": "D A" }, K: { "2": "A B C AC cC BC", "292": "H" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "292": "CC" }, P: { "1": "3", "292": "0 1 2 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "292": "eD" }, R: { "292": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "CSS scrollbar styling", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-sel2.js
+var require_css_sel2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-sel2.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "D E F A B", "2": "eC", "8": "K" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS 2.1 selectors", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-sel3.js
+var require_css_sel3 = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-sel3.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "eC", "8": "K", "132": "D E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS3 selectors", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-subgrid.js
+var require_css_subgrid = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-subgrid.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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", "194": "4 5 x" }, C: { "1": "4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B iC jC" }, D: { "1": "6 7 8 9 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "194": "4 5 x" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "1": "m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i vC wC xC yC AC cC zC BC", "194": "j k l" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "2 3", "2": "0 1 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "CSS Subgrid", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-supports-api.js
+var require_css_supports_api = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-supports-api.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB iC jC", "66": "y z", "260": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB" }, D: { "1": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB", "260": "MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC", "132": "BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "132": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC", "132": "BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS.supports() API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-table.js
+var require_css_table = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-table.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "E F A B", "2": "K D eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "132": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS Table display", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-text-box-trim.js
+var require_css_text_box_trim = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-text-box-trim.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB", "322": "HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB", "322": "HB I 9B KC LC" }, E: { "1": "uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC", "194": "TC UC tC EC VC WC XC YC ZC aC FC bC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC", "194": "TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS text-box-trim & text-box-edge", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-text-indent.js
+var require_css_text_indent = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-text-indent.js"(exports2, module2) {
+    module2.exports = { A: { A: { "132": "K D E F A B eC" }, B: { "132": "C L M G N O P", "388": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "132": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "132": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB", "388": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "132": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "132": "0 1 2 F B C G N O P JB y z vC wC xC yC AC cC zC BC", "388": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "132": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "132": "MD" }, I: { "132": "GC J ND OD PD QD dC RD SD", "388": "I" }, J: { "132": "D A" }, K: { "132": "A B C AC cC BC", "388": "H" }, L: { "388": "I" }, M: { "132": "9B" }, N: { "132": "A B" }, O: { "388": "CC" }, P: { "132": "J", "388": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "388": "eD" }, R: { "388": "fD" }, S: { "132": "gD hD" } }, B: 4, C: "CSS text-indent", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-text-justify.js
+var require_css_text_justify = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-text-justify.js"(exports2, module2) {
+    module2.exports = { A: { A: { "16": "K D eC", "132": "E F A B" }, B: { "132": "C L M G N O P", "322": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB iC jC", "1025": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "1602": "mB" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB", "322": "4 5 6 7 8 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB vC wC xC yC AC cC zC BC", "322": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "322": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "322": "H" }, L: { "322": "I" }, M: { "1025": "9B" }, N: { "132": "A B" }, O: { "322": "CC" }, P: { "2": "J", "322": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "322": "eD" }, R: { "322": "fD" }, S: { "2": "gD", "1025": "hD" } }, B: 4, C: "CSS text-justify", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-text-wrap-balance.js
+var require_css_text_wrap_balance = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-text-wrap-balance.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P Q H 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", "132": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I" }, C: { "1": "AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "132": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h vC wC xC yC AC cC zC BC", "132": "i j k l m n o p q r s t u v w x" }, G: { "1": "ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "132": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "132": "H" }, L: { "132": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "132": "1 2 3" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS text-wrap: balance", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-textshadow.js
+var require_css_textshadow = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-textshadow.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "129": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "129": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "260": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "4": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "A", "4": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "129": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS3 Text-shadow", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-touch-action.js
+var require_css_touch_action = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-touch-action.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F eC", "289": "A" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC", "194": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB", "1025": "kB lB mB nB oB" }, D: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, E: { "2050": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C", "516": "6C 7C 8C 9C AD BD CD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "289": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "194": "gD" } }, B: 2, C: "CSS touch-action property", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-unicode-bidi.js
+var require_css_unicode_bidi = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-unicode-bidi.js"(exports2, module2) {
+    module2.exports = { A: { A: { "132": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "132": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "33": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "132": "fC GC J IB K D E F iC jC", "292": "A B C L M G N" }, D: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "J IB K D E F A B C L M G N", "548": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, E: { "132": "J IB K D E kC MC lC mC nC", "548": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "132": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "132": "E MC 0C dC 1C 2C 3C 4C", "548": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "16": "MD" }, I: { "1": "I", "16": "GC J ND OD PD QD dC RD SD" }, J: { "16": "D A" }, K: { "1": "H", "16": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "16": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "33": "gD" } }, B: 4, C: "CSS unicode-bidi property", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-unset-value.js
+var require_css_unset_value = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-unset-value.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C" }, C: { "1": "4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB iC jC" }, D: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC" }, F: { "1": "MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB vC wC xC yC AC cC zC BC" }, G: { "1": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS unset value", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-variables.js
+var require_css_variables = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-variables.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M", "260": "G" }, C: { "1": "4 5 6 7 8 9 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB iC jC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB", "194": "gB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC", "260": "oC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB vC wC xC yC AC cC zC BC", "194": "TB" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C", "260": "6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS Variables (Custom Properties)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-when-else.js
+var require_css_when_else = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-when-else.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS @when / @else conditional rules", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-widows-orphans.js
+var require_css_widows_orphans = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-widows-orphans.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D eC", "129": "E F" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "129": "F B vC wC xC yC AC cC zC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H BC", "2": "A B C AC cC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 2, C: "CSS widows & orphans", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css-zoom.js
+var require_css_zoom = __commonJS({
+  "node_modules/caniuse-lite/data/features/css-zoom.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D eC", "129": "E F A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC" }, H: { "2": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "129": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "CSS zoom", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css3-attr.js
+var require_css3_attr = __commonJS({
+  "node_modules/caniuse-lite/data/features/css3-attr.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "CSS3 attr() function for all properties", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css3-colors.js
+var require_css3_colors = __commonJS({
+  "node_modules/caniuse-lite/data/features/css3-colors.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "4": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 wC xC yC AC cC zC BC", "2": "F", "4": "vC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS3 Colors", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/css3-cursors.js
+var require_css3_cursors = __commonJS({
+  "node_modules/caniuse-lite/data/features/css3-cursors.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "132": "K D E eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "4": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "4": "J" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "4": "J kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "260": "F B C vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D", "16": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 2, C: "CSS3 Cursors (original values)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/currentcolor.js
+var require_currentcolor = __commonJS({
+  "node_modules/caniuse-lite/data/features/currentcolor.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS currentColor value", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/custom-elements.js
+var require_custom_elements = __commonJS({
+  "node_modules/caniuse-lite/data/features/custom-elements.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "8": "A B" }, B: { "1": "Q", "2": "4 5 6 7 8 9 H 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 AB BB CB DB EB FB GB HB I", "8": "C L M G N O P" }, C: { "2": "0 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "66": "1 2 3 KB LB MB NB", "72": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB" }, D: { "1": "RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q", "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "66": "LB MB NB OB PB QB" }, E: { "2": "J IB kC MC lC", "8": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB", "2": "F B C xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "66": "G N O P JB" }, G: { "2": "MC 0C dC 1C 2C", "8": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "SD", "2": "GC J I ND OD PD QD dC RD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "J TD UD VD WD XD NC YD ZD", "2": "0 1 2 3 y z aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "2": "hD", "72": "gD" } }, B: 7, C: "Custom Elements (deprecated V0 spec)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/custom-elementsv1.js
+var require_custom_elementsv1 = __commonJS({
+  "node_modules/caniuse-lite/data/features/custom-elementsv1.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "8": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "8": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB iC jC", "8": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "456": "iB jB kB lB mB nB oB pB qB", "712": "HC rB IC sB" }, D: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB", "8": "kB lB", "132": "mB nB oB pB qB HC rB IC sB tB uB vB wB" }, E: { "2": "J IB K D kC MC lC mC nC", "8": "E F A oC", "132": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB vC wC xC yC AC cC zC BC", "132": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C", "132": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "132": "TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "8": "gD" } }, B: 1, C: "Custom Elements (V1)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/customevent.js
+var require_customevent = __commonJS({
+  "node_modules/caniuse-lite/data/features/customevent.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "132": "F A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC", "132": "K D E F A" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J", "16": "IB K D E L M", "388": "F A B C" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "16": "IB K", "388": "lC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F vC wC xC yC", "132": "B AC cC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "0C", "16": "MC dC", "388": "1C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "ND OD PD", "388": "GC J QD dC" }, J: { "1": "A", "388": "D" }, K: { "1": "C H BC", "2": "A", "132": "B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "CustomEvent", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/datalist.js
+var require_datalist = __commonJS({
+  "node_modules/caniuse-lite/data/features/datalist.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "8": "K D E F", "260": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L M G", "1284": "N O P" }, C: { "8": "fC GC iC jC", "516": "l m n o p q r s", "4612": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k", "8196": "4 5 6 7 8 9 t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "8": "J IB K D E F A B C L M G N O P JB", "132": "0 1 2 3 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J IB K D E F A B C kC MC lC mC nC oC NC AC" }, F: { "1": "F B C uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB" }, G: { "8": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD", "2049": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I SD", "8": "GC J ND OD PD QD dC RD" }, J: { "1": "A", "8": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "8": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "Datalist element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/dataset.js
+var require_dataset = __commonJS({
+  "node_modules/caniuse-lite/data/features/dataset.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "4": "K D E F A eC" }, B: { "1": "C L M G N", "129": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "4": "fC GC J IB iC jC", "129": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "dB eB fB gB hB iB jB kB lB mB", "4": "J IB K", "129": "0 1 2 3 4 5 6 7 8 9 D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "4": "J IB kC MC", "129": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "C QB RB SB TB UB VB WB XB YB ZB AC cC zC BC", "4": "F B vC wC xC yC", "129": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "4": "MC 0C dC", "129": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "4": "MD" }, I: { "4": "ND OD PD", "129": "GC J I QD dC RD SD" }, J: { "129": "D A" }, K: { "1": "C AC cC BC", "4": "A B", "129": "H" }, L: { "129": "I" }, M: { "129": "9B" }, N: { "1": "B", "4": "A" }, O: { "129": "CC" }, P: { "129": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "129": "eD" }, R: { "129": "fD" }, S: { "1": "gD", "129": "hD" } }, B: 1, C: "dataset & data-* attributes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/datauri.js
+var require_datauri = __commonJS({
+  "node_modules/caniuse-lite/data/features/datauri.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D eC", "132": "E", "260": "F A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L G N O P", "772": "M" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "260": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Data URIs", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/date-tolocaledatestring.js
+var require_date_tolocaledatestring = __commonJS({
+  "node_modules/caniuse-lite/data/features/date-tolocaledatestring.js"(exports2, module2) {
+    module2.exports = { A: { A: { "16": "eC", "132": "K D E F A B" }, B: { "1": "4 5 6 7 8 9 P Q H 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 AB BB CB DB EB FB GB HB I", "132": "C L M G N O" }, C: { "1": "4 5 6 7 8 9 oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "132": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC", "260": "kB lB mB nB", "772": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB" }, D: { "1": "4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "0 1 J IB K D E F A B C L M G N O P JB y z", "260": "WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB", "772": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB" }, E: { "1": "C L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC", "132": "K D E F A lC mC nC oC", "260": "B NC AC" }, F: { "1": "pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F B C vC wC xC yC AC cC zC", "132": "BC", "260": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB", "772": "0 1 2 G N O P JB y z" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC 1C", "132": "E 2C 3C 4C 5C 6C 7C" }, H: { "132": "MD" }, I: { "1": "I", "16": "GC ND OD PD", "132": "J QD dC", "772": "RD SD" }, J: { "132": "D A" }, K: { "1": "H", "16": "A B C AC cC", "132": "BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "260": "J TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "132": "gD" } }, B: 6, C: "Date.prototype.toLocaleDateString", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/declarative-shadow-dom.js
+var require_declarative_shadow_dom = __commonJS({
+  "node_modules/caniuse-lite/data/features/declarative-shadow-dom.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z", "132": "a b c d e f g h i j k l m n o p q r s t" }, C: { "1": "CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB iC jC" }, D: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T", "66": "U V W X Y", "132": "Z a b c d e f g h i j k l m n o p q r s t" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC" }, F: { "1": "g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B vC wC xC yC AC cC zC BC", "132": "7B 8B Q H R JC S T U V W X Y Z a b c d e f" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3", "2": "J TD UD VD WD XD NC YD ZD aD bD", "16": "cD", "132": "y z DC EC FC dD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "Declarative Shadow DOM", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/decorators.js
+var require_decorators = __commonJS({
+  "node_modules/caniuse-lite/data/features/decorators.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Decorators", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/details.js
+var require_details = __commonJS({
+  "node_modules/caniuse-lite/data/features/details.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "F A B eC", "8": "K D E" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC", "8": "0 1 2 3 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB iC jC", "194": "fB gB" }, D: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "8": "J IB K D E F A B", "257": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB", "769": "C L M G N O P" }, E: { "1": "C L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J IB kC MC lC", "257": "K D E F A mC nC oC", "1025": "B NC AC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "C AC cC zC BC", "8": "F B vC wC xC yC" }, G: { "1": "E 2C 3C 4C 5C 6C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "MC 0C dC 1C", "1025": "7C 8C 9C" }, H: { "8": "MD" }, I: { "1": "J I QD dC RD SD", "8": "GC ND OD PD" }, J: { "1": "A", "8": "D" }, K: { "1": "H", "8": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Details & Summary elements", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/deviceorientation.js
+var require_deviceorientation = __commonJS({
+  "node_modules/caniuse-lite/data/features/deviceorientation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "132": "B" }, B: { "1": "C L M G N O P", "4": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "fC GC iC", "4": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "8": "J IB jC" }, D: { "2": "J IB K", "4": "0 1 2 3 4 5 6 7 8 9 D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "4": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "MC 0C", "4": "E dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "ND OD PD", "4": "GC J I QD dC RD SD" }, J: { "2": "D", "4": "A" }, K: { "1": "C BC", "2": "A B AC cC", "4": "H" }, L: { "4": "I" }, M: { "4": "9B" }, N: { "1": "B", "2": "A" }, O: { "4": "CC" }, P: { "4": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "4": "eD" }, R: { "4": "fD" }, S: { "4": "gD hD" } }, B: 4, C: "DeviceOrientation & DeviceMotion events", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/devicepixelratio.js
+var require_devicepixelratio = __commonJS({
+  "node_modules/caniuse-lite/data/features/devicepixelratio.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F B vC wC xC yC AC cC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "C H BC", "2": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Window.devicePixelRatio", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/dialog.js
+var require_dialog = __commonJS({
+  "node_modules/caniuse-lite/data/features/dialog.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB iC jC", "194": "lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q", "1218": "H R JC S T U V W X Y Z a b c d e f g" }, D: { "1": "4 5 6 7 8 9 VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB", "322": "QB RB SB TB UB" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N O P vC wC xC yC AC cC zC BC", "578": "0 1 JB y z" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "Dialog element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/dispatchevent.js
+var require_dispatchevent = __commonJS({
+  "node_modules/caniuse-lite/data/features/dispatchevent.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "16": "eC", "129": "F A", "130": "K D E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "16": "F" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "129": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "EventTarget.dispatchEvent", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/dnssec.js
+var require_dnssec = __commonJS({
+  "node_modules/caniuse-lite/data/features/dnssec.js"(exports2, module2) {
+    module2.exports = { A: { A: { "132": "K D E F A B eC" }, B: { "132": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "132": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "132": "4 5 6 7 8 9 J IB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "388": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB" }, E: { "132": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "132": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "132": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "132": "MD" }, I: { "132": "GC J I ND OD PD QD dC RD SD" }, J: { "132": "D A" }, K: { "132": "A B C H AC cC BC" }, L: { "132": "I" }, M: { "132": "9B" }, N: { "132": "A B" }, O: { "132": "CC" }, P: { "132": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "132": "eD" }, R: { "132": "fD" }, S: { "132": "gD hD" } }, B: 6, C: "DNSSEC and DANE", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/do-not-track.js
+var require_do_not_track = __commonJS({
+  "node_modules/caniuse-lite/data/features/do-not-track.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "164": "F A", "260": "B" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L M G N" }, C: { "1": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E iC jC", "516": "0 1 2 3 F A B C L M G N O P JB y z KB LB MB NB OB PB" }, D: { "1": "1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "K A B C lC oC NC AC", "2": "J IB L M G kC MC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "1028": "D E F mC nC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC AC cC zC" }, G: { "1": "5C 6C 7C 8C 9C AD BD", "2": "MC 0C dC 1C 2C CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "1028": "E 3C 4C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "16": "D", "1028": "A" }, K: { "1": "H BC", "16": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "164": "A", "260": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 7, C: "Do Not Track API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/document-currentscript.js
+var require_document_currentscript = __commonJS({
+  "node_modules/caniuse-lite/data/features/document-currentscript.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB" }, E: { "1": "E F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC nC" }, F: { "1": "0 1 2 3 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G vC wC xC yC AC cC zC BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "document.currentScript", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/document-evaluate-xpath.js
+var require_document_evaluate_xpath = __commonJS({
+  "node_modules/caniuse-lite/data/features/document-evaluate-xpath.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "16": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "16": "F" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 7, C: "document.evaluate & XPath", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/document-execcommand.js
+var require_document_execcommand = __commonJS({
+  "node_modules/caniuse-lite/data/features/document-execcommand.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC lC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 wC xC yC AC cC zC BC", "16": "F vC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C", "16": "dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I QD dC RD SD", "2": "GC J ND OD PD" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 7, C: "Document.execCommand()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/document-policy.js
+var require_document_policy = __commonJS({
+  "node_modules/caniuse-lite/data/features/document-policy.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P Q H R S T", "132": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T", "132": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B vC wC xC yC AC cC zC BC", "132": "1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "132": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "132": "H" }, L: { "132": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "132": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Document Policy", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/document-scrollingelement.js
+var require_document_scrollingelement = __commonJS({
+  "node_modules/caniuse-lite/data/features/document-scrollingelement.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "16": "C L" }, C: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB iC jC" }, D: { "1": "4 5 6 7 8 9 cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "document.scrollingElement", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/documenthead.js
+var require_documenthead = __commonJS({
+  "node_modules/caniuse-lite/data/features/documenthead.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "16": "IB" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "2": "F vC wC xC yC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "document.head", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/dom-manip-convenience.js
+var require_dom_manip_convenience = __commonJS({
+  "node_modules/caniuse-lite/data/features/dom-manip-convenience.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB iC jC" }, D: { "1": "4 5 6 7 8 9 mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB", "194": "kB lB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB vC wC xC yC AC cC zC BC", "194": "YB" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "DOM manipulation convenience methods", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/dom-range.js
+var require_dom_range = __commonJS({
+  "node_modules/caniuse-lite/data/features/dom-range.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "eC", "8": "K D E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Document Object Model Range", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/domcontentloaded.js
+var require_domcontentloaded = __commonJS({
+  "node_modules/caniuse-lite/data/features/domcontentloaded.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "DOMContentLoaded", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/dommatrix.js
+var require_dommatrix = __commonJS({
+  "node_modules/caniuse-lite/data/features/dommatrix.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "132": "A B" }, B: { "132": "C L M G N O P", "1028": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB iC jC", "1028": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2564": "RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB", "3076": "hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB" }, D: { "16": "J IB K D", "132": "0 1 2 3 F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB", "388": "E", "1028": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "16": "J kC MC", "132": "IB K D E F A lC mC nC oC NC", "1028": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB", "1028": "gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "16": "MC 0C dC", "132": "E 1C 2C 3C 4C 5C 6C 7C 8C", "1028": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "132": "J QD dC RD SD", "292": "GC ND OD PD", "1028": "I" }, J: { "16": "D", "132": "A" }, K: { "2": "A B C AC cC BC", "1028": "H" }, L: { "1028": "I" }, M: { "1028": "9B" }, N: { "132": "A B" }, O: { "1028": "CC" }, P: { "132": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1028": "eD" }, R: { "1028": "fD" }, S: { "1028": "hD", "2564": "gD" } }, B: 4, C: "DOMMatrix", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/download.js
+var require_download = __commonJS({
+  "node_modules/caniuse-lite/data/features/download.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Download attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/dragndrop.js
+var require_dragndrop = __commonJS({
+  "node_modules/caniuse-lite/data/features/dragndrop.js"(exports2, module2) {
+    module2.exports = { A: { A: { "644": "K D E F eC", "772": "A B" }, B: { "1": "4 5 6 7 8 9 P Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L M G N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "8": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "8": "F B vC wC xC yC AC cC zC" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "1025": "I" }, J: { "2": "D A" }, K: { "1": "BC", "8": "A B C AC cC", "1025": "H" }, L: { "1025": "I" }, M: { "2": "9B" }, N: { "1": "A B" }, O: { "1025": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "Drag and Drop", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/element-closest.js
+var require_element_closest = __commonJS({
+  "node_modules/caniuse-lite/data/features/element-closest.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M" }, C: { "1": "4 5 6 7 8 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB iC jC" }, D: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Element.closest()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/element-from-point.js
+var require_element_from_point = __commonJS({
+  "node_modules/caniuse-lite/data/features/element-from-point.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B", "16": "eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "16": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "16": "F vC wC xC yC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "C H BC", "16": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "document.elementFromPoint()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/element-scroll-methods.js
+var require_element_scroll_methods = __commonJS({
+  "node_modules/caniuse-lite/data/features/element-scroll-methods.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB iC jC" }, D: { "1": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB" }, E: { "1": "M G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC", "132": "A B C L NC AC BC pC" }, F: { "1": "gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB vC wC xC yC AC cC zC BC" }, G: { "1": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C", "132": "7C 8C 9C AD BD CD DD ED FD GD HD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Scroll methods on elements (scroll, scrollTo, scrollBy)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/eme.js
+var require_eme = __commonJS({
+  "node_modules/caniuse-lite/data/features/eme.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "164": "B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB iC jC" }, D: { "1": "4 5 6 7 8 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB", "132": "TB UB VB WB XB YB ZB" }, E: { "1": "C L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC", "164": "D E F A B nC oC NC AC" }, F: { "1": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N O P JB y z vC wC xC yC AC cC zC BC", "132": "0 1 2 3 KB LB MB" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Encrypted Media Extensions", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/eot.js
+var require_eot = __commonJS({
+  "node_modules/caniuse-lite/data/features/eot.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B", "2": "eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "EOT - Embedded OpenType fonts", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/es5.js
+var require_es5 = __commonJS({
+  "node_modules/caniuse-lite/data/features/es5.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D eC", "260": "F", "1026": "E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "4": "fC GC iC jC", "132": "J IB K D E F A B C L M G N O P JB y" }, D: { "1": "1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "4": "J IB K D E F A B C L M G N O P", "132": "0 JB y z" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "4": "J IB kC MC lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "4": "F B C vC wC xC yC AC cC zC", "132": "BC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "4": "MC 0C dC 1C" }, H: { "132": "MD" }, I: { "1": "I RD SD", "4": "GC ND OD PD", "132": "QD dC", "900": "J" }, J: { "1": "A", "4": "D" }, K: { "1": "H", "4": "A B C AC cC", "132": "BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "ECMAScript 5", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/es6-class.js
+var require_es6_class = __commonJS({
+  "node_modules/caniuse-lite/data/features/es6-class.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C" }, C: { "1": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB iC jC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB", "132": "aB bB cB dB eB fB gB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB vC wC xC yC AC cC zC BC", "132": "NB OB PB QB RB SB TB" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "ES6 classes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/es6-generators.js
+var require_es6_generators = __commonJS({
+  "node_modules/caniuse-lite/data/features/es6-generators.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C" }, C: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "ES6 Generators", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js
+var require_es6_module_dynamic_import = __commonJS({
+  "node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB iC jC", "194": "wB" }, D: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC" }, F: { "1": "iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB vC wC xC yC AC cC zC BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "JavaScript modules: dynamic import()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/es6-module.js
+var require_es6_module = __commonJS({
+  "node_modules/caniuse-lite/data/features/es6-module.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M", "2049": "N O P", "2242": "G" }, C: { "1": "4 5 6 7 8 9 rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB iC jC", "322": "mB nB oB pB qB HC" }, D: { "1": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC", "194": "rB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC", "1540": "NC" }, F: { "1": "gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB vC wC xC yC AC cC zC BC", "194": "fB" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C", "1540": "8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "JavaScript modules via script tag", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/es6-number.js
+var require_es6_number = __commonJS({
+  "node_modules/caniuse-lite/data/features/es6-number.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G iC jC", "132": "0 1 2 N O P JB y z", "260": "3 KB LB MB NB OB", "516": "PB" }, D: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P", "1028": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "1028": "G N O P JB y" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD", "1028": "QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "ES6 Number", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/es6-string-includes.js
+var require_es6_string_includes = __commonJS({
+  "node_modules/caniuse-lite/data/features/es6-string-includes.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB iC jC" }, D: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "String.prototype.includes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/es6.js
+var require_es6 = __commonJS({
+  "node_modules/caniuse-lite/data/features/es6.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "388": "B" }, B: { "257": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L M", "769": "G N O P" }, C: { "2": "fC GC J IB iC jC", "4": "0 1 2 3 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB", "257": "4 5 6 7 8 9 mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "J IB K D E F A B C L M G N O P JB y", "4": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "257": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC", "4": "E F nC oC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "4": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB", "257": "WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C", "4": "E 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC", "4": "RD SD", "257": "I" }, J: { "2": "D", "4": "A" }, K: { "2": "A B C AC cC BC", "257": "H" }, L: { "257": "I" }, M: { "257": "9B" }, N: { "2": "A", "388": "B" }, O: { "257": "CC" }, P: { "4": "J", "257": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "257": "eD" }, R: { "257": "fD" }, S: { "4": "gD", "257": "hD" } }, B: 6, C: "ECMAScript 2015 (ES6)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/eventsource.js
+var require_eventsource = __commonJS({
+  "node_modules/caniuse-lite/data/features/eventsource.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "4": "F vC wC xC yC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "D A" }, K: { "1": "C H AC cC BC", "4": "A B" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Server-sent events", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/extended-system-fonts.js
+var require_extended_system_fonts = __commonJS({
+  "node_modules/caniuse-lite/data/features/extended-system-fonts.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for font-family", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/feature-policy.js
+var require_feature_policy = __commonJS({
+  "node_modules/caniuse-lite/data/features/feature-policy.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "Q H R S T U V W", "2": "C L M G N O P", "1025": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B iC jC", "260": "4 5 6 7 8 9 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4B 5B 6B 7B 8B Q H R S T U V W", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC", "132": "rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B", "1025": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B kC MC lC mC nC oC NC", "772": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB vC wC xC yC AC cC zC BC", "132": "fB gB hB iB jB kB lB mB nB oB pB qB rB", "1025": "5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C", "772": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "1025": "H" }, L: { "1025": "I" }, M: { "260": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD", "132": "WD XD NC" }, Q: { "132": "eD" }, R: { "1025": "fD" }, S: { "2": "gD", "260": "hD" } }, B: 7, C: "Feature Policy", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/fetch.js
+var require_fetch = __commonJS({
+  "node_modules/caniuse-lite/data/features/fetch.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "4 5 6 7 8 9 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB iC jC", "1025": "XB", "1218": "SB TB UB VB WB" }, D: { "1": "4 5 6 7 8 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB", "260": "YB", "772": "ZB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB vC wC xC yC AC cC zC BC", "260": "LB", "772": "MB" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Fetch", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/fieldset-disabled.js
+var require_fieldset_disabled = __commonJS({
+  "node_modules/caniuse-lite/data/features/fieldset-disabled.js"(exports2, module2) {
+    module2.exports = { A: { A: { "16": "eC", "132": "E F", "388": "K D A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G", "16": "N O P JB" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 wC xC yC AC cC zC BC", "16": "F vC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C" }, H: { "388": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A", "260": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "disabled attribute of the fieldset element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/fileapi.js
+var require_fileapi = __commonJS({
+  "node_modules/caniuse-lite/data/features/fileapi.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "260": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC", "260": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB jC" }, D: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB", "260": "0 1 2 3 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB", "388": "K D E F A B C" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC", "260": "K D E F mC nC oC", "388": "lC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B vC wC xC yC", "260": "0 1 2 C G N O P JB y z AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "260": "E 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I SD", "2": "ND OD PD", "260": "RD", "388": "GC J QD dC" }, J: { "260": "A", "388": "D" }, K: { "1": "H", "2": "A B", "260": "C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A", "260": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "File API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/filereader.js
+var require_filereader = __commonJS({
+  "node_modules/caniuse-lite/data/features/filereader.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "132": "A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "2": "fC GC iC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "2": "F B vC wC xC yC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "A", "2": "D" }, K: { "1": "C H AC cC BC", "2": "A B" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "FileReader API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/filereadersync.js
+var require_filereadersync = __commonJS({
+  "node_modules/caniuse-lite/data/features/filereadersync.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F vC wC", "16": "B xC yC AC cC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "C H cC BC", "2": "A", "16": "B AC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "FileReaderSync", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/filesystem.js
+var require_filesystem = __commonJS({
+  "node_modules/caniuse-lite/data/features/filesystem.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "33": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "J IB K D", "33": "0 1 2 3 4 5 6 7 8 9 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "36": "E F A B C" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D", "33": "A" }, K: { "2": "A B C AC cC BC", "33": "H" }, L: { "33": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "33": "CC" }, P: { "2": "J", "33": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "33": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Filesystem & FileWriter API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/flac.js
+var require_flac = __commonJS({
+  "node_modules/caniuse-lite/data/features/flac.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G" }, C: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB iC jC" }, D: { "1": "4 5 6 7 8 9 oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB", "16": "cB dB eB", "388": "fB gB hB iB jB kB lB mB nB" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "516": "B C AC BC" }, F: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vC wC xC yC AC cC zC BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "ND OD PD", "16": "GC J QD dC RD SD" }, J: { "1": "A", "2": "D" }, K: { "1": "H BC", "16": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "129": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "FLAC audio format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/flexbox-gap.js
+var require_flexbox_gap = __commonJS({
+  "node_modules/caniuse-lite/data/features/flexbox-gap.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S" }, C: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S" }, E: { "1": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC" }, F: { "1": "0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB vC wC xC yC AC cC zC BC" }, G: { "1": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "gap property for Flexbox", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/flow-root.js
+var require_flow_root = __commonJS({
+  "node_modules/caniuse-lite/data/features/flow-root.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB iC jC" }, D: { "1": "4 5 6 7 8 9 qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC BC" }, F: { "1": "dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB vC wC xC yC AC cC zC BC" }, G: { "1": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "display: flow-root", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/focusin-focusout-events.js
+var require_focusin_focusout_events = __commonJS({
+  "node_modules/caniuse-lite/data/features/focusin-focusout-events.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B", "2": "eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F vC wC xC yC", "16": "B AC cC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "J I QD dC RD SD", "2": "ND OD PD", "16": "GC" }, J: { "1": "D A" }, K: { "1": "C H BC", "2": "A", "16": "B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "focusin & focusout events", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/font-family-system-ui.js
+var require_font_family_system_ui = __commonJS({
+  "node_modules/caniuse-lite/data/features/font-family-system-ui.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB iC jC", "132": "bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a" }, D: { "1": "4 5 6 7 8 9 oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB", "260": "lB mB nB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC", "16": "F", "132": "A oC NC" }, F: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB vC wC xC yC AC cC zC BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C", "132": "5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "132": "gD hD" } }, B: 5, C: "system-ui value for font-family", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/font-loading.js
+var require_font_loading = __commonJS({
+  "node_modules/caniuse-lite/data/features/font-loading.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB iC jC", "194": "TB UB VB WB XB YB" }, D: { "1": "4 5 6 7 8 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "CSS Font Loading", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/font-size-adjust.js
+var require_font_size_adjust = __commonJS({
+  "node_modules/caniuse-lite/data/features/font-size-adjust.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "GB HB I", "2": "C L M G N O P", "194": "6 7 8 9 AB BB CB DB EB FB", "962": "4 5 Q H 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" }, C: { "1": "7 8 9 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC", "516": "4 5 6 b c d e f g h i j k l m n o p q r s t u v w x", "772": "0 1 2 3 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a iC jC" }, D: { "1": "GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB", "194": "9 AB BB CB DB EB FB", "962": "4 5 6 7 8 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "1": "EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC", "772": "TC UC tC" }, F: { "1": "w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB vC wC xC yC AC cC zC BC", "194": "l m n o p q r s t u v", "962": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k" }, G: { "1": "EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC", "772": "TC UC LD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "194": "eD" }, R: { "2": "fD" }, S: { "2": "gD", "516": "hD" } }, B: 2, C: "CSS font-size-adjust", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/font-smooth.js
+var require_font_smooth = __commonJS({
+  "node_modules/caniuse-lite/data/features/font-smooth.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "676": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "804": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB", "1828": "HB I 9B KC LC gC hC" }, D: { "2": "J", "676": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "kC MC", "676": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "676": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "804": "gD hD" } }, B: 7, C: "CSS font-smooth", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/font-unicode-range.js
+var require_font_unicode_range = __commonJS({
+  "node_modules/caniuse-lite/data/features/font-unicode-range.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "4": "F A B" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "4": "C L M G N" }, C: { "1": "4 5 6 7 8 9 cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB iC jC", "194": "UB VB WB XB YB ZB aB bB" }, D: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "4": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "4": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "4": "0 G N O P JB y z" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "4": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "4": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D", "4": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "4": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "4": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Font unicode-range subsetting", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/font-variant-alternates.js
+var require_font_variant_alternates = __commonJS({
+  "node_modules/caniuse-lite/data/features/font-variant-alternates.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "130": "A B" }, B: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I", "130": "C L M G N O P Q H 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" }, C: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "130": "0 1 J IB K D E F A B C L M G N O P JB y z", "322": "2 3 KB LB MB NB OB PB QB RB" }, D: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G", "130": "0 1 2 3 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "D E F kC MC mC nC", "130": "J IB K lC" }, F: { "1": "h i j k l m n o p q r s t u v w x", "2": "F B C vC wC xC yC AC cC zC BC", "130": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g" }, G: { "1": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 3C 4C 5C", "130": "0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "130": "RD SD" }, J: { "2": "D", "130": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "130": "CC" }, P: { "1": "0 1 2 3", "130": "J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "130": "eD" }, R: { "130": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "CSS font-variant-alternates", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/font-variant-numeric.js
+var require_font_variant_numeric = __commonJS({
+  "node_modules/caniuse-lite/data/features/font-variant-numeric.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB iC jC" }, D: { "1": "4 5 6 7 8 9 kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC" }, F: { "1": "XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB vC wC xC yC AC cC zC BC" }, G: { "1": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D", "16": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS font-variant-numeric", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/fontface.js
+var require_fontface = __commonJS({
+  "node_modules/caniuse-lite/data/features/fontface.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "132": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 wC xC yC AC cC zC BC", "2": "F vC" }, G: { "1": "E dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "260": "MC 0C" }, H: { "2": "MD" }, I: { "1": "J I QD dC RD SD", "2": "ND", "4": "GC OD PD" }, J: { "1": "A", "4": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "@font-face Web fonts", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/form-attribute.js
+var require_form_attribute = __commonJS({
+  "node_modules/caniuse-lite/data/features/form-attribute.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "16": "IB" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Form attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/form-submit-attributes.js
+var require_form_submit_attributes = __commonJS({
+  "node_modules/caniuse-lite/data/features/form-submit-attributes.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "2": "F vC", "16": "wC xC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "J I QD dC RD SD", "2": "ND OD PD", "16": "GC" }, J: { "1": "A", "2": "D" }, K: { "1": "B C H AC cC BC", "16": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Attributes for form submission", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/form-validation.js
+var require_form_validation = __commonJS({
+  "node_modules/caniuse-lite/data/features/form-validation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "132": "IB K D E F A lC mC nC oC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 wC xC yC AC cC zC BC", "2": "F vC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC", "132": "E 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "516": "MD" }, I: { "1": "I SD", "2": "GC ND OD PD", "132": "J QD dC RD" }, J: { "1": "A", "132": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "260": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "132": "gD" } }, B: 1, C: "Form validation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/forms.js
+var require_forms = __commonJS({
+  "node_modules/caniuse-lite/data/features/forms.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "4": "A B", "8": "K D E F" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "4": "C L M G" }, C: { "4": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "8": "fC GC iC jC" }, D: { "1": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "4": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB" }, E: { "4": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "kC MC" }, F: { "1": "F B C kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "4": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB" }, G: { "2": "MC", "4": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "4": "RD SD" }, J: { "2": "D", "4": "A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "4": "9B" }, N: { "4": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "4": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "4": "gD hD" } }, B: 1, C: "HTML5 form features", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/gamepad.js
+var require_gamepad = __commonJS({
+  "node_modules/caniuse-lite/data/features/gamepad.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC" }, D: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB y", "33": "0 1 2 z" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "Gamepad API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/geolocation.js
+var require_geolocation = __commonJS({
+  "node_modules/caniuse-lite/data/features/geolocation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "eC", "8": "K D E" }, B: { "1": "C L M G N O P", "129": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB iC jC", "8": "fC GC", "129": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "0 1 2 3 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "4": "J", "129": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K D E F B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J kC MC", "129": "A" }, F: { "1": "0 1 2 3 B C N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB yC AC cC zC BC", "2": "F G vC", "8": "wC xC", "129": "XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C", "129": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J ND OD PD QD dC RD SD", "129": "I" }, J: { "1": "D A" }, K: { "1": "B C AC cC BC", "8": "A", "129": "H" }, L: { "129": "I" }, M: { "129": "9B" }, N: { "1": "A B" }, O: { "129": "CC" }, P: { "1": "J", "129": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "129": "eD" }, R: { "129": "fD" }, S: { "1": "gD", "129": "hD" } }, B: 2, C: "Geolocation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/getboundingclientrect.js
+var require_getboundingclientrect = __commonJS({
+  "node_modules/caniuse-lite/data/features/getboundingclientrect.js"(exports2, module2) {
+    module2.exports = { A: { A: { "644": "K D eC", "2049": "F A B", "2692": "E" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2049": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC", "260": "J IB K D E F A B", "1156": "GC", "1284": "iC", "1796": "jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "16": "F vC", "132": "wC xC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "132": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2049": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Element.getBoundingClientRect()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/getcomputedstyle.js
+var require_getcomputedstyle = __commonJS({
+  "node_modules/caniuse-lite/data/features/getcomputedstyle.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC", "132": "GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "260": "J IB K D E F A" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "260": "J kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "260": "F vC wC xC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "260": "MC 0C dC" }, H: { "260": "MD" }, I: { "1": "J I QD dC RD SD", "260": "GC ND OD PD" }, J: { "1": "A", "260": "D" }, K: { "1": "B C H AC cC BC", "260": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "getComputedStyle", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/getelementsbyclassname.js
+var require_getelementsbyclassname = __commonJS({
+  "node_modules/caniuse-lite/data/features/getelementsbyclassname.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "eC", "8": "K D E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "8": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "getElementsByClassName", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/getrandomvalues.js
+var require_getrandomvalues = __commonJS({
+  "node_modules/caniuse-lite/data/features/getrandomvalues.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "33": "B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB y iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A", "33": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "crypto.getRandomValues()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/gyroscope.js
+var require_gyroscope = __commonJS({
+  "node_modules/caniuse-lite/data/features/gyroscope.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB", "194": "qB HC rB IC sB tB uB vB wB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "Gyroscope", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/hardwareconcurrency.js
+var require_hardwareconcurrency = __commonJS({
+  "node_modules/caniuse-lite/data/features/hardwareconcurrency.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M" }, C: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB iC jC" }, D: { "1": "4 5 6 7 8 9 VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB" }, E: { "2": "J IB K D kC MC lC mC nC", "129": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "194": "E F A oC" }, F: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "2": "MC 0C dC 1C 2C 3C", "129": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "194": "E 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "navigator.hardwareConcurrency", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/hashchange.js
+var require_hashchange = __commonJS({
+  "node_modules/caniuse-lite/data/features/hashchange.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "E F A B", "8": "K D eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "8": "fC GC iC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "8": "J" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "8": "F vC wC xC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC" }, H: { "2": "MD" }, I: { "1": "GC J I OD PD QD dC RD SD", "2": "ND" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "8": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Hashchange event", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/heif.js
+var require_heif = __commonJS({
+  "node_modules/caniuse-lite/data/features/heif.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "130": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C LD", "130": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "HEIF/HEIC image format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/hevc.js
+var require_hevc = __commonJS({
+  "node_modules/caniuse-lite/data/features/hevc.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "132": "B" }, B: { "132": "C L M G N O P", "1028": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC", "4098": "9", "8258": "AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "2052": "4 5 6 7 8 9 q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "516": "B C AC BC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c vC wC xC yC AC cC zC BC", "2052": "d e f g h i j k l m n o p q r s t u v w x" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "2052": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "258": "H" }, L: { "2052": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 z", "2": "J", "258": "y TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "HEVC/H.265 video format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/hidden.js
+var require_hidden = __commonJS({
+  "node_modules/caniuse-lite/data/features/hidden.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "2": "F B vC wC xC yC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "J I QD dC RD SD", "2": "GC ND OD PD" }, J: { "1": "A", "2": "D" }, K: { "1": "C H AC cC BC", "2": "A B" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "hidden attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/high-resolution-time.js
+var require_high_resolution_time = __commonJS({
+  "node_modules/caniuse-lite/data/features/high-resolution-time.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB", "2": "fC GC J IB K D E F A B C L M iC jC", "129": "nB oB pB", "769": "qB HC", "1281": "4 5 6 7 8 9 rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB", "33": "0 1 y z" }, E: { "1": "E F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC nC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "High Resolution Time API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/history.js
+var require_history = __commonJS({
+  "node_modules/caniuse-lite/data/features/history.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "4": "IB lC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 cC zC BC", "2": "F B vC wC xC yC AC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C", "4": "dC" }, H: { "2": "MD" }, I: { "1": "I OD PD dC RD SD", "2": "GC J ND QD" }, J: { "1": "D A" }, K: { "1": "C H AC cC BC", "2": "A B" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Session history management", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/html-media-capture.js
+var require_html_media_capture = __commonJS({
+  "node_modules/caniuse-lite/data/features/html-media-capture.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "MC 0C dC 1C", "129": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND", "257": "OD PD" }, J: { "1": "A", "16": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "516": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "16": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 2, C: "HTML Media Capture", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/html5semantic.js
+var require_html5semantic = __commonJS({
+  "node_modules/caniuse-lite/data/features/html5semantic.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "8": "K D E", "260": "F A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC", "132": "GC iC jC", "260": "J IB K D E F A B C L M G N O P JB y" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "J IB", "260": "0 1 2 3 K D E F A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "132": "J kC MC", "260": "IB K lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "132": "F B vC wC xC yC", "260": "C AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "132": "MC", "260": "0C dC 1C 2C" }, H: { "132": "MD" }, I: { "1": "I RD SD", "132": "ND", "260": "GC J OD PD QD dC" }, J: { "260": "D A" }, K: { "1": "H", "132": "A", "260": "B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "260": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "HTML5 semantic elements", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/http-live-streaming.js
+var require_http_live_streaming = __commonJS({
+  "node_modules/caniuse-lite/data/features/http-live-streaming.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "C L M G N O P", "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "HTTP Live Streaming (HLS)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/http2.js
+var require_http2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/http2.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "132": "B" }, B: { "1": "C L M G N O P", "513": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB iC jC", "513": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "ZB aB bB cB dB eB fB gB hB iB", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB", "513": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC", "260": "F A oC NC" }, F: { "1": "MB NB OB PB QB RB SB TB UB VB", "2": "0 1 2 3 F B C G N O P JB y z KB LB vC wC xC yC AC cC zC BC", "513": "WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "513": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "513": "H" }, L: { "513": "I" }, M: { "513": "9B" }, N: { "2": "A B" }, O: { "513": "CC" }, P: { "1": "J", "513": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "513": "eD" }, R: { "513": "fD" }, S: { "1": "gD", "513": "hD" } }, B: 6, C: "HTTP/2 protocol", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/http3.js
+var require_http3 = __commonJS({
+  "node_modules/caniuse-lite/data/features/http3.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "322": "Q H R S T", "578": "U V" }, C: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B iC jC", "194": "2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B", "322": "Q H R S T", "578": "U V" }, E: { "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC pC", "2052": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2116": "DC QC RC SC", "3140": "M G qC rC OC PC CC sC" }, F: { "1": "4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B vC wC xC yC AC cC zC BC", "578": "3B" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD", "2052": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2116": "HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "HTTP/3 protocol", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/iframe-sandbox.js
+var require_iframe_sandbox = __commonJS({
+  "node_modules/caniuse-lite/data/features/iframe-sandbox.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N iC jC", "4": "0 1 2 3 O P JB y z KB LB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC" }, H: { "2": "MD" }, I: { "1": "GC J I OD PD QD dC RD SD", "2": "ND" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "sandbox attribute for iframes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/iframe-seamless.js
+var require_iframe_seamless = __commonJS({
+  "node_modules/caniuse-lite/data/features/iframe-seamless.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "66": "0 1 2 3 y z KB" }, E: { "2": "J IB K E F A B C L M G kC MC lC mC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "130": "D nC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "130": "3C" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "seamless attribute for iframes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/iframe-srcdoc.js
+var require_iframe_srcdoc = __commonJS({
+  "node_modules/caniuse-lite/data/features/iframe-srcdoc.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "8": "K D E F A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "8": "C L M G N O P" }, C: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC", "8": "0 1 2 GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L", "8": "M G N O P JB" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC", "8": "J IB lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B vC wC xC yC", "8": "C AC cC zC BC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC", "8": "0C dC 1C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "8": "GC J ND OD PD QD dC" }, J: { "1": "A", "8": "D" }, K: { "1": "H", "2": "A B", "8": "C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "8": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "srcdoc attribute for iframes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/imagecapture.js
+var require_imagecapture = __commonJS({
+  "node_modules/caniuse-lite/data/features/imagecapture.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB iC jC", "194": "4 5 6 7 8 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB", "322": "lB mB nB oB pB qB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB vC wC xC yC AC cC zC BC", "322": "YB ZB aB bB cB dB" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "194": "gD hD" } }, B: 5, C: "ImageCapture API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ime.js
+var require_ime = __commonJS({
+  "node_modules/caniuse-lite/data/features/ime.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "161": "B" }, B: { "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "161": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A", "161": "B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Input Method Editor API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js
+var require_img_naturalwidth_naturalheight = __commonJS({
+  "node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "naturalWidth & naturalHeight image properties", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/import-maps.js
+var require_import_maps = __commonJS({
+  "node_modules/caniuse-lite/data/features/import-maps.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "194": "Q H R S T U V W X" }, C: { "1": "4 5 6 7 8 9 r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k iC jC", "322": "l m n o p q" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B", "194": "4B 5B 6B 7B 8B Q H R S T U V W X" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC" }, F: { "1": "6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC", "194": "sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD bD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Import maps", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/imports.js
+var require_imports = __commonJS({
+  "node_modules/caniuse-lite/data/features/imports.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "8": "A B" }, B: { "1": "Q", "2": "4 5 6 7 8 9 H 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 AB BB CB DB EB FB GB HB I", "8": "C L M G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB iC jC", "8": "4 5 6 7 8 9 OB PB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "72": "QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB" }, D: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q", "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "66": "OB PB QB RB SB", "72": "TB" }, E: { "2": "J IB kC MC lC", "8": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB", "2": "F B C G N xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "66": "O P JB y z", "72": "0" }, G: { "2": "MC 0C dC 1C 2C", "8": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "8": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "J TD UD VD WD XD NC YD ZD", "2": "0 1 2 3 y z aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "1": "gD", "8": "hD" } }, B: 5, C: "HTML Imports", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/indeterminate-checkbox.js
+var require_indeterminate_checkbox = __commonJS({
+  "node_modules/caniuse-lite/data/features/indeterminate-checkbox.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B", "16": "eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "2": "fC GC", "16": "iC" }, D: { "1": "4 5 6 7 8 9 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F B vC wC xC yC AC cC" }, G: { "1": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "indeterminate checkbox", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/indexeddb.js
+var require_indexeddb = __commonJS({
+  "node_modules/caniuse-lite/data/features/indexeddb.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "132": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "132": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "33": "A B C L M G", "36": "J IB K D E F" }, D: { "1": "2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "A", "8": "J IB K D E F", "33": "1", "36": "0 B C L M G N O P JB y z" }, E: { "1": "A B C L M G NC AC BC pC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J IB K D kC MC lC mC", "260": "E F nC oC", "516": "qC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F vC wC", "8": "B C xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "MC 0C dC 1C 2C 3C", "260": "E 4C 5C 6C", "516": "ID" }, H: { "2": "MD" }, I: { "1": "I RD SD", "8": "GC J ND OD PD QD dC" }, J: { "1": "A", "8": "D" }, K: { "1": "H", "2": "A", "8": "B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "IndexedDB", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/indexeddb2.js
+var require_indexeddb2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/indexeddb2.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB iC jC", "132": "cB dB eB", "260": "fB gB hB iB" }, D: { "1": "4 5 6 7 8 9 qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB", "132": "gB hB iB jB", "260": "kB lB mB nB oB pB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB vC wC xC yC AC cC zC BC", "132": "TB UB VB WB", "260": "XB YB ZB aB bB cB" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C", "16": "7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "260": "TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "260": "gD" } }, B: 2, C: "IndexedDB 2.0", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/inline-block.js
+var require_inline_block = __commonJS({
+  "node_modules/caniuse-lite/data/features/inline-block.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "E F A B", "4": "eC", "132": "K D" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "36": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS inline-block", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/innertext.js
+var require_innertext = __commonJS({
+  "node_modules/caniuse-lite/data/features/innertext.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B", "16": "eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "16": "F" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "HTMLElement.innerText", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js
+var require_input_autocomplete_onoff = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A eC", "132": "B" }, B: { "132": "C L M G N O P", "260": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB iC jC", "516": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "0 1 2 3 O P JB y z KB", "2": "J IB K D E F A B C L M G N", "132": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB", "260": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "K lC mC", "2": "J IB kC MC", "2052": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "MC 0C dC", "1025": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1025": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2052": "A B" }, O: { "1025": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "260": "eD" }, R: { "1": "fD" }, S: { "516": "gD hD" } }, B: 1, C: "autocomplete attribute: on & off values", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-color.js
+var require_input_color = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-color.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC" }, F: { "1": "0 1 2 3 B C O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "2": "F G N vC wC xC yC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD", "129": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "Color input type", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-datetime.js
+var require_input_datetime = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-datetime.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "132": "C" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB iC jC", "1090": "lB mB nB oB", "2052": "pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b", "4100": "4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB", "2052": "0 1 2 y z" }, E: { "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC", "4100": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "MC 0C dC", "260": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC ND OD PD", "514": "J QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "4100": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2052": "gD hD" } }, B: 1, C: "Date and time input types", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-email-tel-url.js
+var require_input_email_tel_url = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-email-tel-url.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "132": "ND OD PD" }, J: { "1": "A", "132": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Email, telephone & URL input types", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-event.js
+var require_input_event = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-event.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "2561": "A B", "2692": "F" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2561": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "16": "fC", "1537": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB jC", "1796": "GC iC" }, D: { "1": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M", "1025": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB", "1537": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB" }, E: { "1": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB K kC MC", "1025": "D E F A B C mC nC oC NC AC", "1537": "lC", "4097": "L BC" }, F: { "1": "kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "16": "F B C vC wC xC yC AC cC", "260": "zC", "1025": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB", "1537": "G N O P JB y z" }, G: { "1": "ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC", "1025": "E 4C 5C 6C 7C 8C 9C AD BD", "1537": "1C 2C 3C", "4097": "CD DD" }, H: { "2": "MD" }, I: { "16": "ND OD", "1025": "I SD", "1537": "GC J PD QD dC RD" }, J: { "1025": "A", "1537": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2561": "A B" }, O: { "1": "CC" }, P: { "1025": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "1537": "gD" } }, B: 1, C: "input event", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-file-accept.js
+var require_input_file_accept = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-file-accept.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "132": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J", "16": "0 1 2 3 IB K D E z", "132": "F A B C L M G N O P JB y" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "132": "K D E F A B mC nC oC NC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "2": "2C 3C", "132": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "514": "MC 0C dC 1C" }, H: { "2": "MD" }, I: { "2": "ND OD PD", "260": "GC J QD dC", "514": "I RD SD" }, J: { "132": "A", "260": "D" }, K: { "2": "A B C AC cC BC", "514": "H" }, L: { "260": "I" }, M: { "2": "9B" }, N: { "514": "A", "1028": "B" }, O: { "2": "CC" }, P: { "260": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "260": "eD" }, R: { "260": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "accept attribute for file input", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-file-directory.js
+var require_input_file_directory = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-file-directory.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iC jC" }, D: { "1": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC" }, F: { "1": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Directory selection from file input", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-file-multiple.js
+var require_input_file_multiple = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-file-multiple.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "2": "fC GC iC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "2": "F vC wC xC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C" }, H: { "130": "MD" }, I: { "130": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "130": "A B C AC cC BC" }, L: { "132": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "130": "CC" }, P: { "130": "J", "132": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "132": "eD" }, R: { "132": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "Multiple file selection", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-inputmode.js
+var require_input_inputmode = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-inputmode.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N iC jC", "4": "O P JB y", "194": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d" }, D: { "1": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB", "66": "oB pB qB HC rB IC sB tB uB vB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB vC wC xC yC AC cC zC BC", "66": "bB cB dB eB fB gB hB iB jB kB" }, G: { "1": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "194": "gD hD" } }, B: 1, C: "inputmode attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-minlength.js
+var require_input_minlength = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-minlength.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N" }, C: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB iC jC" }, D: { "1": "4 5 6 7 8 9 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "Minimum length attribute for input fields", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-number.js
+var require_input_number = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-number.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "129": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "129": "C L", "1025": "M G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC", "513": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "388": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC ND OD PD", "388": "J I QD dC RD SD" }, J: { "2": "D", "388": "A" }, K: { "1": "A B C AC cC BC", "388": "H" }, L: { "388": "I" }, M: { "641": "9B" }, N: { "388": "A B" }, O: { "388": "CC" }, P: { "388": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "388": "eD" }, R: { "388": "fD" }, S: { "513": "gD hD" } }, B: 1, C: "Number input type", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-pattern.js
+var require_input_pattern = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-pattern.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "16": "IB", "388": "K D E F A lC mC nC oC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC", "388": "E 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I SD", "2": "GC J ND OD PD QD dC RD" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Pattern attribute for input fields", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-placeholder.js
+var require_input_placeholder = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-placeholder.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "132": "J kC MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 cC zC BC", "2": "F vC wC xC yC", "132": "B AC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC I ND OD PD dC RD SD", "4": "J QD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "input placeholder attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-range.js
+var require_input_range = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-range.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "I dC RD SD", "4": "GC J ND OD PD QD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Range input type", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-search.js
+var require_input_search = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-search.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "129": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "129": "C L M G N O P" }, C: { "2": "fC GC iC jC", "129": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "0 1 2 3 J IB K D E F A B C L M z", "129": "G N O P JB y" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F vC wC xC yC", "16": "B AC cC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC" }, H: { "129": "MD" }, I: { "1": "I RD SD", "16": "ND OD", "129": "GC J PD QD dC" }, J: { "1": "D", "129": "A" }, K: { "1": "C H", "2": "A", "16": "B AC cC", "129": "BC" }, L: { "1": "I" }, M: { "129": "9B" }, N: { "129": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "129": "gD hD" } }, B: 1, C: "Search input type", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/input-selection.js
+var require_input_selection = __commonJS({
+  "node_modules/caniuse-lite/data/features/input-selection.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "16": "F vC wC xC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "2": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Selection controls for input & textarea", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/insert-adjacent.js
+var require_insert_adjacent = __commonJS({
+  "node_modules/caniuse-lite/data/features/insert-adjacent.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B", "16": "eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "16": "F" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Element.insertAdjacentElement() & Element.insertAdjacentText()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/insertadjacenthtml.js
+var require_insertadjacenthtml = __commonJS({
+  "node_modules/caniuse-lite/data/features/insertadjacenthtml.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "16": "eC", "132": "K D E F" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 wC xC yC AC cC zC BC", "16": "F vC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Element.insertAdjacentHTML()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/internationalization.js
+var require_internationalization = __commonJS({
+  "node_modules/caniuse-lite/data/features/internationalization.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC" }, D: { "1": "2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "Internationalization API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/intersectionobserver-v2.js
+var require_intersectionobserver_v2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/intersectionobserver-v2.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "IntersectionObserver V2", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/intersectionobserver.js
+var require_intersectionobserver = __commonJS({
+  "node_modules/caniuse-lite/data/features/intersectionobserver.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "N O P", "2": "C L M", "260": "G", "513": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB iC jC", "194": "kB lB mB" }, D: { "1": "qB HC rB IC sB tB uB", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "260": "jB kB lB mB nB oB pB", "513": "4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC" }, F: { "1": "dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB vC wC xC yC AC cC zC BC", "260": "WB XB YB ZB aB bB cB", "513": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "513": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "513": "H" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "260": "TD UD" }, Q: { "513": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "IntersectionObserver", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/intl-pluralrules.js
+var require_intl_pluralrules = __commonJS({
+  "node_modules/caniuse-lite/data/features/intl-pluralrules.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O", "130": "P" }, C: { "1": "4 5 6 7 8 9 qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB iC jC" }, D: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC BC" }, F: { "1": "iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB vC wC xC yC AC cC zC BC" }, G: { "1": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "Intl.PluralRules API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/jpeg2000.js
+var require_jpeg2000 = __commonJS({
+  "node_modules/caniuse-lite/data/features/jpeg2000.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC", "2": "J kC MC FC bC uC", "129": "IB lC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC", "2": "MC 0C dC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "JPEG 2000 image format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/jpegxl.js
+var require_jpegxl = __commonJS({
+  "node_modules/caniuse-lite/data/features/jpegxl.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H R S T U V W X Y Z t u v w x AB BB CB DB EB FB GB HB I", "578": "a b c d e f g h i j k l m n o p q r s" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y iC jC", "322": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "194": "a b c d e f g h i j k l m n o p q r s" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC", "1025": "EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B f g h i j k l m n o p q r s t u v w x vC wC xC yC AC cC zC BC", "194": "7B 8B Q H R JC S T U V W X Y Z a b c d e" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD", "1025": "EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "JPEG XL image format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/jpegxr.js
+var require_jpegxr = __commonJS({
+  "node_modules/caniuse-lite/data/features/jpegxr.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "C L M G N O P", "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "1": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "JPEG XR image format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js
+var require_js_regexp_lookbehind = __commonJS({
+  "node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B iC jC" }, D: { "1": "4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC" }, F: { "1": "hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB vC wC xC yC AC cC zC BC" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "Lookbehind in JS regular expressions", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/json.js
+var require_json = __commonJS({
+  "node_modules/caniuse-lite/data/features/json.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D eC", "129": "E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "JSON parsing", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/justify-content-space-evenly.js
+var require_justify_content_space_evenly = __commonJS({
+  "node_modules/caniuse-lite/data/features/justify-content-space-evenly.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G", "132": "N O P" }, C: { "1": "4 5 6 7 8 9 kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB iC jC" }, D: { "1": "4 5 6 7 8 9 rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB", "132": "pB qB HC" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC", "132": "NC" }, F: { "1": "fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB vC wC xC yC AC cC zC BC", "132": "cB dB eB" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C", "132": "8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD", "132": "VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "132": "gD" } }, B: 5, C: "CSS justify-content: space-evenly", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js
+var require_kerning_pairs_ligatures = __commonJS({
+  "node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "ND OD PD", "132": "GC J QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 7, C: "High-quality kerning pairs & ligatures", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/keyboardevent-charcode.js
+var require_keyboardevent_charcode = __commonJS({
+  "node_modules/caniuse-lite/data/features/keyboardevent-charcode.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "16": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC AC cC zC", "16": "C" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "H BC", "2": "A B AC cC", "16": "C" }, L: { "1": "I" }, M: { "130": "9B" }, N: { "130": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 7, C: "KeyboardEvent.charCode", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/keyboardevent-code.js
+var require_keyboardevent_code = __commonJS({
+  "node_modules/caniuse-lite/data/features/keyboardevent-code.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB iC jC" }, D: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB", "194": "aB bB cB dB eB fB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB vC wC xC yC AC cC zC BC", "194": "NB OB PB QB RB SB" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "194": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "J", "194": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "194": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "KeyboardEvent.code", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js
+var require_keyboardevent_getmodifierstate = __commonJS({
+  "node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M iC jC" }, D: { "1": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B G N vC wC xC yC AC cC zC", "16": "C" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H BC", "2": "A B AC cC", "16": "C" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "KeyboardEvent.getModifierState()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/keyboardevent-key.js
+var require_keyboardevent_key = __commonJS({
+  "node_modules/caniuse-lite/data/features/keyboardevent-key.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "260": "F A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "132": "1 2 3 KB LB MB" }, D: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "0 1 2 3 F B G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB vC wC xC yC AC cC zC", "16": "C" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "1": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H BC", "2": "A B AC cC", "16": "C" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "260": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "KeyboardEvent.key", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/keyboardevent-location.js
+var require_keyboardevent_location = __commonJS({
+  "node_modules/caniuse-lite/data/features/keyboardevent-location.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M iC jC" }, D: { "1": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "K kC MC", "132": "J IB lC" }, F: { "1": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC AC cC zC", "16": "C", "132": "G N" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC", "132": "1C 2C 3C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "16": "ND OD", "132": "GC J PD QD dC" }, J: { "132": "D A" }, K: { "1": "H BC", "2": "A B AC cC", "16": "C" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "KeyboardEvent.location", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/keyboardevent-which.js
+var require_keyboardevent_which = __commonJS({
+  "node_modules/caniuse-lite/data/features/keyboardevent-which.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "16": "IB" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 wC xC yC AC cC zC BC", "16": "F vC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC", "16": "ND OD", "132": "RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "132": "I" }, M: { "132": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "2": "J", "132": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "132": "fD" }, S: { "1": "gD hD" } }, B: 7, C: "KeyboardEvent.which", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/lazyload.js
+var require_lazyload = __commonJS({
+  "node_modules/caniuse-lite/data/features/lazyload.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "C L M G N O P", "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "1": "B", "2": "A" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Resource Hints: Lazyload", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/let.js
+var require_let = __commonJS({
+  "node_modules/caniuse-lite/data/features/let.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "2052": "B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "194": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB iC jC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P", "322": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB", "516": "ZB aB bB cB dB eB fB gB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC", "1028": "A NC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "322": "0 1 2 3 G N O P JB y z KB LB", "516": "MB NB OB PB QB RB SB TB" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C", "1028": "7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "516": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "let", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/link-icon-png.js
+var require_link_icon_png = __commonJS({
+  "node_modules/caniuse-lite/data/features/link-icon-png.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "130": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD" }, H: { "130": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D", "130": "A" }, K: { "1": "H", "130": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "130": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "PNG favicons", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/link-icon-svg.js
+var require_link_icon_svg = __commonJS({
+  "node_modules/caniuse-lite/data/features/link-icon-svg.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P Q", "1537": "4 5 6 7 8 9 H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "fC GC iC jC", "260": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB", "513": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q", "1537": "4 5 6 7 8 9 H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB mB nB oB pB qB rB sB tB uB vB wB vC wC xC yC AC cC zC BC", "1537": "xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "130": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD" }, H: { "130": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D", "130": "A" }, K: { "130": "A B C AC cC BC", "1537": "H" }, L: { "1537": "I" }, M: { "2": "9B" }, N: { "130": "A B" }, O: { "2": "CC" }, P: { "2": "J TD UD VD WD XD NC YD ZD", "1537": "0 1 2 3 y z aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "1537": "fD" }, S: { "513": "gD hD" } }, B: 1, C: "SVG favicons", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js
+var require_link_rel_dns_prefetch = __commonJS({
+  "node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E eC", "132": "F" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "GB HB I 9B KC LC gC hC", "2": "fC GC", "260": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "16": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "16": "GC J I ND OD PD QD dC RD SD" }, J: { "16": "D A" }, K: { "1": "H", "16": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "16": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Resource Hints: dns-prefetch", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/link-rel-modulepreload.js
+var require_link_rel_modulepreload = __commonJS({
+  "node_modules/caniuse-lite/data/features/link-rel-modulepreload.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "1": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB" }, E: { "1": "EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC" }, F: { "1": "lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB vC wC xC yC AC cC zC BC" }, G: { "1": "EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "Resource Hints: modulepreload", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/link-rel-preconnect.js
+var require_link_rel_preconnect = __commonJS({
+  "node_modules/caniuse-lite/data/features/link-rel-preconnect.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M", "260": "G N O P" }, C: { "1": "4 5 6 7 8 9 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB iC jC", "129": "XB", "514": "1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, D: { "1": "4 5 6 7 8 9 eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC" }, F: { "1": "RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB vC wC xC yC AC cC zC BC" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Resource Hints: preconnect", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/link-rel-prefetch.js
+var require_link_rel_prefetch = __commonJS({
+  "node_modules/caniuse-lite/data/features/link-rel-prefetch.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D" }, E: { "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC", "194": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD", "194": "GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "J I RD SD", "2": "GC ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Resource Hints: prefetch", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/link-rel-preload.js
+var require_link_rel_preload = __commonJS({
+  "node_modules/caniuse-lite/data/features/link-rel-preload.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N", "1028": "O P" }, C: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB iC jC", "132": "oB", "578": "pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T" }, D: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "322": "B" }, F: { "1": "VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB vC wC xC yC AC cC zC BC" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "322": "9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "Resource Hints: preload", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/link-rel-prerender.js
+var require_link_rel_prerender = __commonJS({
+  "node_modules/caniuse-lite/data/features/link-rel-prerender.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "Resource Hints: prerender", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/loading-lazy-attr.js
+var require_loading_lazy_attr = __commonJS({
+  "node_modules/caniuse-lite/data/features/loading-lazy-attr.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B iC jC", "132": "4 5 6 7 8 9 5B 6B 7B 8B Q H R JC 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" }, D: { "1": "4 5 6 7 8 9 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B", "66": "5B 6B" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC", "322": "M G pC qC rC OC", "580": "PC CC sC DC QC RC SC" }, F: { "1": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC", "66": "sB tB" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD", "322": "GD HD ID JD OC", "580": "PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "132": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD", "132": "hD" } }, B: 1, C: "Lazy loading via attribute for images & iframes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/localecompare.js
+var require_localecompare = __commonJS({
+  "node_modules/caniuse-lite/data/features/localecompare.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "16": "eC", "132": "K D E F A" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "132": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC" }, D: { "1": "2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "0 1 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "132": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F B C vC wC xC yC AC cC zC", "132": "BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "132": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "132": "MD" }, I: { "1": "I RD SD", "132": "GC J ND OD PD QD dC" }, J: { "132": "D A" }, K: { "1": "H", "16": "A B C AC cC", "132": "BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "132": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "132": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "4": "gD" } }, B: 6, C: "localeCompare()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/magnetometer.js
+var require_magnetometer = __commonJS({
+  "node_modules/caniuse-lite/data/features/magnetometer.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB", "194": "qB HC rB IC sB tB uB vB wB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "194": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "Magnetometer", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/matchesselector.js
+var require_matchesselector = __commonJS({
+  "node_modules/caniuse-lite/data/features/matchesselector.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "36": "F A B" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "36": "C L M" }, C: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC", "36": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB jC" }, D: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "36": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB" }, E: { "1": "E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "36": "IB K D lC mC" }, F: { "1": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B vC wC xC yC AC", "36": "C G N O P JB y cC zC BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC", "36": "0C dC 1C 2C 3C" }, H: { "2": "MD" }, I: { "1": "I", "2": "ND", "36": "GC J OD PD QD dC RD SD" }, J: { "36": "D A" }, K: { "1": "H", "2": "A B", "36": "C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "36": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "36": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "matches() DOM method", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/matchmedia.js
+var require_matchmedia = __commonJS({
+  "node_modules/caniuse-lite/data/features/matchmedia.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B C vC wC xC yC AC cC zC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "A", "2": "D" }, K: { "1": "H BC", "2": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "matchMedia", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mathml.js
+var require_mathml = __commonJS({
+  "node_modules/caniuse-lite/data/features/mathml.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "F A B eC", "8": "K D E" }, B: { "2": "C L M G N O P", "8": "Q H R S T U V W X Y Z a b c d e f", "584": "g h i j k l m n o p q r", "1025": "4 5 6 7 8 9 s t u v w x AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "129": "fC GC iC jC" }, D: { "1": "2", "8": "0 1 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f", "584": "g h i j k l m n o p q r", "1025": "4 5 6 7 8 9 s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "260": "J IB K D E F kC MC lC mC nC oC" }, F: { "2": "F", "8": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC", "584": "S T U V W X Y Z a b c d", "1025": "e f g h i j k l m n o p q r s t u v w x", "2052": "B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "MC 0C dC" }, H: { "8": "MD" }, I: { "8": "GC J ND OD PD QD dC RD SD", "1025": "I" }, J: { "1": "A", "8": "D" }, K: { "8": "A B C AC cC BC", "1025": "H" }, L: { "1025": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "8": "CC" }, P: { "1": "0 1 2 3 z", "8": "J y TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "8": "eD" }, R: { "8": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "MathML", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/maxlength.js
+var require_maxlength = __commonJS({
+  "node_modules/caniuse-lite/data/features/maxlength.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "16": "eC", "900": "K D E F" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "1025": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "900": "fC GC iC jC", "1025": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "IB kC", "900": "J MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F", "132": "B C vC wC xC yC AC cC zC BC" }, G: { "1": "0C dC 1C 2C 3C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC", "2052": "E 4C" }, H: { "132": "MD" }, I: { "1": "GC J PD QD dC RD SD", "16": "ND OD", "4097": "I" }, J: { "1": "D A" }, K: { "132": "A B C AC cC BC", "4097": "H" }, L: { "4097": "I" }, M: { "4097": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "4097": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1025": "gD hD" } }, B: 1, C: "maxlength attribute for input and textarea elements", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/media-fragments.js
+var require_media_fragments = __commonJS({
+  "node_modules/caniuse-lite/data/features/media-fragments.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "132": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB iC jC", "132": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "J IB K D E F A B C L M G N O", "132": "0 1 2 3 4 5 6 7 8 9 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB kC MC lC", "132": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "MC 0C dC 1C 2C 3C", "132": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC", "132": "I RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "132": "H" }, L: { "132": "I" }, M: { "132": "9B" }, N: { "132": "A B" }, O: { "132": "CC" }, P: { "2": "J TD", "132": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "132": "eD" }, R: { "132": "fD" }, S: { "132": "gD hD" } }, B: 2, C: "Media Fragments", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mediacapture-fromelement.js
+var require_mediacapture_fromelement = __commonJS({
+  "node_modules/caniuse-lite/data/features/mediacapture-fromelement.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB iC jC", "260": "4 5 6 7 8 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "324": "jB kB lB mB nB oB pB qB HC rB IC" }, E: { "2": "J IB K D E F A kC MC lC mC nC oC NC", "132": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC", "324": "UB VB WB XB YB ZB aB bB cB dB eB fB" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "260": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "132": "TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "260": "gD hD" } }, B: 5, C: "Media Capture from DOM Elements API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mediarecorder.js
+var require_mediarecorder = __commonJS({
+  "node_modules/caniuse-lite/data/features/mediarecorder.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB", "194": "fB gB" }, E: { "1": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC", "322": "L M BC pC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB vC wC xC yC AC cC zC BC", "194": "SB TB" }, G: { "1": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD", "578": "BD CD DD ED FD GD HD" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "MediaRecorder API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mediasource.js
+var require_mediasource = __commonJS({
+  "node_modules/caniuse-lite/data/features/mediasource.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "132": "B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "66": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB" }, D: { "1": "4 5 6 7 8 9 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N", "33": "1 2 3 KB LB MB NB OB", "66": "0 O P JB y z" }, E: { "1": "E F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC nC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD", "260": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I SD", "2": "GC J ND OD PD QD dC RD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Media Source Extensions", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/menu.js
+var require_menu = __commonJS({
+  "node_modules/caniuse-lite/data/features/menu.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "fC GC J IB K D iC jC", "132": "0 1 2 3 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T", "450": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "66": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "66": "TB UB VB WB XB YB ZB aB bB cB dB eB" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "450": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Context menu item (menuitem element)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/meta-theme-color.js
+var require_meta_theme_color = __commonJS({
+  "node_modules/caniuse-lite/data/features/meta-theme-color.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB", "132": "4 5 6 7 8 9 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "258": "XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC qC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "513": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "16": "TD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "theme-color Meta Tag", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/meter.js
+var require_meter = __commonJS({
+  "node_modules/caniuse-lite/data/features/meter.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "2": "F vC wC xC yC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "meter element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/midi.js
+var require_midi = __commonJS({
+  "node_modules/caniuse-lite/data/features/midi.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "1": "4 5 6 7 8 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "Web MIDI API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/minmaxwh.js
+var require_minmaxwh = __commonJS({
+  "node_modules/caniuse-lite/data/features/minmaxwh.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "8": "K eC", "129": "D", "257": "E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "CSS min/max-width/height", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mp3.js
+var require_mp3 = __commonJS({
+  "node_modules/caniuse-lite/data/features/mp3.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "132": "J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "2": "ND OD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "MP3 audio format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mpeg-dash.js
+var require_mpeg_dash = __commonJS({
+  "node_modules/caniuse-lite/data/features/mpeg-dash.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "C L M G N O P", "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "386": "0 z" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "Dynamic Adaptive Streaming over HTTP (MPEG-DASH)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mpeg4.js
+var require_mpeg4 = __commonJS({
+  "node_modules/caniuse-lite/data/features/mpeg4.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB y iC jC", "4": "0 1 2 3 z KB LB MB NB OB PB QB RB SB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "4": "GC J ND OD QD dC", "132": "PD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "MPEG-4/H.264 video format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/multibackgrounds.js
+var require_multibackgrounds = __commonJS({
+  "node_modules/caniuse-lite/data/features/multibackgrounds.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "2": "fC GC iC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS3 Multiple backgrounds", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mutation-events.js
+var require_mutation_events = __commonJS({
+  "node_modules/caniuse-lite/data/features/mutation-events.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "260": "F A B" }, B: { "66": "GB HB I", "132": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB", "260": "C L M G N O P" }, C: { "2": "fC GC J IB iC jC", "260": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "16": "J IB K D E F A B C L M", "66": "GB HB I 9B KC LC", "132": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB" }, E: { "16": "kC MC", "132": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "C zC BC", "2": "F vC wC xC yC", "16": "B AC cC", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "16": "MC 0C", "132": "E dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "16": "ND OD", "66": "I", "132": "GC J PD QD dC RD SD" }, J: { "132": "D A" }, K: { "1": "C BC", "2": "A", "16": "B AC cC", "132": "H" }, L: { "66": "I" }, M: { "260": "9B" }, N: { "260": "A B" }, O: { "132": "CC" }, P: { "132": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "132": "eD" }, R: { "132": "fD" }, S: { "260": "gD hD" } }, B: 7, C: "Mutation events", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/mutationobserver.js
+var require_mutationobserver = __commonJS({
+  "node_modules/caniuse-lite/data/features/mutationobserver.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E eC", "8": "F A" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L iC jC" }, D: { "1": "4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O", "33": "0 1 2 3 P JB y z KB" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "33": "K" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC ND OD PD", "8": "J QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "8": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Mutation Observer", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/namevalue-storage.js
+var require_namevalue_storage = __commonJS({
+  "node_modules/caniuse-lite/data/features/namevalue-storage.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "E F A B", "2": "eC", "8": "K D" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "4": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Web Storage - name/value pairs", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/native-filesystem-api.js
+var require_native_filesystem_api = __commonJS({
+  "node_modules/caniuse-lite/data/features/native-filesystem-api.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "194": "Q H R S T U", "260": "V W X Y Z a b c d e f g h i j k l m n" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B", "194": "4B 5B 6B 7B 8B Q H R S T U", "260": "V W X Y Z a b c d e f g h i j k l m n" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "a b c d e f g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC", "194": "sB tB uB vB wB xB yB zB 0B 1B", "260": "2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "File System Access API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/nav-timing.js
+var require_nav_timing = __commonJS({
+  "node_modules/caniuse-lite/data/features/nav-timing.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB", "33": "K D E F A B C" }, E: { "1": "E F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC nC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "J I QD dC RD SD", "2": "GC ND OD PD" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Navigation Timing API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/netinfo.js
+var require_netinfo = __commonJS({
+  "node_modules/caniuse-lite/data/features/netinfo.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "1028": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB", "1028": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB vC wC xC yC AC cC zC BC", "1028": "gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "ND RD SD", "132": "GC J OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "132": "J", "516": "TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "hD", "260": "gD" } }, B: 7, C: "Network Information API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/notifications.js
+var require_notifications = __commonJS({
+  "node_modules/caniuse-lite/data/features/notifications.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J", "36": "IB K D E F A B C L M G N O P JB y z" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC", "516": "TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC", "36": "I RD SD" }, J: { "1": "A", "2": "D" }, K: { "2": "A B C AC cC BC", "36": "H" }, L: { "257": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "36": "J", "130": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "130": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Web Notifications", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/object-entries.js
+var require_object_entries = __commonJS({
+  "node_modules/caniuse-lite/data/features/object-entries.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB iC jC" }, D: { "1": "4 5 6 7 8 9 mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D", "16": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Object.entries", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/object-observe.js
+var require_object_observe = __commonJS({
+  "node_modules/caniuse-lite/data/features/object-observe.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB", "2": "0 F B C G N O P JB y z VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "J", "2": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Object.observe data binding", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/object-values.js
+var require_object_values = __commonJS({
+  "node_modules/caniuse-lite/data/features/object-values.js"(exports2, module2) {
+    module2.exports = { A: { A: { "8": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "8": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB iC jC" }, D: { "1": "4 5 6 7 8 9 mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "8": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "8": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "8": "MD" }, I: { "1": "I", "8": "GC J ND OD PD QD dC RD SD" }, J: { "8": "D A" }, K: { "1": "H", "8": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "8": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "8": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Object.values method", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/objectrtc.js
+var require_objectrtc = __commonJS({
+  "node_modules/caniuse-lite/data/features/objectrtc.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "L M G N O P", "2": "4 5 6 7 8 9 C Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "Object RTC (ORTC) API for WebRTC", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/offline-apps.js
+var require_offline_apps = __commonJS({
+  "node_modules/caniuse-lite/data/features/offline-apps.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "F eC", "8": "K D E" }, B: { "1": "C L M G N O P Q H R S T", "2": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S iC jC", "2": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "4": "GC", "8": "fC" }, D: { "1": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T", "2": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M lC mC nC oC NC AC BC pC qC", "2": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B yC AC cC zC BC", "2": "F 3B 4B 5B 6B 7B 8B Q H R JC 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 vC", "8": "wC xC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID", "2": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J ND OD PD QD dC RD SD", "2": "I" }, J: { "1": "D A" }, K: { "1": "B C AC cC BC", "2": "A H" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "1": "gD", "2": "hD" } }, B: 7, C: "Offline web applications", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/offscreencanvas.js
+var require_offscreencanvas = __commonJS({
+  "node_modules/caniuse-lite/data/features/offscreencanvas.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB iC jC", "194": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l m n" }, D: { "1": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB", "322": "qB HC rB IC sB tB uB vB wB xB yB" }, E: { "1": "EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC", "516": "RC SC TC UC tC" }, F: { "1": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB vC wC xC yC AC cC zC BC", "322": "dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB" }, G: { "1": "EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC", "516": "RC SC TC UC LD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "194": "gD hD" } }, B: 1, C: "OffscreenCanvas", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ogg-vorbis.js
+var require_ogg_vorbis = __commonJS({
+  "node_modules/caniuse-lite/data/features/ogg-vorbis.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC", "260": "EC VC WC XC YC ZC aC FC bC uC", "388": "G qC rC OC PC CC sC DC QC RC SC TC UC tC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC", "260": "YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "A", "2": "D" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Ogg Vorbis audio format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ogv.js
+var require_ogv = __commonJS({
+  "node_modules/caniuse-lite/data/features/ogv.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "8": "F A B" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB", "8": "C L M G N", "194": "BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I iC jC", "2": "fC GC 9B KC LC gC hC" }, D: { "1": "0 1 2 3 4 5 6 7 8 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "194": "9 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l m n o xC yC AC cC zC BC", "2": "F vC wC", "194": "p q r s t u v w x" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "1": "9B" }, N: { "8": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Ogg/Theora video format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ol-reversed.js
+var require_ol_reversed = __commonJS({
+  "node_modules/caniuse-lite/data/features/ol-reversed.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G", "16": "N O P JB" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "16": "K" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC AC cC zC", "16": "C" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Reversed attribute of ordered lists", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/once-event-listener.js
+var require_once_event_listener = __commonJS({
+  "node_modules/caniuse-lite/data/features/once-event-listener.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iC jC" }, D: { "1": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: '"once" event listener option', D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/online-status.js
+var require_online_status = __commonJS({
+  "node_modules/caniuse-lite/data/features/online-status.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D eC", "260": "E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC", "516": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L" }, E: { "1": "IB K E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "1025": "D" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC", "4": "BC" }, G: { "1": "E dC 1C 2C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C", "1025": "3C" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "A", "132": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Online/offline status", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/opus.js
+var require_opus = __commonJS({
+  "node_modules/caniuse-lite/data/features/opus.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M iC jC" }, D: { "1": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB" }, E: { "2": "J IB K D E F A kC MC lC mC nC oC NC", "132": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC", "260": "YC", "516": "ZC aC FC bC uC" }, F: { "1": "0 1 2 3 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N O P JB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "132": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC", "260": "YC", "516": "ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Opus audio format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/orientation-sensor.js
+var require_orientation_sensor = __commonJS({
+  "node_modules/caniuse-lite/data/features/orientation-sensor.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB", "194": "qB HC rB IC sB tB uB vB wB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "Orientation Sensor", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/outline.js
+var require_outline = __commonJS({
+  "node_modules/caniuse-lite/data/features/outline.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D eC", "260": "E", "388": "F A B" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "388": "C L M" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC", "129": "BC", "260": "F B vC wC xC yC AC cC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "C H BC", "260": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "388": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS outline properties", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/pad-start-end.js
+var require_pad_start_end = __commonJS({
+  "node_modules/caniuse-lite/data/features/pad-start-end.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M" }, C: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB iC jC" }, D: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "String.prototype.padStart(), String.prototype.padEnd()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/page-transition-events.js
+var require_page_transition_events = __commonJS({
+  "node_modules/caniuse-lite/data/features/page-transition-events.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "PageTransitionEvent", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/pagevisibility.js
+var require_pagevisibility = __commonJS({
+  "node_modules/caniuse-lite/data/features/pagevisibility.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F iC jC", "33": "A B C L M G N O" }, D: { "1": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L", "33": "0 1 2 3 M G N O P JB y z KB LB MB NB OB PB QB" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC" }, F: { "1": "0 1 2 3 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B C vC wC xC yC AC cC zC", "33": "G N O P JB" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC", "33": "RD SD" }, J: { "1": "A", "2": "D" }, K: { "1": "H BC", "2": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "33": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Page Visibility", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/passive-event-listener.js
+var require_passive_event_listener = __commonJS({
+  "node_modules/caniuse-lite/data/features/passive-event-listener.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB iC jC" }, D: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "Passive event listeners", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/passkeys.js
+var require_passkeys = __commonJS({
+  "node_modules/caniuse-lite/data/features/passkeys.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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" }, C: { "1": "BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB iC jC" }, D: { "1": "4 5 6 7 8 9 r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "1": "QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC" }, F: { "1": "g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f vC wC xC yC AC cC zC BC" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 z", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "16": "y" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "Passkeys", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/passwordrules.js
+var require_passwordrules = __commonJS({
+  "node_modules/caniuse-lite/data/features/passwordrules.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "16": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC iC jC", "16": "LC gC hC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I", "16": "9B KC LC" }, E: { "1": "C L BC", "2": "J IB K D E F A B kC MC lC mC nC oC NC AC", "16": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB vC wC xC yC AC cC zC BC", "16": "lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "16": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "16": "I" }, J: { "2": "D", "16": "A" }, K: { "2": "A B C AC cC BC", "16": "H" }, L: { "16": "I" }, M: { "16": "9B" }, N: { "2": "A", "16": "B" }, O: { "16": "CC" }, P: { "2": "J TD UD", "16": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "Password Rules", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/path2d.js
+var require_path2d = __commonJS({
+  "node_modules/caniuse-lite/data/features/path2d.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L", "132": "M G N O P" }, C: { "1": "4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB iC jC", "132": "PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB" }, D: { "1": "4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB", "132": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC mC", "132": "E F nC" }, F: { "1": "nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 F B C G N O P JB y z vC wC xC yC AC cC zC BC", "132": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C", "16": "E", "132": "4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "132": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Path2D", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/payment-request.js
+var require_payment_request = __commonJS({
+  "node_modules/caniuse-lite/data/features/payment-request.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L", "322": "M", "8196": "G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB iC jC", "4162": "nB oB pB qB HC rB IC sB tB uB vB", "16452": "4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB", "194": "lB mB nB oB pB qB", "1090": "HC rB", "8196": "IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC", "514": "A B NC", "8196": "C AC" }, F: { "1": "wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB vC wC xC yC AC cC zC BC", "194": "YB ZB aB bB cB dB eB fB", "8196": "gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB" }, G: { "1": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C", "514": "7C 8C 9C", "8196": "AD BD" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "2049": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z ZD aD bD cD DC EC FC dD", "2": "J", "8196": "TD UD VD WD XD NC YD" }, Q: { "8196": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 2, C: "Payment Request API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/pdf-viewer.js
+var require_pdf_viewer = __commonJS({
+  "node_modules/caniuse-lite/data/features/pdf-viewer.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "132": "B" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "16": "C L M" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC AC cC zC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "16": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "16": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "Built-in PDF viewer", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/permissions-api.js
+var require_permissions_api = __commonJS({
+  "node_modules/caniuse-lite/data/features/permissions-api.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB iC jC" }, D: { "1": "4 5 6 7 8 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "1": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB vC wC xC yC AC cC zC BC" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Permissions API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/permissions-policy.js
+var require_permissions_policy = __commonJS({
+  "node_modules/caniuse-lite/data/features/permissions-policy.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "258": "Q H R S T U", "322": "V W", "388": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B iC jC", "258": "4 5 6 7 8 9 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC", "258": "rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U", "322": "V W", "388": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B kC MC lC mC nC oC NC", "258": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB vC wC xC yC AC cC zC BC", "258": "fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B", "322": "2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d", "388": "e f g h i j k l m n o p q r s t u v w x" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C", "258": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "258": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "388": "H" }, L: { "388": "I" }, M: { "258": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "J TD UD VD", "258": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "258": "eD" }, R: { "388": "fD" }, S: { "2": "gD", "258": "hD" } }, B: 5, C: "Permissions Policy", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/picture-in-picture.js
+var require_picture_in_picture = __commonJS({
+  "node_modules/caniuse-lite/data/features/picture-in-picture.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB iC jC", "132": "4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "1090": "xB", "1412": "1B", "1668": "yB zB 0B" }, D: { "1": "4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB", "2114": "zB" }, E: { "1": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC", "4100": "A B C L NC AC BC" }, F: { "1": "3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB vC wC xC yC AC cC zC BC", "8196": "VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B" }, G: { "1": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C", "4100": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "16388": "I" }, M: { "16388": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "Picture-in-Picture", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/picture.js
+var require_picture = __commonJS({
+  "node_modules/caniuse-lite/data/features/picture.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C" }, C: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB iC jC", "578": "SB TB UB VB" }, D: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB", "194": "VB" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 F B C G N O P JB y z vC wC xC yC AC cC zC BC", "322": "2" }, G: { "1": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Picture element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ping.js
+var require_ping = __commonJS({
+  "node_modules/caniuse-lite/data/features/ping.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N" }, C: { "2": "fC", "194": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "194": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "194": "gD hD" } }, B: 1, C: "Ping attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/png-alpha.js
+var require_png_alpha = __commonJS({
+  "node_modules/caniuse-lite/data/features/png-alpha.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "D E F A B", "2": "eC", "8": "K" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "PNG alpha transparency", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/pointer-events.js
+var require_pointer_events = __commonJS({
+  "node_modules/caniuse-lite/data/features/pointer-events.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "2": "fC GC iC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 7, C: "CSS pointer-events (for HTML)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/pointerlock.js
+var require_pointerlock = __commonJS({
+  "node_modules/caniuse-lite/data/features/pointerlock.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C" }, C: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L iC jC", "33": "0 1 2 3 M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB" }, D: { "1": "4 5 6 7 8 9 VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G", "33": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB", "66": "N O P JB y z" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 G N O P JB y z" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "16": "H" }, L: { "2": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "16": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "16": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Pointer Lock API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/portals.js
+var require_portals = __commonJS({
+  "node_modules/caniuse-lite/data/features/portals.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P Q H R S T", "322": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "450": "U V W X Y" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B", "194": "5B 6B 7B 8B Q H R S T", "322": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "450": "U" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC", "194": "sB tB uB vB wB xB yB zB 0B 1B 2B", "322": "3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "450": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Portals", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/prefers-color-scheme.js
+var require_prefers_color_scheme = __commonJS({
+  "node_modules/caniuse-lite/data/features/prefers-color-scheme.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB iC jC" }, D: { "1": "4 5 6 7 8 9 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B" }, E: { "1": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC" }, F: { "1": "sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC" }, G: { "1": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "prefers-color-scheme media query", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/prefers-reduced-motion.js
+var require_prefers_reduced_motion = __commonJS({
+  "node_modules/caniuse-lite/data/features/prefers-reduced-motion.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB iC jC" }, D: { "1": "4 5 6 7 8 9 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "prefers-reduced-motion media query", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/progress.js
+var require_progress = __commonJS({
+  "node_modules/caniuse-lite/data/features/progress.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "2": "F vC wC xC yC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C", "132": "3C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "progress element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/promise-finally.js
+var require_promise_finally = __commonJS({
+  "node_modules/caniuse-lite/data/features/promise-finally.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O" }, C: { "1": "4 5 6 7 8 9 qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB iC jC" }, D: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC" }, F: { "1": "iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB vC wC xC yC AC cC zC BC" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "Promise.prototype.finally", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/promises.js
+var require_promises = __commonJS({
+  "node_modules/caniuse-lite/data/features/promises.js"(exports2, module2) {
+    module2.exports = { A: { A: { "8": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "4": "LB MB", "8": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB iC jC" }, D: { "1": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "4": "QB", "8": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB" }, E: { "1": "E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J IB K D kC MC lC mC" }, F: { "1": "0 1 2 3 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "4": "JB", "8": "F B C G N O P vC wC xC yC AC cC zC BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "MC 0C dC 1C 2C 3C" }, H: { "8": "MD" }, I: { "1": "I SD", "8": "GC J ND OD PD QD dC RD" }, J: { "8": "D A" }, K: { "1": "H", "8": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "8": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Promises", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/proximity.js
+var require_proximity = __commonJS({
+  "node_modules/caniuse-lite/data/features/proximity.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Proximity API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/proxy.js
+var require_proxy = __commonJS({
+  "node_modules/caniuse-lite/data/features/proxy.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O iC jC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P WB XB YB ZB aB bB cB dB eB fB gB", "66": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "3 F B C KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC", "66": "0 1 2 G N O P JB y z" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Proxy object", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/publickeypinning.js
+var require_publickeypinning = __commonJS({
+  "node_modules/caniuse-lite/data/features/publickeypinning.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B", "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB", "2": "F B C G N O P JB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "4": "1", "16": "0 2 y z" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "J TD UD VD WD XD NC", "2": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "gD", "2": "hD" } }, B: 6, C: "HTTP Public Key Pinning", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/push-api.js
+var require_push_api = __commonJS({
+  "node_modules/caniuse-lite/data/features/push-api.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "O P", "2": "C L M G N", "257": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB iC jC", "257": "4 5 6 7 8 9 cB eB fB gB hB iB jB lB mB nB oB pB qB HC IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "1281": "dB kB rB" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB", "257": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "388": "cB dB eB fB gB hB" }, E: { "2": "J IB K kC MC lC mC", "514": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC", "2564": "QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB vC wC xC yC AC cC zC BC", "16": "VB WB XB YB ZB", "257": "aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC", "4100": "TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "257": "gD hD" } }, B: 5, C: "Push API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/queryselector.js
+var require_queryselector = __commonJS({
+  "node_modules/caniuse-lite/data/features/queryselector.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "eC", "8": "K D", "132": "E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "8": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 wC xC yC AC cC zC BC", "8": "F vC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "querySelector/querySelectorAll", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/readonly-attr.js
+var require_readonly_attr = __commonJS({
+  "node_modules/caniuse-lite/data/features/readonly-attr.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B", "16": "eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "16": "fC GC iC jC" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F vC", "132": "B C wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC 1C 2C" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "H", "132": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "257": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "readonly attribute of input and textarea elements", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/referrer-policy.js
+var require_referrer_policy = __commonJS({
+  "node_modules/caniuse-lite/data/features/referrer-policy.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "132": "B" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "132": "C L M G N O P", "513": "Q H R S T" }, C: { "1": "W X Y Z a", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB iC jC", "513": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V", "2049": "4 5 6 7 8 9 b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB y", "260": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB", "513": "IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T" }, E: { "2": "J IB K D kC MC lC mC", "132": "E F A B nC oC NC", "513": "C AC BC", "1025": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "1537": "L M pC qC" }, F: { "1": "3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "513": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B" }, G: { "2": "MC 0C dC 1C 2C 3C", "132": "E 4C 5C 6C 7C 8C 9C AD", "513": "BD CD DD ED", "1025": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "1537": "FD GD HD ID" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2049": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J", "513": "TD UD VD WD XD NC YD ZD aD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "513": "gD hD" } }, B: 4, C: "Referrer Policy", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/registerprotocolhandler.js
+var require_registerprotocolhandler = __commonJS({
+  "node_modules/caniuse-lite/data/features/registerprotocolhandler.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "129": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC" }, D: { "2": "J IB K D E F A B C", "129": "0 1 2 3 4 5 6 7 8 9 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B vC wC xC yC AC cC", "129": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D", "129": "A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "Custom protocol handling", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/rel-noopener.js
+var require_rel_noopener = __commonJS({
+  "node_modules/caniuse-lite/data/features/rel-noopener.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB iC jC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "rel=noopener", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/rel-noreferrer.js
+var require_rel_noreferrer = __commonJS({
+  "node_modules/caniuse-lite/data/features/rel-noreferrer.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "132": "B" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "16": "C" }, C: { "1": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M G" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: 'Link type "noreferrer"', D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/rellist.js
+var require_rellist = __commonJS({
+  "node_modules/caniuse-lite/data/features/rellist.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N", "132": "O" }, C: { "1": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB iC jC" }, D: { "1": "4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "132": "iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E kC MC lC mC nC" }, F: { "1": "kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB vC wC xC yC AC cC zC BC", "132": "VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "132": "TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "relList (DOMTokenList)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/rem.js
+var require_rem = __commonJS({
+  "node_modules/caniuse-lite/data/features/rem.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E eC", "132": "F A" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "2": "fC GC iC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F B vC wC xC yC AC cC" }, G: { "1": "E 0C dC 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC", "260": "1C" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "C H BC", "2": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "rem (root em) units", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/requestanimationframe.js
+var require_requestanimationframe = __commonJS({
+  "node_modules/caniuse-lite/data/features/requestanimationframe.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "33": "0 B C L M G N O P JB y z", "164": "J IB K D E F A" }, D: { "1": "2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F", "33": "0 1", "164": "P JB y z", "420": "A B C L M G N O" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "33": "K" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "33": "2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "requestAnimationFrame", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/requestidlecallback.js
+var require_requestidlecallback = __commonJS({
+  "node_modules/caniuse-lite/data/features/requestidlecallback.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB iC jC", "194": "lB mB" }, D: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB" }, E: { "1": "uC", "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC", "322": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC" }, F: { "1": "SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD", "322": "GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "requestIdleCallback", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/resizeobserver.js
+var require_resizeobserver = __commonJS({
+  "node_modules/caniuse-lite/data/features/resizeobserver.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB iC jC" }, D: { "1": "4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB", "194": "mB nB oB pB qB HC rB IC sB tB" }, E: { "1": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC BC", "66": "L" }, F: { "1": "kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB vC wC xC yC AC cC zC BC", "194": "ZB aB bB cB dB eB fB gB hB iB jB" }, G: { "1": "GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "Resize Observer", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/resource-timing.js
+var require_resource_timing = __commonJS({
+  "node_modules/caniuse-lite/data/features/resource-timing.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB iC jC", "194": "PB QB RB SB" }, D: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "260": "B" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Resource Timing (basic support)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/rest-parameters.js
+var require_rest_parameters = __commonJS({
+  "node_modules/caniuse-lite/data/features/rest-parameters.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M iC jC" }, D: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB", "194": "cB dB eB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB vC wC xC yC AC cC zC BC", "194": "PB QB RB" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Rest parameters", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/rtcpeerconnection.js
+var require_rtcpeerconnection = __commonJS({
+  "node_modules/caniuse-lite/data/features/rtcpeerconnection.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M", "260": "G N O P" }, C: { "1": "4 5 6 7 8 9 cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "33": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB" }, D: { "1": "4 5 6 7 8 9 oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 J IB K D E F A B C L M G N O P JB y z", "33": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC" }, F: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N O vC wC xC yC AC cC zC BC", "33": "0 1 2 3 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D", "130": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "33": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "WebRTC Peer-to-peer connections", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ruby.js
+var require_ruby = __commonJS({
+  "node_modules/caniuse-lite/data/features/ruby.js"(exports2, module2) {
+    module2.exports = { A: { A: { "4": "K D E eC", "132": "F A B" }, B: { "4": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "8": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB iC jC" }, D: { "4": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "8": "J" }, E: { "4": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J kC MC" }, F: { "4": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "8": "F B C vC wC xC yC AC cC zC BC" }, G: { "4": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "MC 0C dC" }, H: { "8": "MD" }, I: { "4": "GC J I QD dC RD SD", "8": "ND OD PD" }, J: { "4": "A", "8": "D" }, K: { "4": "H", "8": "A B C AC cC BC" }, L: { "4": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "4": "CC" }, P: { "4": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "4": "eD" }, R: { "4": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Ruby annotation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/run-in.js
+var require_run_in = __commonJS({
+  "node_modules/caniuse-lite/data/features/run-in.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "E F A B", "2": "K D eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB", "2": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K lC", "2": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "mC", "129": "J kC MC" }, F: { "1": "F B C G N O P vC wC xC yC AC cC zC BC", "2": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "0C dC 1C 2C 3C", "2": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "129": "MC" }, H: { "1": "MD" }, I: { "1": "GC J ND OD PD QD dC RD", "2": "I SD" }, J: { "1": "D A" }, K: { "1": "A B C AC cC BC", "2": "H" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "1": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "display: run-in", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js
+var require_same_site_cookie_attribute = __commonJS({
+  "node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "388": "B" }, B: { "1": "P Q H R S T U", "2": "C L M G", "129": "N O", "513": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC iC jC" }, D: { "1": "jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "513": "4 5 6 7 8 9 H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC AC", "2052": "M qC", "3076": "C L BC pC" }, F: { "1": "XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB vC wC xC yC AC cC zC BC", "513": "1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD", "2052": "BD CD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "513": "H" }, L: { "513": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "16": "eD" }, R: { "513": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "'SameSite' cookie attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/screen-orientation.js
+var require_screen_orientation = __commonJS({
+  "node_modules/caniuse-lite/data/features/screen-orientation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "164": "B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "36": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O iC jC", "36": "0 1 2 3 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB" }, D: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A", "36": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "16": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "Screen Orientation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/script-async.js
+var require_script_async = __commonJS({
+  "node_modules/caniuse-lite/data/features/script-async.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "2": "fC GC iC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "132": "IB" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "async attribute for external scripts", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/script-defer.js
+var require_script_defer = __commonJS({
+  "node_modules/caniuse-lite/data/features/script-defer.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "132": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "257": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "defer attribute for external scripts", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/scrollintoview.js
+var require_scrollintoview = __commonJS({
+  "node_modules/caniuse-lite/data/features/scrollintoview.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D eC", "132": "E F A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "132": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "132": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB iC jC" }, D: { "1": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC", "132": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "1": "gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F vC wC xC yC", "16": "B AC cC", "132": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB zC BC" }, G: { "1": "DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC", "132": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "1": "I", "16": "ND OD", "132": "GC J PD QD dC RD SD" }, J: { "132": "D A" }, K: { "1": "H", "132": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "132": "J TD UD VD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 5, C: "scrollIntoView", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js
+var require_scrollintoviewifneeded = __commonJS({
+  "node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Element.scrollIntoViewIfNeeded()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/sdch.js
+var require_sdch = __commonJS({
+  "node_modules/caniuse-lite/data/features/sdch.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB", "2": "4 5 6 7 8 9 HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B", "2": "F B C 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "SDCH Accept-Encoding/Content-Encoding", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/selection-api.js
+var require_selection_api = __commonJS({
+  "node_modules/caniuse-lite/data/features/selection-api.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "16": "eC", "260": "K D E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "132": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB iC jC", "2180": "bB cB dB eB fB gB hB iB jB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "132": "F B C vC wC xC yC AC cC zC BC" }, G: { "16": "dC", "132": "MC 0C", "516": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "16": "GC J ND OD PD QD", "1025": "dC" }, J: { "1": "A", "16": "D" }, K: { "1": "H", "16": "A B C AC cC", "132": "BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "16": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2180": "gD" } }, B: 5, C: "Selection API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/selectlist.js
+var require_selectlist = __commonJS({
+  "node_modules/caniuse-lite/data/features/selectlist.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f", "194": "4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f", "194": "4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC vC wC xC yC AC cC zC BC", "194": "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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "194": "H" }, L: { "194": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Selectlist - Customizable select element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/server-timing.js
+var require_server_timing = __commonJS({
+  "node_modules/caniuse-lite/data/features/server-timing.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB iC jC" }, D: { "1": "4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC", "196": "rB IC sB tB", "324": "uB" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC", "516": "L M G BC pC qC rC OC PC CC sC DC QC RC SC" }, F: { "1": "kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB vC wC xC yC AC cC zC BC" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "Server Timing", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/serviceworkers.js
+var require_serviceworkers = __commonJS({
+  "node_modules/caniuse-lite/data/features/serviceworkers.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M", "322": "G N" }, C: { "1": "4 5 6 7 8 9 cB eB fB gB hB iB jB lB mB nB oB pB qB HC IC sB tB uB vB wB xB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB iC jC", "194": "RB SB TB UB VB WB XB YB ZB aB bB", "513": "dB kB rB yB" }, D: { "1": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB", "4": "YB ZB aB bB cB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC" }, F: { "1": "QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB vC wC xC yC AC cC zC BC", "4": "LB MB NB OB PB" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "4": "I" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "Service Workers", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/setimmediate.js
+var require_setimmediate = __commonJS({
+  "node_modules/caniuse-lite/data/features/setimmediate.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "C L M G N O P", "2": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "1": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Efficient Script Yielding: setImmediate()", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/shadowdom.js
+var require_shadowdom = __commonJS({
+  "node_modules/caniuse-lite/data/features/shadowdom.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "Q", "2": "4 5 6 7 8 9 C L M G N O P H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "66": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB" }, D: { "1": "TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q", "2": "0 1 2 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "33": "3 KB LB MB NB OB PB QB RB SB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB", "2": "F B C xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "33": "G N O P JB y z" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC", "33": "RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "TD UD VD WD XD NC YD ZD", "2": "0 1 2 3 y z aD bD cD DC EC FC dD", "33": "J" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "1": "gD", "2": "hD" } }, B: 7, C: "Shadow DOM (deprecated V0 spec)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/shadowdomv1.js
+var require_shadowdomv1 = __commonJS({
+  "node_modules/caniuse-lite/data/features/shadowdomv1.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB iC jC", "322": "qB", "578": "HC rB IC sB" }, D: { "1": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB" }, E: { "1": "A B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC" }, F: { "1": "YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB vC wC xC yC AC cC zC BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C", "132": "7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "4": "TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "Shadow DOM (V1)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/sharedarraybuffer.js
+var require_sharedarraybuffer = __commonJS({
+  "node_modules/caniuse-lite/data/features/sharedarraybuffer.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "Q H R S T U V W X Y Z", "2": "C L M G", "194": "N O P", "513": "4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB iC jC", "194": "pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B", "450": "4B 5B 6B 7B 8B", "513": "4 5 6 7 8 9 Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC", "194": "rB IC sB tB uB vB wB xB", "513": "4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A kC MC lC mC nC oC", "194": "B C L M G NC AC BC pC qC rC", "513": "OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB vC wC xC yC AC cC zC BC", "194": "fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB", "513": "8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C", "194": "8C 9C AD BD CD DD ED FD GD HD ID JD", "513": "OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "513": "H" }, L: { "513": "I" }, M: { "513": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "J TD UD VD WD XD NC YD ZD aD bD", "513": "0 1 2 3 y z cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "513": "fD" }, S: { "2": "gD", "513": "hD" } }, B: 6, C: "Shared Array Buffer", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/sharedworkers.js
+var require_sharedworkers = __commonJS({
+  "node_modules/caniuse-lite/data/features/sharedworkers.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "IB K lC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J D E F A B C L M G kC MC mC nC oC NC AC BC pC qC rC OC PC CC sC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "2": "F vC wC xC" }, G: { "1": "1C 2C DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "B C AC cC BC", "2": "H", "16": "A" }, L: { "2": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "J", "2": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Shared Web Workers", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/sni.js
+var require_sni = __commonJS({
+  "node_modules/caniuse-lite/data/features/sni.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K eC", "132": "D E" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Server Name Indication", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/spdy.js
+var require_spdy = __commonJS({
+  "node_modules/caniuse-lite/data/features/spdy.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F A eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "2": "4 5 6 7 8 9 fC GC J IB K D E F A B C jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "2": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "E F A B C oC NC AC", "2": "J IB K D kC MC lC mC nC", "129": "L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB aB cB BC", "2": "F B C YB ZB bB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD", "2": "MC 0C dC 1C 2C 3C", "257": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J QD dC RD SD", "2": "I ND OD PD" }, J: { "2": "D A" }, K: { "1": "BC", "2": "A B C H AC cC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "1": "B", "2": "A" }, O: { "2": "CC" }, P: { "1": "J", "2": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "gD", "2": "hD" } }, B: 7, C: "SPDY protocol", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/speech-recognition.js
+var require_speech_recognition = __commonJS({
+  "node_modules/caniuse-lite/data/features/speech-recognition.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "514": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "322": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 J IB K D E F A B C L M G N O P JB y z", "164": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC", "1060": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB vC wC xC yC AC cC zC BC", "514": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD", "1060": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "164": "H" }, L: { "164": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "164": "CC" }, P: { "164": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "164": "eD" }, R: { "164": "fD" }, S: { "322": "gD hD" } }, B: 7, C: "Speech Recognition API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/speech-synthesis.js
+var require_speech_synthesis = __commonJS({
+  "node_modules/caniuse-lite/data/features/speech-synthesis.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "M G N O P", "2": "C L", "257": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB iC jC", "194": "PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB" }, D: { "1": "RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB", "257": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC" }, F: { "1": "LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB", "2": "0 1 2 3 F B C G N O P JB y z KB vC wC xC yC AC cC zC BC", "257": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "2": "fD" }, S: { "1": "gD hD" } }, B: 7, C: "Speech Synthesis API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/spellcheck-attribute.js
+var require_spellcheck_attribute = __commonJS({
+  "node_modules/caniuse-lite/data/features/spellcheck-attribute.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "4": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "4": "MD" }, I: { "4": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "A", "4": "D" }, K: { "4": "A B C H AC cC BC" }, L: { "4": "I" }, M: { "4": "9B" }, N: { "4": "A B" }, O: { "4": "CC" }, P: { "4": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "4": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "Spellcheck attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/sql-storage.js
+var require_sql_storage = __commonJS({
+  "node_modules/caniuse-lite/data/features/sql-storage.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "Q H R S T U V W X Y Z a b c d e f g h i j", "2": "C L M G N O P DB EB FB GB HB I", "129": "k l m n o p q r s", "385": "4 5 6 7 8 9 t u v w x AB BB CB" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f g h i j", "2": "DB EB FB GB HB I 9B KC LC", "129": "k l m n o p q r s", "385": "4 5 6 7 t u v w x", "897": "8 9 AB BB CB" }, E: { "1": "J IB K D E F A B C kC MC lC mC nC oC NC AC BC", "2": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z xC yC AC cC zC BC", "2": "F t u v w x vC wC", "257": "a b c d e f g h i j k l m n o p q r s" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD", "2": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J ND OD PD QD dC RD SD", "2": "I" }, J: { "1": "D A" }, K: { "1": "B C AC cC BC", "2": "A", "257": "H" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Web SQL Database", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/srcset.js
+var require_srcset = __commonJS({
+  "node_modules/caniuse-lite/data/features/srcset.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "260": "C", "514": "L M G" }, C: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB iC jC", "194": "QB RB SB TB UB VB" }, D: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB", "260": "SB TB UB VB" }, E: { "2": "J IB K D kC MC lC mC", "260": "E nC", "1028": "F A oC NC", "3076": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N O P JB y vC wC xC yC AC cC zC BC", "260": "0 1 2 z" }, G: { "2": "MC 0C dC 1C 2C 3C", "260": "E 4C", "1028": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Srcset and sizes attributes", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/stream.js
+var require_stream = __commonJS({
+  "node_modules/caniuse-lite/data/features/stream.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N iC jC", "129": "UB VB WB XB YB ZB", "420": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB" }, D: { "1": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB y", "420": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC" }, F: { "1": "YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B G N O vC wC xC yC AC cC zC", "420": "0 1 2 3 C P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "513": "GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "1537": "9C AD BD CD DD ED FD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D", "420": "A" }, K: { "1": "H", "2": "A B AC cC", "420": "C BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "420": "J TD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 4, C: "getUserMedia/Stream API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/streams.js
+var require_streams = __commonJS({
+  "node_modules/caniuse-lite/data/features/streams.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "130": "B" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "16": "C L", "260": "M G", "1028": "Q H R S T U V W X", "5124": "N O P" }, C: { "1": "4 5 6 7 8 9 l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB iC jC", "5124": "j k", "7172": "vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i", "7746": "pB qB HC rB IC sB tB uB" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB", "260": "kB lB mB nB oB pB qB", "1028": "HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X" }, E: { "2": "J IB K D E F kC MC lC mC nC oC", "1028": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "3076": "A B C L M NC AC BC pC" }, F: { "1": "6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB vC wC xC yC AC cC zC BC", "260": "XB YB ZB aB bB cB dB", "1028": "eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C", "16": "7C", "1028": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z cD DC EC FC dD", "2": "J TD UD", "1028": "VD WD XD NC YD ZD aD bD" }, Q: { "1028": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 1, C: "Streams", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/stricttransportsecurity.js
+var require_stricttransportsecurity = __commonJS({
+  "node_modules/caniuse-lite/data/features/stricttransportsecurity.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A eC", "129": "B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F B vC wC xC yC AC cC zC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Strict Transport Security", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/style-scoped.js
+var require_style_scoped = __commonJS({
+  "node_modules/caniuse-lite/data/features/style-scoped.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB", "2": "4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "322": "nB oB pB qB HC rB" }, D: { "2": "4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "194": "0 1 2 3 y z KB LB MB NB OB PB QB RB SB TB UB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "gD", "2": "hD" } }, B: 7, C: "Scoped attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/subresource-bundling.js
+var require_subresource_bundling = __commonJS({
+  "node_modules/caniuse-lite/data/features/subresource-bundling.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f g h i j k l m" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Subresource Loading with Web Bundles", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/subresource-integrity.js
+var require_subresource_integrity = __commonJS({
+  "node_modules/caniuse-lite/data/features/subresource-integrity.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N" }, C: { "1": "4 5 6 7 8 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB iC jC" }, D: { "1": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC" }, F: { "1": "QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB vC wC xC yC AC cC zC BC" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "194": "9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Subresource Integrity", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/svg-css.js
+var require_svg_css = __commonJS({
+  "node_modules/caniuse-lite/data/features/svg-css.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "516": "C L M G" }, C: { "1": "2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "260": "0 1 J IB K D E F A B C L M G N O P JB y z" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "4": "J" }, E: { "1": "IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC", "132": "J MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "132": "MC 0C" }, H: { "260": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "D A" }, K: { "1": "H", "260": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "SVG in CSS backgrounds", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/svg-filters.js
+var require_svg_filters = __commonJS({
+  "node_modules/caniuse-lite/data/features/svg-filters.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J", "4": "IB K D" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "SVG filters", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/svg-fonts.js
+var require_svg_fonts = __commonJS({
+  "node_modules/caniuse-lite/data/features/svg-fonts.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "F A B eC", "8": "K D E" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB", "2": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "130": "WB XB YB ZB aB bB cB dB eB fB gB hB iB" }, E: { "1": "J IB K D E F A B C L M G MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC" }, F: { "1": "0 1 2 F B C G N O P JB y z vC wC xC yC AC cC zC BC", "2": "VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "130": "3 KB LB MB NB OB PB QB RB SB TB UB" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "258": "MD" }, I: { "1": "GC J QD dC RD SD", "2": "I ND OD PD" }, J: { "1": "D A" }, K: { "1": "A B C AC cC BC", "2": "H" }, L: { "130": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "J", "130": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "130": "fD" }, S: { "2": "gD hD" } }, B: 2, C: "SVG fonts", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/svg-fragment.js
+var require_svg_fragment = __commonJS({
+  "node_modules/caniuse-lite/data/features/svg-fragment.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "260": "F A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M iC jC" }, D: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB", "132": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D F A B kC MC lC mC oC NC", "132": "E nC" }, F: { "1": "VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "0 G N O P JB y z", "4": "B C wC xC yC AC cC zC", "16": "F vC", "132": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C 5C 6C 7C 8C 9C", "132": "E 4C" }, H: { "1": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D", "132": "A" }, K: { "1": "H BC", "4": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "132": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "SVG fragment identifiers", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/svg-html.js
+var require_svg_html = __commonJS({
+  "node_modules/caniuse-lite/data/features/svg-html.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "388": "F A B" }, B: { "4": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC", "4": "GC" }, D: { "4": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "kC MC", "4": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "4": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "4": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC", "4": "I RD SD" }, J: { "1": "A", "2": "D" }, K: { "4": "A B C H AC cC BC" }, L: { "4": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "4": "CC" }, P: { "4": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "4": "eD" }, R: { "4": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "SVG effects for HTML", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/svg-html5.js
+var require_svg_html5 = __commonJS({
+  "node_modules/caniuse-lite/data/features/svg-html5.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "8": "K D E", "129": "F A B" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "129": "C L M G N" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "8": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "8": "J IB K" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "J IB kC MC", "129": "K D E lC mC nC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "B yC AC cC", "8": "F vC wC xC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "8": "MC 0C dC", "129": "E 1C 2C 3C 4C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "ND OD PD", "129": "GC J QD dC" }, J: { "1": "A", "129": "D" }, K: { "1": "C H BC", "8": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "129": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Inline SVG in HTML5", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/svg-img.js
+var require_svg_img = __commonJS({
+  "node_modules/caniuse-lite/data/features/svg-img.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "4 5 6 7 8 9 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC", "4": "MC", "132": "J IB K D E lC mC nC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "132": "E MC 0C dC 1C 2C 3C 4C" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "ND OD PD", "132": "GC J QD dC" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "SVG in HTML img element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/svg-smil.js
+var require_svg_smil = __commonJS({
+  "node_modules/caniuse-lite/data/features/svg-smil.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "8": "K D E F A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "8": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "8": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "4": "J" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "kC MC", "132": "J IB lC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "132": "MC 0C dC 1C" }, H: { "2": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "8": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "SVG SMIL animation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/svg.js
+var require_svg = __commonJS({
+  "node_modules/caniuse-lite/data/features/svg.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "8": "K D E", "772": "F A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "513": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "4": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "4": "kC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "I RD SD", "2": "ND OD PD", "132": "GC J QD dC" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "257": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "SVG (basic support)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/sxg.js
+var require_sxg = __commonJS({
+  "node_modules/caniuse-lite/data/features/sxg.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B", "132": "1B 2B" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "Signed HTTP Exchanges (SXG)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/tabindex-attr.js
+var require_tabindex_attr = __commonJS({
+  "node_modules/caniuse-lite/data/features/tabindex-attr.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "D E F A B", "16": "K eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "16": "fC GC iC jC", "129": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "16": "J IB kC MC", "257": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "16": "F" }, G: { "769": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "16": "MD" }, I: { "16": "GC J I ND OD PD QD dC RD SD" }, J: { "16": "D A" }, K: { "1": "H", "16": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "16": "A B" }, O: { "1": "CC" }, P: { "16": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "129": "gD hD" } }, B: 1, C: "tabindex global attribute", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/template-literals.js
+var require_template_literals = __commonJS({
+  "node_modules/caniuse-lite/data/features/template-literals.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 L M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "16": "C" }, C: { "1": "4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB iC jC" }, D: { "1": "4 5 6 7 8 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB" }, E: { "1": "A B L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC", "129": "C" }, F: { "1": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB vC wC xC yC AC cC zC BC" }, G: { "1": "5C 6C 7C 8C 9C AD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C", "129": "BD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "ES6 Template Literals (Template Strings)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/template.js
+var require_template = __commonJS({
+  "node_modules/caniuse-lite/data/features/template.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C", "388": "L M" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z", "132": "KB LB MB NB OB PB QB RB SB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D kC MC lC", "388": "E nC", "514": "mC" }, F: { "1": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "132": "G N O P JB y z" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C", "388": "E 4C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "HTML templates", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/temporal.js
+var require_temporal = __commonJS({
+  "node_modules/caniuse-lite/data/features/temporal.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "Temporal", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/testfeat.js
+var require_testfeat = __commonJS({
+  "node_modules/caniuse-lite/data/features/testfeat.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E A B eC", "16": "F" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "16": "J IB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "B C" }, E: { "2": "J K kC MC lC", "16": "IB D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC cC zC BC", "16": "AC" }, G: { "2": "MC 0C dC 1C 2C", "16": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD QD dC RD SD", "16": "PD" }, J: { "2": "A", "16": "D" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Test feature - updated", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/text-stroke.js
+var require_text_stroke = __commonJS({
+  "node_modules/caniuse-lite/data/features/text-stroke.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M", "33": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "161": "G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB iC jC", "161": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "450": "gB" }, D: { "33": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "33": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "33": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "33": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "36": "MC" }, H: { "2": "MD" }, I: { "2": "GC", "33": "J I ND OD PD QD dC RD SD" }, J: { "33": "D A" }, K: { "2": "A B C AC cC BC", "33": "H" }, L: { "33": "I" }, M: { "161": "9B" }, N: { "2": "A B" }, O: { "33": "CC" }, P: { "33": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "33": "eD" }, R: { "33": "fD" }, S: { "161": "gD hD" } }, B: 7, C: "CSS text-stroke and text-fill", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/textcontent.js
+var require_textcontent = __commonJS({
+  "node_modules/caniuse-lite/data/features/textcontent.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "16": "F" }, G: { "1": "E 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Node.textContent", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/textencoder.js
+var require_textencoder = __commonJS({
+  "node_modules/caniuse-lite/data/features/textencoder.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P iC jC", "132": "JB" }, D: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "TextEncoder & TextDecoder", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/tls1-1.js
+var require_tls1_1 = __commonJS({
+  "node_modules/caniuse-lite/data/features/tls1-1.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D eC", "66": "E F A" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB", "2": "0 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "66": "1", "129": "yB zB 0B 1B 2B 3B 4B 5B 6B 7B", "388": "4 5 6 7 8 9 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "0 1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T", "2": "J IB K D E F A B C L M G N O P JB y z", "1540": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "D E F A B C L nC oC NC AC BC", "2": "J IB K kC MC lC mC", "513": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B BC", "2": "F B C vC wC xC yC AC cC zC", "1540": "3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "1": "A", "2": "D" }, K: { "1": "H BC", "2": "A B C AC cC" }, L: { "1": "I" }, M: { "129": "9B" }, N: { "1": "B", "66": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "TLS 1.1", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/tls1-2.js
+var require_tls1_2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/tls1-2.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D eC", "66": "E F A" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "66": "2 3 KB" }, D: { "1": "4 5 6 7 8 9 NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC" }, F: { "1": "0 1 2 3 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F G vC", "66": "B C wC xC yC AC cC zC BC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "1": "A", "2": "D" }, K: { "1": "H BC", "2": "A B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "66": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "TLS 1.2", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/tls1-3.js
+var require_tls1_3 = __commonJS({
+  "node_modules/caniuse-lite/data/features/tls1-3.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB iC jC", "132": "rB IC sB", "450": "jB kB lB mB nB oB pB qB HC" }, D: { "1": "4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB", "706": "mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB" }, E: { "1": "M G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC", "1028": "L BC pC" }, F: { "1": "pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB vC wC xC yC AC cC zC BC", "706": "mB nB oB" }, G: { "1": "CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 6, C: "TLS 1.3", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/touch.js
+var require_touch = __commonJS({
+  "node_modules/caniuse-lite/data/features/touch.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "8": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "578": "C L M G N O P" }, C: { "1": "0 1 2 4 5 6 7 8 9 P JB y z kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "4": "J IB K D E F A B C L M G N O", "194": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB y z" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "8": "A", "260": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 2, C: "Touch events", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/trusted-types.js
+var require_trusted_types = __commonJS({
+  "node_modules/caniuse-lite/data/features/trusted-types.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Trusted Types for DOM manipulation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/ttf.js
+var require_ttf = __commonJS({
+  "node_modules/caniuse-lite/data/features/ttf.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "132": "F A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 wC xC yC AC cC zC BC", "2": "F vC" }, G: { "1": "E dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C" }, H: { "2": "MD" }, I: { "1": "GC J I OD PD QD dC RD SD", "2": "ND" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "TTF/OTF - TrueType and OpenType font support", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/typedarrays.js
+var require_typedarrays = __commonJS({
+  "node_modules/caniuse-lite/data/features/typedarrays.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "B", "2": "K D E F eC", "132": "A" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC", "260": "lC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F B vC wC xC yC AC cC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C", "260": "dC" }, H: { "1": "MD" }, I: { "1": "J I QD dC RD SD", "2": "GC ND OD PD" }, J: { "1": "A", "2": "D" }, K: { "1": "C H BC", "2": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "132": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Typed Arrays", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/u2f.js
+var require_u2f = __commonJS({
+  "node_modules/caniuse-lite/data/features/u2f.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P p q r s t u v w x AB BB CB DB EB FB GB HB I", "513": "Q H R S T U V W X Y Z a b c d e f g h i j k l m n o" }, C: { "1": "xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB x AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "322": "fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB v w" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "130": "WB XB YB", "513": "ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f g", "578": "h i j k l m n o" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC BC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB ZB vC wC xC yC AC cC zC BC", "513": "YB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "1": "hD", "322": "gD" } }, B: 7, C: "FIDO U2F API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/unhandledrejection.js
+var require_unhandledrejection = __commonJS({
+  "node_modules/caniuse-lite/data/features/unhandledrejection.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB iC jC" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC" }, G: { "1": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "16": "9C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 1, C: "unhandledrejection/rejectionhandled events", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js
+var require_upgradeinsecurerequests = __commonJS({
+  "node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N" }, C: { "1": "4 5 6 7 8 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB iC jC" }, D: { "1": "4 5 6 7 8 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Upgrade Insecure Requests", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js
+var require_url_scroll_to_text_fragment = __commonJS({
+  "node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "66": "Q H R" }, C: { "1": "KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B", "66": "4B 5B 6B 7B 8B Q H" }, E: { "1": "QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC" }, F: { "1": "yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB vC wC xC yC AC cC zC BC", "66": "wB xB" }, G: { "1": "QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "URL Scroll-To-Text Fragment", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/url.js
+var require_url = __commonJS({
+  "node_modules/caniuse-lite/data/features/url.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z iC jC" }, D: { "1": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 J IB K D E F A B C L M G N O P JB y z", "130": "1 2 3 KB LB MB NB OB PB" }, E: { "1": "E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC mC", "130": "D" }, F: { "1": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "130": "G N O P" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C", "130": "3C" }, H: { "2": "MD" }, I: { "1": "I SD", "2": "GC J ND OD PD QD dC", "130": "RD" }, J: { "2": "D", "130": "A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "URL API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/urlsearchparams.js
+var require_urlsearchparams = __commonJS({
+  "node_modules/caniuse-lite/data/features/urlsearchparams.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N" }, C: { "1": "4 5 6 7 8 9 cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC", "132": "NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB" }, D: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB" }, E: { "1": "B C L M G NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC" }, F: { "1": "UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC" }, G: { "1": "8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "URLSearchParams", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/use-strict.js
+var require_use_strict = __commonJS({
+  "node_modules/caniuse-lite/data/features/use-strict.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "132": "IB lC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F B vC wC xC yC AC cC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "GC J I QD dC RD SD", "2": "ND OD PD" }, J: { "1": "D A" }, K: { "1": "C H cC BC", "2": "A B AC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "ECMAScript 5 Strict Mode", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/user-timing.js
+var require_user_timing = __commonJS({
+  "node_modules/caniuse-lite/data/features/user-timing.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "4 5 6 7 8 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB iC jC" }, D: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "User Timing API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/variable-fonts.js
+var require_variable_fonts = __commonJS({
+  "node_modules/caniuse-lite/data/features/variable-fonts.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB iC jC", "4609": "sB tB uB vB wB xB yB zB 0B", "4674": "IC", "5698": "rB", "7490": "lB mB nB oB pB", "7746": "qB HC", "8705": "4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB", "4097": "wB", "4290": "HC rB IC", "6148": "sB tB uB vB" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "4609": "B C AC BC", "8193": "L M pC qC" }, F: { "1": "mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB vC wC xC yC AC cC zC BC", "4097": "lB", "6148": "hB iB jB kB" }, G: { "1": "DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "4097": "9C AD BD CD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "4097": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "J TD UD VD", "4097": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 5, C: "Variable fonts", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/vector-effect.js
+var require_vector_effect = __commonJS({
+  "node_modules/caniuse-lite/data/features/vector-effect.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K D E F A B C L M" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "2": "F B vC wC xC yC AC cC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "I RD SD", "16": "GC J ND OD PD QD dC" }, J: { "16": "D A" }, K: { "1": "C H BC", "2": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "SVG vector-effect: non-scaling-stroke", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/vibration.js
+var require_vibration = __commonJS({
+  "node_modules/caniuse-lite/data/features/vibration.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A iC jC", "33": "B C L M G" }, D: { "1": "4 5 6 7 8 9 OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C G N vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "Vibration API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/video.js
+var require_video = __commonJS({
+  "node_modules/caniuse-lite/data/features/video.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "260": "J IB K D E F A B C L M G N O P JB iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A kC MC lC mC nC oC NC", "513": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "513": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "132": "ND OD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Video element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/videotracks.js
+var require_videotracks = __commonJS({
+  "node_modules/caniuse-lite/data/features/videotracks.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "C L M G N O P", "322": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB iC jC", "194": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB", "322": "4 5 6 7 8 9 dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K kC MC lC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB vC wC xC yC AC cC zC BC", "322": "QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "322": "H" }, L: { "322": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "322": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "322": "eD" }, R: { "322": "fD" }, S: { "194": "gD hD" } }, B: 1, C: "Video Tracks", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/view-transitions.js
+var require_view_transitions = __commonJS({
+  "node_modules/caniuse-lite/data/features/view-transitions.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "1": "FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC" }, F: { "1": "g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f vC wC xC yC AC cC zC BC" }, G: { "1": "FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "1 2 3", "2": "0 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "View Transitions API (single-document)", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/viewport-unit-variants.js
+var require_viewport_unit_variants = __commonJS({
+  "node_modules/caniuse-lite/data/features/viewport-unit-variants.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n", "194": "o p q" }, C: { "1": "4 5 6 7 8 9 k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j iC jC" }, D: { "1": "4 5 6 7 8 9 r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e f g h i", "194": "j k l m n o p q" }, E: { "1": "PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC" }, F: { "1": "d e f g h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z vC wC xC yC AC cC zC BC", "194": "a b c" }, G: { "1": "PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 z", "2": "J y TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "Small, Large, and Dynamic viewport units", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/viewport-units.js
+var require_viewport_units = __commonJS({
+  "node_modules/caniuse-lite/data/features/viewport-units.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "132": "F", "260": "A B" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "260": "C L M G" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M G N O P iC jC" }, D: { "1": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D E F A B C L M G N O P JB", "260": "0 1 2 3 y z" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC", "260": "K" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C", "516": "3C", "772": "2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "260": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "Viewport units: vw, vh, vmin, vmax", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wai-aria.js
+var require_wai_aria = __commonJS({
+  "node_modules/caniuse-lite/data/features/wai-aria.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D eC", "4": "E F A B" }, B: { "4": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "4": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "4": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "kC MC", "4": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F", "4": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "4": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "4": "MD" }, I: { "2": "GC J ND OD PD QD dC", "4": "I RD SD" }, J: { "2": "D A" }, K: { "4": "A B C H AC cC BC" }, L: { "4": "I" }, M: { "4": "9B" }, N: { "4": "A B" }, O: { "4": "CC" }, P: { "4": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "4": "eD" }, R: { "4": "fD" }, S: { "4": "gD hD" } }, B: 2, C: "WAI-ARIA Accessibility features", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wake-lock.js
+var require_wake_lock = __commonJS({
+  "node_modules/caniuse-lite/data/features/wake-lock.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "194": "Q H R S T U V W X Y" }, C: { "1": "FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB iC jC", "322": "DB EB" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B", "194": "1B 2B 3B 4B 5B 6B 7B 8B Q H R S T" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC" }, F: { "1": "3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB vC wC xC yC AC cC zC BC", "194": "qB rB sB tB uB vB wB xB yB zB 0B 1B 2B" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "Screen Wake Lock API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-bigint.js
+var require_wasm_bigint = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-bigint.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T" }, C: { "1": "4 5 6 7 8 9 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T" }, E: { "1": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC" }, F: { "1": "1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B vC wC xC yC AC cC zC BC" }, G: { "1": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly BigInt to i64 conversion in JS API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-bulk-memory.js
+var require_wasm_bulk_memory = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-bulk-memory.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B iC jC" }, D: { "1": "4 5 6 7 8 9 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC qC" }, F: { "1": "sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Bulk Memory Operations", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-extended-const.js
+var require_wasm_extended_const = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-extended-const.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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" }, C: { "1": "4 5 6 7 8 9 v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "1": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "1": "YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC" }, F: { "1": "j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i vC wC xC yC AC cC zC BC" }, G: { "1": "YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "1 2 3", "2": "0 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Extended Constant Expressions", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-gc.js
+var require_wasm_gc = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-gc.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "8 9 AB BB CB DB EB FB GB HB I", "2": "4 5 6 7 C L M G N O P Q H 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" }, C: { "1": "9 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "1": "8 9 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 4 5 6 7 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l m n vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Garbage Collection", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-multi-memory.js
+var require_wasm_multi_memory = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-multi-memory.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "9 AB BB CB DB EB FB GB HB I", "2": "4 5 6 7 8 C L M G N O P Q H 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" }, C: { "1": "EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB iC jC" }, D: { "1": "8 9 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 4 5 6 7 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i j k l m n o vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Multi-Memory", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-multi-value.js
+var require_wasm_multi_value = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-multi-value.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T" }, C: { "1": "4 5 6 7 8 9 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T" }, E: { "1": "M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC" }, F: { "1": "1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B vC wC xC yC AC cC zC BC" }, G: { "1": "ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Multi-Value", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-mutable-globals.js
+var require_wasm_mutable_globals = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-mutable-globals.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB iC jC" }, D: { "1": "4 5 6 7 8 9 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B" }, E: { "1": "C L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B kC MC lC mC nC oC NC AC" }, F: { "1": "rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB vC wC xC yC AC cC zC BC" }, G: { "1": "BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Import/Export of Mutable Globals", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js
+var require_wasm_nontrapping_fptoint = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB iC jC" }, D: { "1": "4 5 6 7 8 9 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC qC" }, F: { "1": "sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Non-trapping float-to-int Conversion", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-reference-types.js
+var require_wasm_reference_types = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-reference-types.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e" }, C: { "1": "4 5 6 7 8 9 Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B iC jC" }, D: { "1": "4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c d e" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC qC" }, F: { "1": "JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R vC wC xC yC AC cC zC BC" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Reference Types", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js
+var require_wasm_relaxed_simd = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g iC jC", "194": "4 5 6 7 8 9 h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h i vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "1 2 3", "2": "0 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Relaxed SIMD", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-signext.js
+var require_wasm_signext = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-signext.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC iC jC" }, D: { "1": "4 5 6 7 8 9 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B" }, E: { "1": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC" }, F: { "1": "sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC" }, G: { "1": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Sign Extension Operators", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-simd.js
+var require_wasm_simd = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-simd.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z" }, C: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X iC jC" }, D: { "1": "4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z" }, E: { "1": "TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC" }, F: { "1": "7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B vC wC xC yC AC cC zC BC" }, G: { "1": "TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z DC EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD bD cD" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly SIMD", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-tail-calls.js
+var require_wasm_tail_calls = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-tail-calls.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H 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" }, C: { "1": "AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "1": "4 5 6 7 8 9 v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "h i j k l m n o p q r s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "1 2 3", "2": "0 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Tail Calls", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm-threads.js
+var require_wasm_threads = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm-threads.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B iC jC" }, D: { "1": "4 5 6 7 8 9 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B" }, E: { "1": "G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L M kC MC lC mC nC oC NC AC BC pC" }, F: { "1": "sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB vC wC xC yC AC cC zC BC" }, G: { "1": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD WD XD NC" }, Q: { "16": "eD" }, R: { "16": "fD" }, S: { "2": "gD", "16": "hD" } }, B: 5, C: "WebAssembly Threads and Atomics", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wasm.js
+var require_wasm = __commonJS({
+  "node_modules/caniuse-lite/data/features/wasm.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M", "578": "G" }, C: { "1": "4 5 6 7 8 9 lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB iC jC", "194": "fB gB hB iB jB", "1025": "kB" }, D: { "1": "4 5 6 7 8 9 pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB", "322": "jB kB lB mB nB oB" }, E: { "1": "B C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC" }, F: { "1": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB vC wC xC yC AC cC zC BC", "322": "WB XB YB ZB aB bB" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "194": "gD" } }, B: 6, C: "WebAssembly", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wav.js
+var require_wav = __commonJS({
+  "node_modules/caniuse-lite/data/features/wav.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 xC yC AC cC zC BC", "2": "F vC wC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "16": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "Wav audio format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wbr-element.js
+var require_wbr_element = __commonJS({
+  "node_modules/caniuse-lite/data/features/wbr-element.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D eC", "2": "E F A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "kC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "16": "F" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC" }, H: { "1": "MD" }, I: { "1": "GC J I PD QD dC RD SD", "16": "ND OD" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "wbr (word break opportunity) element", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/web-animation.js
+var require_web_animation = __commonJS({
+  "node_modules/caniuse-lite/data/features/web-animation.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "260": "Q H R S" }, C: { "1": "4 5 6 7 8 9 R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB iC jC", "260": "HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B", "516": "fB gB hB iB jB kB lB mB nB oB pB qB", "580": "RB SB TB UB VB WB XB YB ZB aB bB cB dB eB", "2049": "5B 6B 7B 8B Q H" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB", "132": "UB VB WB", "260": "XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC NC", "1090": "B C L AC BC", "2049": "M pC qC" }, F: { "1": "1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 F B C G N O P JB y z vC wC xC yC AC cC zC BC", "132": "1 2 3", "260": "KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C", "1090": "9C AD BD CD DD ED FD", "2049": "GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z bD cD DC EC FC dD", "260": "J TD UD VD WD XD NC YD ZD aD" }, Q: { "260": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "516": "gD" } }, B: 5, C: "Web Animations API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/web-app-manifest.js
+var require_web_app_manifest = __commonJS({
+  "node_modules/caniuse-lite/data/features/web-app-manifest.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N", "130": "O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "578": "6B 7B 8B Q H R JC S T U" }, D: { "1": "4 5 6 7 8 9 XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC", "4": "EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C", "4": "TC UC LD EC VC WC XC YC ZC aC FC bC", "260": "AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "Add to home screen (A2HS)", D: false };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/web-bluetooth.js
+var require_web_bluetooth = __commonJS({
+  "node_modules/caniuse-lite/data/features/web-bluetooth.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "1025": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB", "194": "dB eB fB gB hB iB jB kB", "706": "lB mB nB", "1025": "4 5 6 7 8 9 oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB vC wC xC yC AC cC zC BC", "450": "UB VB WB XB", "706": "YB ZB aB", "1025": "bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD SD", "1025": "I" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "1025": "H" }, L: { "1025": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1025": "CC" }, P: { "1": "0 1 2 3 y z UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD" }, Q: { "2": "eD" }, R: { "1025": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Web Bluetooth", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/web-serial.js
+var require_web_serial = __commonJS({
+  "node_modules/caniuse-lite/data/features/web-serial.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "66": "Q H R S T U V W X" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B", "66": "8B Q H R S T U V W X" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vC wC xC yC AC cC zC BC", "66": "vB wB xB yB zB 0B 1B 2B 3B 4B 5B" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Web Serial API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/web-share.js
+var require_web_share = __commonJS({
+  "node_modules/caniuse-lite/data/features/web-share.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H", "516": "R S T U V W X Y Z a b c d" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "HB I 9B KC LC", "2": "3 J IB K D E F A B C L M G N O KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X", "130": "0 1 2 P JB y z", "1028": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB" }, E: { "1": "M G qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC", "2049": "L BC pC" }, F: { "1": "x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD", "2049": "CD DD ED FD GD" }, H: { "2": "MD" }, I: { "2": "GC J ND OD PD QD dC RD", "258": "I SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J", "258": "TD UD VD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 4, C: "Web Share API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webauthn.js
+var require_webauthn = __commonJS({
+  "node_modules/caniuse-lite/data/features/webauthn.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C", "226": "L M G N O" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC iC jC", "4100": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "5124": "rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, D: { "1": "4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB" }, E: { "1": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC", "322": "BC" }, F: { "1": "mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB vC wC xC yC AC cC zC BC" }, G: { "1": "ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD", "578": "ED", "2052": "HD", "3076": "FD GD" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "8196": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2": "gD" } }, B: 2, C: "Web Authentication API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webcodecs.js
+var require_webcodecs = __commonJS({
+  "node_modules/caniuse-lite/data/features/webcodecs.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c" }, C: { "1": "9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I iC jC" }, D: { "1": "4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z a b c" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC", "132": "TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC", "132": "TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z EC FC dD", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "WebCodecs API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webgl.js
+var require_webgl = __commonJS({
+  "node_modules/caniuse-lite/data/features/webgl.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "eC", "8": "K D E F A", "129": "B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "129": "C L M G N O P" }, C: { "1": "2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "129": "0 1 J IB K D E F A B C L M G N O P JB y z" }, D: { "1": "4 5 6 7 8 9 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB K D", "129": "0 1 2 3 E F A B C L M G N O P JB y z KB LB MB NB OB PB QB" }, E: { "1": "E F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC", "129": "K D lC mC nC" }, F: { "1": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B vC wC xC yC AC cC zC", "129": "C G N O P BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C 3C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "1": "A", "2": "D" }, K: { "1": "C H BC", "2": "A B AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "8": "A", "129": "B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "129": "gD" } }, B: 6, C: "WebGL - 3D Canvas graphics", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webgl2.js
+var require_webgl2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/webgl2.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "194": "aB bB cB", "450": "3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB", "2242": "dB eB fB gB hB iB" }, D: { "1": "4 5 6 7 8 9 oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB", "578": "bB cB dB eB fB gB hB iB jB kB lB mB nB" }, E: { "1": "G rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A kC MC lC mC nC oC", "1090": "B C L M NC AC BC pC qC" }, F: { "1": "bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB vC wC xC yC AC cC zC BC" }, G: { "1": "JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD", "1090": "BD CD DD ED FD GD HD ID" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z VD WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "2242": "gD" } }, B: 6, C: "WebGL 2.0", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webgpu.js
+var require_webgpu = __commonJS({
+  "node_modules/caniuse-lite/data/features/webgpu.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q", "578": "H R S T U V W X Y Z a b c", "1602": "d e f g h i j k l m n o p q r s t u v" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB iC jC", "194": "4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q", "578": "H R S T U V W X Y Z a b c", "1602": "d e f g h i j k l m n o p q r s t u v", "2049": "4 5 6 7 8 9 w x AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "uC", "2": "J IB K D E F A B G kC MC lC mC nC oC NC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC", "322": "C L M AC BC pC qC YC ZC aC FC bC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B vC wC xC yC AC cC zC BC", "578": "3B 4B 5B 6B 7B 8B Q H R JC S T U V W X Y Z a b c d e f g h", "2049": "i j k l m n o p q r s t u v w x" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC", "322": "YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "2049": "H" }, L: { "1": "I" }, M: { "194": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "1": "2 3", "2": "0 1 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD", "194": "hD" } }, B: 5, C: "WebGPU", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webhid.js
+var require_webhid = __commonJS({
+  "node_modules/caniuse-lite/data/features/webhid.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P", "66": "Q H R S T U V W X" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B", "66": "8B Q H R S T U V W X" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB vC wC xC yC AC cC zC BC", "66": "wB xB yB zB 0B 1B 2B 3B 4B 5B" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "WebHID API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webkit-user-drag.js
+var require_webkit_user_drag = __commonJS({
+  "node_modules/caniuse-lite/data/features/webkit-user-drag.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "132": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "16": "J IB K D E F A B C L M G", "132": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "F B C vC wC xC yC AC cC zC BC", "132": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "132": "H" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "CSS -webkit-user-drag property", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webm.js
+var require_webm = __commonJS({
+  "node_modules/caniuse-lite/data/features/webm.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E eC", "520": "F A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "8": "C L", "388": "M G N O P" }, C: { "1": "4 5 6 7 8 9 MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "132": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB" }, D: { "1": "3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB", "132": "0 1 2 K D E F A B C L M G N O P JB y z" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC", "8": "J IB MC lC", "520": "K D E F A B C mC nC oC NC AC", "1028": "L BC pC", "7172": "M", "8196": "G qC rC OC PC CC sC" }, F: { "1": "0 1 2 3 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F vC wC xC", "132": "B C G yC AC cC zC BC" }, G: { "1": "YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD", "1028": "CD DD ED FD GD", "3076": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC" }, H: { "2": "MD" }, I: { "1": "I", "2": "ND OD", "132": "GC J PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "8": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "132": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 6, C: "WebM video format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webnfc.js
+var require_webnfc = __commonJS({
+  "node_modules/caniuse-lite/data/features/webnfc.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M G N O P Q 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 AB BB CB DB EB FB GB HB I", "450": "H R S T U V W X" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q 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 AB BB CB DB EB FB GB HB I 9B KC LC", "450": "H R S T U V W X" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "450": "xB yB zB 0B 1B 2B 3B 4B 5B" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "257": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "Web NFC", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webp.js
+var require_webp = __commonJS({
+  "node_modules/caniuse-lite/data/features/webp.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O" }, C: { "1": "4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "8": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB" }, D: { "1": "4 5 6 7 8 9 QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J IB", "8": "K D E", "132": "0 F A B C L M G N O P JB y z", "260": "1 2 3 KB LB MB NB OB PB" }, E: { "1": "DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F A B C L kC MC lC mC nC oC NC AC BC pC", "516": "M G qC rC OC PC CC sC" }, F: { "1": "0 1 2 3 JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F vC wC xC", "8": "B yC", "132": "AC cC zC", "260": "C G N O P BC" }, G: { "1": "HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD" }, H: { "1": "MD" }, I: { "1": "I dC RD SD", "2": "GC ND OD PD", "132": "J QD" }, J: { "2": "D A" }, K: { "1": "C H AC cC BC", "2": "A", "132": "B" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "8": "gD" } }, B: 6, C: "WebP image format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/websockets.js
+var require_websockets = __commonJS({
+  "node_modules/caniuse-lite/data/features/websockets.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC iC jC", "132": "J IB", "292": "K D E F A" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "J IB K D E F A B C L M", "260": "G" }, E: { "1": "D E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "132": "IB lC", "260": "K mC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F vC wC xC yC", "132": "B C AC cC zC" }, G: { "1": "E 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C", "132": "dC 1C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "129": "D" }, K: { "1": "H BC", "2": "A", "132": "B C AC cC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Web Sockets", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webtransport.js
+var require_webtransport = __commonJS({
+  "node_modules/caniuse-lite/data/features/webtransport.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I", "2": "C L M G N O P Q H R S T U V W X Y Z a b c d e f g" }, C: { "1": "4 5 6 7 8 9 x AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 iC jC" }, D: { "1": "4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R S T U V W X Y Z e f", "66": "a b c d" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z FC dD", "2": "J TD UD VD WD XD NC YD ZD aD bD cD DC EC" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 5, C: "WebTransport", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webusb.js
+var require_webusb = __commonJS({
+  "node_modules/caniuse-lite/data/features/webusb.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "4 5 6 7 8 9 IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB", "66": "mB nB oB pB qB HC rB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB vC wC xC yC AC cC zC BC", "66": "ZB aB bB cB dB eB fB" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z WD XD NC YD ZD aD bD cD DC EC FC dD", "2": "J TD UD VD" }, Q: { "2": "eD" }, R: { "1": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "WebUSB", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webvr.js
+var require_webvr = __commonJS({
+  "node_modules/caniuse-lite/data/features/webvr.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "4 5 6 7 8 9 C L M H 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 AB BB CB DB EB FB GB HB I", "66": "Q", "257": "G N O P" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB iC jC", "129": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "194": "mB" }, D: { "2": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "66": "pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "66": "cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "2": "I" }, M: { "2": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "513": "J", "516": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 7, C: "WebVR API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webvtt.js
+var require_webvtt = __commonJS({
+  "node_modules/caniuse-lite/data/features/webvtt.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 fC GC J IB K D E F A B C L M G N O P JB y z iC jC", "66": "2 3 KB LB MB NB OB", "129": "PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB", "257": "4 5 6 7 8 9 nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "1": "1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "K D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC J ND OD PD QD dC" }, J: { "1": "A", "2": "D" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "B", "2": "A" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "129": "gD hD" } }, B: 4, C: "WebVTT - Web Video Text Tracks", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webworkers.js
+var require_webworkers = __commonJS({
+  "node_modules/caniuse-lite/data/features/webworkers.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "2": "eC", "8": "K D E F" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "8": "fC GC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "8": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 yC AC cC zC BC", "2": "F vC", "8": "wC xC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "I ND RD SD", "2": "GC J OD PD QD dC" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "8": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Web Workers", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/webxr.js
+var require_webxr = __commonJS({
+  "node_modules/caniuse-lite/data/features/webxr.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "2": "C L M G N O P", "132": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B iC jC", "322": "4 5 6 7 8 9 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC" }, D: { "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB", "66": "vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B", "132": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "2": "J IB K D E F A B C kC MC lC mC nC oC NC AC BC", "578": "L M G pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB vC wC xC yC AC cC zC BC", "66": "kB lB mB nB oB pB qB rB sB tB uB vB", "132": "wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "2": "GC J I ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C AC cC BC", "132": "H" }, L: { "132": "I" }, M: { "322": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "J TD UD VD WD XD NC YD", "132": "0 1 2 3 y z ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD", "322": "hD" } }, B: 4, C: "WebXR Device API", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/will-change.js
+var require_will_change = __commonJS({
+  "node_modules/caniuse-lite/data/features/will-change.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB iC jC", "194": "NB OB PB QB RB SB TB" }, D: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, E: { "1": "A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC" }, F: { "1": "2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 1 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS will-change property", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/woff.js
+var require_woff = __commonJS({
+  "node_modules/caniuse-lite/data/features/woff.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC jC", "2": "fC GC iC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "J" }, E: { "1": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB kC MC" }, F: { "1": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AC cC zC BC", "2": "F B vC wC xC yC" }, G: { "1": "E 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC" }, H: { "2": "MD" }, I: { "1": "I RD SD", "2": "GC ND OD PD QD dC", "130": "J" }, J: { "1": "D A" }, K: { "1": "B C H AC cC BC", "2": "A" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "WOFF - Web Open Font Format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/woff2.js
+var require_woff2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/woff2.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 M G N O P Q H 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 AB BB CB DB EB FB GB HB I", "2": "C L" }, C: { "1": "4 5 6 7 8 9 XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB iC jC" }, D: { "1": "4 5 6 7 8 9 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB" }, E: { "1": "C L M G BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J IB K D E F kC MC lC mC nC oC", "132": "A B NC AC" }, F: { "1": "1 2 3 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "0 F B C G N O P JB y z vC wC xC yC AC cC zC BC" }, G: { "1": "7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 2, C: "WOFF 2.0 - Web Open Font Format", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/word-break.js
+var require_word_break = __commonJS({
+  "node_modules/caniuse-lite/data/features/word-break.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC J IB K D E F A B C L M iC jC" }, D: { "1": "4 5 6 7 8 9 cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "4": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB" }, E: { "1": "F A B C L M G oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "4": "J IB K D E kC MC lC mC nC" }, F: { "1": "PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B C vC wC xC yC AC cC zC BC", "4": "0 1 2 3 G N O P JB y z KB LB MB NB OB" }, G: { "1": "5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "4": "E MC 0C dC 1C 2C 3C 4C" }, H: { "2": "MD" }, I: { "1": "I", "4": "GC J ND OD PD QD dC RD SD" }, J: { "4": "D A" }, K: { "1": "H", "2": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "CSS3 word-break", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/wordwrap.js
+var require_wordwrap = __commonJS({
+  "node_modules/caniuse-lite/data/features/wordwrap.js"(exports2, module2) {
+    module2.exports = { A: { A: { "4": "K D E F A B eC" }, B: { "1": "4 5 6 7 8 9 P Q H 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 AB BB CB DB EB FB GB HB I", "4": "C L M G N O" }, C: { "1": "4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "4": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB iC jC" }, D: { "1": "1 2 3 4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "4": "0 J IB K D E F A B C L M G N O P JB y z" }, E: { "1": "D E F A B C L M G mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "4": "J IB K kC MC lC" }, F: { "1": "0 1 2 3 G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 BC", "2": "F vC wC", "4": "B C xC yC AC cC zC" }, G: { "1": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "4": "MC 0C dC 1C 2C" }, H: { "4": "MD" }, I: { "1": "I RD SD", "4": "GC J ND OD PD QD dC" }, J: { "1": "A", "4": "D" }, K: { "1": "H", "4": "A B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "4": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "hD", "4": "gD" } }, B: 4, C: "CSS3 Overflow-wrap", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/x-doc-messaging.js
+var require_x_doc_messaging = __commonJS({
+  "node_modules/caniuse-lite/data/features/x-doc-messaging.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D eC", "132": "E F", "260": "A B" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC", "2": "fC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "kC MC" }, F: { "1": "0 1 2 3 B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC", "2": "F" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "4": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "Cross-document messaging", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/x-frame-options.js
+var require_x_frame_options = __commonJS({
+  "node_modules/caniuse-lite/data/features/x-frame-options.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "E F A B", "2": "K D eC" }, B: { "1": "C L M G N O P", "4": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB", "4": "4 5 6 7 8 9 J IB K D E F A B C L M G N O 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "16": "fC GC iC jC" }, D: { "4": "4 5 6 7 8 9 KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z" }, E: { "4": "K D E F A B C L M G lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "16": "J IB kC MC" }, F: { "4": "0 1 2 3 C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 zC BC", "16": "F B vC wC xC yC AC cC" }, G: { "4": "E 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "16": "MC 0C dC 1C 2C" }, H: { "2": "MD" }, I: { "4": "J I QD dC RD SD", "16": "GC ND OD PD" }, J: { "4": "D A" }, K: { "4": "H BC", "16": "A B C AC cC" }, L: { "4": "I" }, M: { "4": "9B" }, N: { "1": "A B" }, O: { "4": "CC" }, P: { "4": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "4": "eD" }, R: { "4": "fD" }, S: { "1": "gD", "4": "hD" } }, B: 6, C: "X-Frame-Options HTTP header", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/xhr2.js
+var require_xhr2 = __commonJS({
+  "node_modules/caniuse-lite/data/features/xhr2.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F eC", "1156": "A B" }, B: { "1": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I", "1028": "C L M G N O P" }, C: { "1": "4 5 6 7 8 9 fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "2": "fC GC", "1028": "0 1 2 3 C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB", "1284": "A B", "1412": "K D E F", "1924": "J IB iC jC" }, D: { "1": "4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "16": "J IB K", "1028": "PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB", "1156": "NB OB", "1412": "0 1 2 3 D E F A B C L M G N O P JB y z KB LB MB" }, E: { "1": "C L M G AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "2": "J kC MC", "1028": "E F A B nC oC NC", "1156": "D mC", "1412": "IB K lC" }, F: { "1": "VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "2": "F B vC wC xC yC AC cC zC", "132": "G N O", "1028": "0 1 2 3 C P JB y z KB LB MB NB OB PB QB RB SB TB UB BC" }, G: { "1": "9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "2": "MC 0C dC", "1028": "E 4C 5C 6C 7C 8C", "1156": "3C", "1412": "1C 2C" }, H: { "2": "MD" }, I: { "1": "I", "2": "ND OD PD", "1028": "SD", "1412": "RD", "1924": "GC J QD dC" }, J: { "1156": "A", "1412": "D" }, K: { "1": "H", "2": "A B AC cC", "1028": "C BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1156": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD", "1028": "J" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "XMLHttpRequest advanced features", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/xhtml.js
+var require_xhtml = __commonJS({
+  "node_modules/caniuse-lite/data/features/xhtml.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "F A B", "2": "K D E eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "1": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "1": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "1": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "1": "MD" }, I: { "1": "GC J I ND OD PD QD dC RD SD" }, J: { "1": "D A" }, K: { "1": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 1, C: "XHTML served as application/xhtml+xml", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/xhtmlsmil.js
+var require_xhtmlsmil = __commonJS({
+  "node_modules/caniuse-lite/data/features/xhtmlsmil.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "F A B eC", "4": "K D E" }, B: { "2": "C L M G N O P", "8": "4 5 6 7 8 9 Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "8": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC iC jC" }, D: { "8": "0 1 2 3 4 5 6 7 8 9 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC" }, E: { "8": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "8": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "8": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "8": "MD" }, I: { "8": "GC J I ND OD PD QD dC RD SD" }, J: { "8": "D A" }, K: { "8": "A B C H AC cC BC" }, L: { "8": "I" }, M: { "8": "9B" }, N: { "2": "A B" }, O: { "8": "CC" }, P: { "8": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "8": "eD" }, R: { "8": "fD" }, S: { "8": "gD hD" } }, B: 7, C: "XHTML+SMIL animation", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/xml-serializer.js
+var require_xml_serializer = __commonJS({
+  "node_modules/caniuse-lite/data/features/xml-serializer.js"(exports2, module2) {
+    module2.exports = { A: { A: { "1": "A B", "260": "K D E F eC" }, B: { "1": "4 5 6 7 8 9 C L M G N O P Q H 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 AB BB CB DB EB FB GB HB I" }, C: { "1": "0 1 2 3 4 5 6 7 8 9 C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB FB GB HB I 9B KC LC gC hC", "132": "B", "260": "fC GC J IB K D iC jC", "516": "E F A" }, D: { "1": "4 5 6 7 8 9 PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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 AB BB CB DB EB FB GB HB I 9B KC LC", "132": "0 1 2 3 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB" }, E: { "1": "E F A B C L M G nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC", "132": "J IB K D kC MC lC mC" }, F: { "1": "0 1 2 3 P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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", "16": "F vC", "132": "B C G N O wC xC yC AC cC zC BC" }, G: { "1": "E 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC", "132": "MC 0C dC 1C 2C 3C" }, H: { "132": "MD" }, I: { "1": "I RD SD", "132": "GC J ND OD PD QD dC" }, J: { "132": "D A" }, K: { "1": "H", "16": "A", "132": "B C AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "1": "A B" }, O: { "1": "CC" }, P: { "1": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "1": "eD" }, R: { "1": "fD" }, S: { "1": "gD hD" } }, B: 4, C: "DOM Parsing and Serialization", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features/zstd.js
+var require_zstd = __commonJS({
+  "node_modules/caniuse-lite/data/features/zstd.js"(exports2, module2) {
+    module2.exports = { A: { A: { "2": "K D E F A B eC" }, B: { "1": "CB DB EB FB GB HB I", "2": "4 5 6 C L M G N O P Q H 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", "194": "7 8 9 AB BB" }, C: { "1": "FB GB HB I 9B KC LC gC hC", "2": "0 1 2 3 4 5 6 7 8 9 fC GC J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 AB BB CB DB EB iC jC" }, D: { "1": "CB DB EB FB GB HB I 9B KC LC", "2": "0 1 2 3 4 5 6 J IB K D E F A B C L M G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB HC rB IC sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H 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", "194": "7 8 9 AB BB" }, E: { "2": "J IB K D E F A B C L M G kC MC lC mC nC oC NC AC BC pC qC rC OC PC CC sC DC QC RC SC TC UC tC EC VC WC XC YC ZC aC FC bC uC" }, F: { "1": "s t u v w x", "2": "0 1 2 3 F B C G N O P JB y z KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B Q H R JC 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 vC wC xC yC AC cC zC BC" }, G: { "2": "E MC 0C dC 1C 2C 3C 4C 5C 6C 7C 8C 9C AD BD CD DD ED FD GD HD ID JD OC PC CC KD DC QC RC SC TC UC LD EC VC WC XC YC ZC aC FC bC" }, H: { "2": "MD" }, I: { "1": "I", "2": "GC J ND OD PD QD dC RD SD" }, J: { "2": "D A" }, K: { "2": "A B C H AC cC BC" }, L: { "1": "I" }, M: { "1": "9B" }, N: { "2": "A B" }, O: { "2": "CC" }, P: { "2": "0 1 2 3 J y z TD UD VD WD XD NC YD ZD aD bD cD DC EC FC dD" }, Q: { "2": "eD" }, R: { "2": "fD" }, S: { "2": "gD hD" } }, B: 6, C: "zstd (Zstandard) content-encoding", D: true };
+  }
+});
+
+// node_modules/caniuse-lite/data/features.js
+var require_features = __commonJS({
+  "node_modules/caniuse-lite/data/features.js"(exports2, module2) {
+    module2.exports = { "aac": require_aac(), "abortcontroller": require_abortcontroller(), "ac3-ec3": require_ac3_ec3(), "accelerometer": require_accelerometer(), "addeventlistener": require_addeventlistener(), "alternate-stylesheet": require_alternate_stylesheet(), "ambient-light": require_ambient_light(), "apng": require_apng(), "array-find-index": require_array_find_index(), "array-find": require_array_find(), "array-flat": require_array_flat(), "array-includes": require_array_includes(), "arrow-functions": require_arrow_functions(), "asmjs": require_asmjs(), "async-clipboard": require_async_clipboard(), "async-functions": require_async_functions(), "atob-btoa": require_atob_btoa(), "audio-api": require_audio_api(), "audio": require_audio(), "audiotracks": require_audiotracks(), "autofocus": require_autofocus(), "auxclick": require_auxclick(), "av1": require_av1(), "avif": require_avif(), "background-attachment": require_background_attachment(), "background-clip-text": require_background_clip_text(), "background-img-opts": require_background_img_opts(), "background-position-x-y": require_background_position_x_y(), "background-repeat-round-space": require_background_repeat_round_space(), "background-sync": require_background_sync(), "battery-status": require_battery_status(), "beacon": require_beacon(), "beforeafterprint": require_beforeafterprint(), "bigint": require_bigint(), "blobbuilder": require_blobbuilder(), "bloburls": require_bloburls(), "border-image": require_border_image2(), "border-radius": require_border_radius2(), "broadcastchannel": require_broadcastchannel(), "brotli": require_brotli(), "calc": require_calc(), "canvas-blending": require_canvas_blending(), "canvas-text": require_canvas_text(), "canvas": require_canvas(), "ch-unit": require_ch_unit(), "chacha20-poly1305": require_chacha20_poly1305(), "channel-messaging": require_channel_messaging(), "childnode-remove": require_childnode_remove(), "classlist": require_classlist(), "client-hints-dpr-width-viewport": require_client_hints_dpr_width_viewport(), "clipboard": require_clipboard(), "colr-v1": require_colr_v1(), "colr": require_colr(), "comparedocumentposition": require_comparedocumentposition(), "console-basic": require_console_basic(), "console-time": require_console_time(), "const": require_const(), "constraint-validation": require_constraint_validation(), "contenteditable": require_contenteditable(), "contentsecuritypolicy": require_contentsecuritypolicy(), "contentsecuritypolicy2": require_contentsecuritypolicy2(), "cookie-store-api": require_cookie_store_api(), "cors": require_cors(), "createimagebitmap": require_createimagebitmap(), "credential-management": require_credential_management(), "cryptography": require_cryptography(), "css-all": require_css_all(), "css-anchor-positioning": require_css_anchor_positioning(), "css-animation": require_css_animation(), "css-any-link": require_css_any_link(), "css-appearance": require_css_appearance(), "css-at-counter-style": require_css_at_counter_style(), "css-autofill": require_css_autofill(), "css-backdrop-filter": require_css_backdrop_filter(), "css-background-offsets": require_css_background_offsets(), "css-backgroundblendmode": require_css_backgroundblendmode(), "css-boxdecorationbreak": require_css_boxdecorationbreak(), "css-boxshadow": require_css_boxshadow(), "css-canvas": require_css_canvas(), "css-caret-color": require_css_caret_color(), "css-cascade-layers": require_css_cascade_layers(), "css-cascade-scope": require_css_cascade_scope(), "css-case-insensitive": require_css_case_insensitive(), "css-clip-path": require_css_clip_path(), "css-color-adjust": require_css_color_adjust(), "css-color-function": require_css_color_function(), "css-conic-gradients": require_css_conic_gradients(), "css-container-queries-style": require_css_container_queries_style(), "css-container-queries": require_css_container_queries(), "css-container-query-units": require_css_container_query_units(), "css-containment": require_css_containment(), "css-content-visibility": require_css_content_visibility(), "css-counters": require_css_counters(), "css-crisp-edges": require_css_crisp_edges(), "css-cross-fade": require_css_cross_fade(), "css-default-pseudo": require_css_default_pseudo(), "css-descendant-gtgt": require_css_descendant_gtgt(), "css-deviceadaptation": require_css_deviceadaptation(), "css-dir-pseudo": require_css_dir_pseudo(), "css-display-contents": require_css_display_contents(), "css-element-function": require_css_element_function(), "css-env-function": require_css_env_function(), "css-exclusions": require_css_exclusions(), "css-featurequeries": require_css_featurequeries(), "css-file-selector-button": require_css_file_selector_button(), "css-filter-function": require_css_filter_function(), "css-filters": require_css_filters(), "css-first-letter": require_css_first_letter(), "css-first-line": require_css_first_line(), "css-fixed": require_css_fixed(), "css-focus-visible": require_css_focus_visible(), "css-focus-within": require_css_focus_within(), "css-font-palette": require_css_font_palette(), "css-font-rendering-controls": require_css_font_rendering_controls(), "css-font-stretch": require_css_font_stretch(), "css-gencontent": require_css_gencontent(), "css-gradients": require_css_gradients(), "css-grid-animation": require_css_grid_animation(), "css-grid": require_css_grid(), "css-hanging-punctuation": require_css_hanging_punctuation(), "css-has": require_css_has(), "css-hyphens": require_css_hyphens(), "css-image-orientation": require_css_image_orientation(), "css-image-set": require_css_image_set(), "css-in-out-of-range": require_css_in_out_of_range(), "css-indeterminate-pseudo": require_css_indeterminate_pseudo(), "css-initial-letter": require_css_initial_letter(), "css-initial-value": require_css_initial_value(), "css-lch-lab": require_css_lch_lab(), "css-letter-spacing": require_css_letter_spacing(), "css-line-clamp": require_css_line_clamp(), "css-logical-props": require_css_logical_props(), "css-marker-pseudo": require_css_marker_pseudo(), "css-masks": require_css_masks(), "css-matches-pseudo": require_css_matches_pseudo(), "css-math-functions": require_css_math_functions(), "css-media-interaction": require_css_media_interaction(), "css-media-range-syntax": require_css_media_range_syntax(), "css-media-resolution": require_css_media_resolution(), "css-media-scripting": require_css_media_scripting(), "css-mediaqueries": require_css_mediaqueries(), "css-mixblendmode": require_css_mixblendmode(), "css-module-scripts": require_css_module_scripts(), "css-motion-paths": require_css_motion_paths(), "css-namespaces": require_css_namespaces(), "css-nesting": require_css_nesting(), "css-not-sel-list": require_css_not_sel_list(), "css-nth-child-of": require_css_nth_child_of(), "css-opacity": require_css_opacity(), "css-optional-pseudo": require_css_optional_pseudo(), "css-overflow-anchor": require_css_overflow_anchor(), "css-overflow-overlay": require_css_overflow_overlay(), "css-overflow": require_css_overflow(), "css-overscroll-behavior": require_css_overscroll_behavior(), "css-page-break": require_css_page_break(), "css-paged-media": require_css_paged_media(), "css-paint-api": require_css_paint_api(), "css-placeholder-shown": require_css_placeholder_shown(), "css-placeholder": require_css_placeholder(), "css-print-color-adjust": require_css_print_color_adjust(), "css-read-only-write": require_css_read_only_write(), "css-rebeccapurple": require_css_rebeccapurple(), "css-reflections": require_css_reflections(), "css-regions": require_css_regions(), "css-relative-colors": require_css_relative_colors(), "css-repeating-gradients": require_css_repeating_gradients(), "css-resize": require_css_resize(), "css-revert-value": require_css_revert_value(), "css-rrggbbaa": require_css_rrggbbaa(), "css-scroll-behavior": require_css_scroll_behavior(), "css-scrollbar": require_css_scrollbar(), "css-sel2": require_css_sel2(), "css-sel3": require_css_sel3(), "css-selection": require_css_selection(), "css-shapes": require_css_shapes(), "css-snappoints": require_css_snappoints(), "css-sticky": require_css_sticky(), "css-subgrid": require_css_subgrid(), "css-supports-api": require_css_supports_api(), "css-table": require_css_table(), "css-text-align-last": require_css_text_align_last(), "css-text-box-trim": require_css_text_box_trim(), "css-text-indent": require_css_text_indent(), "css-text-justify": require_css_text_justify(), "css-text-orientation": require_css_text_orientation(), "css-text-spacing": require_css_text_spacing(), "css-text-wrap-balance": require_css_text_wrap_balance(), "css-textshadow": require_css_textshadow(), "css-touch-action": require_css_touch_action(), "css-transitions": require_css_transitions(), "css-unicode-bidi": require_css_unicode_bidi(), "css-unset-value": require_css_unset_value(), "css-variables": require_css_variables(), "css-when-else": require_css_when_else(), "css-widows-orphans": require_css_widows_orphans(), "css-width-stretch": require_css_width_stretch(), "css-writing-mode": require_css_writing_mode(), "css-zoom": require_css_zoom(), "css3-attr": require_css3_attr(), "css3-boxsizing": require_css3_boxsizing(), "css3-colors": require_css3_colors(), "css3-cursors-grab": require_css3_cursors_grab(), "css3-cursors-newer": require_css3_cursors_newer(), "css3-cursors": require_css3_cursors(), "css3-tabsize": require_css3_tabsize(), "currentcolor": require_currentcolor(), "custom-elements": require_custom_elements(), "custom-elementsv1": require_custom_elementsv1(), "customevent": require_customevent(), "datalist": require_datalist(), "dataset": require_dataset(), "datauri": require_datauri(), "date-tolocaledatestring": require_date_tolocaledatestring(), "declarative-shadow-dom": require_declarative_shadow_dom(), "decorators": require_decorators(), "details": require_details(), "deviceorientation": require_deviceorientation(), "devicepixelratio": require_devicepixelratio(), "dialog": require_dialog(), "dispatchevent": require_dispatchevent(), "dnssec": require_dnssec(), "do-not-track": require_do_not_track(), "document-currentscript": require_document_currentscript(), "document-evaluate-xpath": require_document_evaluate_xpath(), "document-execcommand": require_document_execcommand(), "document-policy": require_document_policy(), "document-scrollingelement": require_document_scrollingelement(), "documenthead": require_documenthead(), "dom-manip-convenience": require_dom_manip_convenience(), "dom-range": require_dom_range(), "domcontentloaded": require_domcontentloaded(), "dommatrix": require_dommatrix(), "download": require_download(), "dragndrop": require_dragndrop(), "element-closest": require_element_closest(), "element-from-point": require_element_from_point(), "element-scroll-methods": require_element_scroll_methods(), "eme": require_eme(), "eot": require_eot(), "es5": require_es5(), "es6-class": require_es6_class(), "es6-generators": require_es6_generators(), "es6-module-dynamic-import": require_es6_module_dynamic_import(), "es6-module": require_es6_module(), "es6-number": require_es6_number(), "es6-string-includes": require_es6_string_includes(), "es6": require_es6(), "eventsource": require_eventsource(), "extended-system-fonts": require_extended_system_fonts(), "feature-policy": require_feature_policy(), "fetch": require_fetch(), "fieldset-disabled": require_fieldset_disabled(), "fileapi": require_fileapi(), "filereader": require_filereader(), "filereadersync": require_filereadersync(), "filesystem": require_filesystem(), "flac": require_flac(), "flexbox-gap": require_flexbox_gap(), "flexbox": require_flexbox(), "flow-root": require_flow_root(), "focusin-focusout-events": require_focusin_focusout_events(), "font-family-system-ui": require_font_family_system_ui(), "font-feature": require_font_feature(), "font-kerning": require_font_kerning(), "font-loading": require_font_loading(), "font-size-adjust": require_font_size_adjust(), "font-smooth": require_font_smooth(), "font-unicode-range": require_font_unicode_range(), "font-variant-alternates": require_font_variant_alternates(), "font-variant-numeric": require_font_variant_numeric(), "fontface": require_fontface(), "form-attribute": require_form_attribute(), "form-submit-attributes": require_form_submit_attributes(), "form-validation": require_form_validation(), "forms": require_forms(), "fullscreen": require_fullscreen2(), "gamepad": require_gamepad(), "geolocation": require_geolocation(), "getboundingclientrect": require_getboundingclientrect(), "getcomputedstyle": require_getcomputedstyle(), "getelementsbyclassname": require_getelementsbyclassname(), "getrandomvalues": require_getrandomvalues(), "gyroscope": require_gyroscope(), "hardwareconcurrency": require_hardwareconcurrency(), "hashchange": require_hashchange(), "heif": require_heif(), "hevc": require_hevc(), "hidden": require_hidden(), "high-resolution-time": require_high_resolution_time(), "history": require_history(), "html-media-capture": require_html_media_capture(), "html5semantic": require_html5semantic(), "http-live-streaming": require_http_live_streaming(), "http2": require_http2(), "http3": require_http3(), "iframe-sandbox": require_iframe_sandbox(), "iframe-seamless": require_iframe_seamless(), "iframe-srcdoc": require_iframe_srcdoc(), "imagecapture": require_imagecapture(), "ime": require_ime(), "img-naturalwidth-naturalheight": require_img_naturalwidth_naturalheight(), "import-maps": require_import_maps(), "imports": require_imports(), "indeterminate-checkbox": require_indeterminate_checkbox(), "indexeddb": require_indexeddb(), "indexeddb2": require_indexeddb2(), "inline-block": require_inline_block(), "innertext": require_innertext(), "input-autocomplete-onoff": require_input_autocomplete_onoff(), "input-color": require_input_color(), "input-datetime": require_input_datetime(), "input-email-tel-url": require_input_email_tel_url(), "input-event": require_input_event(), "input-file-accept": require_input_file_accept(), "input-file-directory": require_input_file_directory(), "input-file-multiple": require_input_file_multiple(), "input-inputmode": require_input_inputmode(), "input-minlength": require_input_minlength(), "input-number": require_input_number(), "input-pattern": require_input_pattern(), "input-placeholder": require_input_placeholder(), "input-range": require_input_range(), "input-search": require_input_search(), "input-selection": require_input_selection(), "insert-adjacent": require_insert_adjacent(), "insertadjacenthtml": require_insertadjacenthtml(), "internationalization": require_internationalization(), "intersectionobserver-v2": require_intersectionobserver_v2(), "intersectionobserver": require_intersectionobserver(), "intl-pluralrules": require_intl_pluralrules(), "intrinsic-width": require_intrinsic_width(), "jpeg2000": require_jpeg2000(), "jpegxl": require_jpegxl(), "jpegxr": require_jpegxr(), "js-regexp-lookbehind": require_js_regexp_lookbehind(), "json": require_json(), "justify-content-space-evenly": require_justify_content_space_evenly(), "kerning-pairs-ligatures": require_kerning_pairs_ligatures(), "keyboardevent-charcode": require_keyboardevent_charcode(), "keyboardevent-code": require_keyboardevent_code(), "keyboardevent-getmodifierstate": require_keyboardevent_getmodifierstate(), "keyboardevent-key": require_keyboardevent_key(), "keyboardevent-location": require_keyboardevent_location(), "keyboardevent-which": require_keyboardevent_which(), "lazyload": require_lazyload(), "let": require_let(), "link-icon-png": require_link_icon_png(), "link-icon-svg": require_link_icon_svg(), "link-rel-dns-prefetch": require_link_rel_dns_prefetch(), "link-rel-modulepreload": require_link_rel_modulepreload(), "link-rel-preconnect": require_link_rel_preconnect(), "link-rel-prefetch": require_link_rel_prefetch(), "link-rel-preload": require_link_rel_preload(), "link-rel-prerender": require_link_rel_prerender(), "loading-lazy-attr": require_loading_lazy_attr(), "localecompare": require_localecompare(), "magnetometer": require_magnetometer(), "matchesselector": require_matchesselector(), "matchmedia": require_matchmedia(), "mathml": require_mathml(), "maxlength": require_maxlength(), "mdn-css-backdrop-pseudo-element": require_mdn_css_backdrop_pseudo_element(), "mdn-css-unicode-bidi-isolate-override": require_mdn_css_unicode_bidi_isolate_override(), "mdn-css-unicode-bidi-isolate": require_mdn_css_unicode_bidi_isolate(), "mdn-css-unicode-bidi-plaintext": require_mdn_css_unicode_bidi_plaintext(), "mdn-text-decoration-color": require_mdn_text_decoration_color(), "mdn-text-decoration-line": require_mdn_text_decoration_line(), "mdn-text-decoration-shorthand": require_mdn_text_decoration_shorthand(), "mdn-text-decoration-style": require_mdn_text_decoration_style(), "media-fragments": require_media_fragments(), "mediacapture-fromelement": require_mediacapture_fromelement(), "mediarecorder": require_mediarecorder(), "mediasource": require_mediasource(), "menu": require_menu(), "meta-theme-color": require_meta_theme_color(), "meter": require_meter(), "midi": require_midi(), "minmaxwh": require_minmaxwh(), "mp3": require_mp3(), "mpeg-dash": require_mpeg_dash(), "mpeg4": require_mpeg4(), "multibackgrounds": require_multibackgrounds(), "multicolumn": require_multicolumn(), "mutation-events": require_mutation_events(), "mutationobserver": require_mutationobserver(), "namevalue-storage": require_namevalue_storage(), "native-filesystem-api": require_native_filesystem_api(), "nav-timing": require_nav_timing(), "netinfo": require_netinfo(), "notifications": require_notifications(), "object-entries": require_object_entries(), "object-fit": require_object_fit(), "object-observe": require_object_observe(), "object-values": require_object_values(), "objectrtc": require_objectrtc(), "offline-apps": require_offline_apps(), "offscreencanvas": require_offscreencanvas(), "ogg-vorbis": require_ogg_vorbis(), "ogv": require_ogv(), "ol-reversed": require_ol_reversed(), "once-event-listener": require_once_event_listener(), "online-status": require_online_status(), "opus": require_opus(), "orientation-sensor": require_orientation_sensor(), "outline": require_outline(), "pad-start-end": require_pad_start_end(), "page-transition-events": require_page_transition_events(), "pagevisibility": require_pagevisibility(), "passive-event-listener": require_passive_event_listener(), "passkeys": require_passkeys(), "passwordrules": require_passwordrules(), "path2d": require_path2d(), "payment-request": require_payment_request(), "pdf-viewer": require_pdf_viewer(), "permissions-api": require_permissions_api(), "permissions-policy": require_permissions_policy(), "picture-in-picture": require_picture_in_picture(), "picture": require_picture(), "ping": require_ping(), "png-alpha": require_png_alpha(), "pointer-events": require_pointer_events(), "pointer": require_pointer(), "pointerlock": require_pointerlock(), "portals": require_portals(), "prefers-color-scheme": require_prefers_color_scheme(), "prefers-reduced-motion": require_prefers_reduced_motion(), "progress": require_progress(), "promise-finally": require_promise_finally(), "promises": require_promises(), "proximity": require_proximity(), "proxy": require_proxy(), "publickeypinning": require_publickeypinning(), "push-api": require_push_api(), "queryselector": require_queryselector(), "readonly-attr": require_readonly_attr(), "referrer-policy": require_referrer_policy(), "registerprotocolhandler": require_registerprotocolhandler(), "rel-noopener": require_rel_noopener(), "rel-noreferrer": require_rel_noreferrer(), "rellist": require_rellist(), "rem": require_rem(), "requestanimationframe": require_requestanimationframe(), "requestidlecallback": require_requestidlecallback(), "resizeobserver": require_resizeobserver(), "resource-timing": require_resource_timing(), "rest-parameters": require_rest_parameters(), "rtcpeerconnection": require_rtcpeerconnection(), "ruby": require_ruby(), "run-in": require_run_in(), "same-site-cookie-attribute": require_same_site_cookie_attribute(), "screen-orientation": require_screen_orientation(), "script-async": require_script_async(), "script-defer": require_script_defer(), "scrollintoview": require_scrollintoview(), "scrollintoviewifneeded": require_scrollintoviewifneeded(), "sdch": require_sdch(), "selection-api": require_selection_api(), "selectlist": require_selectlist(), "server-timing": require_server_timing(), "serviceworkers": require_serviceworkers(), "setimmediate": require_setimmediate(), "shadowdom": require_shadowdom(), "shadowdomv1": require_shadowdomv1(), "sharedarraybuffer": require_sharedarraybuffer(), "sharedworkers": require_sharedworkers(), "sni": require_sni(), "spdy": require_spdy(), "speech-recognition": require_speech_recognition(), "speech-synthesis": require_speech_synthesis(), "spellcheck-attribute": require_spellcheck_attribute(), "sql-storage": require_sql_storage(), "srcset": require_srcset(), "stream": require_stream(), "streams": require_streams(), "stricttransportsecurity": require_stricttransportsecurity(), "style-scoped": require_style_scoped(), "subresource-bundling": require_subresource_bundling(), "subresource-integrity": require_subresource_integrity(), "svg-css": require_svg_css(), "svg-filters": require_svg_filters(), "svg-fonts": require_svg_fonts(), "svg-fragment": require_svg_fragment(), "svg-html": require_svg_html(), "svg-html5": require_svg_html5(), "svg-img": require_svg_img(), "svg-smil": require_svg_smil(), "svg": require_svg(), "sxg": require_sxg(), "tabindex-attr": require_tabindex_attr(), "template-literals": require_template_literals(), "template": require_template(), "temporal": require_temporal(), "testfeat": require_testfeat(), "text-decoration": require_text_decoration2(), "text-emphasis": require_text_emphasis(), "text-overflow": require_text_overflow(), "text-size-adjust": require_text_size_adjust(), "text-stroke": require_text_stroke(), "textcontent": require_textcontent(), "textencoder": require_textencoder(), "tls1-1": require_tls1_1(), "tls1-2": require_tls1_2(), "tls1-3": require_tls1_3(), "touch": require_touch(), "transforms2d": require_transforms2d(), "transforms3d": require_transforms3d(), "trusted-types": require_trusted_types(), "ttf": require_ttf(), "typedarrays": require_typedarrays(), "u2f": require_u2f(), "unhandledrejection": require_unhandledrejection(), "upgradeinsecurerequests": require_upgradeinsecurerequests(), "url-scroll-to-text-fragment": require_url_scroll_to_text_fragment(), "url": require_url(), "urlsearchparams": require_urlsearchparams(), "use-strict": require_use_strict(), "user-select-none": require_user_select_none(), "user-timing": require_user_timing(), "variable-fonts": require_variable_fonts(), "vector-effect": require_vector_effect(), "vibration": require_vibration(), "video": require_video(), "videotracks": require_videotracks(), "view-transitions": require_view_transitions(), "viewport-unit-variants": require_viewport_unit_variants(), "viewport-units": require_viewport_units(), "wai-aria": require_wai_aria(), "wake-lock": require_wake_lock(), "wasm-bigint": require_wasm_bigint(), "wasm-bulk-memory": require_wasm_bulk_memory(), "wasm-extended-const": require_wasm_extended_const(), "wasm-gc": require_wasm_gc(), "wasm-multi-memory": require_wasm_multi_memory(), "wasm-multi-value": require_wasm_multi_value(), "wasm-mutable-globals": require_wasm_mutable_globals(), "wasm-nontrapping-fptoint": require_wasm_nontrapping_fptoint(), "wasm-reference-types": require_wasm_reference_types(), "wasm-relaxed-simd": require_wasm_relaxed_simd(), "wasm-signext": require_wasm_signext(), "wasm-simd": require_wasm_simd(), "wasm-tail-calls": require_wasm_tail_calls(), "wasm-threads": require_wasm_threads(), "wasm": require_wasm(), "wav": require_wav(), "wbr-element": require_wbr_element(), "web-animation": require_web_animation(), "web-app-manifest": require_web_app_manifest(), "web-bluetooth": require_web_bluetooth(), "web-serial": require_web_serial(), "web-share": require_web_share(), "webauthn": require_webauthn(), "webcodecs": require_webcodecs(), "webgl": require_webgl(), "webgl2": require_webgl2(), "webgpu": require_webgpu(), "webhid": require_webhid(), "webkit-user-drag": require_webkit_user_drag(), "webm": require_webm(), "webnfc": require_webnfc(), "webp": require_webp(), "websockets": require_websockets(), "webtransport": require_webtransport(), "webusb": require_webusb(), "webvr": require_webvr(), "webvtt": require_webvtt(), "webworkers": require_webworkers(), "webxr": require_webxr(), "will-change": require_will_change(), "woff": require_woff(), "woff2": require_woff2(), "word-break": require_word_break(), "wordwrap": require_wordwrap(), "x-doc-messaging": require_x_doc_messaging(), "x-frame-options": require_x_frame_options(), "xhr2": require_xhr2(), "xhtml": require_xhtml(), "xhtmlsmil": require_xhtmlsmil(), "xml-serializer": require_xml_serializer(), "zstd": require_zstd() };
+  }
+});
+
+// node_modules/caniuse-lite/dist/unpacker/features.js
+var require_features2 = __commonJS({
+  "node_modules/caniuse-lite/dist/unpacker/features.js"(exports2, module2) {
+    module2.exports.features = require_features();
+  }
+});
+
+// node_modules/caniuse-lite/dist/unpacker/index.js
+var require_unpacker = __commonJS({
+  "node_modules/caniuse-lite/dist/unpacker/index.js"(exports2, module2) {
+    module2.exports.agents = require_agents2().agents;
+    module2.exports.feature = require_feature();
+    module2.exports.features = require_features2().features;
+    module2.exports.region = require_region();
+  }
+});
+
+// node_modules/lodash.uniq/index.js
+var require_lodash2 = __commonJS({
+  "node_modules/lodash.uniq/index.js"(exports2, module2) {
+    var LARGE_ARRAY_SIZE = 200;
+    var HASH_UNDEFINED = "__lodash_hash_undefined__";
+    var INFINITY = 1 / 0;
+    var funcTag = "[object Function]";
+    var genTag = "[object GeneratorFunction]";
+    var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+    var reIsHostCtor = /^\[object .+?Constructor\]$/;
+    var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
+    var freeSelf = typeof self == "object" && self && self.Object === Object && self;
+    var root = freeGlobal || freeSelf || Function("return this")();
+    function arrayIncludes(array, value) {
+      var length = array ? array.length : 0;
+      return !!length && baseIndexOf(array, value, 0) > -1;
+    }
+    function arrayIncludesWith(array, value, comparator) {
+      var index = -1, length = array ? array.length : 0;
+      while (++index < length) {
+        if (comparator(value, array[index])) {
+          return true;
+        }
+      }
+      return false;
+    }
+    function baseFindIndex(array, predicate, fromIndex, fromRight) {
+      var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
+      while (fromRight ? index-- : ++index < length) {
+        if (predicate(array[index], index, array)) {
+          return index;
+        }
+      }
+      return -1;
+    }
+    function baseIndexOf(array, value, fromIndex) {
+      if (value !== value) {
+        return baseFindIndex(array, baseIsNaN, fromIndex);
+      }
+      var index = fromIndex - 1, length = array.length;
+      while (++index < length) {
+        if (array[index] === value) {
+          return index;
+        }
+      }
+      return -1;
+    }
+    function baseIsNaN(value) {
+      return value !== value;
+    }
+    function cacheHas(cache, key) {
+      return cache.has(key);
+    }
+    function getValue(object, key) {
+      return object == null ? void 0 : object[key];
+    }
+    function isHostObject(value) {
+      var result = false;
+      if (value != null && typeof value.toString != "function") {
+        try {
+          result = !!(value + "");
+        } catch (e) {
+        }
+      }
+      return result;
+    }
+    function setToArray(set) {
+      var index = -1, result = Array(set.size);
+      set.forEach(function(value) {
+        result[++index] = value;
+      });
+      return result;
+    }
+    var arrayProto = Array.prototype;
+    var funcProto = Function.prototype;
+    var objectProto = Object.prototype;
+    var coreJsData = root["__core-js_shared__"];
+    var maskSrcKey = function() {
+      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
+      return uid ? "Symbol(src)_1." + uid : "";
+    }();
+    var funcToString = funcProto.toString;
+    var hasOwnProperty2 = objectProto.hasOwnProperty;
+    var objectToString = objectProto.toString;
+    var reIsNative = RegExp(
+      "^" + funcToString.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
+    );
+    var splice = arrayProto.splice;
+    var Map2 = getNative(root, "Map");
+    var Set2 = getNative(root, "Set");
+    var nativeCreate = getNative(Object, "create");
+    function Hash(entries) {
+      var index = -1, length = entries ? entries.length : 0;
+      this.clear();
+      while (++index < length) {
+        var entry = entries[index];
+        this.set(entry[0], entry[1]);
+      }
+    }
+    function hashClear() {
+      this.__data__ = nativeCreate ? nativeCreate(null) : {};
+    }
+    function hashDelete(key) {
+      return this.has(key) && delete this.__data__[key];
+    }
+    function hashGet(key) {
+      var data = this.__data__;
+      if (nativeCreate) {
+        var result = data[key];
+        return result === HASH_UNDEFINED ? void 0 : result;
+      }
+      return hasOwnProperty2.call(data, key) ? data[key] : void 0;
+    }
+    function hashHas(key) {
+      var data = this.__data__;
+      return nativeCreate ? data[key] !== void 0 : hasOwnProperty2.call(data, key);
+    }
+    function hashSet(key, value) {
+      var data = this.__data__;
+      data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
+      return this;
+    }
+    Hash.prototype.clear = hashClear;
+    Hash.prototype["delete"] = hashDelete;
+    Hash.prototype.get = hashGet;
+    Hash.prototype.has = hashHas;
+    Hash.prototype.set = hashSet;
+    function ListCache(entries) {
+      var index = -1, length = entries ? entries.length : 0;
+      this.clear();
+      while (++index < length) {
+        var entry = entries[index];
+        this.set(entry[0], entry[1]);
+      }
+    }
+    function listCacheClear() {
+      this.__data__ = [];
+    }
+    function listCacheDelete(key) {
+      var data = this.__data__, index = assocIndexOf(data, key);
+      if (index < 0) {
+        return false;
+      }
+      var lastIndex = data.length - 1;
+      if (index == lastIndex) {
+        data.pop();
+      } else {
+        splice.call(data, index, 1);
+      }
+      return true;
+    }
+    function listCacheGet(key) {
+      var data = this.__data__, index = assocIndexOf(data, key);
+      return index < 0 ? void 0 : data[index][1];
+    }
+    function listCacheHas(key) {
+      return assocIndexOf(this.__data__, key) > -1;
+    }
+    function listCacheSet(key, value) {
+      var data = this.__data__, index = assocIndexOf(data, key);
+      if (index < 0) {
+        data.push([key, value]);
+      } else {
+        data[index][1] = value;
+      }
+      return this;
+    }
+    ListCache.prototype.clear = listCacheClear;
+    ListCache.prototype["delete"] = listCacheDelete;
+    ListCache.prototype.get = listCacheGet;
+    ListCache.prototype.has = listCacheHas;
+    ListCache.prototype.set = listCacheSet;
+    function MapCache(entries) {
+      var index = -1, length = entries ? entries.length : 0;
+      this.clear();
+      while (++index < length) {
+        var entry = entries[index];
+        this.set(entry[0], entry[1]);
+      }
+    }
+    function mapCacheClear() {
+      this.__data__ = {
+        "hash": new Hash(),
+        "map": new (Map2 || ListCache)(),
+        "string": new Hash()
+      };
+    }
+    function mapCacheDelete(key) {
+      return getMapData(this, key)["delete"](key);
+    }
+    function mapCacheGet(key) {
+      return getMapData(this, key).get(key);
+    }
+    function mapCacheHas(key) {
+      return getMapData(this, key).has(key);
+    }
+    function mapCacheSet(key, value) {
+      getMapData(this, key).set(key, value);
+      return this;
+    }
+    MapCache.prototype.clear = mapCacheClear;
+    MapCache.prototype["delete"] = mapCacheDelete;
+    MapCache.prototype.get = mapCacheGet;
+    MapCache.prototype.has = mapCacheHas;
+    MapCache.prototype.set = mapCacheSet;
+    function SetCache(values) {
+      var index = -1, length = values ? values.length : 0;
+      this.__data__ = new MapCache();
+      while (++index < length) {
+        this.add(values[index]);
+      }
+    }
+    function setCacheAdd(value) {
+      this.__data__.set(value, HASH_UNDEFINED);
+      return this;
+    }
+    function setCacheHas(value) {
+      return this.__data__.has(value);
+    }
+    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+    SetCache.prototype.has = setCacheHas;
+    function assocIndexOf(array, key) {
+      var length = array.length;
+      while (length--) {
+        if (eq(array[length][0], key)) {
+          return length;
+        }
+      }
+      return -1;
+    }
+    function baseIsNative(value) {
+      if (!isObject(value) || isMasked(value)) {
+        return false;
+      }
+      var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
+      return pattern.test(toSource(value));
+    }
+    function baseUniq(array, iteratee, comparator) {
+      var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;
+      if (comparator) {
+        isCommon = false;
+        includes = arrayIncludesWith;
+      } else if (length >= LARGE_ARRAY_SIZE) {
+        var set = iteratee ? null : createSet(array);
+        if (set) {
+          return setToArray(set);
+        }
+        isCommon = false;
+        includes = cacheHas;
+        seen = new SetCache();
+      } else {
+        seen = iteratee ? [] : result;
+      }
+      outer:
+        while (++index < length) {
+          var value = array[index], computed = iteratee ? iteratee(value) : value;
+          value = comparator || value !== 0 ? value : 0;
+          if (isCommon && computed === computed) {
+            var seenIndex = seen.length;
+            while (seenIndex--) {
+              if (seen[seenIndex] === computed) {
+                continue outer;
+              }
+            }
+            if (iteratee) {
+              seen.push(computed);
+            }
+            result.push(value);
+          } else if (!includes(seen, computed, comparator)) {
+            if (seen !== result) {
+              seen.push(computed);
+            }
+            result.push(value);
+          }
+        }
+      return result;
+    }
+    var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values) {
+      return new Set2(values);
+    };
+    function getMapData(map, key) {
+      var data = map.__data__;
+      return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
+    }
+    function getNative(object, key) {
+      var value = getValue(object, key);
+      return baseIsNative(value) ? value : void 0;
+    }
+    function isKeyable(value) {
+      var type = typeof value;
+      return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
+    }
+    function isMasked(func) {
+      return !!maskSrcKey && maskSrcKey in func;
+    }
+    function toSource(func) {
+      if (func != null) {
+        try {
+          return funcToString.call(func);
+        } catch (e) {
+        }
+        try {
+          return func + "";
+        } catch (e) {
+        }
+      }
+      return "";
+    }
+    function uniq(array) {
+      return array && array.length ? baseUniq(array) : [];
+    }
+    function eq(value, other) {
+      return value === other || value !== value && other !== other;
+    }
+    function isFunction(value) {
+      var tag = isObject(value) ? objectToString.call(value) : "";
+      return tag == funcTag || tag == genTag;
+    }
+    function isObject(value) {
+      var type = typeof value;
+      return !!value && (type == "object" || type == "function");
+    }
+    function noop() {
+    }
+    module2.exports = uniq;
+  }
+});
+
+// node_modules/caniuse-api/dist/utils.js
+var require_utils2 = __commonJS({
+  "node_modules/caniuse-api/dist/utils.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", {
+      value: true
+    });
+    exports2.contains = contains;
+    exports2.parseCaniuseData = parseCaniuseData;
+    exports2.cleanBrowsersList = cleanBrowsersList;
+    var _lodash = require_lodash2();
+    var _lodash2 = _interopRequireDefault(_lodash);
+    var _browserslist = require_browserslist();
+    var _browserslist2 = _interopRequireDefault(_browserslist);
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { default: obj };
+    }
+    function contains(str, substr) {
+      return !!~str.indexOf(substr);
+    }
+    function parseCaniuseData(feature, browsers) {
+      var support = {};
+      var letters;
+      var letter;
+      browsers.forEach(function(browser) {
+        support[browser] = {};
+        for (var info in feature.stats[browser]) {
+          letters = feature.stats[browser][info].replace(/#\d+/, "").trim().split(" ");
+          info = parseFloat(info.split("-")[0]);
+          if (isNaN(info)) continue;
+          for (var i = 0; i < letters.length; i++) {
+            letter = letters[i];
+            if (letter === "d") {
+              continue;
+            } else if (letter === "y") {
+              if (typeof support[browser][letter] === "undefined" || info < support[browser][letter]) {
+                support[browser][letter] = info;
+              }
+            } else {
+              if (typeof support[browser][letter] === "undefined" || info > support[browser][letter]) {
+                support[browser][letter] = info;
+              }
+            }
+          }
+        }
+      });
+      return support;
+    }
+    function cleanBrowsersList(browserList) {
+      return (0, _lodash2.default)((0, _browserslist2.default)(browserList).map(function(browser) {
+        return browser.split(" ")[0];
+      }));
+    }
+  }
+});
+
+// node_modules/caniuse-api/dist/index.js
+var require_dist = __commonJS({
+  "node_modules/caniuse-api/dist/index.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", {
+      value: true
+    });
+    exports2.getBrowserScope = exports2.setBrowserScope = exports2.getLatestStableBrowsers = exports2.find = exports2.isSupported = exports2.getSupport = exports2.features = void 0;
+    var _lodash = require_lodash();
+    var _lodash2 = _interopRequireDefault(_lodash);
+    var _browserslist = require_browserslist();
+    var _browserslist2 = _interopRequireDefault(_browserslist);
+    var _caniuseLite = require_unpacker();
+    var _utils = require_utils2();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { default: obj };
+    }
+    var featuresList = Object.keys(_caniuseLite.features);
+    var browsers = void 0;
+    function setBrowserScope(browserList) {
+      browsers = (0, _utils.cleanBrowsersList)(browserList);
+    }
+    function getBrowserScope() {
+      return browsers;
+    }
+    var parse = (0, _lodash2.default)(_utils.parseCaniuseData, function(feat, browsers2) {
+      return feat.title + browsers2;
+    });
+    function getSupport(query) {
+      var feature = void 0;
+      try {
+        feature = (0, _caniuseLite.feature)(_caniuseLite.features[query]);
+      } catch (e) {
+        var res = find(query);
+        if (res.length === 1) return getSupport(res[0]);
+        throw new ReferenceError("Please provide a proper feature name. Cannot find " + query);
+      }
+      return parse(feature, browsers);
+    }
+    function isSupported(feature, browsers2) {
+      var data = void 0;
+      try {
+        data = (0, _caniuseLite.feature)(_caniuseLite.features[feature]);
+      } catch (e) {
+        var res = find(feature);
+        if (res.length === 1) {
+          data = _caniuseLite.features[res[0]];
+        } else {
+          throw new ReferenceError("Please provide a proper feature name. Cannot find " + feature);
+        }
+      }
+      return (0, _browserslist2.default)(browsers2, { ignoreUnknownVersions: true }).map(function(browser) {
+        return browser.split(" ");
+      }).every(function(browser) {
+        return data.stats[browser[0]] && data.stats[browser[0]][browser[1]] === "y";
+      });
+    }
+    function find(query) {
+      if (typeof query !== "string") {
+        throw new TypeError("The `query` parameter should be a string.");
+      }
+      if (~featuresList.indexOf(query)) {
+        return query;
+      }
+      return featuresList.filter(function(file) {
+        return (0, _utils.contains)(file, query);
+      });
+    }
+    function getLatestStableBrowsers() {
+      return (0, _browserslist2.default)("last 1 version");
+    }
+    setBrowserScope();
+    exports2.features = featuresList;
+    exports2.getSupport = getSupport;
+    exports2.isSupported = isSupported;
+    exports2.find = find;
+    exports2.getLatestStableBrowsers = getLatestStableBrowsers;
+    exports2.setBrowserScope = setBrowserScope;
+    exports2.getBrowserScope = getBrowserScope;
+  }
+});
+
+// node_modules/postcss-reduce-initial/src/data/fromInitial.json
+var require_fromInitial = __commonJS({
+  "node_modules/postcss-reduce-initial/src/data/fromInitial.json"(exports2, module2) {
+    module2.exports = {
+      "accent-color": "auto",
+      "align-content": "normal",
+      "align-items": "normal",
+      "align-self": "auto",
+      "align-tracks": "normal",
+      "animation-delay": "0s",
+      "animation-direction": "normal",
+      "animation-duration": "0s",
+      "animation-fill-mode": "none",
+      "animation-iteration-count": "1",
+      "animation-name": "none",
+      "animation-range-end": "normal",
+      "animation-range-start": "normal",
+      "animation-timing-function": "ease",
+      "animation-timeline": "auto",
+      appearance: "none",
+      "aspect-ratio": "auto",
+      azimuth: "center",
+      "backdrop-filter": "none",
+      "background-attachment": "scroll",
+      "background-blend-mode": "normal",
+      "background-image": "none",
+      "background-position": "0% 0%",
+      "background-position-x": "0%",
+      "background-position-y": "0%",
+      "background-repeat": "repeat",
+      "block-size": "auto",
+      "border-block-style": "none",
+      "border-block-width": "medium",
+      "border-block-end-style": "none",
+      "border-block-end-width": "medium",
+      "border-block-start-style": "none",
+      "border-block-start-width": "medium",
+      "border-bottom-left-radius": "0",
+      "border-bottom-right-radius": "0",
+      "border-bottom-style": "none",
+      "border-bottom-width": "medium",
+      "border-end-end-radius": "0",
+      "border-end-start-radius": "0",
+      "border-image-outset": "0",
+      "border-image-slice": "100%",
+      "border-image-source": "none",
+      "border-image-width": "1",
+      "border-inline-style": "none",
+      "border-inline-width": "medium",
+      "border-inline-end-style": "none",
+      "border-inline-end-width": "medium",
+      "border-inline-start-style": "none",
+      "border-inline-start-width": "medium",
+      "border-left-style": "none",
+      "border-left-width": "medium",
+      "border-right-style": "none",
+      "border-right-width": "medium",
+      "border-spacing": "0",
+      "border-start-end-radius": "0",
+      "border-start-start-radius": "0",
+      "border-top-left-radius": "0",
+      "border-top-right-radius": "0",
+      "border-top-style": "none",
+      "border-top-width": "medium",
+      bottom: "auto",
+      "box-decoration-break": "slice",
+      "box-shadow": "none",
+      "break-after": "auto",
+      "break-before": "auto",
+      "break-inside": "auto",
+      "caption-side": "top",
+      "caret-color": "auto",
+      "caret-shape": "auto",
+      clear: "none",
+      clip: "auto",
+      "clip-path": "none",
+      "color-scheme": "normal",
+      "column-count": "auto",
+      "column-gap": "normal",
+      "column-rule-style": "none",
+      "column-rule-width": "medium",
+      "column-span": "none",
+      "column-width": "auto",
+      contain: "none",
+      "contain-intrinsic-block-size": "none",
+      "contain-intrinsic-height": "none",
+      "contain-intrinsic-inline-size": "none",
+      "contain-intrinsic-width": "none",
+      "container-name": "none",
+      "container-type": "normal",
+      content: "normal",
+      "counter-increment": "none",
+      "counter-reset": "none",
+      "counter-set": "none",
+      cursor: "auto",
+      direction: "ltr",
+      "empty-cells": "show",
+      filter: "none",
+      "flex-basis": "auto",
+      "flex-direction": "row",
+      "flex-grow": "0",
+      "flex-shrink": "1",
+      "flex-wrap": "nowrap",
+      float: "none",
+      "font-feature-settings": "normal",
+      "font-kerning": "auto",
+      "font-language-override": "normal",
+      "font-optical-sizing": "auto",
+      "font-palette": "normal",
+      "font-variation-settings": "normal",
+      "font-size": "medium",
+      "font-size-adjust": "none",
+      "font-stretch": "normal",
+      "font-style": "normal",
+      "font-synthesis-position": "none",
+      "font-synthesis-small-caps": "auto",
+      "font-synthesis-style": "auto",
+      "font-synthesis-weight": "auto",
+      "font-variant": "normal",
+      "font-variant-alternates": "normal",
+      "font-variant-caps": "normal",
+      "font-variant-east-asian": "normal",
+      "font-variant-emoji": "normal",
+      "font-variant-ligatures": "normal",
+      "font-variant-numeric": "normal",
+      "font-variant-position": "normal",
+      "font-weight": "normal",
+      "forced-color-adjust": "auto",
+      "grid-auto-columns": "auto",
+      "grid-auto-flow": "row",
+      "grid-auto-rows": "auto",
+      "grid-column-end": "auto",
+      "grid-column-gap": "0",
+      "grid-column-start": "auto",
+      "grid-row-end": "auto",
+      "grid-row-gap": "0",
+      "grid-row-start": "auto",
+      "grid-template-areas": "none",
+      "grid-template-columns": "none",
+      "grid-template-rows": "none",
+      "hanging-punctuation": "none",
+      height: "auto",
+      "hyphenate-character": "auto",
+      "hyphenate-limit-chars": "auto",
+      hyphens: "manual",
+      "image-rendering": "auto",
+      "image-resolution": "1dppx",
+      "ime-mode": "auto",
+      "initial-letter": "normal",
+      "initial-letter-align": "auto",
+      "inline-size": "auto",
+      "input-security": "auto",
+      "inset-block-end": "auto",
+      "inset-block-start": "auto",
+      "inset-inline-end": "auto",
+      "inset-inline-start": "auto",
+      isolation: "auto",
+      "justify-content": "normal",
+      "justify-items": "legacy",
+      "justify-self": "auto",
+      "justify-tracks": "normal",
+      left: "auto",
+      "letter-spacing": "normal",
+      "line-break": "auto",
+      "line-clamp": "none",
+      "line-height": "normal",
+      "line-height-step": "0",
+      "list-style-image": "none",
+      "list-style-type": "disc",
+      "margin-block-end": "0",
+      "margin-block-start": "0",
+      "margin-bottom": "0",
+      "margin-inline-end": "0",
+      "margin-inline-start": "0",
+      "margin-left": "0",
+      "margin-right": "0",
+      "margin-top": "0",
+      "margin-trim": "none",
+      "mask-border-mode": "alpha",
+      "mask-border-outset": "0",
+      "mask-border-slice": "0",
+      "mask-border-source": "none",
+      "mask-border-width": "auto",
+      "mask-composite": "add",
+      "mask-image": "none",
+      "mask-position": "0% 0%",
+      "mask-repeat": "repeat",
+      "mask-size": "auto",
+      "masonry-auto-flow": "pack",
+      "math-depth": "0",
+      "math-shift": "normal",
+      "math-style": "normal",
+      "max-block-size": "none",
+      "max-height": "none",
+      "max-inline-size": "none",
+      "max-lines": "none",
+      "max-width": "none",
+      "min-block-size": "0",
+      "min-height": "auto",
+      "min-inline-size": "0",
+      "min-width": "auto",
+      "mix-blend-mode": "normal",
+      "object-fit": "fill",
+      "offset-anchor": "auto",
+      "offset-distance": "0",
+      "offset-path": "none",
+      "offset-position": "normal",
+      "offset-rotate": "auto",
+      opacity: "1",
+      order: "0",
+      orphans: "2",
+      "outline-offset": "0",
+      "outline-style": "none",
+      "outline-width": "medium",
+      "overflow-anchor": "auto",
+      "overflow-block": "auto",
+      "overflow-clip-margin": "0px",
+      "overflow-inline": "auto",
+      "overflow-wrap": "normal",
+      overlay: "none",
+      "overscroll-behavior": "auto",
+      "overscroll-behavior-block": "auto",
+      "overscroll-behavior-inline": "auto",
+      "overscroll-behavior-x": "auto",
+      "overscroll-behavior-y": "auto",
+      "padding-block-end": "0",
+      "padding-block-start": "0",
+      "padding-bottom": "0",
+      "padding-inline-end": "0",
+      "padding-inline-start": "0",
+      "padding-left": "0",
+      "padding-right": "0",
+      "padding-top": "0",
+      page: "auto",
+      "page-break-after": "auto",
+      "page-break-before": "auto",
+      "page-break-inside": "auto",
+      "paint-order": "normal",
+      perspective: "none",
+      "pointer-events": "auto",
+      position: "static",
+      resize: "none",
+      right: "auto",
+      rotate: "none",
+      "row-gap": "normal",
+      scale: "none",
+      "scrollbar-color": "auto",
+      "scrollbar-gutter": "auto",
+      "scrollbar-width": "auto",
+      "scroll-behavior": "auto",
+      "scroll-margin-block-start": "0",
+      "scroll-margin-block-end": "0",
+      "scroll-margin-bottom": "0",
+      "scroll-margin-inline-start": "0",
+      "scroll-margin-inline-end": "0",
+      "scroll-margin-left": "0",
+      "scroll-margin-right": "0",
+      "scroll-margin-top": "0",
+      "scroll-padding-block-start": "auto",
+      "scroll-padding-block-end": "auto",
+      "scroll-padding-bottom": "auto",
+      "scroll-padding-inline-start": "auto",
+      "scroll-padding-inline-end": "auto",
+      "scroll-padding-left": "auto",
+      "scroll-padding-right": "auto",
+      "scroll-padding-top": "auto",
+      "scroll-snap-align": "none",
+      "scroll-snap-coordinate": "none",
+      "scroll-snap-points-x": "none",
+      "scroll-snap-points-y": "none",
+      "scroll-snap-stop": "normal",
+      "scroll-snap-type": "none",
+      "scroll-snap-type-x": "none",
+      "scroll-snap-type-y": "none",
+      "scroll-timeline-axis": "block",
+      "scroll-timeline-name": "none",
+      "shape-image-threshold": "0.0",
+      "shape-margin": "0",
+      "shape-outside": "none",
+      "tab-size": "8",
+      "table-layout": "auto",
+      "text-align-last": "auto",
+      "text-combine-upright": "none",
+      "text-decoration-line": "none",
+      "text-decoration-skip-ink": "auto",
+      "text-decoration-style": "solid",
+      "text-decoration-thickness": "auto",
+      "text-emphasis-style": "none",
+      "text-indent": "0",
+      "text-justify": "auto",
+      "text-orientation": "mixed",
+      "text-overflow": "clip",
+      "text-rendering": "auto",
+      "text-shadow": "none",
+      "text-transform": "none",
+      "text-underline-offset": "auto",
+      "text-underline-position": "auto",
+      "text-wrap": "wrap",
+      "timeline-scope": "none",
+      top: "auto",
+      "touch-action": "auto",
+      transform: "none",
+      "transform-style": "flat",
+      "transition-behavior": "normal",
+      "transition-delay": "0s",
+      "transition-duration": "0s",
+      "transition-property": "all",
+      "transition-timing-function": "ease",
+      translate: "none",
+      "unicode-bidi": "normal",
+      "user-select": "auto",
+      "view-timeline-axis": "block",
+      "view-timeline-inset": "auto",
+      "view-timeline-name": "none",
+      "view-transition-name": "none",
+      "white-space": "normal",
+      widows: "2",
+      width: "auto",
+      "will-change": "auto",
+      "word-break": "normal",
+      "word-spacing": "normal",
+      "word-wrap": "normal",
+      "z-index": "auto"
+    };
+  }
+});
+
+// node_modules/postcss-reduce-initial/src/data/toInitial.json
+var require_toInitial = __commonJS({
+  "node_modules/postcss-reduce-initial/src/data/toInitial.json"(exports2, module2) {
+    module2.exports = {
+      "background-clip": "border-box",
+      "background-color": "transparent",
+      "background-origin": "padding-box",
+      "background-size": "auto auto",
+      "border-block-color": "currentcolor",
+      "border-block-end-color": "currentcolor",
+      "border-block-start-color": "currentcolor",
+      "border-bottom-color": "currentcolor",
+      "border-collapse": "separate",
+      "border-inline-color": "currentcolor",
+      "border-inline-end-color": "currentcolor",
+      "border-inline-start-color": "currentcolor",
+      "border-left-color": "currentcolor",
+      "border-right-color": "currentcolor",
+      "border-top-color": "currentcolor",
+      "box-sizing": "content-box",
+      color: "canvastext",
+      "column-rule-color": "currentcolor",
+      "font-synthesis": "weight style small-caps position",
+      "image-orientation": "from-image",
+      "mask-clip": "border-box",
+      "mask-mode": "match-source",
+      "mask-origin": "border-box",
+      "mask-type": "luminance",
+      "ruby-align": "space-around",
+      "ruby-merge": "separate",
+      "ruby-position": "alternate",
+      "text-decoration-color": "currentcolor",
+      "text-emphasis-color": "currentcolor",
+      "text-emphasis-position": "over right",
+      "transform-box": "view-box",
+      "transform-origin": "50% 50% 0",
+      "vertical-align": "baseline",
+      "white-space-collapse": "collapse",
+      "writing-mode": "horizontal-tb"
+    };
+  }
+});
+
+// node_modules/postcss-reduce-initial/src/lib/ignoreProps.js
+var require_ignoreProps = __commonJS({
+  "node_modules/postcss-reduce-initial/src/lib/ignoreProps.js"(exports2, module2) {
+    "use strict";
+    module2.exports = ["writing-mode", "transform-box"];
+  }
+});
+
+// node_modules/postcss-reduce-initial/src/index.js
+var require_src3 = __commonJS({
+  "node_modules/postcss-reduce-initial/src/index.js"(exports2, module2) {
+    "use strict";
+    var { dirname } = require("path");
+    var browserslist = require_browserslist();
+    var { isSupported } = require_dist();
+    var fromInitial = require_fromInitial();
+    var toInitial = require_toInitial();
+    var ignoreProps = require_ignoreProps();
+    var initial = "initial";
+    var defaultIgnoreProps = ignoreProps;
+    function pluginCreator(options = {}) {
+      return {
+        postcssPlugin: "postcss-reduce-initial",
+        /**
+         * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
+         */
+        prepare(result) {
+          const { stats, env, from, file } = result.opts || {};
+          const browsers = browserslist(options.overrideBrowserslist, {
+            stats: options.stats || stats,
+            path: options.path || dirname(from || file || __filename),
+            env: options.env || env
+          });
+          const initialSupport = isSupported("css-initial-value", browsers);
+          return {
+            OnceExit(css) {
+              css.walkDecls((decl) => {
+                const lowerCasedProp = decl.prop.toLowerCase();
+                const ignoreProp = new Set(
+                  defaultIgnoreProps.concat(options.ignore || [])
+                );
+                if (ignoreProp.has(lowerCasedProp)) {
+                  return;
+                }
+                if (initialSupport && Object.prototype.hasOwnProperty.call(toInitial, lowerCasedProp) && decl.value.toLowerCase() === toInitial[
+                  /** @type {keyof toInitial} */
+                  lowerCasedProp
+                ]) {
+                  decl.value = initial;
+                  return;
+                }
+                if (decl.value.toLowerCase() !== initial || !fromInitial[
+                  /** @type {keyof fromInitial} */
+                  lowerCasedProp
+                ]) {
+                  return;
+                }
+                decl.value = fromInitial[
+                  /** @type {keyof fromInitial} */
+                  lowerCasedProp
+                ];
+              });
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/cssnano-utils/src/rawCache.js
+var require_rawCache = __commonJS({
+  "node_modules/cssnano-utils/src/rawCache.js"(exports2, module2) {
+    "use strict";
+    function pluginCreator() {
+      return {
+        postcssPlugin: "cssnano-util-raw-cache",
+        /**
+         * @param {import('postcss').Root} css
+         * @param {{result: import('postcss').Result & {root: {rawCache?: any}}}} arg
+         */
+        OnceExit(css, { result }) {
+          result.root.rawCache = {
+            colon: ":",
+            indent: "",
+            beforeDecl: "",
+            beforeRule: "",
+            beforeOpen: "",
+            beforeClose: "",
+            beforeComment: "",
+            after: "",
+            emptyBody: "",
+            commentLeft: "",
+            commentRight: ""
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/cssnano-utils/src/getArguments.js
+var require_getArguments = __commonJS({
+  "node_modules/cssnano-utils/src/getArguments.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function getArguments(node) {
+      const list = [[]];
+      for (const child of node.nodes) {
+        if (child.type !== "div") {
+          list[list.length - 1].push(child);
+        } else {
+          list.push([]);
+        }
+      }
+      return list;
+    };
+  }
+});
+
+// node_modules/cssnano-utils/src/sameParent.js
+var require_sameParent = __commonJS({
+  "node_modules/cssnano-utils/src/sameParent.js"(exports2, module2) {
+    "use strict";
+    function checkMatch(nodeA, nodeB) {
+      if (nodeA.type === "atrule" && nodeB.type === "atrule") {
+        return nodeA.params === nodeB.params && nodeA.name.toLowerCase() === nodeB.name.toLowerCase();
+      }
+      return nodeA.type === nodeB.type;
+    }
+    function sameParent(nodeA, nodeB) {
+      if (!nodeA.parent) {
+        return !nodeB.parent;
+      }
+      if (!nodeB.parent) {
+        return false;
+      }
+      if (!checkMatch(nodeA.parent, nodeB.parent)) {
+        return false;
+      }
+      return sameParent(nodeA.parent, nodeB.parent);
+    }
+    module2.exports = sameParent;
+  }
+});
+
+// node_modules/cssnano-utils/src/index.js
+var require_src4 = __commonJS({
+  "node_modules/cssnano-utils/src/index.js"(exports2, module2) {
+    "use strict";
+    var rawCache = require_rawCache();
+    var getArguments = require_getArguments();
+    var sameParent = require_sameParent();
+    module2.exports = { rawCache, getArguments, sameParent };
+  }
+});
+
+// node_modules/colord/index.js
+var require_colord = __commonJS({
+  "node_modules/colord/index.js"(exports2) {
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    var r = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) };
+    var t = function(r2) {
+      return "string" == typeof r2 ? r2.length > 0 : "number" == typeof r2;
+    };
+    var n = function(r2, t2, n2) {
+      return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = Math.pow(10, t2)), Math.round(n2 * r2) / n2 + 0;
+    };
+    var e = function(r2, t2, n2) {
+      return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = 1), r2 > n2 ? n2 : r2 > t2 ? r2 : t2;
+    };
+    var u = function(r2) {
+      return (r2 = isFinite(r2) ? r2 % 360 : 0) > 0 ? r2 : r2 + 360;
+    };
+    var o = function(r2) {
+      return { r: e(r2.r, 0, 255), g: e(r2.g, 0, 255), b: e(r2.b, 0, 255), a: e(r2.a) };
+    };
+    var a = function(r2) {
+      return { r: n(r2.r), g: n(r2.g), b: n(r2.b), a: n(r2.a, 3) };
+    };
+    var s = /^#([0-9a-f]{3,8})$/i;
+    var i = function(r2) {
+      var t2 = r2.toString(16);
+      return t2.length < 2 ? "0" + t2 : t2;
+    };
+    var h = function(r2) {
+      var t2 = r2.r, n2 = r2.g, e2 = r2.b, u2 = r2.a, o2 = Math.max(t2, n2, e2), a2 = o2 - Math.min(t2, n2, e2), s2 = a2 ? o2 === t2 ? (n2 - e2) / a2 : o2 === n2 ? 2 + (e2 - t2) / a2 : 4 + (t2 - n2) / a2 : 0;
+      return { h: 60 * (s2 < 0 ? s2 + 6 : s2), s: o2 ? a2 / o2 * 100 : 0, v: o2 / 255 * 100, a: u2 };
+    };
+    var b = function(r2) {
+      var t2 = r2.h, n2 = r2.s, e2 = r2.v, u2 = r2.a;
+      t2 = t2 / 360 * 6, n2 /= 100, e2 /= 100;
+      var o2 = Math.floor(t2), a2 = e2 * (1 - n2), s2 = e2 * (1 - (t2 - o2) * n2), i2 = e2 * (1 - (1 - t2 + o2) * n2), h2 = o2 % 6;
+      return { r: 255 * [e2, s2, a2, a2, i2, e2][h2], g: 255 * [i2, e2, e2, s2, a2, a2][h2], b: 255 * [a2, a2, i2, e2, e2, s2][h2], a: u2 };
+    };
+    var d = function(r2) {
+      return { h: u(r2.h), s: e(r2.s, 0, 100), l: e(r2.l, 0, 100), a: e(r2.a) };
+    };
+    var g = function(r2) {
+      return { h: n(r2.h), s: n(r2.s), l: n(r2.l), a: n(r2.a, 3) };
+    };
+    var f = function(r2) {
+      return b((n2 = (t2 = r2).s, { h: t2.h, s: (n2 *= ((e2 = t2.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t2.a }));
+      var t2, n2, e2;
+    };
+    var p = function(r2) {
+      return { h: (t2 = h(r2)).h, s: (u2 = (200 - (n2 = t2.s)) * (e2 = t2.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t2.a };
+      var t2, n2, e2, u2;
+    };
+    var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
+    var c = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
+    var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
+    var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
+    var y = { string: [[function(r2) {
+      var t2 = s.exec(r2);
+      return t2 ? (r2 = t2[1]).length <= 4 ? { r: parseInt(r2[0] + r2[0], 16), g: parseInt(r2[1] + r2[1], 16), b: parseInt(r2[2] + r2[2], 16), a: 4 === r2.length ? n(parseInt(r2[3] + r2[3], 16) / 255, 2) : 1 } : 6 === r2.length || 8 === r2.length ? { r: parseInt(r2.substr(0, 2), 16), g: parseInt(r2.substr(2, 2), 16), b: parseInt(r2.substr(4, 2), 16), a: 8 === r2.length ? n(parseInt(r2.substr(6, 2), 16) / 255, 2) : 1 } : null : null;
+    }, "hex"], [function(r2) {
+      var t2 = v.exec(r2) || m.exec(r2);
+      return t2 ? t2[2] !== t2[4] || t2[4] !== t2[6] ? null : o({ r: Number(t2[1]) / (t2[2] ? 100 / 255 : 1), g: Number(t2[3]) / (t2[4] ? 100 / 255 : 1), b: Number(t2[5]) / (t2[6] ? 100 / 255 : 1), a: void 0 === t2[7] ? 1 : Number(t2[7]) / (t2[8] ? 100 : 1) }) : null;
+    }, "rgb"], [function(t2) {
+      var n2 = l.exec(t2) || c.exec(t2);
+      if (!n2) return null;
+      var e2, u2, o2 = d({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) });
+      return f(o2);
+    }, "hsl"]], object: [[function(r2) {
+      var n2 = r2.r, e2 = r2.g, u2 = r2.b, a2 = r2.a, s2 = void 0 === a2 ? 1 : a2;
+      return t(n2) && t(e2) && t(u2) ? o({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(s2) }) : null;
+    }, "rgb"], [function(r2) {
+      var n2 = r2.h, e2 = r2.s, u2 = r2.l, o2 = r2.a, a2 = void 0 === o2 ? 1 : o2;
+      if (!t(n2) || !t(e2) || !t(u2)) return null;
+      var s2 = d({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(a2) });
+      return f(s2);
+    }, "hsl"], [function(r2) {
+      var n2 = r2.h, o2 = r2.s, a2 = r2.v, s2 = r2.a, i2 = void 0 === s2 ? 1 : s2;
+      if (!t(n2) || !t(o2) || !t(a2)) return null;
+      var h2 = function(r3) {
+        return { h: u(r3.h), s: e(r3.s, 0, 100), v: e(r3.v, 0, 100), a: e(r3.a) };
+      }({ h: Number(n2), s: Number(o2), v: Number(a2), a: Number(i2) });
+      return b(h2);
+    }, "hsv"]] };
+    var N = function(r2, t2) {
+      for (var n2 = 0; n2 < t2.length; n2++) {
+        var e2 = t2[n2][0](r2);
+        if (e2) return [e2, t2[n2][1]];
+      }
+      return [null, void 0];
+    };
+    var x = function(r2) {
+      return "string" == typeof r2 ? N(r2.trim(), y.string) : "object" == typeof r2 && null !== r2 ? N(r2, y.object) : [null, void 0];
+    };
+    var M = function(r2, t2) {
+      var n2 = p(r2);
+      return { h: n2.h, s: e(n2.s + 100 * t2, 0, 100), l: n2.l, a: n2.a };
+    };
+    var I = function(r2) {
+      return (299 * r2.r + 587 * r2.g + 114 * r2.b) / 1e3 / 255;
+    };
+    var H = function(r2, t2) {
+      var n2 = p(r2);
+      return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t2, 0, 100), a: n2.a };
+    };
+    var $ = function() {
+      function r2(r3) {
+        this.parsed = x(r3)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
+      }
+      return r2.prototype.isValid = function() {
+        return null !== this.parsed;
+      }, r2.prototype.brightness = function() {
+        return n(I(this.rgba), 2);
+      }, r2.prototype.isDark = function() {
+        return I(this.rgba) < 0.5;
+      }, r2.prototype.isLight = function() {
+        return I(this.rgba) >= 0.5;
+      }, r2.prototype.toHex = function() {
+        return r3 = a(this.rgba), t2 = r3.r, e2 = r3.g, u2 = r3.b, s2 = (o2 = r3.a) < 1 ? i(n(255 * o2)) : "", "#" + i(t2) + i(e2) + i(u2) + s2;
+        var r3, t2, e2, u2, o2, s2;
+      }, r2.prototype.toRgb = function() {
+        return a(this.rgba);
+      }, r2.prototype.toRgbString = function() {
+        return r3 = a(this.rgba), t2 = r3.r, n2 = r3.g, e2 = r3.b, (u2 = r3.a) < 1 ? "rgba(" + t2 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t2 + ", " + n2 + ", " + e2 + ")";
+        var r3, t2, n2, e2, u2;
+      }, r2.prototype.toHsl = function() {
+        return g(p(this.rgba));
+      }, r2.prototype.toHslString = function() {
+        return r3 = g(p(this.rgba)), t2 = r3.h, n2 = r3.s, e2 = r3.l, (u2 = r3.a) < 1 ? "hsla(" + t2 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t2 + ", " + n2 + "%, " + e2 + "%)";
+        var r3, t2, n2, e2, u2;
+      }, r2.prototype.toHsv = function() {
+        return r3 = h(this.rgba), { h: n(r3.h), s: n(r3.s), v: n(r3.v), a: n(r3.a, 3) };
+        var r3;
+      }, r2.prototype.invert = function() {
+        return j({ r: 255 - (r3 = this.rgba).r, g: 255 - r3.g, b: 255 - r3.b, a: r3.a });
+        var r3;
+      }, r2.prototype.saturate = function(r3) {
+        return void 0 === r3 && (r3 = 0.1), j(M(this.rgba, r3));
+      }, r2.prototype.desaturate = function(r3) {
+        return void 0 === r3 && (r3 = 0.1), j(M(this.rgba, -r3));
+      }, r2.prototype.grayscale = function() {
+        return j(M(this.rgba, -1));
+      }, r2.prototype.lighten = function(r3) {
+        return void 0 === r3 && (r3 = 0.1), j(H(this.rgba, r3));
+      }, r2.prototype.darken = function(r3) {
+        return void 0 === r3 && (r3 = 0.1), j(H(this.rgba, -r3));
+      }, r2.prototype.rotate = function(r3) {
+        return void 0 === r3 && (r3 = 15), this.hue(this.hue() + r3);
+      }, r2.prototype.alpha = function(r3) {
+        return "number" == typeof r3 ? j({ r: (t2 = this.rgba).r, g: t2.g, b: t2.b, a: r3 }) : n(this.rgba.a, 3);
+        var t2;
+      }, r2.prototype.hue = function(r3) {
+        var t2 = p(this.rgba);
+        return "number" == typeof r3 ? j({ h: r3, s: t2.s, l: t2.l, a: t2.a }) : n(t2.h);
+      }, r2.prototype.isEqual = function(r3) {
+        return this.toHex() === j(r3).toHex();
+      }, r2;
+    }();
+    var j = function(r2) {
+      return r2 instanceof $ ? r2 : new $(r2);
+    };
+    var w = [];
+    exports2.Colord = $, exports2.colord = j, exports2.extend = function(r2) {
+      r2.forEach(function(r3) {
+        w.indexOf(r3) < 0 && (r3($, y), w.push(r3));
+      });
+    }, exports2.getFormat = function(r2) {
+      return x(r2)[1];
+    }, exports2.random = function() {
+      return new $({ r: 255 * Math.random(), g: 255 * Math.random(), b: 255 * Math.random() });
+    };
+  }
+});
+
+// node_modules/colord/plugins/names.js
+var require_names = __commonJS({
+  "node_modules/colord/plugins/names.js"(exports2, module2) {
+    module2.exports = function(e, f) {
+      var a = { white: "#ffffff", bisque: "#ffe4c4", blue: "#0000ff", cadetblue: "#5f9ea0", chartreuse: "#7fff00", chocolate: "#d2691e", coral: "#ff7f50", antiquewhite: "#faebd7", aqua: "#00ffff", azure: "#f0ffff", whitesmoke: "#f5f5f5", papayawhip: "#ffefd5", plum: "#dda0dd", blanchedalmond: "#ffebcd", black: "#000000", gold: "#ffd700", goldenrod: "#daa520", gainsboro: "#dcdcdc", cornsilk: "#fff8dc", cornflowerblue: "#6495ed", burlywood: "#deb887", aquamarine: "#7fffd4", beige: "#f5f5dc", crimson: "#dc143c", cyan: "#00ffff", darkblue: "#00008b", darkcyan: "#008b8b", darkgoldenrod: "#b8860b", darkkhaki: "#bdb76b", darkgray: "#a9a9a9", darkgreen: "#006400", darkgrey: "#a9a9a9", peachpuff: "#ffdab9", darkmagenta: "#8b008b", darkred: "#8b0000", darkorchid: "#9932cc", darkorange: "#ff8c00", darkslateblue: "#483d8b", gray: "#808080", darkslategray: "#2f4f4f", darkslategrey: "#2f4f4f", deeppink: "#ff1493", deepskyblue: "#00bfff", wheat: "#f5deb3", firebrick: "#b22222", floralwhite: "#fffaf0", ghostwhite: "#f8f8ff", darkviolet: "#9400d3", magenta: "#ff00ff", green: "#008000", dodgerblue: "#1e90ff", grey: "#808080", honeydew: "#f0fff0", hotpink: "#ff69b4", blueviolet: "#8a2be2", forestgreen: "#228b22", lawngreen: "#7cfc00", indianred: "#cd5c5c", indigo: "#4b0082", fuchsia: "#ff00ff", brown: "#a52a2a", maroon: "#800000", mediumblue: "#0000cd", lightcoral: "#f08080", darkturquoise: "#00ced1", lightcyan: "#e0ffff", ivory: "#fffff0", lightyellow: "#ffffe0", lightsalmon: "#ffa07a", lightseagreen: "#20b2aa", linen: "#faf0e6", mediumaquamarine: "#66cdaa", lemonchiffon: "#fffacd", lime: "#00ff00", khaki: "#f0e68c", mediumseagreen: "#3cb371", limegreen: "#32cd32", mediumspringgreen: "#00fa9a", lightskyblue: "#87cefa", lightblue: "#add8e6", midnightblue: "#191970", lightpink: "#ffb6c1", mistyrose: "#ffe4e1", moccasin: "#ffe4b5", mintcream: "#f5fffa", lightslategray: "#778899", lightslategrey: "#778899", navajowhite: "#ffdead", navy: "#000080", mediumvioletred: "#c71585", powderblue: "#b0e0e6", palegoldenrod: "#eee8aa", oldlace: "#fdf5e6", paleturquoise: "#afeeee", mediumturquoise: "#48d1cc", mediumorchid: "#ba55d3", rebeccapurple: "#663399", lightsteelblue: "#b0c4de", mediumslateblue: "#7b68ee", thistle: "#d8bfd8", tan: "#d2b48c", orchid: "#da70d6", mediumpurple: "#9370db", purple: "#800080", pink: "#ffc0cb", skyblue: "#87ceeb", springgreen: "#00ff7f", palegreen: "#98fb98", red: "#ff0000", yellow: "#ffff00", slateblue: "#6a5acd", lavenderblush: "#fff0f5", peru: "#cd853f", palevioletred: "#db7093", violet: "#ee82ee", teal: "#008080", slategray: "#708090", slategrey: "#708090", aliceblue: "#f0f8ff", darkseagreen: "#8fbc8f", darkolivegreen: "#556b2f", greenyellow: "#adff2f", seagreen: "#2e8b57", seashell: "#fff5ee", tomato: "#ff6347", silver: "#c0c0c0", sienna: "#a0522d", lavender: "#e6e6fa", lightgreen: "#90ee90", orange: "#ffa500", orangered: "#ff4500", steelblue: "#4682b4", royalblue: "#4169e1", turquoise: "#40e0d0", yellowgreen: "#9acd32", salmon: "#fa8072", saddlebrown: "#8b4513", sandybrown: "#f4a460", rosybrown: "#bc8f8f", darksalmon: "#e9967a", lightgoldenrodyellow: "#fafad2", snow: "#fffafa", lightgrey: "#d3d3d3", lightgray: "#d3d3d3", dimgray: "#696969", dimgrey: "#696969", olivedrab: "#6b8e23", olive: "#808000" }, r = {};
+      for (var d in a) r[a[d]] = d;
+      var l = {};
+      e.prototype.toName = function(f2) {
+        if (!(this.rgba.a || this.rgba.r || this.rgba.g || this.rgba.b)) return "transparent";
+        var d2, i, o = r[this.toHex()];
+        if (o) return o;
+        if (null == f2 ? void 0 : f2.closest) {
+          var n = this.toRgb(), t = 1 / 0, b = "black";
+          if (!l.length) for (var c in a) l[c] = new e(a[c]).toRgb();
+          for (var g in a) {
+            var u = (d2 = n, i = l[g], Math.pow(d2.r - i.r, 2) + Math.pow(d2.g - i.g, 2) + Math.pow(d2.b - i.b, 2));
+            u < t && (t = u, b = g);
+          }
+          return b;
+        }
+      };
+      f.string.push([function(f2) {
+        var r2 = f2.toLowerCase(), d2 = "transparent" === r2 ? "#0000" : a[r2];
+        return d2 ? new e(d2).toRgb() : null;
+      }, "name"]);
+    };
+  }
+});
+
+// node_modules/postcss-minify-gradients/src/isColorStop.js
+var require_isColorStop = __commonJS({
+  "node_modules/postcss-minify-gradients/src/isColorStop.js"(exports2, module2) {
+    "use strict";
+    var { unit } = require_lib();
+    var { colord, extend } = require_colord();
+    var namesPlugin = require_names();
+    extend([
+      /** @type {any} */
+      namesPlugin
+    ]);
+    var lengthUnits = /* @__PURE__ */ new Set([
+      "PX",
+      "IN",
+      "CM",
+      "MM",
+      "EM",
+      "REM",
+      "POINTS",
+      "PC",
+      "EX",
+      "CH",
+      "VW",
+      "VH",
+      "VMIN",
+      "VMAX",
+      "%"
+    ]);
+    function isCSSLengthUnit(input) {
+      return lengthUnits.has(input.toUpperCase());
+    }
+    function isStop(str) {
+      if (str) {
+        let stop = false;
+        const node = unit(str);
+        if (node) {
+          const number = Number(node.number);
+          if (number === 0 || !isNaN(number) && isCSSLengthUnit(node.unit)) {
+            stop = true;
+          }
+        } else {
+          stop = /^calc\(\S+\)$/g.test(str);
+        }
+        return stop;
+      }
+      return true;
+    }
+    module2.exports = function isColorStop(color, stop) {
+      return colord(color).isValid() && isStop(stop);
+    };
+  }
+});
+
+// node_modules/postcss-minify-gradients/src/index.js
+var require_src5 = __commonJS({
+  "node_modules/postcss-minify-gradients/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var { getArguments } = require_src4();
+    var isColorStop = require_isColorStop();
+    var angles = {
+      top: "0deg",
+      right: "90deg",
+      bottom: "180deg",
+      left: "270deg"
+    };
+    function isLessThan(a, b) {
+      return a.unit.toLowerCase() === b.unit.toLowerCase() && parseFloat(a.number) >= parseFloat(b.number);
+    }
+    function optimise(decl) {
+      const value = decl.value;
+      if (!value) {
+        return;
+      }
+      const normalizedValue = value.toLowerCase();
+      if (normalizedValue.includes("var(") || normalizedValue.includes("env(")) {
+        return;
+      }
+      if (!normalizedValue.includes("gradient")) {
+        return;
+      }
+      decl.value = valueParser(value).walk((node) => {
+        if (node.type !== "function" || !node.nodes.length) {
+          return false;
+        }
+        const lowerCasedValue = node.value.toLowerCase();
+        if (lowerCasedValue === "linear-gradient" || lowerCasedValue === "repeating-linear-gradient" || lowerCasedValue === "-webkit-linear-gradient" || lowerCasedValue === "-webkit-repeating-linear-gradient") {
+          let args = getArguments(node);
+          if (node.nodes[0].value.toLowerCase() === "to" && args[0].length === 3) {
+            node.nodes = node.nodes.slice(2);
+            node.nodes[0].value = angles[
+              /** @type {'top'|'right'|'bottom'|'left'}*/
+              node.nodes[0].value.toLowerCase()
+            ];
+          }
+          let lastStop;
+          args.forEach((arg, index) => {
+            if (arg.length !== 3) {
+              return;
+            }
+            let isFinalStop = index === args.length - 1;
+            let thisStop = valueParser.unit(arg[2].value);
+            if (lastStop === void 0) {
+              lastStop = thisStop;
+              if (!isFinalStop && lastStop && lastStop.number === "0" && lastStop.unit.toLowerCase() !== "deg") {
+                arg[1].value = arg[2].value = "";
+              }
+              return;
+            }
+            if (lastStop && thisStop && isLessThan(lastStop, thisStop)) {
+              arg[2].value = "0";
+            }
+            lastStop = thisStop;
+            if (isFinalStop && arg[2].value === "100%") {
+              arg[1].value = arg[2].value = "";
+            }
+          });
+          return false;
+        }
+        if (lowerCasedValue === "radial-gradient" || lowerCasedValue === "repeating-radial-gradient") {
+          let args = getArguments(node);
+          let lastStop;
+          const hasAt = args[0].find((n) => n.value.toLowerCase() === "at");
+          args.forEach((arg, index) => {
+            if (!arg[2] || !index && hasAt) {
+              return;
+            }
+            let thisStop = valueParser.unit(arg[2].value);
+            if (!lastStop) {
+              lastStop = thisStop;
+              return;
+            }
+            if (lastStop && thisStop && isLessThan(lastStop, thisStop)) {
+              arg[2].value = "0";
+            }
+            lastStop = thisStop;
+          });
+          return false;
+        }
+        if (lowerCasedValue === "-webkit-radial-gradient" || lowerCasedValue === "-webkit-repeating-radial-gradient") {
+          let args = getArguments(node);
+          let lastStop;
+          args.forEach((arg) => {
+            let color;
+            let stop;
+            if (arg[2] !== void 0) {
+              if (arg[0].type === "function") {
+                color = `${arg[0].value}(${valueParser.stringify(arg[0].nodes)})`;
+              } else {
+                color = arg[0].value;
+              }
+              if (arg[2].type === "function") {
+                stop = `${arg[2].value}(${valueParser.stringify(arg[2].nodes)})`;
+              } else {
+                stop = arg[2].value;
+              }
+            } else {
+              if (arg[0].type === "function") {
+                color = `${arg[0].value}(${valueParser.stringify(arg[0].nodes)})`;
+              }
+              color = arg[0].value;
+            }
+            color = color.toLowerCase();
+            const colorStop = stop !== void 0 ? isColorStop(color, stop.toLowerCase()) : isColorStop(color);
+            if (!colorStop || !arg[2]) {
+              return;
+            }
+            let thisStop = valueParser.unit(arg[2].value);
+            if (!lastStop) {
+              lastStop = thisStop;
+              return;
+            }
+            if (lastStop && thisStop && isLessThan(lastStop, thisStop)) {
+              arg[2].value = "0";
+            }
+            lastStop = thisStop;
+          });
+          return false;
+        }
+      }).toString();
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-minify-gradients",
+        OnceExit(css) {
+          css.walkDecls(optimise);
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/@trysound/sax/lib/sax.js
+var require_sax = __commonJS({
+  "node_modules/@trysound/sax/lib/sax.js"(exports2) {
+    (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 exports2 === "undefined" ? exports2.sax = {} : exports2);
+  }
+});
+
+// node_modules/svgo/plugins/_collections.js
+var require_collections = __commonJS({
+  "node_modules/svgo/plugins/_collections.js"(exports2) {
+    "use strict";
+    exports2.elemsGroups = {
+      animation: /* @__PURE__ */ new Set([
+        "animate",
+        "animateColor",
+        "animateMotion",
+        "animateTransform",
+        "set"
+      ]),
+      descriptive: /* @__PURE__ */ new Set(["desc", "metadata", "title"]),
+      shape: /* @__PURE__ */ new Set([
+        "circle",
+        "ellipse",
+        "line",
+        "path",
+        "polygon",
+        "polyline",
+        "rect"
+      ]),
+      structural: /* @__PURE__ */ new Set(["defs", "g", "svg", "symbol", "use"]),
+      paintServer: /* @__PURE__ */ new Set([
+        "hatch",
+        "linearGradient",
+        "meshGradient",
+        "pattern",
+        "radialGradient",
+        "solidColor"
+      ]),
+      nonRendering: /* @__PURE__ */ new Set([
+        "clipPath",
+        "filter",
+        "linearGradient",
+        "marker",
+        "mask",
+        "pattern",
+        "radialGradient",
+        "solidColor",
+        "symbol"
+      ]),
+      container: /* @__PURE__ */ new Set([
+        "a",
+        "defs",
+        "foreignObject",
+        "g",
+        "marker",
+        "mask",
+        "missing-glyph",
+        "pattern",
+        "svg",
+        "switch",
+        "symbol"
+      ]),
+      textContent: /* @__PURE__ */ new Set([
+        "altGlyph",
+        "altGlyphDef",
+        "altGlyphItem",
+        "glyph",
+        "glyphRef",
+        "text",
+        "textPath",
+        "tref",
+        "tspan"
+      ]),
+      textContentChild: /* @__PURE__ */ new Set(["altGlyph", "textPath", "tref", "tspan"]),
+      lightSource: /* @__PURE__ */ new Set([
+        "feDiffuseLighting",
+        "feDistantLight",
+        "fePointLight",
+        "feSpecularLighting",
+        "feSpotLight"
+      ]),
+      filterPrimitive: /* @__PURE__ */ new Set([
+        "feBlend",
+        "feColorMatrix",
+        "feComponentTransfer",
+        "feComposite",
+        "feConvolveMatrix",
+        "feDiffuseLighting",
+        "feDisplacementMap",
+        "feDropShadow",
+        "feFlood",
+        "feFuncA",
+        "feFuncB",
+        "feFuncG",
+        "feFuncR",
+        "feGaussianBlur",
+        "feImage",
+        "feMerge",
+        "feMergeNode",
+        "feMorphology",
+        "feOffset",
+        "feSpecularLighting",
+        "feTile",
+        "feTurbulence"
+      ])
+    };
+    exports2.textElems = /* @__PURE__ */ new Set([
+      ...exports2.elemsGroups.textContent,
+      "pre",
+      "title"
+    ]);
+    exports2.pathElems = /* @__PURE__ */ new Set(["glyph", "missing-glyph", "path"]);
+    exports2.attrsGroups = {
+      animationAddition: /* @__PURE__ */ new Set(["additive", "accumulate"]),
+      animationAttributeTarget: /* @__PURE__ */ new Set(["attributeType", "attributeName"]),
+      animationEvent: /* @__PURE__ */ new Set(["onbegin", "onend", "onrepeat", "onload"]),
+      animationTiming: /* @__PURE__ */ new Set([
+        "begin",
+        "dur",
+        "end",
+        "fill",
+        "max",
+        "min",
+        "repeatCount",
+        "repeatDur",
+        "restart"
+      ]),
+      animationValue: /* @__PURE__ */ new Set([
+        "by",
+        "calcMode",
+        "from",
+        "keySplines",
+        "keyTimes",
+        "to",
+        "values"
+      ]),
+      conditionalProcessing: /* @__PURE__ */ new Set([
+        "requiredExtensions",
+        "requiredFeatures",
+        "systemLanguage"
+      ]),
+      core: /* @__PURE__ */ new Set(["id", "tabindex", "xml:base", "xml:lang", "xml:space"]),
+      graphicalEvent: /* @__PURE__ */ new Set([
+        "onactivate",
+        "onclick",
+        "onfocusin",
+        "onfocusout",
+        "onload",
+        "onmousedown",
+        "onmousemove",
+        "onmouseout",
+        "onmouseover",
+        "onmouseup"
+      ]),
+      presentation: /* @__PURE__ */ new Set([
+        "alignment-baseline",
+        "baseline-shift",
+        "clip-path",
+        "clip-rule",
+        "clip",
+        "color-interpolation-filters",
+        "color-interpolation",
+        "color-profile",
+        "color-rendering",
+        "color",
+        "cursor",
+        "direction",
+        "display",
+        "dominant-baseline",
+        "enable-background",
+        "fill-opacity",
+        "fill-rule",
+        "fill",
+        "filter",
+        "flood-color",
+        "flood-opacity",
+        "font-family",
+        "font-size-adjust",
+        "font-size",
+        "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-dasharray",
+        "stroke-dashoffset",
+        "stroke-linecap",
+        "stroke-linejoin",
+        "stroke-miterlimit",
+        "stroke-opacity",
+        "stroke-width",
+        "stroke",
+        "text-anchor",
+        "text-decoration",
+        "text-overflow",
+        "text-rendering",
+        "transform-origin",
+        "transform",
+        "unicode-bidi",
+        "vector-effect",
+        "visibility",
+        "word-spacing",
+        "writing-mode"
+      ]),
+      xlink: /* @__PURE__ */ new Set([
+        "xlink:actuate",
+        "xlink:arcrole",
+        "xlink:href",
+        "xlink:role",
+        "xlink:show",
+        "xlink:title",
+        "xlink:type"
+      ]),
+      documentEvent: /* @__PURE__ */ new Set([
+        "onabort",
+        "onerror",
+        "onresize",
+        "onscroll",
+        "onunload",
+        "onzoom"
+      ]),
+      documentElementEvent: /* @__PURE__ */ new Set(["oncopy", "oncut", "onpaste"]),
+      globalEvent: /* @__PURE__ */ new Set([
+        "oncancel",
+        "oncanplay",
+        "oncanplaythrough",
+        "onchange",
+        "onclick",
+        "onclose",
+        "oncuechange",
+        "ondblclick",
+        "ondrag",
+        "ondragend",
+        "ondragenter",
+        "ondragleave",
+        "ondragover",
+        "ondragstart",
+        "ondrop",
+        "ondurationchange",
+        "onemptied",
+        "onended",
+        "onerror",
+        "onfocus",
+        "oninput",
+        "oninvalid",
+        "onkeydown",
+        "onkeypress",
+        "onkeyup",
+        "onload",
+        "onloadeddata",
+        "onloadedmetadata",
+        "onloadstart",
+        "onmousedown",
+        "onmouseenter",
+        "onmouseleave",
+        "onmousemove",
+        "onmouseout",
+        "onmouseover",
+        "onmouseup",
+        "onmousewheel",
+        "onpause",
+        "onplay",
+        "onplaying",
+        "onprogress",
+        "onratechange",
+        "onreset",
+        "onresize",
+        "onscroll",
+        "onseeked",
+        "onseeking",
+        "onselect",
+        "onshow",
+        "onstalled",
+        "onsubmit",
+        "onsuspend",
+        "ontimeupdate",
+        "ontoggle",
+        "onvolumechange",
+        "onwaiting"
+      ]),
+      filterPrimitive: /* @__PURE__ */ new Set(["x", "y", "width", "height", "result"]),
+      transferFunction: /* @__PURE__ */ new Set([
+        "amplitude",
+        "exponent",
+        "intercept",
+        "offset",
+        "slope",
+        "tableValues",
+        "type"
+      ])
+    };
+    exports2.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"
+      }
+    };
+    exports2.elems = {
+      a: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "style",
+          "target",
+          "transform"
+        ]),
+        defaults: {
+          target: "_self"
+        },
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view",
+          // not spec compliant
+          "tspan"
+        ])
+      },
+      altGlyph: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "dx",
+          "dy",
+          "externalResourcesRequired",
+          "format",
+          "glyphRef",
+          "rotate",
+          "style",
+          "x",
+          "y"
+        ])
+      },
+      altGlyphDef: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        content: /* @__PURE__ */ new Set(["glyphRef"])
+      },
+      altGlyphItem: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        content: /* @__PURE__ */ new Set(["glyphRef", "altGlyphItem"])
+      },
+      animate: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "animationAddition",
+          "animationAttributeTarget",
+          "animationEvent",
+          "animationTiming",
+          "animationValue",
+          "conditionalProcessing",
+          "core",
+          "presentation",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set(["externalResourcesRequired"]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"])
+      },
+      animateColor: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "animationAddition",
+          "animationAttributeTarget",
+          "animationEvent",
+          "animationTiming",
+          "animationValue",
+          "conditionalProcessing",
+          "core",
+          "presentation",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set(["externalResourcesRequired"]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"])
+      },
+      animateMotion: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "animationAddition",
+          "animationEvent",
+          "animationTiming",
+          "animationValue",
+          "conditionalProcessing",
+          "core",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "externalResourcesRequired",
+          "keyPoints",
+          "origin",
+          "path",
+          "rotate"
+        ]),
+        defaults: {
+          rotate: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set(["mpath"])
+      },
+      animateTransform: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "animationAddition",
+          "animationAttributeTarget",
+          "animationEvent",
+          "animationTiming",
+          "animationValue",
+          "conditionalProcessing",
+          "core",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set(["externalResourcesRequired", "type"]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"])
+      },
+      circle: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "cx",
+          "cy",
+          "externalResourcesRequired",
+          "r",
+          "style",
+          "transform"
+        ]),
+        defaults: {
+          cx: "0",
+          cy: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      clipPath: {
+        attrsGroups: /* @__PURE__ */ new Set(["conditionalProcessing", "core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "clipPathUnits",
+          "externalResourcesRequired",
+          "style",
+          "transform"
+        ]),
+        defaults: {
+          clipPathUnits: "userSpaceOnUse"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive", "shape"]),
+        content: /* @__PURE__ */ new Set(["text", "use"])
+      },
+      "color-profile": {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "xlink"]),
+        attrs: /* @__PURE__ */ new Set(["local", "name", "rendering-intent"]),
+        defaults: {
+          name: "sRGB",
+          "rendering-intent": "auto"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"])
+      },
+      cursor: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "conditionalProcessing", "xlink"]),
+        attrs: /* @__PURE__ */ new Set(["externalResourcesRequired", "x", "y"]),
+        defaults: {
+          x: "0",
+          y: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"])
+      },
+      defs: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "style",
+          "transform"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      desc: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style"])
+      },
+      ellipse: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "cx",
+          "cy",
+          "externalResourcesRequired",
+          "rx",
+          "ry",
+          "style",
+          "transform"
+        ]),
+        defaults: {
+          cx: "0",
+          cy: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      feBlend: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set([
+          "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: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feColorMatrix: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style", "in", "type", "values"]),
+        defaults: {
+          type: "matrix"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feComponentTransfer: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style", "in"]),
+        content: /* @__PURE__ */ new Set(["feFuncA", "feFuncB", "feFuncG", "feFuncR"])
+      },
+      feComposite: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "in",
+          "in2",
+          "k1",
+          "k2",
+          "k3",
+          "k4",
+          "operator",
+          "style"
+        ]),
+        defaults: {
+          operator: "over",
+          k1: "0",
+          k2: "0",
+          k3: "0",
+          k4: "0"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feConvolveMatrix: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "in",
+          "kernelMatrix",
+          "order",
+          "style",
+          // 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'
+          "bias",
+          "divisor",
+          // TODO: targetX - 'By default, the convolution matrix is centered in X over each
+          // pixel of the input image (i.e., targetX = floor ( orderX / 2 ))'
+          "edgeMode",
+          "targetX",
+          "targetY",
+          // 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: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feDiffuseLighting: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "diffuseConstant",
+          "in",
+          "kernelUnitLength",
+          "style",
+          "surfaceScale"
+        ]),
+        defaults: {
+          surfaceScale: "1",
+          diffuseConstant: "1"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set([
+          // TODO: 'exactly one light source element, in any order'
+          "feDistantLight",
+          "fePointLight",
+          "feSpotLight"
+        ])
+      },
+      feDisplacementMap: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "in",
+          "in2",
+          "scale",
+          "style",
+          "xChannelSelector",
+          "yChannelSelector"
+        ]),
+        defaults: {
+          scale: "0",
+          xChannelSelector: "A",
+          yChannelSelector: "A"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feDistantLight: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["azimuth", "elevation"]),
+        defaults: {
+          azimuth: "0",
+          elevation: "0"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feFlood: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style"]),
+        content: /* @__PURE__ */ new Set(["animate", "animateColor", "set"])
+      },
+      feFuncA: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "transferFunction"]),
+        content: /* @__PURE__ */ new Set(["set", "animate"])
+      },
+      feFuncB: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "transferFunction"]),
+        content: /* @__PURE__ */ new Set(["set", "animate"])
+      },
+      feFuncG: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "transferFunction"]),
+        content: /* @__PURE__ */ new Set(["set", "animate"])
+      },
+      feFuncR: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "transferFunction"]),
+        content: /* @__PURE__ */ new Set(["set", "animate"])
+      },
+      feGaussianBlur: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style", "in", "stdDeviation"]),
+        defaults: {
+          stdDeviation: "0"
+        },
+        content: /* @__PURE__ */ new Set(["set", "animate"])
+      },
+      feImage: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive", "xlink"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "href",
+          "preserveAspectRatio",
+          "style",
+          "xlink:href"
+        ]),
+        defaults: {
+          preserveAspectRatio: "xMidYMid meet"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "animateTransform", "set"])
+      },
+      feMerge: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style"]),
+        content: /* @__PURE__ */ new Set(["feMergeNode"])
+      },
+      feMergeNode: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["in"]),
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feMorphology: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style", "in", "operator", "radius"]),
+        defaults: {
+          operator: "erode",
+          radius: "0"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feOffset: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style", "in", "dx", "dy"]),
+        defaults: {
+          dx: "0",
+          dy: "0"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      fePointLight: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["x", "y", "z"]),
+        defaults: {
+          x: "0",
+          y: "0",
+          z: "0"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feSpecularLighting: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "in",
+          "kernelUnitLength",
+          "specularConstant",
+          "specularExponent",
+          "style",
+          "surfaceScale"
+        ]),
+        defaults: {
+          surfaceScale: "1",
+          specularConstant: "1",
+          specularExponent: "1"
+        },
+        contentGroups: /* @__PURE__ */ new Set([
+          "descriptive",
+          // TODO: exactly one 'light source element'
+          "lightSource"
+        ])
+      },
+      feSpotLight: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set([
+          "limitingConeAngle",
+          "pointsAtX",
+          "pointsAtY",
+          "pointsAtZ",
+          "specularExponent",
+          "x",
+          "y",
+          "z"
+        ]),
+        defaults: {
+          x: "0",
+          y: "0",
+          z: "0",
+          pointsAtX: "0",
+          pointsAtY: "0",
+          pointsAtZ: "0",
+          specularExponent: "1"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feTile: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style", "in"]),
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      feTurbulence: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "filterPrimitive"]),
+        attrs: /* @__PURE__ */ new Set([
+          "baseFrequency",
+          "class",
+          "numOctaves",
+          "seed",
+          "stitchTiles",
+          "style",
+          "type"
+        ]),
+        defaults: {
+          baseFrequency: "0",
+          numOctaves: "1",
+          seed: "0",
+          stitchTiles: "noStitch",
+          type: "turbulence"
+        },
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      filter: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "xlink"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "filterRes",
+          "filterUnits",
+          "height",
+          "href",
+          "primitiveUnits",
+          "style",
+          "width",
+          "x",
+          "xlink:href",
+          "y"
+        ]),
+        defaults: {
+          primitiveUnits: "userSpaceOnUse",
+          x: "-10%",
+          y: "-10%",
+          width: "120%",
+          height: "120%"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["descriptive", "filterPrimitive"]),
+        content: /* @__PURE__ */ new Set(["animate", "set"])
+      },
+      font: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "horiz-adv-x",
+          "horiz-origin-x",
+          "horiz-origin-y",
+          "style",
+          "vert-adv-y",
+          "vert-origin-x",
+          "vert-origin-y"
+        ]),
+        defaults: {
+          "horiz-origin-x": "0",
+          "horiz-origin-y": "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set(["font-face", "glyph", "hkern", "missing-glyph", "vkern"])
+      },
+      "font-face": {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set([
+          "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: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set([
+          // TODO: "at most one 'font-face-src' element"
+          "font-face-src"
+        ])
+      },
+      // TODO: empty content
+      "font-face-format": {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["string"])
+      },
+      "font-face-name": {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["name"])
+      },
+      "font-face-src": {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        content: /* @__PURE__ */ new Set(["font-face-name", "font-face-uri"])
+      },
+      "font-face-uri": {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "xlink"]),
+        attrs: /* @__PURE__ */ new Set(["href", "xlink:href"]),
+        content: /* @__PURE__ */ new Set(["font-face-format"])
+      },
+      foreignObject: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "height",
+          "style",
+          "transform",
+          "width",
+          "x",
+          "y"
+        ]),
+        defaults: {
+          x: "0",
+          y: "0"
+        }
+      },
+      g: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "style",
+          "transform"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      glyph: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set([
+          "arabic-form",
+          "class",
+          "d",
+          "glyph-name",
+          "horiz-adv-x",
+          "lang",
+          "orientation",
+          "style",
+          "unicode",
+          "vert-adv-y",
+          "vert-origin-x",
+          "vert-origin-y"
+        ]),
+        defaults: {
+          "arabic-form": "initial"
+        },
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      glyphRef: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "d",
+          "horiz-adv-x",
+          "style",
+          "vert-adv-y",
+          "vert-origin-x",
+          "vert-origin-y"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      hatch: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "xlink"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "hatchContentUnits",
+          "hatchUnits",
+          "pitch",
+          "rotate",
+          "style",
+          "transform",
+          "x",
+          "y"
+        ]),
+        defaults: {
+          hatchUnits: "objectBoundingBox",
+          hatchContentUnits: "userSpaceOnUse",
+          x: "0",
+          y: "0",
+          pitch: "0",
+          rotate: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"]),
+        content: /* @__PURE__ */ new Set(["hatchPath"])
+      },
+      hatchPath: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "xlink"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style", "d", "offset"]),
+        defaults: {
+          offset: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      hkern: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["u1", "g1", "u2", "g2", "k"])
+      },
+      image: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "height",
+          "href",
+          "preserveAspectRatio",
+          "style",
+          "transform",
+          "width",
+          "x",
+          "xlink:href",
+          "y"
+        ]),
+        defaults: {
+          x: "0",
+          y: "0",
+          preserveAspectRatio: "xMidYMid meet"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      line: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "style",
+          "transform",
+          "x1",
+          "x2",
+          "y1",
+          "y2"
+        ]),
+        defaults: {
+          x1: "0",
+          y1: "0",
+          x2: "0",
+          y2: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      linearGradient: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "xlink"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "gradientTransform",
+          "gradientUnits",
+          "href",
+          "spreadMethod",
+          "style",
+          "x1",
+          "x2",
+          "xlink:href",
+          "y1",
+          "y2"
+        ]),
+        defaults: {
+          x1: "0",
+          y1: "0",
+          x2: "100%",
+          y2: "0",
+          spreadMethod: "pad"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set(["animate", "animateTransform", "set", "stop"])
+      },
+      marker: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "markerHeight",
+          "markerUnits",
+          "markerWidth",
+          "orient",
+          "preserveAspectRatio",
+          "refX",
+          "refY",
+          "style",
+          "viewBox"
+        ]),
+        defaults: {
+          markerUnits: "strokeWidth",
+          refX: "0",
+          refY: "0",
+          markerWidth: "3",
+          markerHeight: "3"
+        },
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      mask: {
+        attrsGroups: /* @__PURE__ */ new Set(["conditionalProcessing", "core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "height",
+          "mask-type",
+          "maskContentUnits",
+          "maskUnits",
+          "style",
+          "width",
+          "x",
+          "y"
+        ]),
+        defaults: {
+          maskUnits: "objectBoundingBox",
+          maskContentUnits: "userSpaceOnUse",
+          x: "-10%",
+          y: "-10%",
+          width: "120%",
+          height: "120%"
+        },
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      metadata: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"])
+      },
+      "missing-glyph": {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "d",
+          "horiz-adv-x",
+          "style",
+          "vert-adv-y",
+          "vert-origin-x",
+          "vert-origin-y"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      mpath: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "xlink"]),
+        attrs: /* @__PURE__ */ new Set(["externalResourcesRequired", "href", "xlink:href"]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"])
+      },
+      path: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "d",
+          "externalResourcesRequired",
+          "pathLength",
+          "style",
+          "transform"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      pattern: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "presentation",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "height",
+          "href",
+          "patternContentUnits",
+          "patternTransform",
+          "patternUnits",
+          "preserveAspectRatio",
+          "style",
+          "viewBox",
+          "width",
+          "x",
+          "xlink:href",
+          "y"
+        ]),
+        defaults: {
+          patternUnits: "objectBoundingBox",
+          patternContentUnits: "userSpaceOnUse",
+          x: "0",
+          y: "0",
+          width: "0",
+          height: "0",
+          preserveAspectRatio: "xMidYMid meet"
+        },
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      polygon: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "points",
+          "style",
+          "transform"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      polyline: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "points",
+          "style",
+          "transform"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      radialGradient: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "xlink"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "cx",
+          "cy",
+          "externalResourcesRequired",
+          "fr",
+          "fx",
+          "fy",
+          "gradientTransform",
+          "gradientUnits",
+          "href",
+          "r",
+          "spreadMethod",
+          "style",
+          "xlink:href"
+        ]),
+        defaults: {
+          gradientUnits: "objectBoundingBox",
+          cx: "50%",
+          cy: "50%",
+          r: "50%"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set(["animate", "animateTransform", "set", "stop"])
+      },
+      meshGradient: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation", "xlink"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style", "x", "y", "gradientUnits", "transform"]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive", "paintServer", "animation"]),
+        content: /* @__PURE__ */ new Set(["meshRow"])
+      },
+      meshRow: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style"]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set(["meshPatch"])
+      },
+      meshPatch: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style"]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set(["stop"])
+      },
+      rect: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "height",
+          "rx",
+          "ry",
+          "style",
+          "transform",
+          "width",
+          "x",
+          "y"
+        ]),
+        defaults: {
+          x: "0",
+          y: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      script: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "xlink"]),
+        attrs: /* @__PURE__ */ new Set(["externalResourcesRequired", "type", "href", "xlink:href"])
+      },
+      set: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "animationAttributeTarget",
+          "animationTiming",
+          "conditionalProcessing",
+          "core",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set(["externalResourcesRequired", "to"]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"])
+      },
+      solidColor: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style"]),
+        contentGroups: /* @__PURE__ */ new Set(["paintServer"])
+      },
+      stop: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "presentation"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style", "offset", "path"]),
+        content: /* @__PURE__ */ new Set(["animate", "animateColor", "set"])
+      },
+      style: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["type", "media", "title"]),
+        defaults: {
+          type: "text/css"
+        }
+      },
+      svg: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "documentEvent",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "baseProfile",
+          "class",
+          "contentScriptType",
+          "contentStyleType",
+          "height",
+          "preserveAspectRatio",
+          "style",
+          "version",
+          "viewBox",
+          "width",
+          "x",
+          "y",
+          "zoomAndPan"
+        ]),
+        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: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      switch: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "style",
+          "transform"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive", "shape"]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "foreignObject",
+          "g",
+          "image",
+          "svg",
+          "switch",
+          "text",
+          "use"
+        ])
+      },
+      symbol: {
+        attrsGroups: /* @__PURE__ */ new Set(["core", "graphicalEvent", "presentation"]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "preserveAspectRatio",
+          "refX",
+          "refY",
+          "style",
+          "viewBox"
+        ]),
+        defaults: {
+          refX: "0",
+          refY: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set([
+          "animation",
+          "descriptive",
+          "paintServer",
+          "shape",
+          "structural"
+        ]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyphDef",
+          "clipPath",
+          "color-profile",
+          "cursor",
+          "filter",
+          "font-face",
+          "font",
+          "foreignObject",
+          "image",
+          "marker",
+          "mask",
+          "pattern",
+          "script",
+          "style",
+          "switch",
+          "text",
+          "view"
+        ])
+      },
+      text: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "dx",
+          "dy",
+          "externalResourcesRequired",
+          "lengthAdjust",
+          "rotate",
+          "style",
+          "textLength",
+          "transform",
+          "x",
+          "y"
+        ]),
+        defaults: {
+          x: "0",
+          y: "0",
+          lengthAdjust: "spacing"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive", "textContentChild"]),
+        content: /* @__PURE__ */ new Set(["a"])
+      },
+      textPath: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "d",
+          "externalResourcesRequired",
+          "href",
+          "method",
+          "spacing",
+          "startOffset",
+          "style",
+          "xlink:href"
+        ]),
+        defaults: {
+          startOffset: "0",
+          method: "align",
+          spacing: "exact"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyph",
+          "animate",
+          "animateColor",
+          "set",
+          "tref",
+          "tspan"
+        ])
+      },
+      title: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["class", "style"])
+      },
+      tref: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "href",
+          "style",
+          "xlink:href"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set(["animate", "animateColor", "set"])
+      },
+      tspan: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "dx",
+          "dy",
+          "externalResourcesRequired",
+          "lengthAdjust",
+          "rotate",
+          "style",
+          "textLength",
+          "x",
+          "y"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"]),
+        content: /* @__PURE__ */ new Set([
+          "a",
+          "altGlyph",
+          "animate",
+          "animateColor",
+          "set",
+          "tref",
+          "tspan"
+        ])
+      },
+      use: {
+        attrsGroups: /* @__PURE__ */ new Set([
+          "conditionalProcessing",
+          "core",
+          "graphicalEvent",
+          "presentation",
+          "xlink"
+        ]),
+        attrs: /* @__PURE__ */ new Set([
+          "class",
+          "externalResourcesRequired",
+          "height",
+          "href",
+          "style",
+          "transform",
+          "width",
+          "x",
+          "xlink:href",
+          "y"
+        ]),
+        defaults: {
+          x: "0",
+          y: "0"
+        },
+        contentGroups: /* @__PURE__ */ new Set(["animation", "descriptive"])
+      },
+      view: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set([
+          "externalResourcesRequired",
+          "preserveAspectRatio",
+          "viewBox",
+          "viewTarget",
+          "zoomAndPan"
+        ]),
+        contentGroups: /* @__PURE__ */ new Set(["descriptive"])
+      },
+      vkern: {
+        attrsGroups: /* @__PURE__ */ new Set(["core"]),
+        attrs: /* @__PURE__ */ new Set(["u1", "g1", "u2", "g2", "k"])
+      }
+    };
+    exports2.editorNamespaces = /* @__PURE__ */ new Set([
+      "http://creativecommons.org/ns#",
+      "http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd",
+      "http://ns.adobe.com/AdobeIllustrator/10.0/",
+      "http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/",
+      "http://ns.adobe.com/Extensibility/1.0/",
+      "http://ns.adobe.com/Flows/1.0/",
+      "http://ns.adobe.com/GenericCustomNamespace/1.0/",
+      "http://ns.adobe.com/Graphs/1.0/",
+      "http://ns.adobe.com/ImageReplacement/1.0/",
+      "http://ns.adobe.com/SaveForWeb/1.0/",
+      "http://ns.adobe.com/Variables/1.0/",
+      "http://ns.adobe.com/XPath/1.0/",
+      "http://purl.org/dc/elements/1.1/",
+      "http://schemas.microsoft.com/visio/2003/SVGExtensions/",
+      "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd",
+      "http://taptrix.com/vectorillustrator/svg_extensions",
+      "http://www.bohemiancoding.com/sketch/ns",
+      "http://www.figma.com/figma/ns",
+      "http://www.inkscape.org/namespaces/inkscape",
+      "http://www.serif.com/",
+      "http://www.vector.evaxdesign.sk",
+      "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    ]);
+    exports2.referencesProps = /* @__PURE__ */ new Set([
+      "clip-path",
+      "color-profile",
+      "fill",
+      "filter",
+      "marker-end",
+      "marker-mid",
+      "marker-start",
+      "mask",
+      "stroke",
+      "style"
+    ]);
+    exports2.inheritableAttrs = /* @__PURE__ */ new Set([
+      "clip-rule",
+      "color-interpolation-filters",
+      "color-interpolation",
+      "color-profile",
+      "color-rendering",
+      "color",
+      "cursor",
+      "direction",
+      "dominant-baseline",
+      "fill-opacity",
+      "fill-rule",
+      "fill",
+      "font-family",
+      "font-size-adjust",
+      "font-size",
+      "font-stretch",
+      "font-style",
+      "font-variant",
+      "font-weight",
+      "font",
+      "glyph-orientation-horizontal",
+      "glyph-orientation-vertical",
+      "image-rendering",
+      "letter-spacing",
+      "marker-end",
+      "marker-mid",
+      "marker-start",
+      "marker",
+      "paint-order",
+      "pointer-events",
+      "shape-rendering",
+      "stroke-dasharray",
+      "stroke-dashoffset",
+      "stroke-linecap",
+      "stroke-linejoin",
+      "stroke-miterlimit",
+      "stroke-opacity",
+      "stroke-width",
+      "stroke",
+      "text-anchor",
+      "text-rendering",
+      "transform",
+      "visibility",
+      "word-spacing",
+      "writing-mode"
+    ]);
+    exports2.presentationNonInheritableGroupAttrs = /* @__PURE__ */ new Set([
+      "clip-path",
+      "display",
+      "filter",
+      "mask",
+      "opacity",
+      "text-decoration",
+      "transform",
+      "unicode-bidi"
+    ]);
+    exports2.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"
+    };
+    exports2.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"
+    };
+    exports2.colorsProps = /* @__PURE__ */ new Set([
+      "color",
+      "fill",
+      "flood-color",
+      "lighting-color",
+      "stop-color",
+      "stroke"
+    ]);
+    exports2.pseudoClasses = {
+      displayState: /* @__PURE__ */ new Set(["fullscreen", "modal", "picture-in-picture"]),
+      input: /* @__PURE__ */ new Set([
+        "autofill",
+        "blank",
+        "checked",
+        "default",
+        "disabled",
+        "enabled",
+        "in-range",
+        "indetermined",
+        "invalid",
+        "optional",
+        "out-of-range",
+        "placeholder-shown",
+        "read-only",
+        "read-write",
+        "required",
+        "user-invalid",
+        "valid"
+      ]),
+      linguistic: /* @__PURE__ */ new Set(["dir", "lang"]),
+      location: /* @__PURE__ */ new Set([
+        "any-link",
+        "link",
+        "local-link",
+        "scope",
+        "target-within",
+        "target",
+        "visited"
+      ]),
+      resourceState: /* @__PURE__ */ new Set(["playing", "paused"]),
+      timeDimensional: /* @__PURE__ */ new Set(["current", "past", "future"]),
+      treeStructural: /* @__PURE__ */ new Set([
+        "empty",
+        "first-child",
+        "first-of-type",
+        "last-child",
+        "last-of-type",
+        "nth-child",
+        "nth-last-child",
+        "nth-last-of-type",
+        "nth-of-type",
+        "only-child",
+        "only-of-type",
+        "root"
+      ]),
+      userAction: /* @__PURE__ */ new Set([
+        "active",
+        "focus-visible",
+        "focus-within",
+        "focus",
+        "hover"
+      ]),
+      functional: /* @__PURE__ */ new Set(["is", "not", "where", "has"])
+    };
+  }
+});
+
+// node_modules/svgo/lib/parser.js
+var require_parser2 = __commonJS({
+  "node_modules/svgo/lib/parser.js"(exports2) {
+    "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.has(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;
+    };
+    exports2.parseSvg = parseSvg;
+  }
+});
+
+// node_modules/svgo/lib/stringifier.js
+var require_stringifier2 = __commonJS({
+  "node_modules/svgo/lib/stringifier.js"(exports2) {
+    "use strict";
+    var { textElems } = require_collections();
+    var encodeEntity = (char) => {
+      return entities[char];
+    };
+    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.endsWith("\n")) {
+        svg += eol;
+      }
+      return svg;
+    };
+    exports2.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.has(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_lib2 = __commonJS({
+  "node_modules/domelementtype/lib/index.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.Doctype = exports2.CDATA = exports2.Tag = exports2.Style = exports2.Script = exports2.Comment = exports2.Directive = exports2.Text = exports2.Root = exports2.isTag = exports2.ElementType = void 0;
+    var ElementType;
+    (function(ElementType2) {
+      ElementType2["Root"] = "root";
+      ElementType2["Text"] = "text";
+      ElementType2["Directive"] = "directive";
+      ElementType2["Comment"] = "comment";
+      ElementType2["Script"] = "script";
+      ElementType2["Style"] = "style";
+      ElementType2["Tag"] = "tag";
+      ElementType2["CDATA"] = "cdata";
+      ElementType2["Doctype"] = "doctype";
+    })(ElementType = exports2.ElementType || (exports2.ElementType = {}));
+    function isTag(elem) {
+      return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style;
+    }
+    exports2.isTag = isTag;
+    exports2.Root = ElementType.Root;
+    exports2.Text = ElementType.Text;
+    exports2.Directive = ElementType.Directive;
+    exports2.Comment = ElementType.Comment;
+    exports2.Script = ElementType.Script;
+    exports2.Style = ElementType.Style;
+    exports2.Tag = ElementType.Tag;
+    exports2.CDATA = ElementType.CDATA;
+    exports2.Doctype = ElementType.Doctype;
+  }
+});
+
+// node_modules/domhandler/lib/node.js
+var require_node3 = __commonJS({
+  "node_modules/domhandler/lib/node.js"(exports2) {
+    "use strict";
+    var __extends = exports2 && exports2.__extends || /* @__PURE__ */ function() {
+      var extendStatics = function(d, b) {
+        extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
+          d2.__proto__ = b2;
+        } || function(d2, b2) {
+          for (var 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 = exports2 && exports2.__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(exports2, "__esModule", { value: true });
+    exports2.cloneNode = exports2.hasChildren = exports2.isDocument = exports2.isDirective = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = exports2.Element = exports2.Document = exports2.CDATA = exports2.NodeWithChildren = exports2.ProcessingInstruction = exports2.Comment = exports2.Text = exports2.DataNode = exports2.Node = void 0;
+    var domelementtype_1 = require_lib2();
+    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;
+      }()
+    );
+    exports2.Node = Node;
+    var DataNode = (
+      /** @class */
+      function(_super) {
+        __extends(DataNode2, _super);
+        function DataNode2(data) {
+          var _this = _super.call(this) || this;
+          _this.data = data;
+          return _this;
+        }
+        Object.defineProperty(DataNode2.prototype, "nodeValue", {
+          /**
+           * Same as {@link data}.
+           * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
+           */
+          get: function() {
+            return this.data;
+          },
+          set: function(data) {
+            this.data = data;
+          },
+          enumerable: false,
+          configurable: true
+        });
+        return DataNode2;
+      }(Node)
+    );
+    exports2.DataNode = DataNode;
+    var Text = (
+      /** @class */
+      function(_super) {
+        __extends(Text2, _super);
+        function Text2() {
+          var _this = _super !== null && _super.apply(this, arguments) || this;
+          _this.type = domelementtype_1.ElementType.Text;
+          return _this;
+        }
+        Object.defineProperty(Text2.prototype, "nodeType", {
+          get: function() {
+            return 3;
+          },
+          enumerable: false,
+          configurable: true
+        });
+        return Text2;
+      }(DataNode)
+    );
+    exports2.Text = Text;
+    var Comment = (
+      /** @class */
+      function(_super) {
+        __extends(Comment2, _super);
+        function Comment2() {
+          var _this = _super !== null && _super.apply(this, arguments) || this;
+          _this.type = domelementtype_1.ElementType.Comment;
+          return _this;
+        }
+        Object.defineProperty(Comment2.prototype, "nodeType", {
+          get: function() {
+            return 8;
+          },
+          enumerable: false,
+          configurable: true
+        });
+        return Comment2;
+      }(DataNode)
+    );
+    exports2.Comment = Comment;
+    var ProcessingInstruction = (
+      /** @class */
+      function(_super) {
+        __extends(ProcessingInstruction2, _super);
+        function ProcessingInstruction2(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)
+    );
+    exports2.ProcessingInstruction = ProcessingInstruction;
+    var NodeWithChildren = (
+      /** @class */
+      function(_super) {
+        __extends(NodeWithChildren2, _super);
+        function NodeWithChildren2(children) {
+          var _this = _super.call(this) || this;
+          _this.children = children;
+          return _this;
+        }
+        Object.defineProperty(NodeWithChildren2.prototype, "firstChild", {
+          // Aliases
+          /** First child of the node. */
+          get: function() {
+            var _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)
+    );
+    exports2.NodeWithChildren = NodeWithChildren;
+    var CDATA = (
+      /** @class */
+      function(_super) {
+        __extends(CDATA2, _super);
+        function CDATA2() {
+          var _this = _super !== null && _super.apply(this, arguments) || this;
+          _this.type = domelementtype_1.ElementType.CDATA;
+          return _this;
+        }
+        Object.defineProperty(CDATA2.prototype, "nodeType", {
+          get: function() {
+            return 4;
+          },
+          enumerable: false,
+          configurable: true
+        });
+        return CDATA2;
+      }(NodeWithChildren)
+    );
+    exports2.CDATA = CDATA;
+    var 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)
+    );
+    exports2.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)
+    );
+    exports2.Element = Element;
+    function isTag(node) {
+      return (0, domelementtype_1.isTag)(node);
+    }
+    exports2.isTag = isTag;
+    function isCDATA(node) {
+      return node.type === domelementtype_1.ElementType.CDATA;
+    }
+    exports2.isCDATA = isCDATA;
+    function isText(node) {
+      return node.type === domelementtype_1.ElementType.Text;
+    }
+    exports2.isText = isText;
+    function isComment(node) {
+      return node.type === domelementtype_1.ElementType.Comment;
+    }
+    exports2.isComment = isComment;
+    function isDirective(node) {
+      return node.type === domelementtype_1.ElementType.Directive;
+    }
+    exports2.isDirective = isDirective;
+    function isDocument(node) {
+      return node.type === domelementtype_1.ElementType.Root;
+    }
+    exports2.isDocument = isDocument;
+    function hasChildren(node) {
+      return Object.prototype.hasOwnProperty.call(node, "children");
+    }
+    exports2.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;
+    }
+    exports2.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_lib3 = __commonJS({
+  "node_modules/domhandler/lib/index.js"(exports2) {
+    "use strict";
+    var __createBinding = exports2 && exports2.__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 = exports2 && exports2.__exportStar || function(m, exports3) {
+      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.DomHandler = void 0;
+    var domelementtype_1 = require_lib2();
+    var node_js_1 = require_node3();
+    __exportStar(require_node3(), exports2);
+    var defaultOpts = {
+      withStartIndices: false,
+      withEndIndices: false,
+      xmlMode: false
+    };
+    var DomHandler = (
+      /** @class */
+      function() {
+        function DomHandler2(callback, options, elementCB) {
+          this.dom = [];
+          this.root = new node_js_1.Document(this.dom);
+          this.done = false;
+          this.tagStack = [this.root];
+          this.lastNode = null;
+          this.parser = null;
+          if (typeof options === "function") {
+            elementCB = options;
+            options = defaultOpts;
+          }
+          if (typeof callback === "object") {
+            options = callback;
+            callback = void 0;
+          }
+          this.callback = callback !== null && callback !== void 0 ? callback : null;
+          this.options = options !== null && options !== void 0 ? options : defaultOpts;
+          this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
+        }
+        DomHandler2.prototype.onparserinit = function(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;
+      }()
+    );
+    exports2.DomHandler = DomHandler;
+    exports2.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"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.default = new Uint16Array(
+      // prettier-ignore
+      '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(function(c) {
+        return c.charCodeAt(0);
+      })
+    );
+  }
+});
+
+// node_modules/entities/lib/generated/decode-data-xml.js
+var require_decode_data_xml = __commonJS({
+  "node_modules/entities/lib/generated/decode-data-xml.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.default = new Uint16Array(
+      // prettier-ignore
+      "\u0200aglq	\x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(function(c) {
+        return c.charCodeAt(0);
+      })
+    );
+  }
+});
+
+// node_modules/entities/lib/decode_codepoint.js
+var require_decode_codepoint = __commonJS({
+  "node_modules/entities/lib/decode_codepoint.js"(exports2) {
+    "use strict";
+    var _a;
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.replaceCodePoint = exports2.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]
+    ]);
+    exports2.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;
+    }
+    exports2.replaceCodePoint = replaceCodePoint;
+    function decodeCodePoint(codePoint) {
+      return (0, exports2.fromCodePoint)(replaceCodePoint(codePoint));
+    }
+    exports2.default = decodeCodePoint;
+  }
+});
+
+// node_modules/entities/lib/decode.js
+var require_decode = __commonJS({
+  "node_modules/entities/lib/decode.js"(exports2) {
+    "use strict";
+    var __createBinding = exports2 && exports2.__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 = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
+      Object.defineProperty(o, "default", { enumerable: true, value: v });
+    } : function(o, v) {
+      o["default"] = v;
+    });
+    var __importStar = exports2 && exports2.__importStar || function(mod) {
+      if (mod && mod.__esModule) return mod;
+      var result = {};
+      if (mod != null) {
+        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+      }
+      __setModuleDefault(result, mod);
+      return result;
+    };
+    var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.decodeXML = exports2.decodeHTMLStrict = exports2.decodeHTMLAttribute = exports2.decodeHTML = exports2.determineBranch = exports2.EntityDecoder = exports2.DecodingMode = exports2.BinTrieFlags = exports2.fromCodePoint = exports2.replaceCodePoint = exports2.decodeCodePoint = exports2.xmlDecodeTree = exports2.htmlDecodeTree = void 0;
+    var decode_data_html_js_1 = __importDefault(require_decode_data_html());
+    exports2.htmlDecodeTree = decode_data_html_js_1.default;
+    var decode_data_xml_js_1 = __importDefault(require_decode_data_xml());
+    exports2.xmlDecodeTree = decode_data_xml_js_1.default;
+    var decode_codepoint_js_1 = __importStar(require_decode_codepoint());
+    exports2.decodeCodePoint = decode_codepoint_js_1.default;
+    var decode_codepoint_js_2 = require_decode_codepoint();
+    Object.defineProperty(exports2, "replaceCodePoint", { enumerable: true, get: function() {
+      return decode_codepoint_js_2.replaceCodePoint;
+    } });
+    Object.defineProperty(exports2, "fromCodePoint", { enumerable: true, get: function() {
+      return decode_codepoint_js_2.fromCodePoint;
+    } });
+    var 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 = exports2.BinTrieFlags || (exports2.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 = exports2.DecodingMode || (exports2.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;
+      }()
+    );
+    exports2.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;
+    }
+    exports2.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);
+    }
+    exports2.decodeHTML = decodeHTML;
+    function decodeHTMLAttribute(str) {
+      return htmlDecoder(str, DecodingMode.Attribute);
+    }
+    exports2.decodeHTMLAttribute = decodeHTMLAttribute;
+    function decodeHTMLStrict(str) {
+      return htmlDecoder(str, DecodingMode.Strict);
+    }
+    exports2.decodeHTMLStrict = decodeHTMLStrict;
+    function decodeXML(str) {
+      return xmlDecoder(str, DecodingMode.Strict);
+    }
+    exports2.decodeXML = decodeXML;
+  }
+});
+
+// node_modules/entities/lib/generated/encode-html.js
+var require_encode_html = __commonJS({
+  "node_modules/entities/lib/generated/encode-html.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    function restoreDiff(arr) {
+      for (var i = 1; i < arr.length; i++) {
+        arr[i][0] += arr[i - 1][0] + 1;
+      }
+      return arr;
+    }
+    exports2.default = new Map(/* @__PURE__ */ restoreDiff([[9, "&Tab;"], [0, "&NewLine;"], [22, "&excl;"], [0, "&quot;"], [0, "&num;"], [0, "&dollar;"], [0, "&percnt;"], [0, "&amp;"], [0, "&apos;"], [0, "&lpar;"], [0, "&rpar;"], [0, "&ast;"], [0, "&plus;"], [0, "&comma;"], [1, "&period;"], [0, "&sol;"], [10, "&colon;"], [0, "&semi;"], [0, { v: "&lt;", n: 8402, o: "&nvlt;" }], [0, { v: "&equals;", n: 8421, o: "&bne;" }], [0, { v: "&gt;", n: 8402, o: "&nvgt;" }], [0, "&quest;"], [0, "&commat;"], [26, "&lbrack;"], [0, "&bsol;"], [0, "&rbrack;"], [0, "&Hat;"], [0, "&lowbar;"], [0, "&DiacriticalGrave;"], [5, { n: 106, o: "&fjlig;" }], [20, "&lbrace;"], [0, "&verbar;"], [0, "&rbrace;"], [34, "&nbsp;"], [0, "&iexcl;"], [0, "&cent;"], [0, "&pound;"], [0, "&curren;"], [0, "&yen;"], [0, "&brvbar;"], [0, "&sect;"], [0, "&die;"], [0, "&copy;"], [0, "&ordf;"], [0, "&laquo;"], [0, "&not;"], [0, "&shy;"], [0, "&circledR;"], [0, "&macr;"], [0, "&deg;"], [0, "&PlusMinus;"], [0, "&sup2;"], [0, "&sup3;"], [0, "&acute;"], [0, "&micro;"], [0, "&para;"], [0, "&centerdot;"], [0, "&cedil;"], [0, "&sup1;"], [0, "&ordm;"], [0, "&raquo;"], [0, "&frac14;"], [0, "&frac12;"], [0, "&frac34;"], [0, "&iquest;"], [0, "&Agrave;"], [0, "&Aacute;"], [0, "&Acirc;"], [0, "&Atilde;"], [0, "&Auml;"], [0, "&angst;"], [0, "&AElig;"], [0, "&Ccedil;"], [0, "&Egrave;"], [0, "&Eacute;"], [0, "&Ecirc;"], [0, "&Euml;"], [0, "&Igrave;"], [0, "&Iacute;"], [0, "&Icirc;"], [0, "&Iuml;"], [0, "&ETH;"], [0, "&Ntilde;"], [0, "&Ograve;"], [0, "&Oacute;"], [0, "&Ocirc;"], [0, "&Otilde;"], [0, "&Ouml;"], [0, "&times;"], [0, "&Oslash;"], [0, "&Ugrave;"], [0, "&Uacute;"], [0, "&Ucirc;"], [0, "&Uuml;"], [0, "&Yacute;"], [0, "&THORN;"], [0, "&szlig;"], [0, "&agrave;"], [0, "&aacute;"], [0, "&acirc;"], [0, "&atilde;"], [0, "&auml;"], [0, "&aring;"], [0, "&aelig;"], [0, "&ccedil;"], [0, "&egrave;"], [0, "&eacute;"], [0, "&ecirc;"], [0, "&euml;"], [0, "&igrave;"], [0, "&iacute;"], [0, "&icirc;"], [0, "&iuml;"], [0, "&eth;"], [0, "&ntilde;"], [0, "&ograve;"], [0, "&oacute;"], [0, "&ocirc;"], [0, "&otilde;"], [0, "&ouml;"], [0, "&div;"], [0, "&oslash;"], [0, "&ugrave;"], [0, "&uacute;"], [0, "&ucirc;"], [0, "&uuml;"], [0, "&yacute;"], [0, "&thorn;"], [0, "&yuml;"], [0, "&Amacr;"], [0, "&amacr;"], [0, "&Abreve;"], [0, "&abreve;"], [0, "&Aogon;"], [0, "&aogon;"], [0, "&Cacute;"], [0, "&cacute;"], [0, "&Ccirc;"], [0, "&ccirc;"], [0, "&Cdot;"], [0, "&cdot;"], [0, "&Ccaron;"], [0, "&ccaron;"], [0, "&Dcaron;"], [0, "&dcaron;"], [0, "&Dstrok;"], [0, "&dstrok;"], [0, "&Emacr;"], [0, "&emacr;"], [2, "&Edot;"], [0, "&edot;"], [0, "&Eogon;"], [0, "&eogon;"], [0, "&Ecaron;"], [0, "&ecaron;"], [0, "&Gcirc;"], [0, "&gcirc;"], [0, "&Gbreve;"], [0, "&gbreve;"], [0, "&Gdot;"], [0, "&gdot;"], [0, "&Gcedil;"], [1, "&Hcirc;"], [0, "&hcirc;"], [0, "&Hstrok;"], [0, "&hstrok;"], [0, "&Itilde;"], [0, "&itilde;"], [0, "&Imacr;"], [0, "&imacr;"], [2, "&Iogon;"], [0, "&iogon;"], [0, "&Idot;"], [0, "&imath;"], [0, "&IJlig;"], [0, "&ijlig;"], [0, "&Jcirc;"], [0, "&jcirc;"], [0, "&Kcedil;"], [0, "&kcedil;"], [0, "&kgreen;"], [0, "&Lacute;"], [0, "&lacute;"], [0, "&Lcedil;"], [0, "&lcedil;"], [0, "&Lcaron;"], [0, "&lcaron;"], [0, "&Lmidot;"], [0, "&lmidot;"], [0, "&Lstrok;"], [0, "&lstrok;"], [0, "&Nacute;"], [0, "&nacute;"], [0, "&Ncedil;"], [0, "&ncedil;"], [0, "&Ncaron;"], [0, "&ncaron;"], [0, "&napos;"], [0, "&ENG;"], [0, "&eng;"], [0, "&Omacr;"], [0, "&omacr;"], [2, "&Odblac;"], [0, "&odblac;"], [0, "&OElig;"], [0, "&oelig;"], [0, "&Racute;"], [0, "&racute;"], [0, "&Rcedil;"], [0, "&rcedil;"], [0, "&Rcaron;"], [0, "&rcaron;"], [0, "&Sacute;"], [0, "&sacute;"], [0, "&Scirc;"], [0, "&scirc;"], [0, "&Scedil;"], [0, "&scedil;"], [0, "&Scaron;"], [0, "&scaron;"], [0, "&Tcedil;"], [0, "&tcedil;"], [0, "&Tcaron;"], [0, "&tcaron;"], [0, "&Tstrok;"], [0, "&tstrok;"], [0, "&Utilde;"], [0, "&utilde;"], [0, "&Umacr;"], [0, "&umacr;"], [0, "&Ubreve;"], [0, "&ubreve;"], [0, "&Uring;"], [0, "&uring;"], [0, "&Udblac;"], [0, "&udblac;"], [0, "&Uogon;"], [0, "&uogon;"], [0, "&Wcirc;"], [0, "&wcirc;"], [0, "&Ycirc;"], [0, "&ycirc;"], [0, "&Yuml;"], [0, "&Zacute;"], [0, "&zacute;"], [0, "&Zdot;"], [0, "&zdot;"], [0, "&Zcaron;"], [0, "&zcaron;"], [19, "&fnof;"], [34, "&imped;"], [63, "&gacute;"], [65, "&jmath;"], [142, "&circ;"], [0, "&caron;"], [16, "&breve;"], [0, "&DiacriticalDot;"], [0, "&ring;"], [0, "&ogon;"], [0, "&DiacriticalTilde;"], [0, "&dblac;"], [51, "&DownBreve;"], [127, "&Alpha;"], [0, "&Beta;"], [0, "&Gamma;"], [0, "&Delta;"], [0, "&Epsilon;"], [0, "&Zeta;"], [0, "&Eta;"], [0, "&Theta;"], [0, "&Iota;"], [0, "&Kappa;"], [0, "&Lambda;"], [0, "&Mu;"], [0, "&Nu;"], [0, "&Xi;"], [0, "&Omicron;"], [0, "&Pi;"], [0, "&Rho;"], [1, "&Sigma;"], [0, "&Tau;"], [0, "&Upsilon;"], [0, "&Phi;"], [0, "&Chi;"], [0, "&Psi;"], [0, "&ohm;"], [7, "&alpha;"], [0, "&beta;"], [0, "&gamma;"], [0, "&delta;"], [0, "&epsi;"], [0, "&zeta;"], [0, "&eta;"], [0, "&theta;"], [0, "&iota;"], [0, "&kappa;"], [0, "&lambda;"], [0, "&mu;"], [0, "&nu;"], [0, "&xi;"], [0, "&omicron;"], [0, "&pi;"], [0, "&rho;"], [0, "&sigmaf;"], [0, "&sigma;"], [0, "&tau;"], [0, "&upsi;"], [0, "&phi;"], [0, "&chi;"], [0, "&psi;"], [0, "&omega;"], [7, "&thetasym;"], [0, "&Upsi;"], [2, "&phiv;"], [0, "&piv;"], [5, "&Gammad;"], [0, "&digamma;"], [18, "&kappav;"], [0, "&rhov;"], [3, "&epsiv;"], [0, "&backepsilon;"], [10, "&IOcy;"], [0, "&DJcy;"], [0, "&GJcy;"], [0, "&Jukcy;"], [0, "&DScy;"], [0, "&Iukcy;"], [0, "&YIcy;"], [0, "&Jsercy;"], [0, "&LJcy;"], [0, "&NJcy;"], [0, "&TSHcy;"], [0, "&KJcy;"], [1, "&Ubrcy;"], [0, "&DZcy;"], [0, "&Acy;"], [0, "&Bcy;"], [0, "&Vcy;"], [0, "&Gcy;"], [0, "&Dcy;"], [0, "&IEcy;"], [0, "&ZHcy;"], [0, "&Zcy;"], [0, "&Icy;"], [0, "&Jcy;"], [0, "&Kcy;"], [0, "&Lcy;"], [0, "&Mcy;"], [0, "&Ncy;"], [0, "&Ocy;"], [0, "&Pcy;"], [0, "&Rcy;"], [0, "&Scy;"], [0, "&Tcy;"], [0, "&Ucy;"], [0, "&Fcy;"], [0, "&KHcy;"], [0, "&TScy;"], [0, "&CHcy;"], [0, "&SHcy;"], [0, "&SHCHcy;"], [0, "&HARDcy;"], [0, "&Ycy;"], [0, "&SOFTcy;"], [0, "&Ecy;"], [0, "&YUcy;"], [0, "&YAcy;"], [0, "&acy;"], [0, "&bcy;"], [0, "&vcy;"], [0, "&gcy;"], [0, "&dcy;"], [0, "&iecy;"], [0, "&zhcy;"], [0, "&zcy;"], [0, "&icy;"], [0, "&jcy;"], [0, "&kcy;"], [0, "&lcy;"], [0, "&mcy;"], [0, "&ncy;"], [0, "&ocy;"], [0, "&pcy;"], [0, "&rcy;"], [0, "&scy;"], [0, "&tcy;"], [0, "&ucy;"], [0, "&fcy;"], [0, "&khcy;"], [0, "&tscy;"], [0, "&chcy;"], [0, "&shcy;"], [0, "&shchcy;"], [0, "&hardcy;"], [0, "&ycy;"], [0, "&softcy;"], [0, "&ecy;"], [0, "&yucy;"], [0, "&yacy;"], [1, "&iocy;"], [0, "&djcy;"], [0, "&gjcy;"], [0, "&jukcy;"], [0, "&dscy;"], [0, "&iukcy;"], [0, "&yicy;"], [0, "&jsercy;"], [0, "&ljcy;"], [0, "&njcy;"], [0, "&tshcy;"], [0, "&kjcy;"], [1, "&ubrcy;"], [0, "&dzcy;"], [7074, "&ensp;"], [0, "&emsp;"], [0, "&emsp13;"], [0, "&emsp14;"], [1, "&numsp;"], [0, "&puncsp;"], [0, "&ThinSpace;"], [0, "&hairsp;"], [0, "&NegativeMediumSpace;"], [0, "&zwnj;"], [0, "&zwj;"], [0, "&lrm;"], [0, "&rlm;"], [0, "&dash;"], [2, "&ndash;"], [0, "&mdash;"], [0, "&horbar;"], [0, "&Verbar;"], [1, "&lsquo;"], [0, "&CloseCurlyQuote;"], [0, "&lsquor;"], [1, "&ldquo;"], [0, "&CloseCurlyDoubleQuote;"], [0, "&bdquo;"], [1, "&dagger;"], [0, "&Dagger;"], [0, "&bull;"], [2, "&nldr;"], [0, "&hellip;"], [9, "&permil;"], [0, "&pertenk;"], [0, "&prime;"], [0, "&Prime;"], [0, "&tprime;"], [0, "&backprime;"], [3, "&lsaquo;"], [0, "&rsaquo;"], [3, "&oline;"], [2, "&caret;"], [1, "&hybull;"], [0, "&frasl;"], [10, "&bsemi;"], [7, "&qprime;"], [7, { v: "&MediumSpace;", n: 8202, o: "&ThickSpace;" }], [0, "&NoBreak;"], [0, "&af;"], [0, "&InvisibleTimes;"], [0, "&ic;"], [72, "&euro;"], [46, "&tdot;"], [0, "&DotDot;"], [37, "&complexes;"], [2, "&incare;"], [4, "&gscr;"], [0, "&hamilt;"], [0, "&Hfr;"], [0, "&Hopf;"], [0, "&planckh;"], [0, "&hbar;"], [0, "&imagline;"], [0, "&Ifr;"], [0, "&lagran;"], [0, "&ell;"], [1, "&naturals;"], [0, "&numero;"], [0, "&copysr;"], [0, "&weierp;"], [0, "&Popf;"], [0, "&Qopf;"], [0, "&realine;"], [0, "&real;"], [0, "&reals;"], [0, "&rx;"], [3, "&trade;"], [1, "&integers;"], [2, "&mho;"], [0, "&zeetrf;"], [0, "&iiota;"], [2, "&bernou;"], [0, "&Cayleys;"], [1, "&escr;"], [0, "&Escr;"], [0, "&Fouriertrf;"], [1, "&Mellintrf;"], [0, "&order;"], [0, "&alefsym;"], [0, "&beth;"], [0, "&gimel;"], [0, "&daleth;"], [12, "&CapitalDifferentialD;"], [0, "&dd;"], [0, "&ee;"], [0, "&ii;"], [10, "&frac13;"], [0, "&frac23;"], [0, "&frac15;"], [0, "&frac25;"], [0, "&frac35;"], [0, "&frac45;"], [0, "&frac16;"], [0, "&frac56;"], [0, "&frac18;"], [0, "&frac38;"], [0, "&frac58;"], [0, "&frac78;"], [49, "&larr;"], [0, "&ShortUpArrow;"], [0, "&rarr;"], [0, "&darr;"], [0, "&harr;"], [0, "&updownarrow;"], [0, "&nwarr;"], [0, "&nearr;"], [0, "&LowerRightArrow;"], [0, "&LowerLeftArrow;"], [0, "&nlarr;"], [0, "&nrarr;"], [1, { v: "&rarrw;", n: 824, o: "&nrarrw;" }], [0, "&Larr;"], [0, "&Uarr;"], [0, "&Rarr;"], [0, "&Darr;"], [0, "&larrtl;"], [0, "&rarrtl;"], [0, "&LeftTeeArrow;"], [0, "&mapstoup;"], [0, "&map;"], [0, "&DownTeeArrow;"], [1, "&hookleftarrow;"], [0, "&hookrightarrow;"], [0, "&larrlp;"], [0, "&looparrowright;"], [0, "&harrw;"], [0, "&nharr;"], [1, "&lsh;"], [0, "&rsh;"], [0, "&ldsh;"], [0, "&rdsh;"], [1, "&crarr;"], [0, "&cularr;"], [0, "&curarr;"], [2, "&circlearrowleft;"], [0, "&circlearrowright;"], [0, "&leftharpoonup;"], [0, "&DownLeftVector;"], [0, "&RightUpVector;"], [0, "&LeftUpVector;"], [0, "&rharu;"], [0, "&DownRightVector;"], [0, "&dharr;"], [0, "&dharl;"], [0, "&RightArrowLeftArrow;"], [0, "&udarr;"], [0, "&LeftArrowRightArrow;"], [0, "&leftleftarrows;"], [0, "&upuparrows;"], [0, "&rightrightarrows;"], [0, "&ddarr;"], [0, "&leftrightharpoons;"], [0, "&Equilibrium;"], [0, "&nlArr;"], [0, "&nhArr;"], [0, "&nrArr;"], [0, "&DoubleLeftArrow;"], [0, "&DoubleUpArrow;"], [0, "&DoubleRightArrow;"], [0, "&dArr;"], [0, "&DoubleLeftRightArrow;"], [0, "&DoubleUpDownArrow;"], [0, "&nwArr;"], [0, "&neArr;"], [0, "&seArr;"], [0, "&swArr;"], [0, "&lAarr;"], [0, "&rAarr;"], [1, "&zigrarr;"], [6, "&larrb;"], [0, "&rarrb;"], [15, "&DownArrowUpArrow;"], [7, "&loarr;"], [0, "&roarr;"], [0, "&hoarr;"], [0, "&forall;"], [0, "&comp;"], [0, { v: "&part;", n: 824, o: "&npart;" }], [0, "&exist;"], [0, "&nexist;"], [0, "&empty;"], [1, "&Del;"], [0, "&Element;"], [0, "&NotElement;"], [1, "&ni;"], [0, "&notni;"], [2, "&prod;"], [0, "&coprod;"], [0, "&sum;"], [0, "&minus;"], [0, "&MinusPlus;"], [0, "&dotplus;"], [1, "&Backslash;"], [0, "&lowast;"], [0, "&compfn;"], [1, "&radic;"], [2, "&prop;"], [0, "&infin;"], [0, "&angrt;"], [0, { v: "&ang;", n: 8402, o: "&nang;" }], [0, "&angmsd;"], [0, "&angsph;"], [0, "&mid;"], [0, "&nmid;"], [0, "&DoubleVerticalBar;"], [0, "&NotDoubleVerticalBar;"], [0, "&and;"], [0, "&or;"], [0, { v: "&cap;", n: 65024, o: "&caps;" }], [0, { v: "&cup;", n: 65024, o: "&cups;" }], [0, "&int;"], [0, "&Int;"], [0, "&iiint;"], [0, "&conint;"], [0, "&Conint;"], [0, "&Cconint;"], [0, "&cwint;"], [0, "&ClockwiseContourIntegral;"], [0, "&awconint;"], [0, "&there4;"], [0, "&becaus;"], [0, "&ratio;"], [0, "&Colon;"], [0, "&dotminus;"], [1, "&mDDot;"], [0, "&homtht;"], [0, { v: "&sim;", n: 8402, o: "&nvsim;" }], [0, { v: "&backsim;", n: 817, o: "&race;" }], [0, { v: "&ac;", n: 819, o: "&acE;" }], [0, "&acd;"], [0, "&VerticalTilde;"], [0, "&NotTilde;"], [0, { v: "&eqsim;", n: 824, o: "&nesim;" }], [0, "&sime;"], [0, "&NotTildeEqual;"], [0, "&cong;"], [0, "&simne;"], [0, "&ncong;"], [0, "&ap;"], [0, "&nap;"], [0, "&ape;"], [0, { v: "&apid;", n: 824, o: "&napid;" }], [0, "&backcong;"], [0, { v: "&asympeq;", n: 8402, o: "&nvap;" }], [0, { v: "&bump;", n: 824, o: "&nbump;" }], [0, { v: "&bumpe;", n: 824, o: "&nbumpe;" }], [0, { v: "&doteq;", n: 824, o: "&nedot;" }], [0, "&doteqdot;"], [0, "&efDot;"], [0, "&erDot;"], [0, "&Assign;"], [0, "&ecolon;"], [0, "&ecir;"], [0, "&circeq;"], [1, "&wedgeq;"], [0, "&veeeq;"], [1, "&triangleq;"], [2, "&equest;"], [0, "&ne;"], [0, { v: "&Congruent;", n: 8421, o: "&bnequiv;" }], [0, "&nequiv;"], [1, { v: "&le;", n: 8402, o: "&nvle;" }], [0, { v: "&ge;", n: 8402, o: "&nvge;" }], [0, { v: "&lE;", n: 824, o: "&nlE;" }], [0, { v: "&gE;", n: 824, o: "&ngE;" }], [0, { v: "&lnE;", n: 65024, o: "&lvertneqq;" }], [0, { v: "&gnE;", n: 65024, o: "&gvertneqq;" }], [0, { v: "&ll;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nLtv;"], [7577, "&nLt;"]])) }], [0, { v: "&gg;", n: new Map(/* @__PURE__ */ restoreDiff([[824, "&nGtv;"], [7577, "&nGt;"]])) }], [0, "&between;"], [0, "&NotCupCap;"], [0, "&nless;"], [0, "&ngt;"], [0, "&nle;"], [0, "&nge;"], [0, "&lesssim;"], [0, "&GreaterTilde;"], [0, "&nlsim;"], [0, "&ngsim;"], [0, "&LessGreater;"], [0, "&gl;"], [0, "&NotLessGreater;"], [0, "&NotGreaterLess;"], [0, "&pr;"], [0, "&sc;"], [0, "&prcue;"], [0, "&sccue;"], [0, "&PrecedesTilde;"], [0, { v: "&scsim;", n: 824, o: "&NotSucceedsTilde;" }], [0, "&NotPrecedes;"], [0, "&NotSucceeds;"], [0, { v: "&sub;", n: 8402, o: "&NotSubset;" }], [0, { v: "&sup;", n: 8402, o: "&NotSuperset;" }], [0, "&nsub;"], [0, "&nsup;"], [0, "&sube;"], [0, "&supe;"], [0, "&NotSubsetEqual;"], [0, "&NotSupersetEqual;"], [0, { v: "&subne;", n: 65024, o: "&varsubsetneq;" }], [0, { v: "&supne;", n: 65024, o: "&varsupsetneq;" }], [1, "&cupdot;"], [0, "&UnionPlus;"], [0, { v: "&sqsub;", n: 824, o: "&NotSquareSubset;" }], [0, { v: "&sqsup;", n: 824, o: "&NotSquareSuperset;" }], [0, "&sqsube;"], [0, "&sqsupe;"], [0, { v: "&sqcap;", n: 65024, o: "&sqcaps;" }], [0, { v: "&sqcup;", n: 65024, o: "&sqcups;" }], [0, "&CirclePlus;"], [0, "&CircleMinus;"], [0, "&CircleTimes;"], [0, "&osol;"], [0, "&CircleDot;"], [0, "&circledcirc;"], [0, "&circledast;"], [1, "&circleddash;"], [0, "&boxplus;"], [0, "&boxminus;"], [0, "&boxtimes;"], [0, "&dotsquare;"], [0, "&RightTee;"], [0, "&dashv;"], [0, "&DownTee;"], [0, "&bot;"], [1, "&models;"], [0, "&DoubleRightTee;"], [0, "&Vdash;"], [0, "&Vvdash;"], [0, "&VDash;"], [0, "&nvdash;"], [0, "&nvDash;"], [0, "&nVdash;"], [0, "&nVDash;"], [0, "&prurel;"], [1, "&LeftTriangle;"], [0, "&RightTriangle;"], [0, { v: "&LeftTriangleEqual;", n: 8402, o: "&nvltrie;" }], [0, { v: "&RightTriangleEqual;", n: 8402, o: "&nvrtrie;" }], [0, "&origof;"], [0, "&imof;"], [0, "&multimap;"], [0, "&hercon;"], [0, "&intcal;"], [0, "&veebar;"], [1, "&barvee;"], [0, "&angrtvb;"], [0, "&lrtri;"], [0, "&bigwedge;"], [0, "&bigvee;"], [0, "&bigcap;"], [0, "&bigcup;"], [0, "&diam;"], [0, "&sdot;"], [0, "&sstarf;"], [0, "&divideontimes;"], [0, "&bowtie;"], [0, "&ltimes;"], [0, "&rtimes;"], [0, "&leftthreetimes;"], [0, "&rightthreetimes;"], [0, "&backsimeq;"], [0, "&curlyvee;"], [0, "&curlywedge;"], [0, "&Sub;"], [0, "&Sup;"], [0, "&Cap;"], [0, "&Cup;"], [0, "&fork;"], [0, "&epar;"], [0, "&lessdot;"], [0, "&gtdot;"], [0, { v: "&Ll;", n: 824, o: "&nLl;" }], [0, { v: "&Gg;", n: 824, o: "&nGg;" }], [0, { v: "&leg;", n: 65024, o: "&lesg;" }], [0, { v: "&gel;", n: 65024, o: "&gesl;" }], [2, "&cuepr;"], [0, "&cuesc;"], [0, "&NotPrecedesSlantEqual;"], [0, "&NotSucceedsSlantEqual;"], [0, "&NotSquareSubsetEqual;"], [0, "&NotSquareSupersetEqual;"], [2, "&lnsim;"], [0, "&gnsim;"], [0, "&precnsim;"], [0, "&scnsim;"], [0, "&nltri;"], [0, "&NotRightTriangle;"], [0, "&nltrie;"], [0, "&NotRightTriangleEqual;"], [0, "&vellip;"], [0, "&ctdot;"], [0, "&utdot;"], [0, "&dtdot;"], [0, "&disin;"], [0, "&isinsv;"], [0, "&isins;"], [0, { v: "&isindot;", n: 824, o: "&notindot;" }], [0, "&notinvc;"], [0, "&notinvb;"], [1, { v: "&isinE;", n: 824, o: "&notinE;" }], [0, "&nisd;"], [0, "&xnis;"], [0, "&nis;"], [0, "&notnivc;"], [0, "&notnivb;"], [6, "&barwed;"], [0, "&Barwed;"], [1, "&lceil;"], [0, "&rceil;"], [0, "&LeftFloor;"], [0, "&rfloor;"], [0, "&drcrop;"], [0, "&dlcrop;"], [0, "&urcrop;"], [0, "&ulcrop;"], [0, "&bnot;"], [1, "&profline;"], [0, "&profsurf;"], [1, "&telrec;"], [0, "&target;"], [5, "&ulcorn;"], [0, "&urcorn;"], [0, "&dlcorn;"], [0, "&drcorn;"], [2, "&frown;"], [0, "&smile;"], [9, "&cylcty;"], [0, "&profalar;"], [7, "&topbot;"], [6, "&ovbar;"], [1, "&solbar;"], [60, "&angzarr;"], [51, "&lmoustache;"], [0, "&rmoustache;"], [2, "&OverBracket;"], [0, "&bbrk;"], [0, "&bbrktbrk;"], [37, "&OverParenthesis;"], [0, "&UnderParenthesis;"], [0, "&OverBrace;"], [0, "&UnderBrace;"], [2, "&trpezium;"], [4, "&elinters;"], [59, "&blank;"], [164, "&circledS;"], [55, "&boxh;"], [1, "&boxv;"], [9, "&boxdr;"], [3, "&boxdl;"], [3, "&boxur;"], [3, "&boxul;"], [3, "&boxvr;"], [7, "&boxvl;"], [7, "&boxhd;"], [7, "&boxhu;"], [7, "&boxvh;"], [19, "&boxH;"], [0, "&boxV;"], [0, "&boxdR;"], [0, "&boxDr;"], [0, "&boxDR;"], [0, "&boxdL;"], [0, "&boxDl;"], [0, "&boxDL;"], [0, "&boxuR;"], [0, "&boxUr;"], [0, "&boxUR;"], [0, "&boxuL;"], [0, "&boxUl;"], [0, "&boxUL;"], [0, "&boxvR;"], [0, "&boxVr;"], [0, "&boxVR;"], [0, "&boxvL;"], [0, "&boxVl;"], [0, "&boxVL;"], [0, "&boxHd;"], [0, "&boxhD;"], [0, "&boxHD;"], [0, "&boxHu;"], [0, "&boxhU;"], [0, "&boxHU;"], [0, "&boxvH;"], [0, "&boxVh;"], [0, "&boxVH;"], [19, "&uhblk;"], [3, "&lhblk;"], [3, "&block;"], [8, "&blk14;"], [0, "&blk12;"], [0, "&blk34;"], [13, "&square;"], [8, "&blacksquare;"], [0, "&EmptyVerySmallSquare;"], [1, "&rect;"], [0, "&marker;"], [2, "&fltns;"], [1, "&bigtriangleup;"], [0, "&blacktriangle;"], [0, "&triangle;"], [2, "&blacktriangleright;"], [0, "&rtri;"], [3, "&bigtriangledown;"], [0, "&blacktriangledown;"], [0, "&dtri;"], [2, "&blacktriangleleft;"], [0, "&ltri;"], [6, "&loz;"], [0, "&cir;"], [32, "&tridot;"], [2, "&bigcirc;"], [8, "&ultri;"], [0, "&urtri;"], [0, "&lltri;"], [0, "&EmptySmallSquare;"], [0, "&FilledSmallSquare;"], [8, "&bigstar;"], [0, "&star;"], [7, "&phone;"], [49, "&female;"], [1, "&male;"], [29, "&spades;"], [2, "&clubs;"], [1, "&hearts;"], [0, "&diamondsuit;"], [3, "&sung;"], [2, "&flat;"], [0, "&natural;"], [0, "&sharp;"], [163, "&check;"], [3, "&cross;"], [8, "&malt;"], [21, "&sext;"], [33, "&VerticalSeparator;"], [25, "&lbbrk;"], [0, "&rbbrk;"], [84, "&bsolhsub;"], [0, "&suphsol;"], [28, "&LeftDoubleBracket;"], [0, "&RightDoubleBracket;"], [0, "&lang;"], [0, "&rang;"], [0, "&Lang;"], [0, "&Rang;"], [0, "&loang;"], [0, "&roang;"], [7, "&longleftarrow;"], [0, "&longrightarrow;"], [0, "&longleftrightarrow;"], [0, "&DoubleLongLeftArrow;"], [0, "&DoubleLongRightArrow;"], [0, "&DoubleLongLeftRightArrow;"], [1, "&longmapsto;"], [2, "&dzigrarr;"], [258, "&nvlArr;"], [0, "&nvrArr;"], [0, "&nvHarr;"], [0, "&Map;"], [6, "&lbarr;"], [0, "&bkarow;"], [0, "&lBarr;"], [0, "&dbkarow;"], [0, "&drbkarow;"], [0, "&DDotrahd;"], [0, "&UpArrowBar;"], [0, "&DownArrowBar;"], [2, "&Rarrtl;"], [2, "&latail;"], [0, "&ratail;"], [0, "&lAtail;"], [0, "&rAtail;"], [0, "&larrfs;"], [0, "&rarrfs;"], [0, "&larrbfs;"], [0, "&rarrbfs;"], [2, "&nwarhk;"], [0, "&nearhk;"], [0, "&hksearow;"], [0, "&hkswarow;"], [0, "&nwnear;"], [0, "&nesear;"], [0, "&seswar;"], [0, "&swnwar;"], [8, { v: "&rarrc;", n: 824, o: "&nrarrc;" }], [1, "&cudarrr;"], [0, "&ldca;"], [0, "&rdca;"], [0, "&cudarrl;"], [0, "&larrpl;"], [2, "&curarrm;"], [0, "&cularrp;"], [7, "&rarrpl;"], [2, "&harrcir;"], [0, "&Uarrocir;"], [0, "&lurdshar;"], [0, "&ldrushar;"], [2, "&LeftRightVector;"], [0, "&RightUpDownVector;"], [0, "&DownLeftRightVector;"], [0, "&LeftUpDownVector;"], [0, "&LeftVectorBar;"], [0, "&RightVectorBar;"], [0, "&RightUpVectorBar;"], [0, "&RightDownVectorBar;"], [0, "&DownLeftVectorBar;"], [0, "&DownRightVectorBar;"], [0, "&LeftUpVectorBar;"], [0, "&LeftDownVectorBar;"], [0, "&LeftTeeVector;"], [0, "&RightTeeVector;"], [0, "&RightUpTeeVector;"], [0, "&RightDownTeeVector;"], [0, "&DownLeftTeeVector;"], [0, "&DownRightTeeVector;"], [0, "&LeftUpTeeVector;"], [0, "&LeftDownTeeVector;"], [0, "&lHar;"], [0, "&uHar;"], [0, "&rHar;"], [0, "&dHar;"], [0, "&luruhar;"], [0, "&ldrdhar;"], [0, "&ruluhar;"], [0, "&rdldhar;"], [0, "&lharul;"], [0, "&llhard;"], [0, "&rharul;"], [0, "&lrhard;"], [0, "&udhar;"], [0, "&duhar;"], [0, "&RoundImplies;"], [0, "&erarr;"], [0, "&simrarr;"], [0, "&larrsim;"], [0, "&rarrsim;"], [0, "&rarrap;"], [0, "&ltlarr;"], [1, "&gtrarr;"], [0, "&subrarr;"], [1, "&suplarr;"], [0, "&lfisht;"], [0, "&rfisht;"], [0, "&ufisht;"], [0, "&dfisht;"], [5, "&lopar;"], [0, "&ropar;"], [4, "&lbrke;"], [0, "&rbrke;"], [0, "&lbrkslu;"], [0, "&rbrksld;"], [0, "&lbrksld;"], [0, "&rbrkslu;"], [0, "&langd;"], [0, "&rangd;"], [0, "&lparlt;"], [0, "&rpargt;"], [0, "&gtlPar;"], [0, "&ltrPar;"], [3, "&vzigzag;"], [1, "&vangrt;"], [0, "&angrtvbd;"], [6, "&ange;"], [0, "&range;"], [0, "&dwangle;"], [0, "&uwangle;"], [0, "&angmsdaa;"], [0, "&angmsdab;"], [0, "&angmsdac;"], [0, "&angmsdad;"], [0, "&angmsdae;"], [0, "&angmsdaf;"], [0, "&angmsdag;"], [0, "&angmsdah;"], [0, "&bemptyv;"], [0, "&demptyv;"], [0, "&cemptyv;"], [0, "&raemptyv;"], [0, "&laemptyv;"], [0, "&ohbar;"], [0, "&omid;"], [0, "&opar;"], [1, "&operp;"], [1, "&olcross;"], [0, "&odsold;"], [1, "&olcir;"], [0, "&ofcir;"], [0, "&olt;"], [0, "&ogt;"], [0, "&cirscir;"], [0, "&cirE;"], [0, "&solb;"], [0, "&bsolb;"], [3, "&boxbox;"], [3, "&trisb;"], [0, "&rtriltri;"], [0, { v: "&LeftTriangleBar;", n: 824, o: "&NotLeftTriangleBar;" }], [0, { v: "&RightTriangleBar;", n: 824, o: "&NotRightTriangleBar;" }], [11, "&iinfin;"], [0, "&infintie;"], [0, "&nvinfin;"], [4, "&eparsl;"], [0, "&smeparsl;"], [0, "&eqvparsl;"], [5, "&blacklozenge;"], [8, "&RuleDelayed;"], [1, "&dsol;"], [9, "&bigodot;"], [0, "&bigoplus;"], [0, "&bigotimes;"], [1, "&biguplus;"], [1, "&bigsqcup;"], [5, "&iiiint;"], [0, "&fpartint;"], [2, "&cirfnint;"], [0, "&awint;"], [0, "&rppolint;"], [0, "&scpolint;"], [0, "&npolint;"], [0, "&pointint;"], [0, "&quatint;"], [0, "&intlarhk;"], [10, "&pluscir;"], [0, "&plusacir;"], [0, "&simplus;"], [0, "&plusdu;"], [0, "&plussim;"], [0, "&plustwo;"], [1, "&mcomma;"], [0, "&minusdu;"], [2, "&loplus;"], [0, "&roplus;"], [0, "&Cross;"], [0, "&timesd;"], [0, "&timesbar;"], [1, "&smashp;"], [0, "&lotimes;"], [0, "&rotimes;"], [0, "&otimesas;"], [0, "&Otimes;"], [0, "&odiv;"], [0, "&triplus;"], [0, "&triminus;"], [0, "&tritime;"], [0, "&intprod;"], [2, "&amalg;"], [0, "&capdot;"], [1, "&ncup;"], [0, "&ncap;"], [0, "&capand;"], [0, "&cupor;"], [0, "&cupcap;"], [0, "&capcup;"], [0, "&cupbrcap;"], [0, "&capbrcup;"], [0, "&cupcup;"], [0, "&capcap;"], [0, "&ccups;"], [0, "&ccaps;"], [2, "&ccupssm;"], [2, "&And;"], [0, "&Or;"], [0, "&andand;"], [0, "&oror;"], [0, "&orslope;"], [0, "&andslope;"], [1, "&andv;"], [0, "&orv;"], [0, "&andd;"], [0, "&ord;"], [1, "&wedbar;"], [6, "&sdote;"], [3, "&simdot;"], [2, { v: "&congdot;", n: 824, o: "&ncongdot;" }], [0, "&easter;"], [0, "&apacir;"], [0, { v: "&apE;", n: 824, o: "&napE;" }], [0, "&eplus;"], [0, "&pluse;"], [0, "&Esim;"], [0, "&Colone;"], [0, "&Equal;"], [1, "&ddotseq;"], [0, "&equivDD;"], [0, "&ltcir;"], [0, "&gtcir;"], [0, "&ltquest;"], [0, "&gtquest;"], [0, { v: "&leqslant;", n: 824, o: "&nleqslant;" }], [0, { v: "&geqslant;", n: 824, o: "&ngeqslant;" }], [0, "&lesdot;"], [0, "&gesdot;"], [0, "&lesdoto;"], [0, "&gesdoto;"], [0, "&lesdotor;"], [0, "&gesdotol;"], [0, "&lap;"], [0, "&gap;"], [0, "&lne;"], [0, "&gne;"], [0, "&lnap;"], [0, "&gnap;"], [0, "&lEg;"], [0, "&gEl;"], [0, "&lsime;"], [0, "&gsime;"], [0, "&lsimg;"], [0, "&gsiml;"], [0, "&lgE;"], [0, "&glE;"], [0, "&lesges;"], [0, "&gesles;"], [0, "&els;"], [0, "&egs;"], [0, "&elsdot;"], [0, "&egsdot;"], [0, "&el;"], [0, "&eg;"], [2, "&siml;"], [0, "&simg;"], [0, "&simlE;"], [0, "&simgE;"], [0, { v: "&LessLess;", n: 824, o: "&NotNestedLessLess;" }], [0, { v: "&GreaterGreater;", n: 824, o: "&NotNestedGreaterGreater;" }], [1, "&glj;"], [0, "&gla;"], [0, "&ltcc;"], [0, "&gtcc;"], [0, "&lescc;"], [0, "&gescc;"], [0, "&smt;"], [0, "&lat;"], [0, { v: "&smte;", n: 65024, o: "&smtes;" }], [0, { v: "&late;", n: 65024, o: "&lates;" }], [0, "&bumpE;"], [0, { v: "&PrecedesEqual;", n: 824, o: "&NotPrecedesEqual;" }], [0, { v: "&sce;", n: 824, o: "&NotSucceedsEqual;" }], [2, "&prE;"], [0, "&scE;"], [0, "&precneqq;"], [0, "&scnE;"], [0, "&prap;"], [0, "&scap;"], [0, "&precnapprox;"], [0, "&scnap;"], [0, "&Pr;"], [0, "&Sc;"], [0, "&subdot;"], [0, "&supdot;"], [0, "&subplus;"], [0, "&supplus;"], [0, "&submult;"], [0, "&supmult;"], [0, "&subedot;"], [0, "&supedot;"], [0, { v: "&subE;", n: 824, o: "&nsubE;" }], [0, { v: "&supE;", n: 824, o: "&nsupE;" }], [0, "&subsim;"], [0, "&supsim;"], [2, { v: "&subnE;", n: 65024, o: "&varsubsetneqq;" }], [0, { v: "&supnE;", n: 65024, o: "&varsupsetneqq;" }], [2, "&csub;"], [0, "&csup;"], [0, "&csube;"], [0, "&csupe;"], [0, "&subsup;"], [0, "&supsub;"], [0, "&subsub;"], [0, "&supsup;"], [0, "&suphsub;"], [0, "&supdsub;"], [0, "&forkv;"], [0, "&topfork;"], [0, "&mlcp;"], [8, "&Dashv;"], [1, "&Vdashl;"], [0, "&Barv;"], [0, "&vBar;"], [0, "&vBarv;"], [1, "&Vbar;"], [0, "&Not;"], [0, "&bNot;"], [0, "&rnmid;"], [0, "&cirmid;"], [0, "&midcir;"], [0, "&topcir;"], [0, "&nhpar;"], [0, "&parsim;"], [9, { v: "&parsl;", n: 8421, o: "&nparsl;" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "&Ascr;"], [1, "&Cscr;"], [0, "&Dscr;"], [2, "&Gscr;"], [2, "&Jscr;"], [0, "&Kscr;"], [2, "&Nscr;"], [0, "&Oscr;"], [0, "&Pscr;"], [0, "&Qscr;"], [1, "&Sscr;"], [0, "&Tscr;"], [0, "&Uscr;"], [0, "&Vscr;"], [0, "&Wscr;"], [0, "&Xscr;"], [0, "&Yscr;"], [0, "&Zscr;"], [0, "&ascr;"], [0, "&bscr;"], [0, "&cscr;"], [0, "&dscr;"], [1, "&fscr;"], [1, "&hscr;"], [0, "&iscr;"], [0, "&jscr;"], [0, "&kscr;"], [0, "&lscr;"], [0, "&mscr;"], [0, "&nscr;"], [1, "&pscr;"], [0, "&qscr;"], [0, "&rscr;"], [0, "&sscr;"], [0, "&tscr;"], [0, "&uscr;"], [0, "&vscr;"], [0, "&wscr;"], [0, "&xscr;"], [0, "&yscr;"], [0, "&zscr;"], [52, "&Afr;"], [0, "&Bfr;"], [1, "&Dfr;"], [0, "&Efr;"], [0, "&Ffr;"], [0, "&Gfr;"], [2, "&Jfr;"], [0, "&Kfr;"], [0, "&Lfr;"], [0, "&Mfr;"], [0, "&Nfr;"], [0, "&Ofr;"], [0, "&Pfr;"], [0, "&Qfr;"], [1, "&Sfr;"], [0, "&Tfr;"], [0, "&Ufr;"], [0, "&Vfr;"], [0, "&Wfr;"], [0, "&Xfr;"], [0, "&Yfr;"], [1, "&afr;"], [0, "&bfr;"], [0, "&cfr;"], [0, "&dfr;"], [0, "&efr;"], [0, "&ffr;"], [0, "&gfr;"], [0, "&hfr;"], [0, "&ifr;"], [0, "&jfr;"], [0, "&kfr;"], [0, "&lfr;"], [0, "&mfr;"], [0, "&nfr;"], [0, "&ofr;"], [0, "&pfr;"], [0, "&qfr;"], [0, "&rfr;"], [0, "&sfr;"], [0, "&tfr;"], [0, "&ufr;"], [0, "&vfr;"], [0, "&wfr;"], [0, "&xfr;"], [0, "&yfr;"], [0, "&zfr;"], [0, "&Aopf;"], [0, "&Bopf;"], [1, "&Dopf;"], [0, "&Eopf;"], [0, "&Fopf;"], [0, "&Gopf;"], [1, "&Iopf;"], [0, "&Jopf;"], [0, "&Kopf;"], [0, "&Lopf;"], [0, "&Mopf;"], [1, "&Oopf;"], [3, "&Sopf;"], [0, "&Topf;"], [0, "&Uopf;"], [0, "&Vopf;"], [0, "&Wopf;"], [0, "&Xopf;"], [0, "&Yopf;"], [1, "&aopf;"], [0, "&bopf;"], [0, "&copf;"], [0, "&dopf;"], [0, "&eopf;"], [0, "&fopf;"], [0, "&gopf;"], [0, "&hopf;"], [0, "&iopf;"], [0, "&jopf;"], [0, "&kopf;"], [0, "&lopf;"], [0, "&mopf;"], [0, "&nopf;"], [0, "&oopf;"], [0, "&popf;"], [0, "&qopf;"], [0, "&ropf;"], [0, "&sopf;"], [0, "&topf;"], [0, "&uopf;"], [0, "&vopf;"], [0, "&wopf;"], [0, "&xopf;"], [0, "&yopf;"], [0, "&zopf;"]])) }], [8906, "&fflig;"], [0, "&filig;"], [0, "&fllig;"], [0, "&ffilig;"], [0, "&ffllig;"]]));
+  }
+});
+
+// node_modules/entities/lib/escape.js
+var require_escape = __commonJS({
+  "node_modules/entities/lib/escape.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.escapeText = exports2.escapeAttribute = exports2.escapeUTF8 = exports2.escape = exports2.encodeXML = exports2.getCodePoint = exports2.xmlReplacer = void 0;
+    exports2.xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
+    var xmlCodeMap = /* @__PURE__ */ new Map([
+      [34, "&quot;"],
+      [38, "&amp;"],
+      [39, "&apos;"],
+      [60, "&lt;"],
+      [62, "&gt;"]
+    ]);
+    exports2.getCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
+    String.prototype.codePointAt != null ? function(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 = exports2.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, exports2.getCodePoint)(str, i).toString(16), ";");
+          lastIdx = exports2.xmlReplacer.lastIndex += Number((char & 64512) === 55296);
+        }
+      }
+      return ret + str.substr(lastIdx);
+    }
+    exports2.encodeXML = encodeXML;
+    exports2.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);
+      };
+    }
+    exports2.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap);
+    exports2.escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([
+      [34, "&quot;"],
+      [38, "&amp;"],
+      [160, "&nbsp;"]
+    ]));
+    exports2.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"(exports2) {
+    "use strict";
+    var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.encodeNonAsciiHTML = exports2.encodeHTML = void 0;
+    var encode_html_js_1 = __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);
+    }
+    exports2.encodeHTML = encodeHTML;
+    function encodeNonAsciiHTML(data) {
+      return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data);
+    }
+    exports2.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_lib4 = __commonJS({
+  "node_modules/entities/lib/index.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.decodeXMLStrict = exports2.decodeHTML5Strict = exports2.decodeHTML4Strict = exports2.decodeHTML5 = exports2.decodeHTML4 = exports2.decodeHTMLAttribute = exports2.decodeHTMLStrict = exports2.decodeHTML = exports2.decodeXML = exports2.DecodingMode = exports2.EntityDecoder = exports2.encodeHTML5 = exports2.encodeHTML4 = exports2.encodeNonAsciiHTML = exports2.encodeHTML = exports2.escapeText = exports2.escapeAttribute = exports2.escapeUTF8 = exports2.escape = exports2.encodeXML = exports2.encode = exports2.decodeStrict = exports2.decode = exports2.EncodingMode = exports2.EntityLevel = void 0;
+    var decode_js_1 = require_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 = exports2.EntityLevel || (exports2.EntityLevel = {}));
+    var EncodingMode;
+    (function(EncodingMode2) {
+      EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8";
+      EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII";
+      EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive";
+      EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute";
+      EncodingMode2[EncodingMode2["Text"] = 4] = "Text";
+    })(EncodingMode = exports2.EncodingMode || (exports2.EncodingMode = {}));
+    function 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);
+    }
+    exports2.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);
+    }
+    exports2.decodeStrict = decodeStrict;
+    function encode(data, options) {
+      if (options === void 0) {
+        options = EntityLevel.XML;
+      }
+      var opts = typeof options === "number" ? { level: options } : options;
+      if (opts.mode === EncodingMode.UTF8)
+        return (0, escape_js_1.escapeUTF8)(data);
+      if (opts.mode === EncodingMode.Attribute)
+        return (0, escape_js_1.escapeAttribute)(data);
+      if (opts.mode === EncodingMode.Text)
+        return (0, escape_js_1.escapeText)(data);
+      if (opts.level === EntityLevel.HTML) {
+        if (opts.mode === EncodingMode.ASCII) {
+          return (0, encode_js_1.encodeNonAsciiHTML)(data);
+        }
+        return (0, encode_js_1.encodeHTML)(data);
+      }
+      return (0, escape_js_1.encodeXML)(data);
+    }
+    exports2.encode = encode;
+    var escape_js_2 = require_escape();
+    Object.defineProperty(exports2, "encodeXML", { enumerable: true, get: function() {
+      return escape_js_2.encodeXML;
+    } });
+    Object.defineProperty(exports2, "escape", { enumerable: true, get: function() {
+      return escape_js_2.escape;
+    } });
+    Object.defineProperty(exports2, "escapeUTF8", { enumerable: true, get: function() {
+      return escape_js_2.escapeUTF8;
+    } });
+    Object.defineProperty(exports2, "escapeAttribute", { enumerable: true, get: function() {
+      return escape_js_2.escapeAttribute;
+    } });
+    Object.defineProperty(exports2, "escapeText", { enumerable: true, get: function() {
+      return escape_js_2.escapeText;
+    } });
+    var encode_js_2 = require_encode();
+    Object.defineProperty(exports2, "encodeHTML", { enumerable: true, get: function() {
+      return encode_js_2.encodeHTML;
+    } });
+    Object.defineProperty(exports2, "encodeNonAsciiHTML", { enumerable: true, get: function() {
+      return encode_js_2.encodeNonAsciiHTML;
+    } });
+    Object.defineProperty(exports2, "encodeHTML4", { enumerable: true, get: function() {
+      return encode_js_2.encodeHTML;
+    } });
+    Object.defineProperty(exports2, "encodeHTML5", { enumerable: true, get: function() {
+      return encode_js_2.encodeHTML;
+    } });
+    var decode_js_2 = require_decode();
+    Object.defineProperty(exports2, "EntityDecoder", { enumerable: true, get: function() {
+      return decode_js_2.EntityDecoder;
+    } });
+    Object.defineProperty(exports2, "DecodingMode", { enumerable: true, get: function() {
+      return decode_js_2.DecodingMode;
+    } });
+    Object.defineProperty(exports2, "decodeXML", { enumerable: true, get: function() {
+      return decode_js_2.decodeXML;
+    } });
+    Object.defineProperty(exports2, "decodeHTML", { enumerable: true, get: function() {
+      return decode_js_2.decodeHTML;
+    } });
+    Object.defineProperty(exports2, "decodeHTMLStrict", { enumerable: true, get: function() {
+      return decode_js_2.decodeHTMLStrict;
+    } });
+    Object.defineProperty(exports2, "decodeHTMLAttribute", { enumerable: true, get: function() {
+      return decode_js_2.decodeHTMLAttribute;
+    } });
+    Object.defineProperty(exports2, "decodeHTML4", { enumerable: true, get: function() {
+      return decode_js_2.decodeHTML;
+    } });
+    Object.defineProperty(exports2, "decodeHTML5", { enumerable: true, get: function() {
+      return decode_js_2.decodeHTML;
+    } });
+    Object.defineProperty(exports2, "decodeHTML4Strict", { enumerable: true, get: function() {
+      return decode_js_2.decodeHTMLStrict;
+    } });
+    Object.defineProperty(exports2, "decodeHTML5Strict", { enumerable: true, get: function() {
+      return decode_js_2.decodeHTMLStrict;
+    } });
+    Object.defineProperty(exports2, "decodeXMLStrict", { enumerable: true, get: function() {
+      return decode_js_2.decodeXML;
+    } });
+  }
+});
+
+// node_modules/dom-serializer/lib/foreignNames.js
+var require_foreignNames = __commonJS({
+  "node_modules/dom-serializer/lib/foreignNames.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.attributeNames = exports2.elementNames = void 0;
+    exports2.elementNames = new Map([
+      "altGlyph",
+      "altGlyphDef",
+      "altGlyphItem",
+      "animateColor",
+      "animateMotion",
+      "animateTransform",
+      "clipPath",
+      "feBlend",
+      "feColorMatrix",
+      "feComponentTransfer",
+      "feComposite",
+      "feConvolveMatrix",
+      "feDiffuseLighting",
+      "feDisplacementMap",
+      "feDistantLight",
+      "feDropShadow",
+      "feFlood",
+      "feFuncA",
+      "feFuncB",
+      "feFuncG",
+      "feFuncR",
+      "feGaussianBlur",
+      "feImage",
+      "feMerge",
+      "feMergeNode",
+      "feMorphology",
+      "feOffset",
+      "fePointLight",
+      "feSpecularLighting",
+      "feSpotLight",
+      "feTile",
+      "feTurbulence",
+      "foreignObject",
+      "glyphRef",
+      "linearGradient",
+      "radialGradient",
+      "textPath"
+    ].map(function(val) {
+      return [val.toLowerCase(), val];
+    }));
+    exports2.attributeNames = new Map([
+      "definitionURL",
+      "attributeName",
+      "attributeType",
+      "baseFrequency",
+      "baseProfile",
+      "calcMode",
+      "clipPathUnits",
+      "diffuseConstant",
+      "edgeMode",
+      "filterUnits",
+      "glyphRef",
+      "gradientTransform",
+      "gradientUnits",
+      "kernelMatrix",
+      "kernelUnitLength",
+      "keyPoints",
+      "keySplines",
+      "keyTimes",
+      "lengthAdjust",
+      "limitingConeAngle",
+      "markerHeight",
+      "markerUnits",
+      "markerWidth",
+      "maskContentUnits",
+      "maskUnits",
+      "numOctaves",
+      "pathLength",
+      "patternContentUnits",
+      "patternTransform",
+      "patternUnits",
+      "pointsAtX",
+      "pointsAtY",
+      "pointsAtZ",
+      "preserveAlpha",
+      "preserveAspectRatio",
+      "primitiveUnits",
+      "refX",
+      "refY",
+      "repeatCount",
+      "repeatDur",
+      "requiredExtensions",
+      "requiredFeatures",
+      "specularConstant",
+      "specularExponent",
+      "spreadMethod",
+      "startOffset",
+      "stdDeviation",
+      "stitchTiles",
+      "surfaceScale",
+      "systemLanguage",
+      "tableValues",
+      "targetX",
+      "targetY",
+      "textLength",
+      "viewBox",
+      "viewTarget",
+      "xChannelSelector",
+      "yChannelSelector",
+      "zoomAndPan"
+    ].map(function(val) {
+      return [val.toLowerCase(), val];
+    }));
+  }
+});
+
+// node_modules/dom-serializer/lib/index.js
+var require_lib5 = __commonJS({
+  "node_modules/dom-serializer/lib/index.js"(exports2) {
+    "use strict";
+    var __assign = exports2 && exports2.__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 = exports2 && exports2.__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 = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
+      Object.defineProperty(o, "default", { enumerable: true, value: v });
+    } : function(o, v) {
+      o["default"] = v;
+    });
+    var __importStar = exports2 && exports2.__importStar || function(mod) {
+      if (mod && mod.__esModule) return mod;
+      var result = {};
+      if (mod != null) {
+        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+      }
+      __setModuleDefault(result, mod);
+      return result;
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.render = void 0;
+    var ElementType = __importStar(require_lib2());
+    var entities_1 = require_lib4();
+    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;
+    }
+    exports2.render = render;
+    exports2.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_stringify3 = __commonJS({
+  "node_modules/domutils/lib/stringify.js"(exports2) {
+    "use strict";
+    var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.innerText = exports2.textContent = exports2.getText = exports2.getInnerHTML = exports2.getOuterHTML = void 0;
+    var domhandler_1 = require_lib3();
+    var dom_serializer_1 = __importDefault(require_lib5());
+    var domelementtype_1 = require_lib2();
+    function getOuterHTML(node, options) {
+      return (0, dom_serializer_1.default)(node, options);
+    }
+    exports2.getOuterHTML = getOuterHTML;
+    function getInnerHTML(node, options) {
+      return (0, domhandler_1.hasChildren)(node) ? node.children.map(function(node2) {
+        return getOuterHTML(node2, options);
+      }).join("") : "";
+    }
+    exports2.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 "";
+    }
+    exports2.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 "";
+    }
+    exports2.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 "";
+    }
+    exports2.innerText = innerText;
+  }
+});
+
+// node_modules/domutils/lib/traversal.js
+var require_traversal = __commonJS({
+  "node_modules/domutils/lib/traversal.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.prevElementSibling = exports2.nextElementSibling = exports2.getName = exports2.hasAttrib = exports2.getAttributeValue = exports2.getSiblings = exports2.getParent = exports2.getChildren = void 0;
+    var domhandler_1 = require_lib3();
+    function getChildren(elem) {
+      return (0, domhandler_1.hasChildren)(elem) ? elem.children : [];
+    }
+    exports2.getChildren = getChildren;
+    function getParent(elem) {
+      return elem.parent || null;
+    }
+    exports2.getParent = getParent;
+    function getSiblings(elem) {
+      var _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;
+    }
+    exports2.getSiblings = getSiblings;
+    function getAttributeValue(elem, name) {
+      var _a;
+      return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];
+    }
+    exports2.getAttributeValue = getAttributeValue;
+    function hasAttrib(elem, name) {
+      return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null;
+    }
+    exports2.hasAttrib = hasAttrib;
+    function getName(elem) {
+      return elem.name;
+    }
+    exports2.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;
+    }
+    exports2.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;
+    }
+    exports2.prevElementSibling = prevElementSibling;
+  }
+});
+
+// node_modules/domutils/lib/manipulation.js
+var require_manipulation = __commonJS({
+  "node_modules/domutils/lib/manipulation.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.prepend = exports2.prependChild = exports2.append = exports2.appendChild = exports2.replaceElement = exports2.removeElement = void 0;
+    function removeElement(elem) {
+      if (elem.prev)
+        elem.prev.next = elem.next;
+      if (elem.next)
+        elem.next.prev = elem.prev;
+      if (elem.parent) {
+        var childs = elem.parent.children;
+        var childsIndex = childs.lastIndexOf(elem);
+        if (childsIndex >= 0) {
+          childs.splice(childsIndex, 1);
+        }
+      }
+      elem.next = null;
+      elem.prev = null;
+      elem.parent = null;
+    }
+    exports2.removeElement = removeElement;
+    function replaceElement(elem, replacement) {
+      var prev = replacement.prev = elem.prev;
+      if (prev) {
+        prev.next = replacement;
+      }
+      var next = replacement.next = elem.next;
+      if (next) {
+        next.prev = replacement;
+      }
+      var parent = replacement.parent = elem.parent;
+      if (parent) {
+        var childs = parent.children;
+        childs[childs.lastIndexOf(elem)] = replacement;
+        elem.parent = null;
+      }
+    }
+    exports2.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;
+      }
+    }
+    exports2.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);
+      }
+    }
+    exports2.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;
+      }
+    }
+    exports2.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;
+    }
+    exports2.prepend = prepend;
+  }
+});
+
+// node_modules/domutils/lib/querying.js
+var require_querying = __commonJS({
+  "node_modules/domutils/lib/querying.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.findAll = exports2.existsOne = exports2.findOne = exports2.findOneChild = exports2.find = exports2.filter = void 0;
+    var domhandler_1 = require_lib3();
+    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);
+    }
+    exports2.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);
+        }
+      }
+    }
+    exports2.find = find;
+    function findOneChild(test, nodes) {
+      return nodes.find(test);
+    }
+    exports2.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;
+    }
+    exports2.findOne = findOne;
+    function existsOne(test, nodes) {
+      return nodes.some(function(checked) {
+        return (0, domhandler_1.isTag)(checked) && (test(checked) || existsOne(test, checked.children));
+      });
+    }
+    exports2.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);
+        }
+      }
+    }
+    exports2.findAll = findAll;
+  }
+});
+
+// node_modules/domutils/lib/legacy.js
+var require_legacy = __commonJS({
+  "node_modules/domutils/lib/legacy.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.getElementsByTagType = exports2.getElementsByTagName = exports2.getElementById = exports2.getElements = exports2.testElement = void 0;
+    var domhandler_1 = require_lib3();
+    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;
+    }
+    exports2.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) : [];
+    }
+    exports2.getElements = getElements;
+    function getElementById(id, nodes, recurse) {
+      if (recurse === void 0) {
+        recurse = true;
+      }
+      if (!Array.isArray(nodes))
+        nodes = [nodes];
+      return (0, querying_js_1.findOne)(getAttribCheck("id", id), nodes, recurse);
+    }
+    exports2.getElementById = getElementById;
+    function getElementsByTagName(tagName, nodes, recurse, limit) {
+      if (recurse === void 0) {
+        recurse = true;
+      }
+      if (limit === void 0) {
+        limit = Infinity;
+      }
+      return (0, querying_js_1.filter)(Checks["tag_name"](tagName), nodes, recurse, limit);
+    }
+    exports2.getElementsByTagName = getElementsByTagName;
+    function getElementsByTagType(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);
+    }
+    exports2.getElementsByTagType = getElementsByTagType;
+  }
+});
+
+// node_modules/domutils/lib/helpers.js
+var require_helpers = __commonJS({
+  "node_modules/domutils/lib/helpers.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.uniqueSort = exports2.compareDocumentPosition = exports2.DocumentPosition = exports2.removeSubsets = void 0;
+    var domhandler_1 = require_lib3();
+    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;
+    }
+    exports2.removeSubsets = removeSubsets;
+    var DocumentPosition;
+    (function(DocumentPosition2) {
+      DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED";
+      DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING";
+      DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING";
+      DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS";
+      DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY";
+    })(DocumentPosition = exports2.DocumentPosition || (exports2.DocumentPosition = {}));
+    function compareDocumentPosition(nodeA, nodeB) {
+      var aParents = [];
+      var bParents = [];
+      if (nodeA === nodeB) {
+        return 0;
+      }
+      var 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;
+    }
+    exports2.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;
+    }
+    exports2.uniqueSort = uniqueSort;
+  }
+});
+
+// node_modules/domutils/lib/feeds.js
+var require_feeds = __commonJS({
+  "node_modules/domutils/lib/feeds.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.getFeed = void 0;
+    var stringify_js_1 = require_stringify3();
+    var legacy_js_1 = require_legacy();
+    function getFeed(doc) {
+      var feedRoot = getOneElement(isValidFeed, doc);
+      return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot);
+    }
+    exports2.getFeed = getFeed;
+    function getAtomFeed(feedRoot) {
+      var _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_lib6 = __commonJS({
+  "node_modules/domutils/lib/index.js"(exports2) {
+    "use strict";
+    var __createBinding = exports2 && exports2.__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 = exports2 && exports2.__exportStar || function(m, exports3) {
+      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.hasChildren = exports2.isDocument = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = void 0;
+    __exportStar(require_stringify3(), exports2);
+    __exportStar(require_traversal(), exports2);
+    __exportStar(require_manipulation(), exports2);
+    __exportStar(require_querying(), exports2);
+    __exportStar(require_legacy(), exports2);
+    __exportStar(require_helpers(), exports2);
+    __exportStar(require_feeds(), exports2);
+    var domhandler_1 = require_lib3();
+    Object.defineProperty(exports2, "isTag", { enumerable: true, get: function() {
+      return domhandler_1.isTag;
+    } });
+    Object.defineProperty(exports2, "isCDATA", { enumerable: true, get: function() {
+      return domhandler_1.isCDATA;
+    } });
+    Object.defineProperty(exports2, "isText", { enumerable: true, get: function() {
+      return domhandler_1.isText;
+    } });
+    Object.defineProperty(exports2, "isComment", { enumerable: true, get: function() {
+      return domhandler_1.isComment;
+    } });
+    Object.defineProperty(exports2, "isDocument", { enumerable: true, get: function() {
+      return domhandler_1.isDocument;
+    } });
+    Object.defineProperty(exports2, "hasChildren", { enumerable: true, get: function() {
+      return domhandler_1.hasChildren;
+    } });
+  }
+});
+
+// node_modules/boolbase/index.js
+var require_boolbase = __commonJS({
+  "node_modules/boolbase/index.js"(exports2, module2) {
+    module2.exports = {
+      trueFunc: function trueFunc() {
+        return true;
+      },
+      falseFunc: function falseFunc() {
+        return false;
+      }
+    };
+  }
+});
+
+// node_modules/css-what/lib/commonjs/types.js
+var require_types = __commonJS({
+  "node_modules/css-what/lib/commonjs/types.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.AttributeAction = exports2.IgnoreCaseMode = exports2.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 = exports2.SelectorType || (exports2.SelectorType = {}));
+    exports2.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 = exports2.AttributeAction || (exports2.AttributeAction = {}));
+  }
+});
+
+// node_modules/css-what/lib/commonjs/parse.js
+var require_parse4 = __commonJS({
+  "node_modules/css-what/lib/commonjs/parse.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.parse = exports2.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;
+      }
+    }
+    exports2.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;
+    }
+    exports2.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_stringify4 = __commonJS({
+  "node_modules/css-what/lib/commonjs/stringify.js"(exports2) {
+    "use strict";
+    var __spreadArray = exports2 && exports2.__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(exports2, "__esModule", { value: true });
+    exports2.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(", ");
+    }
+    exports2.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"(exports2) {
+    "use strict";
+    var __createBinding = exports2 && exports2.__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 = exports2 && exports2.__exportStar || function(m, exports3) {
+      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.stringify = exports2.parse = exports2.isTraversal = void 0;
+    __exportStar(require_types(), exports2);
+    var parse_1 = require_parse4();
+    Object.defineProperty(exports2, "isTraversal", { enumerable: true, get: function() {
+      return parse_1.isTraversal;
+    } });
+    Object.defineProperty(exports2, "parse", { enumerable: true, get: function() {
+      return parse_1.parse;
+    } });
+    var stringify_1 = require_stringify4();
+    Object.defineProperty(exports2, "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"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.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);
+    }
+    exports2.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;
+        }
+      }
+    }
+    exports2.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"(exports2) {
+    "use strict";
+    var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.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);
+    }
+    exports2.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_parse5 = __commonJS({
+  "node_modules/nth-check/lib/parse.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.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++;
+        }
+      }
+    }
+    exports2.parse = parse;
+  }
+});
+
+// node_modules/nth-check/lib/compile.js
+var require_compile = __commonJS({
+  "node_modules/nth-check/lib/compile.js"(exports2) {
+    "use strict";
+    var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.generate = exports2.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;
+      };
+    }
+    exports2.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;
+      };
+    }
+    exports2.generate = generate;
+  }
+});
+
+// node_modules/nth-check/lib/index.js
+var require_lib7 = __commonJS({
+  "node_modules/nth-check/lib/index.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.sequence = exports2.generate = exports2.compile = exports2.parse = void 0;
+    var parse_js_1 = require_parse5();
+    Object.defineProperty(exports2, "parse", { enumerable: true, get: function() {
+      return parse_js_1.parse;
+    } });
+    var compile_js_1 = require_compile();
+    Object.defineProperty(exports2, "compile", { enumerable: true, get: function() {
+      return compile_js_1.compile;
+    } });
+    Object.defineProperty(exports2, "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));
+    }
+    exports2.default = nthCheck;
+    function sequence(formula) {
+      return (0, compile_js_1.generate)((0, parse_js_1.parse)(formula));
+    }
+    exports2.sequence = sequence;
+  }
+});
+
+// node_modules/css-select/lib/pseudo-selectors/filters.js
+var require_filters = __commonJS({
+  "node_modules/css-select/lib/pseudo-selectors/filters.js"(exports2) {
+    "use strict";
+    var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.filters = void 0;
+    var nth_check_1 = __importDefault(require_lib7());
+    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);
+      };
+    }
+    exports2.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 exports2.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"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.verifyPseudoArgs = exports2.pseudos = void 0;
+    exports2.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"));
+      }
+    }
+    exports2.verifyPseudoArgs = verifyPseudoArgs;
+  }
+});
+
+// node_modules/css-select/lib/pseudo-selectors/aliases.js
+var require_aliases = __commonJS({
+  "node_modules/css-select/lib/pseudo-selectors/aliases.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.aliases = void 0;
+    exports2.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"(exports2) {
+    "use strict";
+    var __spreadArray = exports2 && exports2.__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 = exports2 && exports2.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.subselects = exports2.getNextSiblings = exports2.ensureIsTag = exports2.PLACEHOLDER_ELEMENT = void 0;
+    var boolbase_1 = __importDefault(require_boolbase());
+    var sort_js_1 = require_sort();
+    exports2.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);
+      };
+    }
+    exports2.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);
+    }
+    exports2.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);
+      };
+    };
+    exports2.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.
+          [exports2.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"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.compilePseudoSelector = exports2.aliases = exports2.pseudos = exports2.filters = void 0;
+    var css_what_1 = require_commonjs();
+    var filters_js_1 = require_filters();
+    Object.defineProperty(exports2, "filters", { enumerable: true, get: function() {
+      return filters_js_1.filters;
+    } });
+    var pseudos_js_1 = require_pseudos();
+    Object.defineProperty(exports2, "pseudos", { enumerable: true, get: function() {
+      return pseudos_js_1.pseudos;
+    } });
+    var aliases_js_1 = require_aliases();
+    Object.defineProperty(exports2, "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));
+    }
+    exports2.compilePseudoSelector = compilePseudoSelector;
+  }
+});
+
+// node_modules/css-select/lib/general.js
+var require_general = __commonJS({
+  "node_modules/css-select/lib/general.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.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;
+        }
+      }
+    }
+    exports2.compileGeneralSelector = compileGeneralSelector;
+  }
+});
+
+// node_modules/css-select/lib/compile.js
+var require_compile2 = __commonJS({
+  "node_modules/css-select/lib/compile.js"(exports2) {
+    "use strict";
+    var __createBinding = exports2 && exports2.__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 = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
+      Object.defineProperty(o, "default", { enumerable: true, value: v });
+    } : function(o, v) {
+      o["default"] = v;
+    });
+    var __importStar = exports2 && exports2.__importStar || function(mod) {
+      if (mod && mod.__esModule) return mod;
+      var result = {};
+      if (mod != null) {
+        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+      }
+      __setModuleDefault(result, mod);
+      return result;
+    };
+    var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.compileToken = exports2.compileUnsafe = exports2.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);
+    }
+    exports2.compile = compile;
+    function compileUnsafe(selector, options, context) {
+      var token = typeof selector === "string" ? (0, css_what_1.parse)(selector) : selector;
+      return compileToken(token, options, context);
+    }
+    exports2.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;
+    }
+    exports2.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_lib8 = __commonJS({
+  "node_modules/css-select/lib/index.js"(exports2) {
+    "use strict";
+    var __createBinding = exports2 && exports2.__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 = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
+      Object.defineProperty(o, "default", { enumerable: true, value: v });
+    } : function(o, v) {
+      o["default"] = v;
+    });
+    var __importStar = exports2 && exports2.__importStar || function(mod) {
+      if (mod && mod.__esModule) return mod;
+      var result = {};
+      if (mod != null) {
+        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+      }
+      __setModuleDefault(result, mod);
+      return result;
+    };
+    var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.aliases = exports2.pseudos = exports2.filters = exports2.is = exports2.selectOne = exports2.selectAll = exports2.prepareContext = exports2._compileToken = exports2._compileUnsafe = exports2.compile = void 0;
+    var DomUtils = __importStar(require_lib6());
+    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);
+      };
+    }
+    exports2.compile = wrapCompile(compile_js_1.compile);
+    exports2._compileUnsafe = wrapCompile(compile_js_1.compileUnsafe);
+    exports2._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);
+    }
+    exports2.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;
+    }
+    exports2.selectAll = getSelectorFunc(function(query, elems, options) {
+      return query === boolbase_1.default.falseFunc || !elems || elems.length === 0 ? [] : options.adapter.findAll(query, elems);
+    });
+    exports2.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);
+    }
+    exports2.is = is;
+    exports2.default = exports2.selectAll;
+    var index_js_1 = require_pseudo_selectors();
+    Object.defineProperty(exports2, "filters", { enumerable: true, get: function() {
+      return index_js_1.filters;
+    } });
+    Object.defineProperty(exports2, "pseudos", { enumerable: true, get: function() {
+      return index_js_1.pseudos;
+    } });
+    Object.defineProperty(exports2, "aliases", { enumerable: true, get: function() {
+      return index_js_1.aliases;
+    } });
+  }
+});
+
+// node_modules/svgo/lib/svgo/css-select-adapter.js
+var require_css_select_adapter = __commonJS({
+  "node_modules/svgo/lib/svgo/css-select-adapter.js"(exports2, module2) {
+    "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
+    };
+    module2.exports = svgoCssSelectAdapter;
+  }
+});
+
+// node_modules/svgo/lib/xast.js
+var require_xast = __commonJS({
+  "node_modules/svgo/lib/xast.js"(exports2) {
+    "use strict";
+    var { selectAll, selectOne, is } = require_lib8();
+    var xastAdaptor = require_css_select_adapter();
+    var cssSelectOptions = {
+      xmlMode: true,
+      adapter: xastAdaptor
+    };
+    var querySelectorAll = (node, selector) => {
+      return selectAll(selector, node, cssSelectOptions);
+    };
+    exports2.querySelectorAll = querySelectorAll;
+    var querySelector = (node, selector) => {
+      return selectOne(selector, node, cssSelectOptions);
+    };
+    exports2.querySelector = querySelector;
+    var matches = (node, selector) => {
+      return is(node, selector, cssSelectOptions);
+    };
+    exports2.matches = matches;
+    var visitSkip = Symbol();
+    exports2.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);
+      }
+    };
+    exports2.visit = visit;
+    var detachNodeFromParent = (node, parentNode) => {
+      parentNode.children = parentNode.children.filter((child) => child !== node);
+    };
+    exports2.detachNodeFromParent = detachNodeFromParent;
+  }
+});
+
+// node_modules/svgo/lib/svgo/plugins.js
+var require_plugins = __commonJS({
+  "node_modules/svgo/lib/svgo/plugins.js"(exports2) {
+    "use strict";
+    var { visit } = require_xast();
+    var invokePlugins = (ast, info, plugins, overrides, globalOverrides) => {
+      for (const plugin of plugins) {
+        const override = 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);
+        }
+      }
+    };
+    exports2.invokePlugins = invokePlugins;
+    var createPreset = ({ name, plugins }) => {
+      return {
+        name,
+        fn: (ast, params, info) => {
+          const { floatPrecision, overrides } = params;
+          const globalOverrides = {};
+          if (floatPrecision != null) {
+            globalOverrides.floatPrecision = floatPrecision;
+          }
+          if (overrides) {
+            const pluginNames = plugins.map(({ name: name2 }) => name2);
+            for (const pluginName of Object.keys(overrides)) {
+              if (!pluginNames.includes(pluginName)) {
+                console.warn(
+                  `You are trying to configure ${pluginName} which is not part of ${name}.
+Try to put it before or after, for example
+
+plugins: [
+  {
+    name: '${name}',
+  },
+  '${pluginName}'
+]
+`
+                );
+              }
+            }
+          }
+          invokePlugins(ast, info, plugins, overrides, globalOverrides);
+        }
+      };
+    };
+    exports2.createPreset = createPreset;
+  }
+});
+
+// node_modules/svgo/plugins/removeDoctype.js
+var require_removeDoctype = __commonJS({
+  "node_modules/svgo/plugins/removeDoctype.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeDoctype";
+    exports2.description = "removes doctype declaration";
+    exports2.fn = () => {
+      return {
+        doctype: {
+          enter: (node, parentNode) => {
+            detachNodeFromParent(node, parentNode);
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeXMLProcInst.js
+var require_removeXMLProcInst = __commonJS({
+  "node_modules/svgo/plugins/removeXMLProcInst.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeXMLProcInst";
+    exports2.description = "removes XML processing instructions";
+    exports2.fn = () => {
+      return {
+        instruction: {
+          enter: (node, parentNode) => {
+            if (node.name === "xml") {
+              detachNodeFromParent(node, parentNode);
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeComments.js
+var require_removeComments = __commonJS({
+  "node_modules/svgo/plugins/removeComments.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeComments";
+    exports2.description = "removes comments";
+    var DEFAULT_PRESERVE_PATTERNS = [/^!/];
+    exports2.fn = (_root, params) => {
+      const { preservePatterns = DEFAULT_PRESERVE_PATTERNS } = params;
+      return {
+        comment: {
+          enter: (node, parentNode) => {
+            if (preservePatterns) {
+              if (!Array.isArray(preservePatterns)) {
+                throw Error(
+                  `Expected array in removeComments preservePatterns parameter but received ${preservePatterns}`
+                );
+              }
+              const matches = preservePatterns.some((pattern) => {
+                return new RegExp(pattern).test(node.value);
+              });
+              if (matches) {
+                return;
+              }
+            }
+            detachNodeFromParent(node, parentNode);
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeMetadata.js
+var require_removeMetadata = __commonJS({
+  "node_modules/svgo/plugins/removeMetadata.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeMetadata";
+    exports2.description = "removes <metadata>";
+    exports2.fn = () => {
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            if (node.name === "metadata") {
+              detachNodeFromParent(node, parentNode);
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeEditorsNSData.js
+var require_removeEditorsNSData = __commonJS({
+  "node_modules/svgo/plugins/removeEditorsNSData.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    var { editorNamespaces } = require_collections();
+    exports2.name = "removeEditorsNSData";
+    exports2.description = "removes editors namespaces, elements and attributes";
+    exports2.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);
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/cleanupAttrs.js
+var require_cleanupAttrs = __commonJS({
+  "node_modules/svgo/plugins/cleanupAttrs.js"(exports2) {
+    "use strict";
+    exports2.name = "cleanupAttrs";
+    exports2.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;
+    exports2.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,
+                  " "
+                );
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/mergeStyles.js
+var require_mergeStyles = __commonJS({
+  "node_modules/svgo/plugins/mergeStyles.js"(exports2) {
+    "use strict";
+    var { visitSkip, detachNodeFromParent } = require_xast();
+    exports2.name = "mergeStyles";
+    exports2.description = "merge multiple style elements into one";
+    exports2.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"(exports2) {
+    "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;
+    exports2.AtKeyword = AtKeyword;
+    exports2.BadString = BadString;
+    exports2.BadUrl = BadUrl;
+    exports2.CDC = CDC;
+    exports2.CDO = CDO;
+    exports2.Colon = Colon;
+    exports2.Comma = Comma;
+    exports2.Comment = Comment;
+    exports2.Delim = Delim;
+    exports2.Dimension = Dimension;
+    exports2.EOF = EOF;
+    exports2.Function = Function2;
+    exports2.Hash = Hash;
+    exports2.Ident = Ident;
+    exports2.LeftCurlyBracket = LeftCurlyBracket;
+    exports2.LeftParenthesis = LeftParenthesis;
+    exports2.LeftSquareBracket = LeftSquareBracket;
+    exports2.Number = Number2;
+    exports2.Percentage = Percentage;
+    exports2.RightCurlyBracket = RightCurlyBracket;
+    exports2.RightParenthesis = RightParenthesis;
+    exports2.RightSquareBracket = RightSquareBracket;
+    exports2.Semicolon = Semicolon;
+    exports2.String = String2;
+    exports2.Url = Url;
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.DigitCategory = DigitCategory;
+    exports2.EofCategory = EofCategory;
+    exports2.NameStartCategory = NameStartCategory;
+    exports2.NonPrintableCategory = NonPrintableCategory;
+    exports2.WhiteSpaceCategory = WhiteSpaceCategory;
+    exports2.charCodeCategory = charCodeCategory;
+    exports2.isBOM = isBOM;
+    exports2.isDigit = isDigit;
+    exports2.isHexDigit = isHexDigit;
+    exports2.isIdentifierStart = isIdentifierStart;
+    exports2.isLetter = isLetter;
+    exports2.isLowercaseLetter = isLowercaseLetter;
+    exports2.isName = isName;
+    exports2.isNameStart = isNameStart;
+    exports2.isNewline = isNewline;
+    exports2.isNonAscii = isNonAscii;
+    exports2.isNonPrintable = isNonPrintable;
+    exports2.isNumberStart = isNumberStart;
+    exports2.isUppercaseLetter = isUppercaseLetter;
+    exports2.isValidEscape = isValidEscape;
+    exports2.isWhiteSpace = isWhiteSpace;
+  }
+});
+
+// node_modules/css-tree/cjs/tokenizer/utils.cjs
+var require_utils3 = __commonJS({
+  "node_modules/css-tree/cjs/tokenizer/utils.cjs"(exports2) {
+    "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);
+    }
+    exports2.cmpChar = cmpChar;
+    exports2.cmpStr = cmpStr;
+    exports2.consumeBadUrlRemnants = consumeBadUrlRemnants;
+    exports2.consumeEscaped = consumeEscaped;
+    exports2.consumeName = consumeName;
+    exports2.consumeNumber = consumeNumber;
+    exports2.decodeEscaped = decodeEscaped;
+    exports2.findDecimalNumberEnd = findDecimalNumberEnd;
+    exports2.findWhiteSpaceEnd = findWhiteSpaceEnd;
+    exports2.findWhiteSpaceStart = findWhiteSpaceStart;
+    exports2.getNewlineLength = getNewlineLength;
+  }
+});
+
+// node_modules/css-tree/cjs/tokenizer/names.cjs
+var require_names2 = __commonJS({
+  "node_modules/css-tree/cjs/tokenizer/names.cjs"(exports2, module2) {
+    "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"
+    ];
+    module2.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"(exports2) {
+    "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;
+    }
+    exports2.adoptBuffer = adoptBuffer;
+  }
+});
+
+// node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs
+var require_OffsetToLocation = __commonJS({
+  "node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs"(exports2) {
+    "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]
+          }
+        };
+      }
+    };
+    exports2.OffsetToLocation = OffsetToLocation;
+  }
+});
+
+// node_modules/css-tree/cjs/tokenizer/TokenStream.cjs
+var require_TokenStream = __commonJS({
+  "node_modules/css-tree/cjs/tokenizer/TokenStream.cjs"(exports2) {
+    "use strict";
+    var adoptBuffer = require_adopt_buffer();
+    var utils = require_utils3();
+    var names = require_names2();
+    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;
+      }
+      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;
+      }
+    };
+    exports2.TokenStream = TokenStream;
+  }
+});
+
+// node_modules/css-tree/cjs/tokenizer/index.cjs
+var require_tokenizer = __commonJS({
+  "node_modules/css-tree/cjs/tokenizer/index.cjs"(exports2) {
+    "use strict";
+    var types = require_types2();
+    var charCodeDefinitions = require_char_code_definitions();
+    var utils = require_utils3();
+    var names = require_names2();
+    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);
+      }
+    }
+    exports2.AtKeyword = types.AtKeyword;
+    exports2.BadString = types.BadString;
+    exports2.BadUrl = types.BadUrl;
+    exports2.CDC = types.CDC;
+    exports2.CDO = types.CDO;
+    exports2.Colon = types.Colon;
+    exports2.Comma = types.Comma;
+    exports2.Comment = types.Comment;
+    exports2.Delim = types.Delim;
+    exports2.Dimension = types.Dimension;
+    exports2.EOF = types.EOF;
+    exports2.Function = types.Function;
+    exports2.Hash = types.Hash;
+    exports2.Ident = types.Ident;
+    exports2.LeftCurlyBracket = types.LeftCurlyBracket;
+    exports2.LeftParenthesis = types.LeftParenthesis;
+    exports2.LeftSquareBracket = types.LeftSquareBracket;
+    exports2.Number = types.Number;
+    exports2.Percentage = types.Percentage;
+    exports2.RightCurlyBracket = types.RightCurlyBracket;
+    exports2.RightParenthesis = types.RightParenthesis;
+    exports2.RightSquareBracket = types.RightSquareBracket;
+    exports2.Semicolon = types.Semicolon;
+    exports2.String = types.String;
+    exports2.Url = types.Url;
+    exports2.WhiteSpace = types.WhiteSpace;
+    exports2.tokenTypes = types;
+    exports2.DigitCategory = charCodeDefinitions.DigitCategory;
+    exports2.EofCategory = charCodeDefinitions.EofCategory;
+    exports2.NameStartCategory = charCodeDefinitions.NameStartCategory;
+    exports2.NonPrintableCategory = charCodeDefinitions.NonPrintableCategory;
+    exports2.WhiteSpaceCategory = charCodeDefinitions.WhiteSpaceCategory;
+    exports2.charCodeCategory = charCodeDefinitions.charCodeCategory;
+    exports2.isBOM = charCodeDefinitions.isBOM;
+    exports2.isDigit = charCodeDefinitions.isDigit;
+    exports2.isHexDigit = charCodeDefinitions.isHexDigit;
+    exports2.isIdentifierStart = charCodeDefinitions.isIdentifierStart;
+    exports2.isLetter = charCodeDefinitions.isLetter;
+    exports2.isLowercaseLetter = charCodeDefinitions.isLowercaseLetter;
+    exports2.isName = charCodeDefinitions.isName;
+    exports2.isNameStart = charCodeDefinitions.isNameStart;
+    exports2.isNewline = charCodeDefinitions.isNewline;
+    exports2.isNonAscii = charCodeDefinitions.isNonAscii;
+    exports2.isNonPrintable = charCodeDefinitions.isNonPrintable;
+    exports2.isNumberStart = charCodeDefinitions.isNumberStart;
+    exports2.isUppercaseLetter = charCodeDefinitions.isUppercaseLetter;
+    exports2.isValidEscape = charCodeDefinitions.isValidEscape;
+    exports2.isWhiteSpace = charCodeDefinitions.isWhiteSpace;
+    exports2.cmpChar = utils.cmpChar;
+    exports2.cmpStr = utils.cmpStr;
+    exports2.consumeBadUrlRemnants = utils.consumeBadUrlRemnants;
+    exports2.consumeEscaped = utils.consumeEscaped;
+    exports2.consumeName = utils.consumeName;
+    exports2.consumeNumber = utils.consumeNumber;
+    exports2.decodeEscaped = utils.decodeEscaped;
+    exports2.findDecimalNumberEnd = utils.findDecimalNumberEnd;
+    exports2.findWhiteSpaceEnd = utils.findWhiteSpaceEnd;
+    exports2.findWhiteSpaceStart = utils.findWhiteSpaceStart;
+    exports2.getNewlineLength = utils.getNewlineLength;
+    exports2.tokenNames = names;
+    exports2.OffsetToLocation = OffsetToLocation.OffsetToLocation;
+    exports2.TokenStream = TokenStream.TokenStream;
+    exports2.tokenize = tokenize;
+  }
+});
+
+// node_modules/css-tree/cjs/utils/List.cjs
+var require_List = __commonJS({
+  "node_modules/css-tree/cjs/utils/List.cjs"(exports2) {
+    "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);
+      }
+    };
+    exports2.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"(exports2) {
+    "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}
+`);
+        }
+      });
+    }
+    exports2.createCustomError = createCustomError;
+  }
+});
+
+// node_modules/css-tree/cjs/parser/SyntaxError.cjs
+var require_SyntaxError = __commonJS({
+  "node_modules/css-tree/cjs/parser/SyntaxError.cjs"(exports2) {
+    "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 }, 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;
+    }
+    exports2.SyntaxError = SyntaxError2;
+  }
+});
+
+// node_modules/css-tree/cjs/parser/sequence.cjs
+var require_sequence = __commonJS({
+  "node_modules/css-tree/cjs/parser/sequence.cjs"(exports2) {
+    "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;
+    }
+    exports2.readSequence = readSequence;
+  }
+});
+
+// node_modules/css-tree/cjs/parser/create.cjs
+var require_create = __commonJS({
+  "node_modules/css-tree/cjs/parser/create.cjs"(exports2) {
+    "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_utils3();
+    var types = require_types2();
+    var names = require_names2();
+    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
+      });
+    }
+    exports2.createParser = createParser;
+  }
+});
+
+// node_modules/css-tree/cjs/generator/sourceMap.cjs
+var require_sourceMap = __commonJS({
+  "node_modules/css-tree/cjs/generator/sourceMap.cjs"(exports2) {
+    "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;
+    }
+    exports2.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"(exports2) {
+    "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);
+    exports2.safe = safe;
+    exports2.spec = spec;
+  }
+});
+
+// node_modules/css-tree/cjs/generator/create.cjs
+var require_create2 = __commonJS({
+  "node_modules/css-tree/cjs/generator/create.cjs"(exports2) {
+    "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 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();
+      };
+    }
+    exports2.createGenerator = createGenerator;
+  }
+});
+
+// node_modules/css-tree/cjs/convertor/create.cjs
+var require_create3 = __commonJS({
+  "node_modules/css-tree/cjs/convertor/create.cjs"(exports2) {
+    "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;
+        }
+      };
+    }
+    exports2.createConvertor = createConvertor;
+  }
+});
+
+// node_modules/css-tree/cjs/walker/create.cjs
+var require_create4 = __commonJS({
+  "node_modules/css-tree/cjs/walker/create.cjs"(exports2) {
+    "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;
+    }
+    exports2.createWalker = createWalker;
+  }
+});
+
+// node_modules/css-tree/cjs/definition-syntax/generate.cjs
+var require_generate = __commonJS({
+  "node_modules/css-tree/cjs/definition-syntax/generate.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+  }
+});
+
+// node_modules/css-tree/cjs/lexer/error.cjs
+var require_error2 = __commonJS({
+  "node_modules/css-tree/cjs/lexer/error.cjs"(exports2) {
+    "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;
+    };
+    exports2.SyntaxMatchError = SyntaxMatchError;
+    exports2.SyntaxReferenceError = SyntaxReferenceError;
+  }
+});
+
+// node_modules/css-tree/cjs/utils/names.cjs
+var require_names3 = __commonJS({
+  "node_modules/css-tree/cjs/utils/names.cjs"(exports2) {
+    "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;
+    }
+    exports2.isCustomProperty = isCustomProperty;
+    exports2.keyword = keyword;
+    exports2.property = property;
+    exports2.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"(exports2) {
+    "use strict";
+    var cssWideKeywords = [
+      "initial",
+      "inherit",
+      "unset",
+      "revert",
+      "revert-layer"
+    ];
+    exports2.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"(exports2, module2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions();
+    var types = require_types2();
+    var utils = require_utils3();
+    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;
+    }
+    module2.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"(exports2, module2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions();
+    var types = require_types2();
+    var utils = require_utils3();
+    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;
+    }
+    module2.exports = urange;
+  }
+});
+
+// node_modules/css-tree/cjs/lexer/generic.cjs
+var require_generic = __commonJS({
+  "node_modules/css-tree/cjs/lexer/generic.cjs"(exports2) {
+    "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_utils3();
+    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 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 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,
+      "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)
+      };
+    }
+    exports2.createDemensionTypes = createDemensionTypes;
+    exports2.createGenericTypes = createGenericTypes;
+    exports2.productionTypes = productionTypes;
+    exports2.tokenTypes = tokenTypes;
+  }
+});
+
+// node_modules/css-tree/cjs/lexer/units.cjs
+var require_units = __commonJS({
+  "node_modules/css-tree/cjs/lexer/units.cjs"(exports2) {
+    "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"];
+    exports2.angle = angle;
+    exports2.decibel = decibel;
+    exports2.flex = flex;
+    exports2.frequency = frequency;
+    exports2.length = length;
+    exports2.resolution = resolution;
+    exports2.semitones = semitones;
+    exports2.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"(exports2, module2) {
+    "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);
+    }
+    module2.exports = prepareTokens;
+  }
+});
+
+// node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs
+var require_SyntaxError2 = __commonJS({
+  "node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs"(exports2) {
+    "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("-") + "^"
+      });
+    }
+    exports2.SyntaxError = SyntaxError2;
+  }
+});
+
+// node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs
+var require_tokenizer2 = __commonJS({
+  "node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs"(exports2) {
+    "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));
+      }
+      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);
+      }
+    };
+    exports2.Tokenizer = Tokenizer;
+  }
+});
+
+// node_modules/css-tree/cjs/definition-syntax/parse.cjs
+var require_parse6 = __commonJS({
+  "node_modules/css-tree/cjs/definition-syntax/parse.cjs"(exports2) {
+    "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);
+      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;
+    }
+    exports2.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"(exports2) {
+    "use strict";
+    var parse = require_parse6();
+    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
+      };
+    }
+    exports2.DISALLOW_EMPTY = DISALLOW_EMPTY;
+    exports2.MATCH = MATCH;
+    exports2.MISMATCH = MISMATCH;
+    exports2.buildMatchGraph = buildMatchGraph;
+  }
+});
+
+// node_modules/css-tree/cjs/lexer/match.cjs
+var require_match = __commonJS({
+  "node_modules/css-tree/cjs/lexer/match.cjs"(exports2) {
+    "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.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;
+    }
+    exports2.matchAsList = matchAsList;
+    exports2.matchAsTree = matchAsTree;
+  }
+});
+
+// node_modules/css-tree/cjs/lexer/trace.cjs
+var require_trace = __commonJS({
+  "node_modules/css-tree/cjs/lexer/trace.cjs"(exports2) {
+    "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);
+    }
+    exports2.getTrace = getTrace;
+    exports2.isKeyword = isKeyword;
+    exports2.isProperty = isProperty;
+    exports2.isType = isType;
+  }
+});
+
+// node_modules/css-tree/cjs/lexer/search.cjs
+var require_search = __commonJS({
+  "node_modules/css-tree/cjs/lexer/search.cjs"(exports2) {
+    "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;
+    }
+    exports2.matchFragments = matchFragments;
+  }
+});
+
+// node_modules/css-tree/cjs/lexer/structure.cjs
+var require_structure = __commonJS({
+  "node_modules/css-tree/cjs/lexer/structure.cjs"(exports2) {
+    "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 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;
+    }
+    exports2.getStructureFromConfig = getStructureFromConfig;
+  }
+});
+
+// node_modules/css-tree/cjs/definition-syntax/walk.cjs
+var require_walk2 = __commonJS({
+  "node_modules/css-tree/cjs/definition-syntax/walk.cjs"(exports2) {
+    "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);
+    }
+    exports2.walk = walk;
+  }
+});
+
+// node_modules/css-tree/cjs/lexer/Lexer.cjs
+var require_Lexer = __commonJS({
+  "node_modules/css-tree/cjs/lexer/Lexer.cjs"(exports2) {
+    "use strict";
+    var error = require_error2();
+    var names = require_names3();
+    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_parse6();
+    var generate = require_generate();
+    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.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 in config.types) {
+              this.addType_(name, config.types[name]);
+            }
+          }
+          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 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,
+          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());
+      }
+    };
+    exports2.Lexer = Lexer;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/config/mix.cjs
+var require_mix = __commonJS({
+  "node_modules/css-tree/cjs/syntax/config/mix.cjs"(exports2, module2) {
+    "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":
+            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;
+    }
+    module2.exports = mix;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/create.cjs
+var require_create5 = __commonJS({
+  "node_modules/css-tree/cjs/syntax/create.cjs"(exports2, module2) {
+    "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: true,
+        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));
+    module2.exports = createSyntax$1;
+  }
+});
+
+// node_modules/css-tree/data/patch.json
+var require_patch = __commonJS({
+  "node_modules/css-tree/data/patch.json"(exports2, module2) {
+    module2.exports = {
+      atrules: {
+        charset: {
+          prelude: "<string>"
+        },
+        "font-face": {
+          descriptors: {
+            "unicode-range": {
+              comment: "replaces <unicode-range>, an old production name",
+              syntax: "<urange>#"
+            }
+          }
+        },
+        nest: {
+          prelude: "<complex-selector-list>"
+        }
+      },
+      properties: {
+        "-moz-background-clip": {
+          comment: "deprecated syntax in old Firefox, https://developer.mozilla.org/en/docs/Web/CSS/background-clip",
+          syntax: "padding | border"
+        },
+        "-moz-border-radius-bottomleft": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-left-radius",
+          syntax: "<'border-bottom-left-radius'>"
+        },
+        "-moz-border-radius-bottomright": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-right-radius",
+          syntax: "<'border-bottom-right-radius'>"
+        },
+        "-moz-border-radius-topleft": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-left-radius",
+          syntax: "<'border-top-left-radius'>"
+        },
+        "-moz-border-radius-topright": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-right-radius",
+          syntax: "<'border-bottom-right-radius'>"
+        },
+        "-moz-control-character-visibility": {
+          comment: "firefox specific keywords, https://bugzilla.mozilla.org/show_bug.cgi?id=947588",
+          syntax: "visible | hidden"
+        },
+        "-moz-osx-font-smoothing": {
+          comment: "misssed old syntax https://developer.mozilla.org/en-US/docs/Web/CSS/font-smooth",
+          syntax: "auto | grayscale"
+        },
+        "-moz-user-select": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/user-select",
+          syntax: "none | text | all | -moz-none"
+        },
+        "-ms-flex-align": {
+          comment: "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-align",
+          syntax: "start | end | center | baseline | stretch"
+        },
+        "-ms-flex-item-align": {
+          comment: "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-align",
+          syntax: "auto | start | end | center | baseline | stretch"
+        },
+        "-ms-flex-line-pack": {
+          comment: "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-line-pack",
+          syntax: "start | end | center | justify | distribute | stretch"
+        },
+        "-ms-flex-negative": {
+          comment: "misssed old syntax implemented in IE; TODO: find references for comfirmation",
+          syntax: "<'flex-shrink'>"
+        },
+        "-ms-flex-pack": {
+          comment: "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-pack",
+          syntax: "start | end | center | justify | distribute"
+        },
+        "-ms-flex-order": {
+          comment: "misssed old syntax implemented in IE; https://msdn.microsoft.com/en-us/library/jj127303(v=vs.85).aspx",
+          syntax: "<integer>"
+        },
+        "-ms-flex-positive": {
+          comment: "misssed old syntax implemented in IE; TODO: find references for comfirmation",
+          syntax: "<'flex-grow'>"
+        },
+        "-ms-flex-preferred-size": {
+          comment: "misssed old syntax implemented in IE; TODO: find references for comfirmation",
+          syntax: "<'flex-basis'>"
+        },
+        "-ms-interpolation-mode": {
+          comment: "https://msdn.microsoft.com/en-us/library/ff521095(v=vs.85).aspx",
+          syntax: "nearest-neighbor | bicubic"
+        },
+        "-ms-grid-column-align": {
+          comment: "add this property first since it uses as fallback for flexbox, https://msdn.microsoft.com/en-us/library/windows/apps/hh466338.aspx",
+          syntax: "start | end | center | stretch"
+        },
+        "-ms-grid-row-align": {
+          comment: "add this property first since it uses as fallback for flexbox, https://msdn.microsoft.com/en-us/library/windows/apps/hh466348.aspx",
+          syntax: "start | end | center | stretch"
+        },
+        "-ms-hyphenate-limit-last": {
+          comment: "misssed old syntax implemented in IE; https://www.w3.org/TR/css-text-4/#hyphenate-line-limits",
+          syntax: "none | always | column | page | spread"
+        },
+        "-webkit-appearance": {
+          comment: "webkit specific keywords",
+          references: [
+            "http://css-infos.net/property/-webkit-appearance"
+          ],
+          syntax: "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-background-clip": {
+          comment: "https://developer.mozilla.org/en/docs/Web/CSS/background-clip",
+          syntax: "[ <box> | border | padding | content | text ]#"
+        },
+        "-webkit-column-break-after": {
+          comment: "added, http://help.dottoro.com/lcrthhhv.php",
+          syntax: "always | auto | avoid"
+        },
+        "-webkit-column-break-before": {
+          comment: "added, http://help.dottoro.com/lcxquvkf.php",
+          syntax: "always | auto | avoid"
+        },
+        "-webkit-column-break-inside": {
+          comment: "added, http://help.dottoro.com/lclhnthl.php",
+          syntax: "always | auto | avoid"
+        },
+        "-webkit-font-smoothing": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/font-smooth",
+          syntax: "auto | none | antialiased | subpixel-antialiased"
+        },
+        "-webkit-mask-box-image": {
+          comment: "missed; https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-box-image",
+          syntax: "[ <url> | <gradient> | none ] [ <length-percentage>{4} <-webkit-mask-box-repeat>{2} ]?"
+        },
+        "-webkit-print-color-adjust": {
+          comment: "missed",
+          references: [
+            "https://developer.mozilla.org/en/docs/Web/CSS/-webkit-print-color-adjust"
+          ],
+          syntax: "economy | exact"
+        },
+        "-webkit-text-security": {
+          comment: "missed; http://help.dottoro.com/lcbkewgt.php",
+          syntax: "none | circle | disc | square"
+        },
+        "-webkit-user-drag": {
+          comment: "missed; http://help.dottoro.com/lcbixvwm.php",
+          syntax: "none | element | auto"
+        },
+        "-webkit-user-select": {
+          comment: "auto is supported by old webkit, https://developer.mozilla.org/en-US/docs/Web/CSS/user-select",
+          syntax: "auto | none | text | all"
+        },
+        "alignment-baseline": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#AlignmentBaselineProperty"
+          ],
+          syntax: "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical"
+        },
+        "background-clip": {
+          comment: "used <bg-clip> from CSS Backgrounds and Borders 4 since it adds new values",
+          references: [
+            "https://github.com/csstree/csstree/issues/190"
+          ],
+          syntax: "<bg-clip>#"
+        },
+        "baseline-shift": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#BaselineShiftProperty"
+          ],
+          syntax: "baseline | sub | super | <svg-length>"
+        },
+        behavior: {
+          comment: "added old IE property https://msdn.microsoft.com/en-us/library/ms530723(v=vs.85).aspx",
+          syntax: "<url>+"
+        },
+        "clip-rule": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/masking.html#ClipRuleProperty"
+          ],
+          syntax: "nonzero | evenodd"
+        },
+        cue: {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<'cue-before'> <'cue-after'>?"
+        },
+        "cue-after": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<url> <decibel>? | none"
+        },
+        "cue-before": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<url> <decibel>? | none"
+        },
+        cursor: {
+          comment: "added legacy keywords: hand, -webkit-grab. -webkit-grabbing, -webkit-zoom-in, -webkit-zoom-out, -moz-grab, -moz-grabbing, -moz-zoom-in, -moz-zoom-out",
+          references: [
+            "https://www.sitepoint.com/css3-cursor-styles/"
+          ],
+          syntax: "[ [ <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 ] ]"
+        },
+        display: {
+          comment: "extended with -ms-flexbox",
+          syntax: "| <-non-standard-display>"
+        },
+        position: {
+          comment: "extended with -webkit-sticky",
+          syntax: "| -webkit-sticky"
+        },
+        "dominant-baseline": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#DominantBaselineProperty"
+          ],
+          syntax: "auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge"
+        },
+        "image-rendering": {
+          comment: "extended with <-non-standard-image-rendering>, added SVG keywords optimizeSpeed and optimizeQuality",
+          references: [
+            "https://developer.mozilla.org/en/docs/Web/CSS/image-rendering",
+            "https://www.w3.org/TR/SVG/painting.html#ImageRenderingProperty"
+          ],
+          syntax: "| optimizeSpeed | optimizeQuality | <-non-standard-image-rendering>"
+        },
+        fill: {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#FillProperty"
+          ],
+          syntax: "<paint>"
+        },
+        "fill-opacity": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#FillProperty"
+          ],
+          syntax: "<number-zero-one>"
+        },
+        "fill-rule": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#FillProperty"
+          ],
+          syntax: "nonzero | evenodd"
+        },
+        filter: {
+          comment: "extend with IE legacy syntaxes",
+          syntax: "| <-ms-filter-function-list>"
+        },
+        "glyph-orientation-horizontal": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#GlyphOrientationHorizontalProperty"
+          ],
+          syntax: "<angle>"
+        },
+        "glyph-orientation-vertical": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#GlyphOrientationVerticalProperty"
+          ],
+          syntax: "<angle>"
+        },
+        kerning: {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#KerningProperty"
+          ],
+          syntax: "auto | <svg-length>"
+        },
+        "letter-spacing": {
+          comment: "fix syntax <length> -> <length-percentage>",
+          references: [
+            "https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/letter-spacing"
+          ],
+          syntax: "normal | <length-percentage>"
+        },
+        marker: {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
+          ],
+          syntax: "none | <url>"
+        },
+        "marker-end": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
+          ],
+          syntax: "none | <url>"
+        },
+        "marker-mid": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
+          ],
+          syntax: "none | <url>"
+        },
+        "marker-start": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
+          ],
+          syntax: "none | <url>"
+        },
+        "max-width": {
+          comment: "extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/max-width",
+          syntax: "| <-non-standard-width>"
+        },
+        width: {
+          references: [
+            "https://developer.mozilla.org/en-US/docs/Web/CSS/width",
+            "https://github.com/csstree/stylelint-validator/issues/29"
+          ],
+          syntax: "| fill | stretch | intrinsic | -moz-max-content | -webkit-max-content | -moz-fit-content | -webkit-fit-content"
+        },
+        "min-width": {
+          comment: "extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
+          syntax: "| <-non-standard-width>"
+        },
+        overflow: {
+          comment: "extend by vendor keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow",
+          syntax: "| <-non-standard-overflow>"
+        },
+        pause: {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<'pause-before'> <'pause-after'>?"
+        },
+        "pause-after": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
+        },
+        "pause-before": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
+        },
+        rest: {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<'rest-before'> <'rest-after'>?"
+        },
+        "rest-after": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
+        },
+        "rest-before": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
+        },
+        "shape-rendering": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#ShapeRenderingPropert"
+          ],
+          syntax: "auto | optimizeSpeed | crispEdges | geometricPrecision"
+        },
+        src: {
+          comment: "added @font-face's src property https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src",
+          syntax: "[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#"
+        },
+        speak: {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "auto | none | normal"
+        },
+        "speak-as": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "normal | spell-out || digits || [ literal-punctuation | no-punctuation ]"
+        },
+        stroke: {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<paint>"
+        },
+        "stroke-dasharray": {
+          comment: "added SVG property; a list of comma and/or white space separated <length>s and <percentage>s",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "none | [ <svg-length>+ ]#"
+        },
+        "stroke-dashoffset": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<svg-length>"
+        },
+        "stroke-linecap": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "butt | round | square"
+        },
+        "stroke-linejoin": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "miter | round | bevel"
+        },
+        "stroke-miterlimit": {
+          comment: "added SVG property (<miterlimit> = <number-one-or-greater>) ",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<number-one-or-greater>"
+        },
+        "stroke-opacity": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<number-zero-one>"
+        },
+        "stroke-width": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<svg-length>"
+        },
+        "text-anchor": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#TextAlignmentProperties"
+          ],
+          syntax: "start | middle | end"
+        },
+        "unicode-bidi": {
+          comment: "added prefixed keywords https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-bidi",
+          syntax: "| -moz-isolate | -moz-isolate-override | -moz-plaintext | -webkit-isolate | -webkit-isolate-override | -webkit-plaintext"
+        },
+        "unicode-range": {
+          comment: "added missed property https://developer.mozilla.org/en-US/docs/Web/CSS/%40font-face/unicode-range",
+          syntax: "<urange>#"
+        },
+        "voice-balance": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<number> | left | center | right | leftwards | rightwards"
+        },
+        "voice-duration": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "auto | <time>"
+        },
+        "voice-family": {
+          comment: "<name> -> <family-name>, https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "[ [ <family-name> | <generic-voice> ] , ]* [ <family-name> | <generic-voice> ] | preserve"
+        },
+        "voice-pitch": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<frequency> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency> | <semitones> | <percentage> ] ]"
+        },
+        "voice-range": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<frequency> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency> | <semitones> | <percentage> ] ]"
+        },
+        "voice-rate": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "[ normal | x-slow | slow | medium | fast | x-fast ] || <percentage>"
+        },
+        "voice-stress": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "normal | strong | moderate | none | reduced"
+        },
+        "voice-volume": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "silent | [ [ x-soft | soft | medium | loud | x-loud ] || <decibel> ]"
+        },
+        "writing-mode": {
+          comment: "extend with SVG keywords",
+          syntax: "| <svg-writing-mode>"
+        }
+      },
+      types: {
+        "-legacy-gradient": {
+          comment: "added collection of legacy gradient syntaxes",
+          syntax: "<-webkit-gradient()> | <-legacy-linear-gradient> | <-legacy-repeating-linear-gradient> | <-legacy-radial-gradient> | <-legacy-repeating-radial-gradient>"
+        },
+        "-legacy-linear-gradient": {
+          comment: "like standard syntax but w/o `to` keyword https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient",
+          syntax: "-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": {
+          comment: "like standard syntax but w/o `to` keyword https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient",
+          syntax: "-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": {
+          comment: "like standard syntax but w/o `to` keyword https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient",
+          syntax: "[ <angle> | <side-or-corner> ]? , <color-stop-list>"
+        },
+        "-legacy-radial-gradient": {
+          comment: "deprecated syntax that implemented by some browsers https://www.w3.org/TR/2011/WD-css3-images-20110908/#radial-gradients",
+          syntax: "-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": {
+          comment: "deprecated syntax that implemented by some browsers https://www.w3.org/TR/2011/WD-css3-images-20110908/#radial-gradients",
+          syntax: "-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": {
+          comment: "deprecated syntax that implemented by some browsers https://www.w3.org/TR/2011/WD-css3-images-20110908/#radial-gradients",
+          syntax: "[ <position> , ]? [ [ [ <-legacy-radial-gradient-shape> || <-legacy-radial-gradient-size> ] | [ <length> | <percentage> ]{2} ] , ]? <color-stop-list>"
+        },
+        "-legacy-radial-gradient-size": {
+          comment: "before a standard it contains 2 extra keywords (`contain` and `cover`) https://www.w3.org/TR/2011/WD-css3-images-20110908/#ltsize",
+          syntax: "closest-side | closest-corner | farthest-side | farthest-corner | contain | cover"
+        },
+        "-legacy-radial-gradient-shape": {
+          comment: "define to double sure it doesn't extends in future https://www.w3.org/TR/2011/WD-css3-images-20110908/#ltshape",
+          syntax: "circle | ellipse"
+        },
+        "-non-standard-font": {
+          comment: "non standard fonts",
+          references: [
+            "https://webkit.org/blog/3709/using-the-system-font-in-web-content/"
+          ],
+          syntax: "-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": {
+          comment: "non standard colors",
+          references: [
+            "http://cssdot.ru/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_CSS/color-i305.html",
+            "https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Mozilla_Color_Preference_Extensions"
+          ],
+          syntax: "-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": {
+          comment: "non-standard keywords http://phrogz.net/tmp/canvas_image_zoom.html",
+          syntax: "optimize-contrast | -moz-crisp-edges | -o-crisp-edges | -webkit-optimize-contrast"
+        },
+        "-non-standard-overflow": {
+          comment: "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow",
+          syntax: "-moz-scrollbars-none | -moz-scrollbars-horizontal | -moz-scrollbars-vertical | -moz-hidden-unscrollable"
+        },
+        "-non-standard-width": {
+          comment: "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
+          syntax: "fill-available | min-intrinsic | intrinsic | -moz-available | -moz-fit-content | -moz-min-content | -moz-max-content | -webkit-min-content | -webkit-max-content"
+        },
+        "-webkit-gradient()": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/ - TODO: simplify when after match algorithm improvement ( [, point, radius | , point] -> [, radius]? , point )",
+          syntax: "-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": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/",
+          syntax: "from( <color> ) | color-stop( [ <number-zero-one> | <percentage> ] , <color> ) | to( <color> )"
+        },
+        "-webkit-gradient-point": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/",
+          syntax: "[ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ]"
+        },
+        "-webkit-gradient-radius": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/",
+          syntax: "<length> | <percentage>"
+        },
+        "-webkit-gradient-type": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/",
+          syntax: "linear | radial"
+        },
+        "-webkit-mask-box-repeat": {
+          comment: "missed; https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-box-image",
+          syntax: "repeat | stretch | round"
+        },
+        "-webkit-mask-clip-style": {
+          comment: "missed; there is no enough information about `-webkit-mask-clip` property, but looks like all those keywords are working",
+          syntax: "border | border-box | padding | padding-box | content | content-box | text"
+        },
+        "-ms-filter-function-list": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
+          syntax: "<-ms-filter-function>+"
+        },
+        "-ms-filter-function": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
+          syntax: "<-ms-filter-function-progid> | <-ms-filter-function-legacy>"
+        },
+        "-ms-filter-function-progid": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
+          syntax: "'progid:' [ <ident-token> '.' ]* [ <ident-token> | <function-token> <any-value>? ) ]"
+        },
+        "-ms-filter-function-legacy": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
+          syntax: "<ident-token> | <function-token> <any-value>? )"
+        },
+        "-ms-filter": {
+          syntax: "<string>"
+        },
+        age: {
+          comment: "https://www.w3.org/TR/css3-speech/#voice-family",
+          syntax: "child | young | old"
+        },
+        "attr-name": {
+          syntax: "<wq-name>"
+        },
+        "attr-fallback": {
+          syntax: "<any-value>"
+        },
+        "bg-clip": {
+          comment: "missed, https://drafts.csswg.org/css-backgrounds-4/#typedef-bg-clip",
+          syntax: "<box> | border | text"
+        },
+        bottom: {
+          comment: "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
+          syntax: "<length> | auto"
+        },
+        "content-list": {
+          comment: "added attr(), see https://github.com/csstree/csstree/issues/201",
+          syntax: "[ <string> | contents | <image> | <counter> | <quote> | <target> | <leader()> | <attr()> ]+"
+        },
+        "element()": {
+          comment: "https://drafts.csswg.org/css-gcpm/#element-syntax & https://drafts.csswg.org/css-images-4/#element-notation",
+          syntax: "element( <custom-ident> , [ first | start | last | first-except ]? ) | element( <id-selector> )"
+        },
+        "generic-voice": {
+          comment: "https://www.w3.org/TR/css3-speech/#voice-family",
+          syntax: "[ <age>? <gender> <integer>? ]"
+        },
+        gender: {
+          comment: "https://www.w3.org/TR/css3-speech/#voice-family",
+          syntax: "male | female | neutral"
+        },
+        "generic-family": {
+          comment: "added -apple-system",
+          references: [
+            "https://webkit.org/blog/3709/using-the-system-font-in-web-content/"
+          ],
+          syntax: "| -apple-system"
+        },
+        gradient: {
+          comment: "added legacy syntaxes support",
+          syntax: "| <-legacy-gradient>"
+        },
+        left: {
+          comment: "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
+          syntax: "<length> | auto"
+        },
+        "mask-image": {
+          comment: "missed; https://drafts.fxtf.org/css-masking-1/#the-mask-image",
+          syntax: "<mask-reference>#"
+        },
+        "named-color": {
+          comment: "added non standard color names",
+          syntax: "| <-non-standard-color>"
+        },
+        paint: {
+          comment: "used by SVG https://www.w3.org/TR/SVG/painting.html#SpecifyingPaint",
+          syntax: "none | <color> | <url> [ none | <color> ]? | context-fill | context-stroke"
+        },
+        right: {
+          comment: "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
+          syntax: "<length> | auto"
+        },
+        shape: {
+          comment: "missed spaces in function body and add backwards compatible syntax",
+          syntax: "rect( <top>, <right>, <bottom>, <left> ) | rect( <top> <right> <bottom> <left> )"
+        },
+        "scroll-timeline-axis": {
+          comment: "missed definition",
+          syntax: "block | inline | vertical | horizontal"
+        },
+        "scroll-timeline-name": {
+          comment: "missed definition",
+          references: [
+            "https://w3c.github.io/csswg-drafts/scroll-animations/#propdef-scroll-timeline-name"
+          ],
+          syntax: "none | <custom-ident>"
+        },
+        "single-animation-composition": {
+          comment: "missed definition",
+          references: [
+            "https://w3c.github.io/csswg-drafts/css-animations-2/#typedef-single-animation-composition"
+          ],
+          syntax: "replace | add | accumulate"
+        },
+        "svg-length": {
+          comment: "All coordinates and lengths in SVG can be specified with or without a unit identifier",
+          references: [
+            "https://www.w3.org/TR/SVG11/coords.html#Units"
+          ],
+          syntax: "<percentage> | <length> | <number>"
+        },
+        "svg-writing-mode": {
+          comment: "SVG specific keywords (deprecated for CSS)",
+          references: [
+            "https://developer.mozilla.org/en/docs/Web/CSS/writing-mode",
+            "https://www.w3.org/TR/SVG/text.html#WritingModeProperty"
+          ],
+          syntax: "lr-tb | rl-tb | tb-rl | lr | rl | tb"
+        },
+        top: {
+          comment: "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
+          syntax: "<length> | auto"
+        },
+        x: {
+          comment: "missed; not sure we should add it, but no others except `cursor` is using it so it's ok for now; https://drafts.csswg.org/css-ui-3/#cursor",
+          syntax: "<number>"
+        },
+        y: {
+          comment: "missed; not sure we should add it, but no others except `cursor` is using so it's ok for now; https://drafts.csswg.org/css-ui-3/#cursor",
+          syntax: "<number>"
+        },
+        declaration: {
+          comment: "missed, restored by https://drafts.csswg.org/css-syntax",
+          syntax: "<ident-token> : <declaration-value>? [ '!' important ]?"
+        },
+        "declaration-list": {
+          comment: "missed, restored by https://drafts.csswg.org/css-syntax",
+          syntax: "[ <declaration>? ';' ]* <declaration>?"
+        },
+        url: {
+          comment: "https://drafts.csswg.org/css-values-4/#urls",
+          syntax: "url( <string> <url-modifier>* ) | <url-token>"
+        },
+        "url-modifier": {
+          comment: "https://drafts.csswg.org/css-values-4/#typedef-url-modifier",
+          syntax: "<ident> | <function-token> <any-value> )"
+        },
+        "number-zero-one": {
+          syntax: "<number [0,1]>"
+        },
+        "number-one-or-greater": {
+          syntax: "<number [1,\u221E]>"
+        },
+        "-non-standard-display": {
+          syntax: "-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"
+        }
+      }
+    };
+  }
+});
+
+// node_modules/css-tree/cjs/data-patch.cjs
+var require_data_patch = __commonJS({
+  "node_modules/css-tree/cjs/data-patch.cjs"(exports2, module2) {
+    "use strict";
+    var patch = require_patch();
+    var patch$1 = patch;
+    module2.exports = patch$1;
+  }
+});
+
+// node_modules/mdn-data/css/at-rules.json
+var require_at_rules = __commonJS({
+  "node_modules/mdn-data/css/at-rules.json"(exports2, module2) {
+    module2.exports = {
+      "@charset": {
+        syntax: '@charset "<charset>";',
+        groups: [
+          "CSS Charsets"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@charset"
+      },
+      "@counter-style": {
+        syntax: "@counter-style <counter-style-name> {\n  [ system: <counter-system>; ] ||\n  [ symbols: <counter-symbols>; ] ||\n  [ additive-symbols: <additive-symbols>; ] ||\n  [ negative: <negative-symbol>; ] ||\n  [ prefix: <prefix>; ] ||\n  [ suffix: <suffix>; ] ||\n  [ range: <range>; ] ||\n  [ pad: <padding>; ] ||\n  [ speak-as: <speak-as>; ] ||\n  [ fallback: <counter-style-name>; ]\n}",
+        interfaces: [
+          "CSSCounterStyleRule"
+        ],
+        groups: [
+          "CSS Counter Styles"
+        ],
+        descriptors: {
+          "additive-symbols": {
+            syntax: "[ <integer> && <symbol> ]#",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          fallback: {
+            syntax: "<counter-style-name>",
+            media: "all",
+            initial: "decimal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          negative: {
+            syntax: "<symbol> <symbol>?",
+            media: "all",
+            initial: '"-" hyphen-minus',
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          pad: {
+            syntax: "<integer> && <symbol>",
+            media: "all",
+            initial: '0 ""',
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          prefix: {
+            syntax: "<symbol>",
+            media: "all",
+            initial: '""',
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          range: {
+            syntax: "[ [ <integer> | infinite ]{2} ]# | auto",
+            media: "all",
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "speak-as": {
+            syntax: "auto | bullets | numbers | words | spell-out | <counter-style-name>",
+            media: "all",
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          suffix: {
+            syntax: "<symbol>",
+            media: "all",
+            initial: '". "',
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          symbols: {
+            syntax: "<symbol>+",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          system: {
+            syntax: "cyclic | numeric | alphabetic | symbolic | additive | [ fixed <integer>? ] | [ extends <counter-style-name> ]",
+            media: "all",
+            initial: "symbolic",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          }
+        },
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@counter-style"
+      },
+      "@document": {
+        syntax: "@document [ <url> | url-prefix(<string>) | domain(<string>) | media-document(<string>) | regexp(<string>) ]# {\n  <group-rule-body>\n}",
+        interfaces: [
+          "CSSGroupingRule",
+          "CSSConditionRule"
+        ],
+        groups: [
+          "CSS Conditional Rules"
+        ],
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@document"
+      },
+      "@font-face": {
+        syntax: "@font-face {\n  [ font-family: <family-name>; ] ||\n  [ src: <src>; ] ||\n  [ unicode-range: <unicode-range>; ] ||\n  [ font-variant: <font-variant>; ] ||\n  [ font-feature-settings: <font-feature-settings>; ] ||\n  [ font-variation-settings: <font-variation-settings>; ] ||\n  [ font-stretch: <font-stretch>; ] ||\n  [ font-weight: <font-weight>; ] ||\n  [ font-style: <font-style>; ] ||\n  [ size-adjust: <size-adjust>; ] ||\n  [ ascent-override: <ascent-override>; ] ||\n  [ descent-override: <descent-override>; ] ||\n  [ line-gap-override: <line-gap-override>; ]\n}",
+        interfaces: [
+          "CSSFontFaceRule"
+        ],
+        groups: [
+          "CSS Fonts"
+        ],
+        descriptors: {
+          "ascent-override": {
+            syntax: "normal | <percentage>",
+            media: "all",
+            initial: "normal",
+            percentages: "asSpecified",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "experimental"
+          },
+          "descent-override": {
+            syntax: "normal | <percentage>",
+            media: "all",
+            initial: "normal",
+            percentages: "asSpecified",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "experimental"
+          },
+          "font-display": {
+            syntax: "[ auto | block | swap | fallback | optional ]",
+            media: "visual",
+            percentages: "no",
+            initial: "auto",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "experimental"
+          },
+          "font-family": {
+            syntax: "<family-name>",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "font-feature-settings": {
+            syntax: "normal | <feature-tag-value>#",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "font-variation-settings": {
+            syntax: "normal | [ <string> <number> ]#",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "font-stretch": {
+            syntax: "<font-stretch-absolute>{1,2}",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "font-style": {
+            syntax: "normal | italic | oblique <angle>{0,2}",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "font-weight": {
+            syntax: "<font-weight-absolute>{1,2}",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "font-variant": {
+            syntax: "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 ]",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "line-gap-override": {
+            syntax: "normal | <percentage>",
+            media: "all",
+            initial: "normal",
+            percentages: "asSpecified",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "experimental"
+          },
+          "size-adjust": {
+            syntax: "<percentage>",
+            media: "all",
+            initial: "100%",
+            percentages: "asSpecified",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "experimental"
+          },
+          src: {
+            syntax: "[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "unicode-range": {
+            syntax: "<unicode-range>#",
+            media: "all",
+            initial: "U+0-10FFFF",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          }
+        },
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@font-face"
+      },
+      "@font-feature-values": {
+        syntax: "@font-feature-values <family-name># {\n  <feature-value-block-list>\n}",
+        interfaces: [
+          "CSSFontFeatureValuesRule"
+        ],
+        groups: [
+          "CSS Fonts"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@font-feature-values"
+      },
+      "@import": {
+        syntax: "@import [ <string> | <url> ]\n        [ layer | layer(<layer-name>) ]?\n        [ supports( [ <supports-condition> | <declaration> ] ) ]?\n        <media-query-list>? ;",
+        groups: [
+          "CSS Conditional Rules",
+          "Media Queries"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@import"
+      },
+      "@keyframes": {
+        syntax: "@keyframes <keyframes-name> {\n  <keyframe-block-list>\n}",
+        interfaces: [
+          "CSSKeyframeRule",
+          "CSSKeyframesRule"
+        ],
+        groups: [
+          "CSS Animations"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@keyframes"
+      },
+      "@layer": {
+        syntax: "@layer [ <layer-name># | <layer-name>?  {\n  <stylesheet>\n} ]",
+        interfaces: [
+          "CSSLayerBlockRule",
+          "CSSLayerStatementRule"
+        ],
+        groups: [
+          "CSS Cascading and Inheritance"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@layer"
+      },
+      "@media": {
+        syntax: "@media <media-query-list> {\n  <group-rule-body>\n}",
+        interfaces: [
+          "CSSGroupingRule",
+          "CSSConditionRule",
+          "CSSMediaRule",
+          "CSSCustomMediaRule"
+        ],
+        groups: [
+          "CSS Conditional Rules",
+          "Media Queries"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@media"
+      },
+      "@namespace": {
+        syntax: "@namespace <namespace-prefix>? [ <string> | <url> ];",
+        groups: [
+          "CSS Namespaces"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@namespace"
+      },
+      "@page": {
+        syntax: "@page <page-selector-list> {\n  <page-body>\n}",
+        interfaces: [
+          "CSSPageRule"
+        ],
+        groups: [
+          "CSS Pages"
+        ],
+        descriptors: {
+          bleed: {
+            syntax: "auto | <length>",
+            media: [
+              "visual",
+              "paged"
+            ],
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          marks: {
+            syntax: "none | [ crop || cross ]",
+            media: [
+              "visual",
+              "paged"
+            ],
+            initial: "none",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          size: {
+            syntax: "<length>{1,2} | auto | [ <page-size> || [ portrait | landscape ] ]",
+            media: [
+              "visual",
+              "paged"
+            ],
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecifiedRelativeToAbsoluteLengths",
+            order: "orderOfAppearance",
+            status: "standard"
+          }
+        },
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@page"
+      },
+      "@property": {
+        syntax: "@property <custom-property-name> {\n  <declaration-list>\n}",
+        interfaces: [
+          "CSS",
+          "CSSPropertyRule"
+        ],
+        groups: [
+          "CSS Houdini"
+        ],
+        descriptors: {
+          syntax: {
+            syntax: "<string>",
+            media: "all",
+            percentages: "no",
+            initial: "n/a (required)",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "experimental"
+          },
+          inherits: {
+            syntax: "true | false",
+            media: "all",
+            percentages: "no",
+            initial: "auto",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "experimental"
+          },
+          "initial-value": {
+            syntax: "<string>",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "experimental"
+          }
+        },
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@property"
+      },
+      "@scroll-timeline": {
+        syntax: "@scroll-timeline <timeline-name> { <declaration-list> }",
+        interfaces: [
+          "ScrollTimeline"
+        ],
+        groups: [
+          "CSS Animations"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@scroll-timeline"
+      },
+      "@supports": {
+        syntax: "@supports <supports-condition> {\n  <group-rule-body>\n}",
+        interfaces: [
+          "CSSGroupingRule",
+          "CSSConditionRule",
+          "CSSSupportsRule"
+        ],
+        groups: [
+          "CSS Conditional Rules"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@supports"
+      },
+      "@viewport": {
+        syntax: "@viewport {\n  <group-rule-body>\n}",
+        interfaces: [
+          "CSSViewportRule"
+        ],
+        groups: [
+          "CSS Device Adaptation"
+        ],
+        descriptors: {
+          height: {
+            syntax: "<viewport-length>{1,2}",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: [
+              "min-height",
+              "max-height"
+            ],
+            percentages: [
+              "min-height",
+              "max-height"
+            ],
+            computed: [
+              "min-height",
+              "max-height"
+            ],
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "max-height": {
+            syntax: "<viewport-length>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToHeightOfInitialViewport",
+            computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "max-width": {
+            syntax: "<viewport-length>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToWidthOfInitialViewport",
+            computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "max-zoom": {
+            syntax: "auto | <number> | <percentage>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "the zoom factor itself",
+            computed: "autoNonNegativeOrPercentage",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "min-height": {
+            syntax: "<viewport-length>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToHeightOfInitialViewport",
+            computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "min-width": {
+            syntax: "<viewport-length>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToWidthOfInitialViewport",
+            computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "min-zoom": {
+            syntax: "auto | <number> | <percentage>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "the zoom factor itself",
+            computed: "autoNonNegativeOrPercentage",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          orientation: {
+            syntax: "auto | portrait | landscape",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToSizeOfBoundingBox",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "user-zoom": {
+            syntax: "zoom | fixed",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "zoom",
+            percentages: "referToSizeOfBoundingBox",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "viewport-fit": {
+            syntax: "auto | contain | cover",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          width: {
+            syntax: "<viewport-length>{1,2}",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: [
+              "min-width",
+              "max-width"
+            ],
+            percentages: [
+              "min-width",
+              "max-width"
+            ],
+            computed: [
+              "min-width",
+              "max-width"
+            ],
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          zoom: {
+            syntax: "auto | <number> | <percentage>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "the zoom factor itself",
+            computed: "autoNonNegativeOrPercentage",
+            order: "uniqueOrder",
+            status: "standard"
+          }
+        },
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@viewport"
+      }
+    };
+  }
+});
+
+// node_modules/mdn-data/css/properties.json
+var require_properties = __commonJS({
+  "node_modules/mdn-data/css/properties.json"(exports2, module2) {
+    module2.exports = {
+      "--*": {
+        syntax: "<declaration-value>",
+        media: "all",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Variables"
+        ],
+        initial: "seeProse",
+        appliesto: "allElements",
+        computed: "asSpecifiedWithVarsSubstituted",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/--*"
+      },
+      "-ms-accelerator": {
+        syntax: "false | true",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "false",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-accelerator"
+      },
+      "-ms-block-progression": {
+        syntax: "tb | rl | bt | lr",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "tb",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-block-progression"
+      },
+      "-ms-content-zoom-chaining": {
+        syntax: "none | chained",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-chaining"
+      },
+      "-ms-content-zooming": {
+        syntax: "none | zoom",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "zoomForTheTopLevelNoneForTheRest",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zooming"
+      },
+      "-ms-content-zoom-limit": {
+        syntax: "<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: [
+          "-ms-content-zoom-limit-max",
+          "-ms-content-zoom-limit-min"
+        ],
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-content-zoom-limit-max",
+          "-ms-content-zoom-limit-min"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-content-zoom-limit-max",
+          "-ms-content-zoom-limit-min"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit"
+      },
+      "-ms-content-zoom-limit-max": {
+        syntax: "<percentage>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "maxZoomFactor",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "400%",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit-max"
+      },
+      "-ms-content-zoom-limit-min": {
+        syntax: "<percentage>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "minZoomFactor",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "100%",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit-min"
+      },
+      "-ms-content-zoom-snap": {
+        syntax: "<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-content-zoom-snap-type",
+          "-ms-content-zoom-snap-points"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-content-zoom-snap-type",
+          "-ms-content-zoom-snap-points"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap"
+      },
+      "-ms-content-zoom-snap-points": {
+        syntax: "snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "snapInterval(0%, 100%)",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap-points"
+      },
+      "-ms-content-zoom-snap-type": {
+        syntax: "none | proximity | mandatory",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap-type"
+      },
+      "-ms-filter": {
+        syntax: "<string>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: '""',
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-filter"
+      },
+      "-ms-flow-from": {
+        syntax: "[ none | <custom-ident> ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-flow-from"
+      },
+      "-ms-flow-into": {
+        syntax: "[ none | <custom-ident> ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "iframeElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-flow-into"
+      },
+      "-ms-grid-columns": {
+        syntax: "none | <track-list> | <auto-track-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpcDifferenceLpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-grid-columns"
+      },
+      "-ms-grid-rows": {
+        syntax: "none | <track-list> | <auto-track-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpcDifferenceLpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-grid-rows"
+      },
+      "-ms-high-contrast-adjust": {
+        syntax: "auto | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-high-contrast-adjust"
+      },
+      "-ms-hyphenate-limit-chars": {
+        syntax: "auto | <integer>{1,3}",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-chars"
+      },
+      "-ms-hyphenate-limit-lines": {
+        syntax: "no-limit | <integer>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "no-limit",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-lines"
+      },
+      "-ms-hyphenate-limit-zone": {
+        syntax: "<percentage> | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "referToLineBoxWidth",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "0",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-zone"
+      },
+      "-ms-ime-align": {
+        syntax: "auto | after",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-ime-align"
+      },
+      "-ms-overflow-style": {
+        syntax: "auto | none | scrollbar | -ms-autohiding-scrollbar",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-overflow-style"
+      },
+      "-ms-scrollbar-3dlight-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "dependsOnUserAgent",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-3dlight-color"
+      },
+      "-ms-scrollbar-arrow-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ButtonText",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-arrow-color"
+      },
+      "-ms-scrollbar-base-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "dependsOnUserAgent",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-base-color"
+      },
+      "-ms-scrollbar-darkshadow-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ThreeDDarkShadow",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-darkshadow-color"
+      },
+      "-ms-scrollbar-face-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ThreeDFace",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-face-color"
+      },
+      "-ms-scrollbar-highlight-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ThreeDHighlight",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-highlight-color"
+      },
+      "-ms-scrollbar-shadow-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ThreeDDarkShadow",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-shadow-color"
+      },
+      "-ms-scrollbar-track-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "Scrollbar",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-track-color"
+      },
+      "-ms-scroll-chaining": {
+        syntax: "chained | none",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "chained",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-chaining"
+      },
+      "-ms-scroll-limit": {
+        syntax: "<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-scroll-limit-x-min",
+          "-ms-scroll-limit-y-min",
+          "-ms-scroll-limit-x-max",
+          "-ms-scroll-limit-y-max"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-scroll-limit-x-min",
+          "-ms-scroll-limit-y-min",
+          "-ms-scroll-limit-x-max",
+          "-ms-scroll-limit-y-max"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit"
+      },
+      "-ms-scroll-limit-x-max": {
+        syntax: "auto | <length>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-x-max"
+      },
+      "-ms-scroll-limit-x-min": {
+        syntax: "<length>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "0",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-x-min"
+      },
+      "-ms-scroll-limit-y-max": {
+        syntax: "auto | <length>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-y-max"
+      },
+      "-ms-scroll-limit-y-min": {
+        syntax: "<length>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "0",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-y-min"
+      },
+      "-ms-scroll-rails": {
+        syntax: "none | railed",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "railed",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-rails"
+      },
+      "-ms-scroll-snap-points-x": {
+        syntax: "snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "snapInterval(0px, 100%)",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-points-x"
+      },
+      "-ms-scroll-snap-points-y": {
+        syntax: "snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "snapInterval(0px, 100%)",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-points-y"
+      },
+      "-ms-scroll-snap-type": {
+        syntax: "none | proximity | mandatory",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-type"
+      },
+      "-ms-scroll-snap-x": {
+        syntax: "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-scroll-snap-type",
+          "-ms-scroll-snap-points-x"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-scroll-snap-type",
+          "-ms-scroll-snap-points-x"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-x"
+      },
+      "-ms-scroll-snap-y": {
+        syntax: "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-scroll-snap-type",
+          "-ms-scroll-snap-points-y"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-scroll-snap-type",
+          "-ms-scroll-snap-points-y"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-y"
+      },
+      "-ms-scroll-translation": {
+        syntax: "none | vertical-to-horizontal",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-translation"
+      },
+      "-ms-text-autospace": {
+        syntax: "none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-text-autospace"
+      },
+      "-ms-touch-select": {
+        syntax: "grippers | none",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "grippers",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-touch-select"
+      },
+      "-ms-user-select": {
+        syntax: "none | element | text",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "text",
+        appliesto: "nonReplacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-user-select"
+      },
+      "-ms-wrap-flow": {
+        syntax: "auto | both | start | end | maximum | clear",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-flow"
+      },
+      "-ms-wrap-margin": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "0",
+        appliesto: "exclusionElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-margin"
+      },
+      "-ms-wrap-through": {
+        syntax: "wrap | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "wrap",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-through"
+      },
+      "-moz-appearance": {
+        syntax: "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",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "noneButOverriddenInUserAgentCSS",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/appearance"
+      },
+      "-moz-binding": {
+        syntax: "<url> | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElementsExceptGeneratedContentOrPseudoElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-binding"
+      },
+      "-moz-border-bottom-colors": {
+        syntax: "<color>+ | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-bottom-colors"
+      },
+      "-moz-border-left-colors": {
+        syntax: "<color>+ | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-left-colors"
+      },
+      "-moz-border-right-colors": {
+        syntax: "<color>+ | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-right-colors"
+      },
+      "-moz-border-top-colors": {
+        syntax: "<color>+ | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-top-colors"
+      },
+      "-moz-context-properties": {
+        syntax: "none | [ fill | fill-opacity | stroke | stroke-opacity ]#",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElementsThatCanReferenceImages",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-context-properties"
+      },
+      "-moz-float-edge": {
+        syntax: "border-box | content-box | margin-box | padding-box",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "content-box",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-float-edge"
+      },
+      "-moz-force-broken-image-icon": {
+        syntax: "0 | 1",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "images",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-force-broken-image-icon"
+      },
+      "-moz-image-region": {
+        syntax: "<shape> | auto",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "auto",
+        appliesto: "xulImageElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-image-region"
+      },
+      "-moz-orient": {
+        syntax: "inline | block | horizontal | vertical",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "inline",
+        appliesto: "anyElementEffectOnProgressAndMeter",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-orient"
+      },
+      "-moz-outline-radius": {
+        syntax: "<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "-moz-outline-radius-topleft",
+          "-moz-outline-radius-topright",
+          "-moz-outline-radius-bottomright",
+          "-moz-outline-radius-bottomleft"
+        ],
+        percentages: [
+          "-moz-outline-radius-topleft",
+          "-moz-outline-radius-topright",
+          "-moz-outline-radius-bottomright",
+          "-moz-outline-radius-bottomleft"
+        ],
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: [
+          "-moz-outline-radius-topleft",
+          "-moz-outline-radius-topright",
+          "-moz-outline-radius-bottomright",
+          "-moz-outline-radius-bottomleft"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "-moz-outline-radius-topleft",
+          "-moz-outline-radius-topright",
+          "-moz-outline-radius-bottomright",
+          "-moz-outline-radius-bottomleft"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius"
+      },
+      "-moz-outline-radius-bottomleft": {
+        syntax: "<outline-radius>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomleft"
+      },
+      "-moz-outline-radius-bottomright": {
+        syntax: "<outline-radius>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomright"
+      },
+      "-moz-outline-radius-topleft": {
+        syntax: "<outline-radius>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topleft"
+      },
+      "-moz-outline-radius-topright": {
+        syntax: "<outline-radius>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topright"
+      },
+      "-moz-stack-sizing": {
+        syntax: "ignore | stretch-to-fit",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "stretch-to-fit",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-stack-sizing"
+      },
+      "-moz-text-blink": {
+        syntax: "none | blink",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-text-blink"
+      },
+      "-moz-user-focus": {
+        syntax: "ignore | normal | select-after | select-before | select-menu | select-same | select-all | none",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-user-focus"
+      },
+      "-moz-user-input": {
+        syntax: "auto | none | enabled | disabled",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-user-input"
+      },
+      "-moz-user-modify": {
+        syntax: "read-only | read-write | write-only",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "read-only",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-user-modify"
+      },
+      "-moz-window-dragging": {
+        syntax: "drag | no-drag",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "drag",
+        appliesto: "allElementsCreatingNativeWindows",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-window-dragging"
+      },
+      "-moz-window-shadow": {
+        syntax: "default | menu | tooltip | sheet | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "default",
+        appliesto: "allElementsCreatingNativeWindows",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-window-shadow"
+      },
+      "-webkit-appearance": {
+        syntax: "none | button | button-bevel | 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 | 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",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "noneButOverriddenInUserAgentCSS",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/appearance"
+      },
+      "-webkit-border-before": {
+        syntax: "<'border-width'> || <'border-style'> || <color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: [
+          "-webkit-border-before-width"
+        ],
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-border-before"
+      },
+      "-webkit-border-before-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "nonstandard"
+      },
+      "-webkit-border-before-style": {
+        syntax: "<'border-style'>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard"
+      },
+      "-webkit-border-before-width": {
+        syntax: "<'border-width'>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "nonstandard"
+      },
+      "-webkit-box-reflect": {
+        syntax: "[ above | below | right | left ]? <length>? <image>?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-box-reflect"
+      },
+      "-webkit-line-clamp": {
+        syntax: "none | <integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions",
+          "CSS Overflow"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-line-clamp"
+      },
+      "-webkit-mask": {
+        syntax: "[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <box> | border | padding | content | text ] || [ <box> | border | padding | content ] ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: [
+          "-webkit-mask-image",
+          "-webkit-mask-repeat",
+          "-webkit-mask-attachment",
+          "-webkit-mask-position",
+          "-webkit-mask-origin",
+          "-webkit-mask-clip"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "-webkit-mask-image",
+          "-webkit-mask-repeat",
+          "-webkit-mask-attachment",
+          "-webkit-mask-position",
+          "-webkit-mask-origin",
+          "-webkit-mask-clip"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask"
+      },
+      "-webkit-mask-attachment": {
+        syntax: "<attachment>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "scroll",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-attachment"
+      },
+      "-webkit-mask-clip": {
+        syntax: "[ <box> | border | padding | content | text ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "border",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-clip"
+      },
+      "-webkit-mask-composite": {
+        syntax: "<composite-style>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "source-over",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-composite"
+      },
+      "-webkit-mask-image": {
+        syntax: "<mask-reference>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "absoluteURIOrNone",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-image"
+      },
+      "-webkit-mask-origin": {
+        syntax: "[ <box> | border | padding | content ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "padding",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-origin"
+      },
+      "-webkit-mask-position": {
+        syntax: "<position>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToSizeOfElement",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "0% 0%",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrPercentage",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-position"
+      },
+      "-webkit-mask-position-x": {
+        syntax: "[ <length-percentage> | left | center | right ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToSizeOfElement",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "0%",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrPercentage",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-x"
+      },
+      "-webkit-mask-position-y": {
+        syntax: "[ <length-percentage> | top | center | bottom ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToSizeOfElement",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "0%",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrPercentage",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-y"
+      },
+      "-webkit-mask-repeat": {
+        syntax: "<repeat-style>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "repeat",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-repeat"
+      },
+      "-webkit-mask-repeat-x": {
+        syntax: "repeat | no-repeat | space | round",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "repeat",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-x"
+      },
+      "-webkit-mask-repeat-y": {
+        syntax: "repeat | no-repeat | space | round",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "repeat",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrPercentage",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-y"
+      },
+      "-webkit-mask-size": {
+        syntax: "<bg-size>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "relativeToBackgroundPositioningArea",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "auto auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-size"
+      },
+      "-webkit-overflow-scrolling": {
+        syntax: "auto | touch",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-overflow-scrolling"
+      },
+      "-webkit-tap-highlight-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "black",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-tap-highlight-color"
+      },
+      "-webkit-text-fill-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-fill-color"
+      },
+      "-webkit-text-stroke": {
+        syntax: "<length> || <color>",
+        media: "visual",
+        inherited: true,
+        animationType: [
+          "-webkit-text-stroke-width",
+          "-webkit-text-stroke-color"
+        ],
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: [
+          "-webkit-text-stroke-width",
+          "-webkit-text-stroke-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "-webkit-text-stroke-width",
+          "-webkit-text-stroke-color"
+        ],
+        order: "canonicalOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke"
+      },
+      "-webkit-text-stroke-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-color"
+      },
+      "-webkit-text-stroke-width": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "absoluteLength",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-width"
+      },
+      "-webkit-touch-callout": {
+        syntax: "default | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "default",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-touch-callout"
+      },
+      "-webkit-user-modify": {
+        syntax: "read-only | read-write | read-write-plaintext-only",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "read-only",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard"
+      },
+      "accent-color": {
+        syntax: "auto | <color>",
+        media: "interactive",
+        inherited: true,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asAutoOrColor",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/accent-color"
+      },
+      "align-content": {
+        syntax: "normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "multilineFlexContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-content"
+      },
+      "align-items": {
+        syntax: "normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-items"
+      },
+      "align-self": {
+        syntax: "auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "auto",
+        appliesto: "flexItemsGridItemsAndAbsolutelyPositionedBoxes",
+        computed: "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-self"
+      },
+      "align-tracks": {
+        syntax: "[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "normal",
+        appliesto: "gridContainersWithMasonryLayoutInTheirBlockAxis",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-tracks"
+      },
+      all: {
+        syntax: "initial | inherit | unset | revert | revert-layer",
+        media: "noPracticalMedia",
+        inherited: false,
+        animationType: "eachOfShorthandPropertiesExceptUnicodeBiDiAndDirection",
+        percentages: "no",
+        groups: [
+          "CSS Miscellaneous"
+        ],
+        initial: "noPracticalInitialValue",
+        appliesto: "allElements",
+        computed: "asSpecifiedAppliesToEachProperty",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/all"
+      },
+      animation: {
+        syntax: "<single-animation>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: [
+          "animation-name",
+          "animation-duration",
+          "animation-timing-function",
+          "animation-delay",
+          "animation-iteration-count",
+          "animation-direction",
+          "animation-fill-mode",
+          "animation-play-state",
+          "animation-timeline"
+        ],
+        appliesto: "allElementsAndPseudos",
+        computed: [
+          "animation-name",
+          "animation-duration",
+          "animation-timing-function",
+          "animation-delay",
+          "animation-direction",
+          "animation-iteration-count",
+          "animation-fill-mode",
+          "animation-play-state",
+          "animation-timeline"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation"
+      },
+      "animation-composition": {
+        syntax: "<single-animation-composition>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "replace",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-composition"
+      },
+      "animation-delay": {
+        syntax: "<time>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "0s",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-delay"
+      },
+      "animation-direction": {
+        syntax: "<single-animation-direction>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "normal",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-direction"
+      },
+      "animation-duration": {
+        syntax: "<time>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "0s",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-duration"
+      },
+      "animation-fill-mode": {
+        syntax: "<single-animation-fill-mode>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "none",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode"
+      },
+      "animation-iteration-count": {
+        syntax: "<single-animation-iteration-count>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "1",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count"
+      },
+      "animation-name": {
+        syntax: "[ none | <keyframes-name> ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "none",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-name"
+      },
+      "animation-play-state": {
+        syntax: "<single-animation-play-state>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "running",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-play-state"
+      },
+      "animation-timing-function": {
+        syntax: "<easing-function>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "ease",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-timing-function"
+      },
+      "animation-timeline": {
+        syntax: "<single-animation-timeline>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "listEachItemIdentifyerOrNoneAuto",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-timeline"
+      },
+      appearance: {
+        syntax: "none | auto | textfield | menulist-button | <compat-auto>",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/appearance"
+      },
+      "aspect-ratio": {
+        syntax: "auto | <ratio>",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElementsExceptInlineBoxesAndInternalRubyOrTableBoxes",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/aspect-ratio"
+      },
+      azimuth: {
+        syntax: "<angle> | [ [ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards",
+        media: "aural",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Speech"
+        ],
+        initial: "center",
+        appliesto: "allElements",
+        computed: "normalizedAngle",
+        order: "orderOfAppearance",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/azimuth"
+      },
+      "backdrop-filter": {
+        syntax: "none | <filter-function-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "filterList",
+        percentages: "no",
+        groups: [
+          "Filter Effects"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/backdrop-filter"
+      },
+      "backface-visibility": {
+        syntax: "visible | hidden",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "visible",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/backface-visibility"
+      },
+      background: {
+        syntax: "[ <bg-layer> , ]* <final-bg-layer>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "background-color",
+          "background-image",
+          "background-clip",
+          "background-position",
+          "background-size",
+          "background-repeat",
+          "background-attachment"
+        ],
+        percentages: [
+          "background-position",
+          "background-size"
+        ],
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "background-image",
+          "background-position",
+          "background-size",
+          "background-repeat",
+          "background-origin",
+          "background-clip",
+          "background-attachment",
+          "background-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "background-image",
+          "background-position",
+          "background-size",
+          "background-repeat",
+          "background-origin",
+          "background-clip",
+          "background-attachment",
+          "background-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background"
+      },
+      "background-attachment": {
+        syntax: "<attachment>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "scroll",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-attachment"
+      },
+      "background-blend-mode": {
+        syntax: "<blend-mode>#",
+        media: "none",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Compositing and Blending"
+        ],
+        initial: "normal",
+        appliesto: "allElementsSVGContainerGraphicsAndGraphicsReferencingElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-blend-mode"
+      },
+      "background-clip": {
+        syntax: "<box>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "border-box",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-clip"
+      },
+      "background-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "transparent",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-color"
+      },
+      "background-image": {
+        syntax: "<bg-image>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-image"
+      },
+      "background-origin": {
+        syntax: "<box>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "padding-box",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-origin"
+      },
+      "background-position": {
+        syntax: "<bg-position>#",
+        media: "visual",
+        inherited: false,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "referToSizeOfBackgroundPositioningAreaMinusBackgroundImageSize",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0% 0%",
+        appliesto: "allElements",
+        computed: [
+          "background-position-x",
+          "background-position-y"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-position"
+      },
+      "background-position-x": {
+        syntax: "[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToWidthOfBackgroundPositioningAreaMinusBackgroundImageHeight",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0%",
+        appliesto: "allElements",
+        computed: "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-position-x"
+      },
+      "background-position-y": {
+        syntax: "[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToHeightOfBackgroundPositioningAreaMinusBackgroundImageHeight",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0%",
+        appliesto: "allElements",
+        computed: "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-position-y"
+      },
+      "background-repeat": {
+        syntax: "<repeat-style>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "repeat",
+        appliesto: "allElements",
+        computed: "listEachItemHasTwoKeywordsOnePerDimension",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-repeat"
+      },
+      "background-size": {
+        syntax: "<bg-size>#",
+        media: "visual",
+        inherited: false,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "relativeToBackgroundPositioningArea",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "auto auto",
+        appliesto: "allElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-size"
+      },
+      "block-overflow": {
+        syntax: "clip | ellipsis | <string>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "clip",
+        appliesto: "blockContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental"
+      },
+      "block-size": {
+        syntax: "<'width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "blockSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsWidthAndHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/block-size"
+      },
+      border: {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-color",
+          "border-style",
+          "border-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "border-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "border-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border"
+      },
+      "border-block": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block"
+      },
+      "border-block-color": {
+        syntax: "<'border-top-color'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-color"
+      },
+      "border-block-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-style"
+      },
+      "border-block-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-width"
+      },
+      "border-block-end": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-block-end-color",
+          "border-block-end-style",
+          "border-block-end-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-end"
+      },
+      "border-block-end-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-end-color"
+      },
+      "border-block-end-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-end-style"
+      },
+      "border-block-end-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-end-width"
+      },
+      "border-block-start": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-block-start-color",
+          "border-block-start-style",
+          "border-block-start-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "border-block-start-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-start"
+      },
+      "border-block-start-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-start-color"
+      },
+      "border-block-start-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-start-style"
+      },
+      "border-block-start-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-start-width"
+      },
+      "border-bottom": {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-bottom-color",
+          "border-bottom-style",
+          "border-bottom-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-bottom-width",
+          "border-bottom-style",
+          "border-bottom-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-bottom-width",
+          "border-bottom-style",
+          "border-bottom-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom"
+      },
+      "border-bottom-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-color"
+      },
+      "border-bottom-left-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius"
+      },
+      "border-bottom-right-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius"
+      },
+      "border-bottom-style": {
+        syntax: "<line-style>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-style"
+      },
+      "border-bottom-width": {
+        syntax: "<line-width>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthOr0IfBorderBottomStyleNoneOrHidden",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-width"
+      },
+      "border-collapse": {
+        syntax: "collapse | separate",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "separate",
+        appliesto: "tableElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-collapse"
+      },
+      "border-color": {
+        syntax: "<color>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-bottom-color",
+          "border-left-color",
+          "border-right-color",
+          "border-top-color"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-color",
+          "border-right-color",
+          "border-bottom-color",
+          "border-left-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-bottom-color",
+          "border-left-color",
+          "border-right-color",
+          "border-top-color"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-color"
+      },
+      "border-end-end-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius"
+      },
+      "border-end-start-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius"
+      },
+      "border-image": {
+        syntax: "<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: [
+          "border-image-slice",
+          "border-image-width"
+        ],
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-image-source",
+          "border-image-slice",
+          "border-image-width",
+          "border-image-outset",
+          "border-image-repeat"
+        ],
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: [
+          "border-image-outset",
+          "border-image-repeat",
+          "border-image-slice",
+          "border-image-source",
+          "border-image-width"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image"
+      },
+      "border-image-outset": {
+        syntax: "[ <length> | <number> ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-outset"
+      },
+      "border-image-repeat": {
+        syntax: "[ stretch | repeat | round | space ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "stretch",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-repeat"
+      },
+      "border-image-slice": {
+        syntax: "<number-percentage>{1,4} && fill?",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "referToSizeOfBorderImage",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "100%",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "oneToFourPercentagesOrAbsoluteLengthsPlusFill",
+        order: "percentagesOrLengthsFollowedByFill",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-slice"
+      },
+      "border-image-source": {
+        syntax: "none | <image>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "noneOrImageWithAbsoluteURI",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-source"
+      },
+      "border-image-width": {
+        syntax: "[ <length-percentage> | <number> | auto ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "referToWidthOrHeightOfBorderImageArea",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "1",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-width"
+      },
+      "border-inline": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline"
+      },
+      "border-inline-end": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-inline-end-color",
+          "border-inline-end-style",
+          "border-inline-end-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "border-inline-end-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-end"
+      },
+      "border-inline-color": {
+        syntax: "<'border-top-color'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-color"
+      },
+      "border-inline-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-style"
+      },
+      "border-inline-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-width"
+      },
+      "border-inline-end-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color"
+      },
+      "border-inline-end-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style"
+      },
+      "border-inline-end-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width"
+      },
+      "border-inline-start": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-inline-start-color",
+          "border-inline-start-style",
+          "border-inline-start-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "border-inline-start-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-start"
+      },
+      "border-inline-start-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color"
+      },
+      "border-inline-start-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style"
+      },
+      "border-inline-start-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width"
+      },
+      "border-left": {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-left-color",
+          "border-left-style",
+          "border-left-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-left-width",
+          "border-left-style",
+          "border-left-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-left-width",
+          "border-left-style",
+          "border-left-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-left"
+      },
+      "border-left-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-left-color"
+      },
+      "border-left-style": {
+        syntax: "<line-style>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-left-style"
+      },
+      "border-left-width": {
+        syntax: "<line-width>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthOr0IfBorderLeftStyleNoneOrHidden",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-left-width"
+      },
+      "border-radius": {
+        syntax: "<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-top-left-radius",
+          "border-top-right-radius",
+          "border-bottom-right-radius",
+          "border-bottom-left-radius"
+        ],
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-left-radius",
+          "border-top-right-radius",
+          "border-bottom-right-radius",
+          "border-bottom-left-radius"
+        ],
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: [
+          "border-bottom-left-radius",
+          "border-bottom-right-radius",
+          "border-top-left-radius",
+          "border-top-right-radius"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-radius"
+      },
+      "border-right": {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-right-color",
+          "border-right-style",
+          "border-right-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-right-width",
+          "border-right-style",
+          "border-right-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-right-width",
+          "border-right-style",
+          "border-right-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-right"
+      },
+      "border-right-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-right-color"
+      },
+      "border-right-style": {
+        syntax: "<line-style>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-right-style"
+      },
+      "border-right-width": {
+        syntax: "<line-width>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthOr0IfBorderRightStyleNoneOrHidden",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-right-width"
+      },
+      "border-spacing": {
+        syntax: "<length> <length>?",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "0",
+        appliesto: "tableElements",
+        computed: "twoAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-spacing"
+      },
+      "border-start-end-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius"
+      },
+      "border-start-start-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius"
+      },
+      "border-style": {
+        syntax: "<line-style>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-style",
+          "border-right-style",
+          "border-bottom-style",
+          "border-left-style"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-bottom-style",
+          "border-left-style",
+          "border-right-style",
+          "border-top-style"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-style"
+      },
+      "border-top": {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-top-color",
+          "border-top-style",
+          "border-top-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top"
+      },
+      "border-top-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-color"
+      },
+      "border-top-left-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius"
+      },
+      "border-top-right-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius"
+      },
+      "border-top-style": {
+        syntax: "<line-style>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-style"
+      },
+      "border-top-width": {
+        syntax: "<line-width>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthOr0IfBorderTopStyleNoneOrHidden",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-width"
+      },
+      "border-width": {
+        syntax: "<line-width>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-bottom-width",
+          "border-left-width",
+          "border-right-width",
+          "border-top-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-width",
+          "border-right-width",
+          "border-bottom-width",
+          "border-left-width"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-bottom-width",
+          "border-left-width",
+          "border-right-width",
+          "border-top-width"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-width"
+      },
+      bottom: {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToContainingBlockHeight",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/bottom"
+      },
+      "box-align": {
+        syntax: "start | center | end | baseline | stretch",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "stretch",
+        appliesto: "elementsWithDisplayBoxOrInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-align"
+      },
+      "box-decoration-break": {
+        syntax: "slice | clone",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "slice",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-decoration-break"
+      },
+      "box-direction": {
+        syntax: "normal | reverse | inherit",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "normal",
+        appliesto: "elementsWithDisplayBoxOrInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-direction"
+      },
+      "box-flex": {
+        syntax: "<number>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "0",
+        appliesto: "directChildrenOfElementsWithDisplayMozBoxMozInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-flex"
+      },
+      "box-flex-group": {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "1",
+        appliesto: "inFlowChildrenOfBoxElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-flex-group"
+      },
+      "box-lines": {
+        syntax: "single | multiple",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "single",
+        appliesto: "boxElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-lines"
+      },
+      "box-ordinal-group": {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "1",
+        appliesto: "childrenOfBoxElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-ordinal-group"
+      },
+      "box-orient": {
+        syntax: "horizontal | vertical | inline-axis | block-axis | inherit",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "inlineAxisHorizontalInXUL",
+        appliesto: "elementsWithDisplayBoxOrInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-orient"
+      },
+      "box-pack": {
+        syntax: "start | center | end | justify",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "start",
+        appliesto: "elementsWithDisplayMozBoxMozInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-pack"
+      },
+      "box-shadow": {
+        syntax: "none | <shadow>#",
+        media: "visual",
+        inherited: false,
+        animationType: "shadowList",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "absoluteLengthsSpecifiedColorAsSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-shadow"
+      },
+      "box-sizing": {
+        syntax: "content-box | border-box",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "content-box",
+        appliesto: "allElementsAcceptingWidthOrHeight",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-sizing"
+      },
+      "break-after": {
+        syntax: "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/break-after"
+      },
+      "break-before": {
+        syntax: "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/break-before"
+      },
+      "break-inside": {
+        syntax: "auto | avoid | avoid-page | avoid-column | avoid-region",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/break-inside"
+      },
+      "caption-side": {
+        syntax: "top | bottom | block-start | block-end | inline-start | inline-end",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "top",
+        appliesto: "tableCaptionElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/caption-side"
+      },
+      caret: {
+        syntax: "<'caret-color'> || <'caret-shape'>",
+        media: "interactive",
+        inherited: true,
+        animationType: [
+          "caret-color",
+          "caret-shape"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: [
+          "caret-color",
+          "caret-shape"
+        ],
+        appliesto: "elementsThatAcceptInput",
+        computed: [
+          "caret-color",
+          "caret-shape"
+        ],
+        order: "perGrammar",
+        status: "standard"
+      },
+      "caret-color": {
+        syntax: "auto | <color>",
+        media: "interactive",
+        inherited: true,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asAutoOrColor",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/caret-color"
+      },
+      "caret-shape": {
+        syntax: "auto | bar | block | underscore",
+        media: "interactive",
+        inherited: true,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "elementsThatAcceptInput",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard"
+      },
+      clear: {
+        syntax: "none | left | right | both | inline-start | inline-end",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "none",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/clear"
+      },
+      clip: {
+        syntax: "<shape> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "rectangle",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "auto",
+        appliesto: "absolutelyPositionedElements",
+        computed: "autoOrRectangle",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/clip"
+      },
+      "clip-path": {
+        syntax: "<clip-source> | [ <basic-shape> || <geometry-box> ] | none",
+        media: "visual",
+        inherited: false,
+        animationType: "basicShapeOtherwiseNo",
+        percentages: "referToReferenceBoxWhenSpecifiedOtherwiseBorderBox",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/clip-path"
+      },
+      color: {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "canvastext",
+        appliesto: "allElementsAndText",
+        computed: "computedColor",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/color"
+      },
+      "print-color-adjust": {
+        syntax: "economy | exact",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "economy",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/print-color-adjust"
+      },
+      "color-scheme": {
+        syntax: "normal | [ light | dark | <custom-ident> ]+ && only?",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "normal",
+        appliesto: "allElementsAndText",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/color-scheme"
+      },
+      "column-count": {
+        syntax: "<integer> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "auto",
+        appliesto: "blockContainersExceptTableWrappers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-count"
+      },
+      "column-fill": {
+        syntax: "auto | balance | balance-all",
+        media: "visualInContinuousMediaNoEffectInOverflowColumns",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "balance",
+        appliesto: "multicolElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-fill"
+      },
+      "column-gap": {
+        syntax: "normal | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "multiColumnElementsFlexContainersGridContainers",
+        computed: "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-gap"
+      },
+      "column-rule": {
+        syntax: "<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "column-rule-color",
+          "column-rule-style",
+          "column-rule-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: [
+          "column-rule-width",
+          "column-rule-style",
+          "column-rule-color"
+        ],
+        appliesto: "multicolElements",
+        computed: [
+          "column-rule-color",
+          "column-rule-style",
+          "column-rule-width"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-rule"
+      },
+      "column-rule-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "currentcolor",
+        appliesto: "multicolElements",
+        computed: "computedColor",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-rule-color"
+      },
+      "column-rule-style": {
+        syntax: "<'border-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "none",
+        appliesto: "multicolElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-rule-style"
+      },
+      "column-rule-width": {
+        syntax: "<'border-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "medium",
+        appliesto: "multicolElements",
+        computed: "absoluteLength0IfColumnRuleStyleNoneOrHidden",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-rule-width"
+      },
+      "column-span": {
+        syntax: "none | all",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "none",
+        appliesto: "inFlowBlockLevelElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-span"
+      },
+      "column-width": {
+        syntax: "<length> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "auto",
+        appliesto: "blockContainersExceptTableWrappers",
+        computed: "absoluteLengthZeroOrLarger",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-width"
+      },
+      columns: {
+        syntax: "<'column-width'> || <'column-count'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "column-width",
+          "column-count"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: [
+          "column-width",
+          "column-count"
+        ],
+        appliesto: "blockContainersExceptTableWrappers",
+        computed: [
+          "column-width",
+          "column-count"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/columns"
+      },
+      contain: {
+        syntax: "none | strict | content | [ [ size || inline-size ] || layout || style || paint ]",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Containment"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/contain"
+      },
+      "contain-intrinsic-size": {
+        syntax: "[ none | <length> | auto <length> ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "contain-intrinsic-width",
+          "contain-intrinsic-height"
+        ],
+        percentages: [
+          "contain-intrinsic-width",
+          "contain-intrinsic-height"
+        ],
+        groups: [
+          "CSS Containment"
+        ],
+        initial: [
+          "contain-intrinsic-width",
+          "contain-intrinsic-height"
+        ],
+        appliesto: "elementsForWhichSizeContainmentCanApply",
+        computed: [
+          "contain-intrinsic-width",
+          "contain-intrinsic-height"
+        ],
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-size"
+      },
+      "contain-intrinsic-block-size": {
+        syntax: "none | <length> | auto <length>",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Containment"
+        ],
+        initial: "none",
+        appliesto: "elementsForWhichSizeContainmentCanApply",
+        computed: "asSpecifiedWithLengthValuesComputed",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-block-size"
+      },
+      "contain-intrinsic-height": {
+        syntax: "none | <length> | auto <length>",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Containment"
+        ],
+        initial: "none",
+        appliesto: "elementsForWhichSizeContainmentCanApply",
+        computed: "asSpecifiedWithLengthValuesComputed",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-height"
+      },
+      "contain-intrinsic-inline-size": {
+        syntax: "none | <length> | auto <length>",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Containment"
+        ],
+        initial: "none",
+        appliesto: "elementsForWhichSizeContainmentCanApply",
+        computed: "asSpecifiedWithLengthValuesComputed",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-inline-size"
+      },
+      "contain-intrinsic-width": {
+        syntax: "none | <length> | auto <length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Containment"
+        ],
+        initial: "none",
+        appliesto: "elementsForWhichSizeContainmentCanApply",
+        computed: "asSpecifiedWithLengthValuesComputed",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-width"
+      },
+      content: {
+        syntax: "normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> ]+ ]?",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Generated Content"
+        ],
+        initial: "normal",
+        appliesto: "allElementsTreeAbidingPseudoElementsPageMarginBoxes",
+        computed: "normalOnElementsForPseudosNoneAbsoluteURIStringOrAsSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/content"
+      },
+      "content-visibility": {
+        syntax: "visible | auto | hidden",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Containment"
+        ],
+        initial: "visible",
+        appliesto: "elementsForWhichLayoutContainmentCanApply",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/content-visibility"
+      },
+      "counter-increment": {
+        syntax: "[ <counter-name> <integer>? ]+ | none",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Counter Styles"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/counter-increment"
+      },
+      "counter-reset": {
+        syntax: "[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Counter Styles"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/counter-reset"
+      },
+      "counter-set": {
+        syntax: "[ <counter-name> <integer>? ]+ | none",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Counter Styles"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/counter-set"
+      },
+      cursor: {
+        syntax: "[ [ <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 ] ]",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/cursor"
+      },
+      direction: {
+        syntax: "ltr | rtl",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "ltr",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/direction"
+      },
+      display: {
+        syntax: "[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>",
+        media: "all",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Display"
+        ],
+        initial: "inline",
+        appliesto: "allElements",
+        computed: "asSpecifiedExceptPositionedFloatingAndRootElementsKeywordMaybeDifferent",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/display"
+      },
+      "empty-cells": {
+        syntax: "show | hide",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "show",
+        appliesto: "tableCellElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/empty-cells"
+      },
+      filter: {
+        syntax: "none | <filter-function-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "filterList",
+        percentages: "no",
+        groups: [
+          "Filter Effects"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/filter"
+      },
+      flex: {
+        syntax: "none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "flex-grow",
+          "flex-shrink",
+          "flex-basis"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: [
+          "flex-grow",
+          "flex-shrink",
+          "flex-basis"
+        ],
+        appliesto: "flexItemsAndInFlowPseudos",
+        computed: [
+          "flex-grow",
+          "flex-shrink",
+          "flex-basis"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex"
+      },
+      "flex-basis": {
+        syntax: "content | <'width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToFlexContainersInnerMainSize",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "auto",
+        appliesto: "flexItemsAndInFlowPseudos",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "lengthOrPercentageBeforeKeywordIfBothPresent",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-basis"
+      },
+      "flex-direction": {
+        syntax: "row | row-reverse | column | column-reverse",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "row",
+        appliesto: "flexContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-direction"
+      },
+      "flex-flow": {
+        syntax: "<'flex-direction'> || <'flex-wrap'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: [
+          "flex-direction",
+          "flex-wrap"
+        ],
+        appliesto: "flexContainers",
+        computed: [
+          "flex-direction",
+          "flex-wrap"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-flow"
+      },
+      "flex-grow": {
+        syntax: "<number>",
+        media: "visual",
+        inherited: false,
+        animationType: "number",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "0",
+        appliesto: "flexItemsAndInFlowPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-grow"
+      },
+      "flex-shrink": {
+        syntax: "<number>",
+        media: "visual",
+        inherited: false,
+        animationType: "number",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "1",
+        appliesto: "flexItemsAndInFlowPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-shrink"
+      },
+      "flex-wrap": {
+        syntax: "nowrap | wrap | wrap-reverse",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "nowrap",
+        appliesto: "flexContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-wrap"
+      },
+      float: {
+        syntax: "left | right | none | inline-start | inline-end",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "none",
+        appliesto: "allElementsNoEffectIfDisplayNone",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/float"
+      },
+      font: {
+        syntax: "[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar",
+        media: "visual",
+        inherited: true,
+        animationType: [
+          "font-style",
+          "font-variant",
+          "font-weight",
+          "font-stretch",
+          "font-size",
+          "line-height",
+          "font-family"
+        ],
+        percentages: [
+          "font-size",
+          "line-height"
+        ],
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: [
+          "font-style",
+          "font-variant",
+          "font-weight",
+          "font-stretch",
+          "font-size",
+          "line-height",
+          "font-family"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "font-style",
+          "font-variant",
+          "font-weight",
+          "font-stretch",
+          "font-size",
+          "line-height",
+          "font-family"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font"
+      },
+      "font-family": {
+        syntax: "[ <family-name> | <generic-family> ]#",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "dependsOnUserAgent",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-family"
+      },
+      "font-feature-settings": {
+        syntax: "normal | <feature-tag-value>#",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-feature-settings"
+      },
+      "font-kerning": {
+        syntax: "auto | normal | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-kerning"
+      },
+      "font-language-override": {
+        syntax: "normal | <string>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-language-override"
+      },
+      "font-optical-sizing": {
+        syntax: "auto | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing"
+      },
+      "font-variation-settings": {
+        syntax: "normal | [ <string> <number> ]#",
+        media: "visual",
+        inherited: true,
+        animationType: "transform",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variation-settings"
+      },
+      "font-size": {
+        syntax: "<absolute-size> | <relative-size> | <length-percentage>",
+        media: "visual",
+        inherited: true,
+        animationType: "length",
+        percentages: "referToParentElementsFontSize",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-size"
+      },
+      "font-size-adjust": {
+        syntax: "none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]",
+        media: "visual",
+        inherited: true,
+        animationType: "number",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-size-adjust"
+      },
+      "font-smooth": {
+        syntax: "auto | never | always | <absolute-size> | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-smooth"
+      },
+      "font-stretch": {
+        syntax: "<font-stretch-absolute>",
+        media: "visual",
+        inherited: true,
+        animationType: "fontStretch",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-stretch"
+      },
+      "font-style": {
+        syntax: "normal | italic | oblique <angle>?",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-style"
+      },
+      "font-synthesis": {
+        syntax: "none | [ weight || style || small-caps ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "weight style",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-synthesis"
+      },
+      "font-variant": {
+        syntax: "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 ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant"
+      },
+      "font-variant-alternates": {
+        syntax: "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> ) ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates"
+      },
+      "font-variant-caps": {
+        syntax: "normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-caps"
+      },
+      "font-variant-east-asian": {
+        syntax: "normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian"
+      },
+      "font-variant-ligatures": {
+        syntax: "normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures"
+      },
+      "font-variant-numeric": {
+        syntax: "normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric"
+      },
+      "font-variant-position": {
+        syntax: "normal | sub | super",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-position"
+      },
+      "font-weight": {
+        syntax: "<font-weight-absolute> | bolder | lighter",
+        media: "visual",
+        inherited: true,
+        animationType: "fontWeight",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "keywordOrNumericalValueBolderLighterTransformedToRealValue",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-weight"
+      },
+      "forced-color-adjust": {
+        syntax: "auto | none",
+        media: "visual",
+        inherited: true,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "auto",
+        appliesto: "allElementsAndText",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/forced-color-adjust"
+      },
+      gap: {
+        syntax: "<'row-gap'> <'column-gap'>?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "row-gap",
+          "column-gap"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: [
+          "row-gap",
+          "column-gap"
+        ],
+        appliesto: "multiColumnElementsFlexContainersGridContainers",
+        computed: [
+          "row-gap",
+          "column-gap"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/gap"
+      },
+      grid: {
+        syntax: "<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: [
+          "grid-template-rows",
+          "grid-template-columns",
+          "grid-auto-rows",
+          "grid-auto-columns"
+        ],
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-template-rows",
+          "grid-template-columns",
+          "grid-template-areas",
+          "grid-auto-rows",
+          "grid-auto-columns",
+          "grid-auto-flow",
+          "grid-column-gap",
+          "grid-row-gap",
+          "column-gap",
+          "row-gap"
+        ],
+        appliesto: "gridContainers",
+        computed: [
+          "grid-template-rows",
+          "grid-template-columns",
+          "grid-template-areas",
+          "grid-auto-rows",
+          "grid-auto-columns",
+          "grid-auto-flow",
+          "grid-column-gap",
+          "grid-row-gap",
+          "column-gap",
+          "row-gap"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid"
+      },
+      "grid-area": {
+        syntax: "<grid-line> [ / <grid-line> ]{0,3}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-row-start",
+          "grid-column-start",
+          "grid-row-end",
+          "grid-column-end"
+        ],
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: [
+          "grid-row-start",
+          "grid-column-start",
+          "grid-row-end",
+          "grid-column-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-area"
+      },
+      "grid-auto-columns": {
+        syntax: "<track-size>+",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridContainers",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns"
+      },
+      "grid-auto-flow": {
+        syntax: "[ row | column ] || dense",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "row",
+        appliesto: "gridContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow"
+      },
+      "grid-auto-rows": {
+        syntax: "<track-size>+",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridContainers",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows"
+      },
+      "grid-column": {
+        syntax: "<grid-line> [ / <grid-line> ]?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-column-start",
+          "grid-column-end"
+        ],
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: [
+          "grid-column-start",
+          "grid-column-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-column"
+      },
+      "grid-column-end": {
+        syntax: "<grid-line>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-column-end"
+      },
+      "grid-column-gap": {
+        syntax: "<length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "0",
+        appliesto: "gridContainers",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-gap"
+      },
+      "grid-column-start": {
+        syntax: "<grid-line>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-column-start"
+      },
+      "grid-gap": {
+        syntax: "<'grid-row-gap'> <'grid-column-gap'>?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "grid-row-gap",
+          "grid-column-gap"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-row-gap",
+          "grid-column-gap"
+        ],
+        appliesto: "gridContainers",
+        computed: [
+          "grid-row-gap",
+          "grid-column-gap"
+        ],
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/gap"
+      },
+      "grid-row": {
+        syntax: "<grid-line> [ / <grid-line> ]?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-row-start",
+          "grid-row-end"
+        ],
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: [
+          "grid-row-start",
+          "grid-row-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-row"
+      },
+      "grid-row-end": {
+        syntax: "<grid-line>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-row-end"
+      },
+      "grid-row-gap": {
+        syntax: "<length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "0",
+        appliesto: "gridContainers",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/row-gap"
+      },
+      "grid-row-start": {
+        syntax: "<grid-line>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-row-start"
+      },
+      "grid-template": {
+        syntax: "none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: [
+          "grid-template-columns",
+          "grid-template-rows"
+        ],
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-template-columns",
+          "grid-template-rows",
+          "grid-template-areas"
+        ],
+        appliesto: "gridContainers",
+        computed: [
+          "grid-template-columns",
+          "grid-template-rows",
+          "grid-template-areas"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-template"
+      },
+      "grid-template-areas": {
+        syntax: "none | <string>+",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-template-areas"
+      },
+      "grid-template-columns": {
+        syntax: "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpcDifferenceLpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-template-columns"
+      },
+      "grid-template-rows": {
+        syntax: "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpcDifferenceLpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-template-rows"
+      },
+      "hanging-punctuation": {
+        syntax: "none | [ first || [ force-end | allow-end ] || last ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/hanging-punctuation"
+      },
+      height: {
+        syntax: "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "regardingHeightOfGeneratedBoxContainingBlockPercentagesRelativeToContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "allElementsButNonReplacedAndTableColumns",
+        computed: "percentageAutoOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/height"
+      },
+      "hyphenate-character": {
+        syntax: "auto | <string>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/hyphenate-character"
+      },
+      hyphens: {
+        syntax: "none | manual | auto",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "manual",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/hyphens"
+      },
+      "image-orientation": {
+        syntax: "from-image | <angle> | [ <angle>? flip ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "from-image",
+        appliesto: "allElements",
+        computed: "angleRoundedToNextQuarter",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/image-orientation"
+      },
+      "image-rendering": {
+        syntax: "auto | crisp-edges | pixelated",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/image-rendering"
+      },
+      "image-resolution": {
+        syntax: "[ from-image || <resolution> ] && snap?",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "1dppx",
+        appliesto: "allElements",
+        computed: "asSpecifiedWithExceptionOfResolution",
+        order: "uniqueOrder",
+        status: "experimental"
+      },
+      "ime-mode": {
+        syntax: "auto | normal | active | inactive | disabled",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "textFields",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/ime-mode"
+      },
+      "initial-letter": {
+        syntax: "normal | [ <number> <integer>? ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Inline"
+        ],
+        initial: "normal",
+        appliesto: "firstLetterPseudoElementsAndInlineLevelFirstChildren",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/initial-letter"
+      },
+      "initial-letter-align": {
+        syntax: "[ auto | alphabetic | hanging | ideographic ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Inline"
+        ],
+        initial: "auto",
+        appliesto: "firstLetterPseudoElementsAndInlineLevelFirstChildren",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/initial-letter-align"
+      },
+      "inline-size": {
+        syntax: "<'width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "inlineSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsWidthAndHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inline-size"
+      },
+      "input-security": {
+        syntax: "auto | none",
+        media: "interactive",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "sensitiveTextInputs",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard"
+      },
+      inset: {
+        syntax: "<'top'>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalHeightOrWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "top",
+          "bottom",
+          "left",
+          "right"
+        ],
+        appliesto: "positionedElements",
+        computed: [
+          "top",
+          "bottom",
+          "left",
+          "right"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset"
+      },
+      "inset-block": {
+        syntax: "<'top'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalHeightOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "inset-block-start",
+          "inset-block-end"
+        ],
+        appliesto: "positionedElements",
+        computed: [
+          "inset-block-start",
+          "inset-block-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-block"
+      },
+      "inset-block-end": {
+        syntax: "<'top'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalHeightOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-block-end"
+      },
+      "inset-block-start": {
+        syntax: "<'top'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalHeightOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-block-start"
+      },
+      "inset-inline": {
+        syntax: "<'top'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "inset-inline-start",
+          "inset-inline-end"
+        ],
+        appliesto: "positionedElements",
+        computed: [
+          "inset-inline-start",
+          "inset-inline-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-inline"
+      },
+      "inset-inline-end": {
+        syntax: "<'top'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-inline-end"
+      },
+      "inset-inline-start": {
+        syntax: "<'top'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-inline-start"
+      },
+      isolation: {
+        syntax: "auto | isolate",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Compositing and Blending"
+        ],
+        initial: "auto",
+        appliesto: "allElementsSVGContainerGraphicsAndGraphicsReferencingElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/isolation"
+      },
+      "justify-content": {
+        syntax: "normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "flexContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/justify-content"
+      },
+      "justify-items": {
+        syntax: "normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "legacy",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/justify-items"
+      },
+      "justify-self": {
+        syntax: "auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/justify-self"
+      },
+      "justify-tracks": {
+        syntax: "[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "normal",
+        appliesto: "gridContainersWithMasonryLayoutInTheirInlineAxis",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/justify-tracks"
+      },
+      left: {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/left"
+      },
+      "letter-spacing": {
+        syntax: "normal | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "optimumValueOfAbsoluteLengthOrNormal",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/letter-spacing"
+      },
+      "line-break": {
+        syntax: "auto | loose | normal | strict | anywhere",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/line-break"
+      },
+      "line-clamp": {
+        syntax: "none | <integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "none",
+        appliesto: "blockContainersExceptMultiColumnContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental"
+      },
+      "line-height": {
+        syntax: "normal | <number> | <length> | <percentage>",
+        media: "visual",
+        inherited: true,
+        animationType: "numberOrLength",
+        percentages: "referToElementFontSize",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrAsSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/line-height"
+      },
+      "line-height-step": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "0",
+        appliesto: "blockContainers",
+        computed: "absoluteLength",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/line-height-step"
+      },
+      "list-style": {
+        syntax: "<'list-style-type'> || <'list-style-position'> || <'list-style-image'>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Lists and Counters"
+        ],
+        initial: [
+          "list-style-type",
+          "list-style-position",
+          "list-style-image"
+        ],
+        appliesto: "listItems",
+        computed: [
+          "list-style-image",
+          "list-style-position",
+          "list-style-type"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/list-style"
+      },
+      "list-style-image": {
+        syntax: "<image> | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Lists and Counters"
+        ],
+        initial: "none",
+        appliesto: "listItems",
+        computed: "theKeywordListStyleImageNoneOrComputedValue",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/list-style-image"
+      },
+      "list-style-position": {
+        syntax: "inside | outside",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Lists and Counters"
+        ],
+        initial: "outside",
+        appliesto: "listItems",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/list-style-position"
+      },
+      "list-style-type": {
+        syntax: "<counter-style> | <string> | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Lists and Counters"
+        ],
+        initial: "disc",
+        appliesto: "listItems",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/list-style-type"
+      },
+      margin: {
+        syntax: "[ <length> | <percentage> | auto ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: [
+          "margin-bottom",
+          "margin-left",
+          "margin-right",
+          "margin-top"
+        ],
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: [
+          "margin-bottom",
+          "margin-left",
+          "margin-right",
+          "margin-top"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin"
+      },
+      "margin-block": {
+        syntax: "<'margin-left'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "margin-block-start",
+          "margin-block-end"
+        ],
+        appliesto: "sameAsMargin",
+        computed: [
+          "margin-block-start",
+          "margin-block-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-block"
+      },
+      "margin-block-end": {
+        syntax: "<'margin-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-block-end"
+      },
+      "margin-block-start": {
+        syntax: "<'margin-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-block-start"
+      },
+      "margin-bottom": {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-bottom"
+      },
+      "margin-inline": {
+        syntax: "<'margin-left'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "margin-inline-start",
+          "margin-inline-end"
+        ],
+        appliesto: "sameAsMargin",
+        computed: [
+          "margin-inline-start",
+          "margin-inline-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-inline"
+      },
+      "margin-inline-end": {
+        syntax: "<'margin-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-inline-end"
+      },
+      "margin-inline-start": {
+        syntax: "<'margin-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-inline-start"
+      },
+      "margin-left": {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-left"
+      },
+      "margin-right": {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-right"
+      },
+      "margin-top": {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-top"
+      },
+      "margin-trim": {
+        syntax: "none | in-flow | all",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "none",
+        appliesto: "blockContainersAndMultiColumnContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-trim"
+      },
+      mask: {
+        syntax: "<mask-layer>#",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "mask-image",
+          "mask-mode",
+          "mask-repeat",
+          "mask-position",
+          "mask-clip",
+          "mask-origin",
+          "mask-size",
+          "mask-composite"
+        ],
+        percentages: [
+          "mask-position"
+        ],
+        groups: [
+          "CSS Masking"
+        ],
+        initial: [
+          "mask-image",
+          "mask-mode",
+          "mask-repeat",
+          "mask-position",
+          "mask-clip",
+          "mask-origin",
+          "mask-size",
+          "mask-composite"
+        ],
+        appliesto: "allElementsSVGContainerElements",
+        computed: [
+          "mask-image",
+          "mask-mode",
+          "mask-repeat",
+          "mask-position",
+          "mask-clip",
+          "mask-origin",
+          "mask-size",
+          "mask-composite"
+        ],
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask"
+      },
+      "mask-border": {
+        syntax: "<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "mask-border-mode",
+          "mask-border-outset",
+          "mask-border-repeat",
+          "mask-border-slice",
+          "mask-border-source",
+          "mask-border-width"
+        ],
+        percentages: [
+          "mask-border-slice",
+          "mask-border-width"
+        ],
+        groups: [
+          "CSS Masking"
+        ],
+        initial: [
+          "mask-border-mode",
+          "mask-border-outset",
+          "mask-border-repeat",
+          "mask-border-slice",
+          "mask-border-source",
+          "mask-border-width"
+        ],
+        appliesto: "allElementsSVGContainerElements",
+        computed: [
+          "mask-border-mode",
+          "mask-border-outset",
+          "mask-border-repeat",
+          "mask-border-slice",
+          "mask-border-source",
+          "mask-border-width"
+        ],
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border"
+      },
+      "mask-border-mode": {
+        syntax: "luminance | alpha",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "alpha",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-mode"
+      },
+      "mask-border-outset": {
+        syntax: "[ <length> | <number> ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "0",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-outset"
+      },
+      "mask-border-repeat": {
+        syntax: "[ stretch | repeat | round | space ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "stretch",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat"
+      },
+      "mask-border-slice": {
+        syntax: "<number-percentage>{1,4} fill?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToSizeOfMaskBorderImage",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "0",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-slice"
+      },
+      "mask-border-source": {
+        syntax: "none | <image>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-source"
+      },
+      "mask-border-width": {
+        syntax: "[ <length-percentage> | <number> | auto ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "relativeToMaskBorderImageArea",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "auto",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-width"
+      },
+      "mask-clip": {
+        syntax: "[ <geometry-box> | no-clip ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "border-box",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-clip"
+      },
+      "mask-composite": {
+        syntax: "<compositing-operator>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "add",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-composite"
+      },
+      "mask-image": {
+        syntax: "<mask-reference>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-image"
+      },
+      "mask-mode": {
+        syntax: "<masking-mode>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "match-source",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-mode"
+      },
+      "mask-origin": {
+        syntax: "<geometry-box>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "border-box",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-origin"
+      },
+      "mask-position": {
+        syntax: "<position>#",
+        media: "visual",
+        inherited: false,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "referToSizeOfMaskPaintingArea",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "center",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "consistsOfTwoKeywordsForOriginAndOffsets",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-position"
+      },
+      "mask-repeat": {
+        syntax: "<repeat-style>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "repeat",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "consistsOfTwoDimensionKeywords",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-repeat"
+      },
+      "mask-size": {
+        syntax: "<bg-size>#",
+        media: "visual",
+        inherited: false,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "auto",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-size"
+      },
+      "mask-type": {
+        syntax: "luminance | alpha",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "luminance",
+        appliesto: "maskElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-type"
+      },
+      "masonry-auto-flow": {
+        syntax: "[ pack | next ] || [ definite-first | ordered ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "pack",
+        appliesto: "gridContainersWithMasonryLayout",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow"
+      },
+      "math-depth": {
+        syntax: "auto-add | add(<integer>) | <integer>",
+        media: "visual",
+        inherited: true,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "MathML"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/math-depth"
+      },
+      "math-shift": {
+        syntax: "normal | compact",
+        media: "visual",
+        inherited: true,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "MathML"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/math-shift"
+      },
+      "math-style": {
+        syntax: "normal | compact",
+        media: "visual",
+        inherited: true,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "MathML"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/math-style"
+      },
+      "max-block-size": {
+        syntax: "<'max-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "blockSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsMaxWidthAndMaxHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/max-block-size"
+      },
+      "max-height": {
+        syntax: "none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "regardingHeightOfGeneratedBoxContainingBlockPercentagesNone",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "none",
+        appliesto: "allElementsButNonReplacedAndTableColumns",
+        computed: "percentageAsSpecifiedAbsoluteLengthOrNone",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/max-height"
+      },
+      "max-inline-size": {
+        syntax: "<'max-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "inlineSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsMaxWidthAndMaxHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/max-inline-size"
+      },
+      "max-lines": {
+        syntax: "none | <integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "none",
+        appliesto: "blockContainersExceptMultiColumnContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental"
+      },
+      "max-width": {
+        syntax: "none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "none",
+        appliesto: "allElementsButNonReplacedAndTableRows",
+        computed: "percentageAsSpecifiedAbsoluteLengthOrNone",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/max-width"
+      },
+      "min-block-size": {
+        syntax: "<'min-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "blockSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsMinWidthAndMinHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/min-block-size"
+      },
+      "min-height": {
+        syntax: "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "regardingHeightOfGeneratedBoxContainingBlockPercentages0",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "allElementsButNonReplacedAndTableColumns",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/min-height"
+      },
+      "min-inline-size": {
+        syntax: "<'min-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "inlineSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsMinWidthAndMinHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/min-inline-size"
+      },
+      "min-width": {
+        syntax: "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "allElementsButNonReplacedAndTableRows",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/min-width"
+      },
+      "mix-blend-mode": {
+        syntax: "<blend-mode> | plus-lighter",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Compositing and Blending"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode"
+      },
+      "object-fit": {
+        syntax: "fill | contain | cover | none | scale-down",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "fill",
+        appliesto: "replacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/object-fit"
+      },
+      "object-position": {
+        syntax: "<position>",
+        media: "visual",
+        inherited: true,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "referToWidthAndHeightOfElement",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "50% 50%",
+        appliesto: "replacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/object-position"
+      },
+      offset: {
+        syntax: "[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "offset-position",
+          "offset-path",
+          "offset-distance",
+          "offset-anchor",
+          "offset-rotate"
+        ],
+        percentages: [
+          "offset-position",
+          "offset-distance",
+          "offset-anchor"
+        ],
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: [
+          "offset-position",
+          "offset-path",
+          "offset-distance",
+          "offset-anchor",
+          "offset-rotate"
+        ],
+        appliesto: "transformableElements",
+        computed: [
+          "offset-position",
+          "offset-path",
+          "offset-distance",
+          "offset-anchor",
+          "offset-rotate"
+        ],
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/offset"
+      },
+      "offset-anchor": {
+        syntax: "auto | <position>",
+        media: "visual",
+        inherited: false,
+        animationType: "position",
+        percentages: "relativeToWidthAndHeight",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "auto",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "offset-distance": {
+        syntax: "<length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToTotalPathLength",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "0",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/offset-distance"
+      },
+      "offset-path": {
+        syntax: "none | ray( [ <angle> && <size> && contain? ] ) | <path()> | <url> | [ <basic-shape> || <geometry-box> ]",
+        media: "visual",
+        inherited: false,
+        animationType: "angleOrBasicShapeOrPath",
+        percentages: "no",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/offset-path"
+      },
+      "offset-position": {
+        syntax: "auto | <position>",
+        media: "visual",
+        inherited: false,
+        animationType: "position",
+        percentages: "referToSizeOfContainingBlock",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "auto",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "perGrammar",
+        status: "experimental"
+      },
+      "offset-rotate": {
+        syntax: "[ auto | reverse ] || <angle>",
+        media: "visual",
+        inherited: false,
+        animationType: "angleOrBasicShapeOrPath",
+        percentages: "no",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "auto",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/offset-rotate"
+      },
+      opacity: {
+        syntax: "<alpha-value>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "mapToRange0To1",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "1",
+        appliesto: "allElements",
+        computed: "specifiedValueNumberClipped0To1",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/opacity"
+      },
+      order: {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "0",
+        appliesto: "flexItemsGridItemsAbsolutelyPositionedContainerChildren",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/order"
+      },
+      orphans: {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "2",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/orphans"
+      },
+      outline: {
+        syntax: "[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: [
+          "outline-color",
+          "outline-width",
+          "outline-style"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: [
+          "outline-color",
+          "outline-style",
+          "outline-width"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "outline-color",
+          "outline-width",
+          "outline-style"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline"
+      },
+      "outline-color": {
+        syntax: "<color> | invert",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "invertOrCurrentColor",
+        appliesto: "allElements",
+        computed: "invertForTranslucentColorRGBAOtherwiseRGB",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline-color"
+      },
+      "outline-offset": {
+        syntax: "<length>",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline-offset"
+      },
+      "outline-style": {
+        syntax: "auto | <'border-style'>",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline-style"
+      },
+      "outline-width": {
+        syntax: "<line-width>",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLength0ForNone",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline-width"
+      },
+      overflow: {
+        syntax: "[ visible | hidden | clip | scroll | auto ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "visible",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: [
+          "overflow-x",
+          "overflow-y"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow"
+      },
+      "overflow-anchor": {
+        syntax: "auto | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Anchoring"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "overflow-block": {
+        syntax: "visible | hidden | clip | scroll | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "auto",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "overflow-clip-box": {
+        syntax: "padding-box | content-box",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "padding-box",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Mozilla/CSS/overflow-clip-box"
+      },
+      "overflow-clip-margin": {
+        syntax: "<visual-box> || <length [0,\u221E]>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "0px",
+        appliesto: "allElements",
+        computed: "theComputedLength",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "overflow-inline": {
+        syntax: "visible | hidden | clip | scroll | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "auto",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "overflow-wrap": {
+        syntax: "normal | break-word | anywhere",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "nonReplacedInlineElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow-wrap"
+      },
+      "overflow-x": {
+        syntax: "visible | hidden | clip | scroll | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "visible",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow-x"
+      },
+      "overflow-y": {
+        syntax: "visible | hidden | clip | scroll | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "visible",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow-y"
+      },
+      "overscroll-behavior": {
+        syntax: "[ contain | none | auto ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "overscroll-behavior-x",
+          "overscroll-behavior-y"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior"
+      },
+      "overscroll-behavior-block": {
+        syntax: "contain | none | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block"
+      },
+      "overscroll-behavior-inline": {
+        syntax: "contain | none | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline"
+      },
+      "overscroll-behavior-x": {
+        syntax: "contain | none | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x"
+      },
+      "overscroll-behavior-y": {
+        syntax: "contain | none | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y"
+      },
+      padding: {
+        syntax: "[ <length> | <percentage> ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: [
+          "padding-bottom",
+          "padding-left",
+          "padding-right",
+          "padding-top"
+        ],
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: [
+          "padding-bottom",
+          "padding-left",
+          "padding-right",
+          "padding-top"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding"
+      },
+      "padding-block": {
+        syntax: "<'padding-left'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "padding-block-start",
+          "padding-block-end"
+        ],
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: [
+          "padding-block-start",
+          "padding-block-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-block"
+      },
+      "padding-block-end": {
+        syntax: "<'padding-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-block-end"
+      },
+      "padding-block-start": {
+        syntax: "<'padding-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-block-start"
+      },
+      "padding-bottom": {
+        syntax: "<length> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-bottom"
+      },
+      "padding-inline": {
+        syntax: "<'padding-left'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "padding-inline-start",
+          "padding-inline-end"
+        ],
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: [
+          "padding-inline-start",
+          "padding-inline-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-inline"
+      },
+      "padding-inline-end": {
+        syntax: "<'padding-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-inline-end"
+      },
+      "padding-inline-start": {
+        syntax: "<'padding-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-inline-start"
+      },
+      "padding-left": {
+        syntax: "<length> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-left"
+      },
+      "padding-right": {
+        syntax: "<length> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-right"
+      },
+      "padding-top": {
+        syntax: "<length> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-top"
+      },
+      "page-break-after": {
+        syntax: "auto | always | avoid | left | right | recto | verso",
+        media: [
+          "visual",
+          "paged"
+        ],
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Pages"
+        ],
+        initial: "auto",
+        appliesto: "blockElementsInNormalFlow",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/page-break-after"
+      },
+      "page-break-before": {
+        syntax: "auto | always | avoid | left | right | recto | verso",
+        media: [
+          "visual",
+          "paged"
+        ],
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Pages"
+        ],
+        initial: "auto",
+        appliesto: "blockElementsInNormalFlow",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/page-break-before"
+      },
+      "page-break-inside": {
+        syntax: "auto | avoid",
+        media: [
+          "visual",
+          "paged"
+        ],
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Pages"
+        ],
+        initial: "auto",
+        appliesto: "blockElementsInNormalFlow",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/page-break-inside"
+      },
+      "paint-order": {
+        syntax: "normal | [ fill || stroke || markers ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "textElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/paint-order"
+      },
+      perspective: {
+        syntax: "none | <length>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "absoluteLengthOrNone",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/perspective"
+      },
+      "perspective-origin": {
+        syntax: "<position>",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpc",
+        percentages: "referToSizeOfBoundingBox",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "50% 50%",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "oneOrTwoValuesLengthAbsoluteKeywordsPercentages",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/perspective-origin"
+      },
+      "place-content": {
+        syntax: "<'align-content'> <'justify-content'>?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: [
+          "align-content",
+          "justify-content"
+        ],
+        appliesto: "multilineFlexContainers",
+        computed: [
+          "align-content",
+          "justify-content"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/place-content"
+      },
+      "place-items": {
+        syntax: "<'align-items'> <'justify-items'>?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: [
+          "align-items",
+          "justify-items"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "align-items",
+          "justify-items"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/place-items"
+      },
+      "place-self": {
+        syntax: "<'align-self'> <'justify-self'>?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: [
+          "align-self",
+          "justify-self"
+        ],
+        appliesto: "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems",
+        computed: [
+          "align-self",
+          "justify-self"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/place-self"
+      },
+      "pointer-events": {
+        syntax: "auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/pointer-events"
+      },
+      position: {
+        syntax: "static | relative | absolute | sticky | fixed",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "static",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/position"
+      },
+      quotes: {
+        syntax: "none | auto | [ <string> <string> ]+",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Generated Content"
+        ],
+        initial: "dependsOnUserAgent",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/quotes"
+      },
+      resize: {
+        syntax: "none | both | horizontal | vertical | block | inline",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "none",
+        appliesto: "elementsWithOverflowNotVisibleAndReplacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/resize"
+      },
+      right: {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/right"
+      },
+      rotate: {
+        syntax: "none | <angle> | [ x | y | z | <number>{3} ] && <angle>",
+        media: "visual",
+        inherited: false,
+        animationType: "transform",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/rotate"
+      },
+      "row-gap": {
+        syntax: "normal | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "multiColumnElementsFlexContainersGridContainers",
+        computed: "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/row-gap"
+      },
+      "ruby-align": {
+        syntax: "start | center | space-between | space-around",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Ruby"
+        ],
+        initial: "space-around",
+        appliesto: "rubyBasesAnnotationsBaseAnnotationContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/ruby-align"
+      },
+      "ruby-merge": {
+        syntax: "separate | collapse | auto",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Ruby"
+        ],
+        initial: "separate",
+        appliesto: "rubyAnnotationsContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental"
+      },
+      "ruby-position": {
+        syntax: "[ alternate || [ over | under ] ] | inter-character",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Ruby"
+        ],
+        initial: "alternate",
+        appliesto: "rubyAnnotationsContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/ruby-position"
+      },
+      scale: {
+        syntax: "none | <number>{1,3}",
+        media: "visual",
+        inherited: false,
+        animationType: "transform",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scale"
+      },
+      "scrollbar-color": {
+        syntax: "auto | <color>{2}",
+        media: "visual",
+        inherited: true,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Scrollbars"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scrollbar-color"
+      },
+      "scrollbar-gutter": {
+        syntax: "auto | stable && both-edges?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scrollbar-gutter"
+      },
+      "scrollbar-width": {
+        syntax: "auto | thin | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scrollbars"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scrollbar-width"
+      },
+      "scroll-behavior": {
+        syntax: "auto | smooth",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSSOM View"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-behavior"
+      },
+      "scroll-margin": {
+        syntax: "<length>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: [
+          "scroll-margin-bottom",
+          "scroll-margin-left",
+          "scroll-margin-right",
+          "scroll-margin-top"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "scroll-margin-bottom",
+          "scroll-margin-left",
+          "scroll-margin-right",
+          "scroll-margin-top"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin"
+      },
+      "scroll-margin-block": {
+        syntax: "<length>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: [
+          "scroll-margin-block-start",
+          "scroll-margin-block-end"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "scroll-margin-block-start",
+          "scroll-margin-block-end"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block"
+      },
+      "scroll-margin-block-start": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start"
+      },
+      "scroll-margin-block-end": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end"
+      },
+      "scroll-margin-bottom": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom"
+      },
+      "scroll-margin-inline": {
+        syntax: "<length>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: [
+          "scroll-margin-inline-start",
+          "scroll-margin-inline-end"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "scroll-margin-inline-start",
+          "scroll-margin-inline-end"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline"
+      },
+      "scroll-margin-inline-start": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start"
+      },
+      "scroll-margin-inline-end": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end"
+      },
+      "scroll-margin-left": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left"
+      },
+      "scroll-margin-right": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right"
+      },
+      "scroll-margin-top": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top"
+      },
+      "scroll-padding": {
+        syntax: "[ auto | <length-percentage> ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: [
+          "scroll-padding-bottom",
+          "scroll-padding-left",
+          "scroll-padding-right",
+          "scroll-padding-top"
+        ],
+        appliesto: "scrollContainers",
+        computed: [
+          "scroll-padding-bottom",
+          "scroll-padding-left",
+          "scroll-padding-right",
+          "scroll-padding-top"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding"
+      },
+      "scroll-padding-block": {
+        syntax: "[ auto | <length-percentage> ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: [
+          "scroll-padding-block-start",
+          "scroll-padding-block-end"
+        ],
+        appliesto: "scrollContainers",
+        computed: [
+          "scroll-padding-block-start",
+          "scroll-padding-block-end"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block"
+      },
+      "scroll-padding-block-start": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start"
+      },
+      "scroll-padding-block-end": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end"
+      },
+      "scroll-padding-bottom": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom"
+      },
+      "scroll-padding-inline": {
+        syntax: "[ auto | <length-percentage> ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: [
+          "scroll-padding-inline-start",
+          "scroll-padding-inline-end"
+        ],
+        appliesto: "scrollContainers",
+        computed: [
+          "scroll-padding-inline-start",
+          "scroll-padding-inline-end"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline"
+      },
+      "scroll-padding-inline-start": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start"
+      },
+      "scroll-padding-inline-end": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end"
+      },
+      "scroll-padding-left": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left"
+      },
+      "scroll-padding-right": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right"
+      },
+      "scroll-padding-top": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top"
+      },
+      "scroll-snap-align": {
+        syntax: "[ none | start | end | center ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align"
+      },
+      "scroll-snap-coordinate": {
+        syntax: "none | <position>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "position",
+        percentages: "referToBorderBox",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-coordinate"
+      },
+      "scroll-snap-destination": {
+        syntax: "<position>",
+        media: "interactive",
+        inherited: false,
+        animationType: "position",
+        percentages: "relativeToScrollContainerPaddingBoxAxis",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0px 0px",
+        appliesto: "scrollContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-destination"
+      },
+      "scroll-snap-points-x": {
+        syntax: "none | repeat( <length-percentage> )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "relativeToScrollContainerPaddingBoxAxis",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "scrollContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-x"
+      },
+      "scroll-snap-points-y": {
+        syntax: "none | repeat( <length-percentage> )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "relativeToScrollContainerPaddingBoxAxis",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "scrollContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-y"
+      },
+      "scroll-snap-stop": {
+        syntax: "normal | always",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop"
+      },
+      "scroll-snap-type": {
+        syntax: "none | [ x | y | block | inline | both ] [ mandatory | proximity ]?",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type"
+      },
+      "scroll-snap-type-x": {
+        syntax: "none | mandatory | proximity",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-x"
+      },
+      "scroll-snap-type-y": {
+        syntax: "none | mandatory | proximity",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-y"
+      },
+      "scroll-timeline": {
+        syntax: "<scroll-timeline-name> || <scroll-timeline-axis>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "scroll-timeline-name",
+          "scroll-timeline-axis"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: [
+          "scroll-timeline-name",
+          "scroll-timeline-axis"
+        ],
+        appliesto: "scrollContainers",
+        computed: [
+          "scroll-timeline-name",
+          "scroll-timeline-axis"
+        ],
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-timeline"
+      },
+      "scroll-timeline-axis": {
+        syntax: "block | inline | vertical | horizontal",
+        media: "interactive",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "block",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-axis"
+      },
+      "scroll-timeline-name": {
+        syntax: "none | <custom-ident>",
+        media: "interactive",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "none",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-name"
+      },
+      "shape-image-threshold": {
+        syntax: "<alpha-value>",
+        media: "visual",
+        inherited: false,
+        animationType: "number",
+        percentages: "no",
+        groups: [
+          "CSS Shapes"
+        ],
+        initial: "0.0",
+        appliesto: "floats",
+        computed: "specifiedValueNumberClipped0To1",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold"
+      },
+      "shape-margin": {
+        syntax: "<length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Shapes"
+        ],
+        initial: "0",
+        appliesto: "floats",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/shape-margin"
+      },
+      "shape-outside": {
+        syntax: "none | [ <shape-box> || <basic-shape> ] | <image>",
+        media: "visual",
+        inherited: false,
+        animationType: "basicShapeOtherwiseNo",
+        percentages: "no",
+        groups: [
+          "CSS Shapes"
+        ],
+        initial: "none",
+        appliesto: "floats",
+        computed: "asDefinedForBasicShapeWithAbsoluteURIOtherwiseAsSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/shape-outside"
+      },
+      "tab-size": {
+        syntax: "<integer> | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "8",
+        appliesto: "blockContainers",
+        computed: "specifiedIntegerOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/tab-size"
+      },
+      "table-layout": {
+        syntax: "auto | fixed",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "auto",
+        appliesto: "tableElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/table-layout"
+      },
+      "text-align": {
+        syntax: "start | end | left | right | center | justify | match-parent",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "startOrNamelessValueIfLTRRightIfRTL",
+        appliesto: "blockContainers",
+        computed: "asSpecifiedExceptMatchParent",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-align"
+      },
+      "text-align-last": {
+        syntax: "auto | start | end | left | right | center | justify",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "auto",
+        appliesto: "blockContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-align-last"
+      },
+      "text-combine-upright": {
+        syntax: "none | all | [ digits <integer>? ]",
+        media: "visual",
+        inherited: true,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedInlineElements",
+        computed: "keywordPlusIntegerIfDigits",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-combine-upright"
+      },
+      "text-decoration": {
+        syntax: "<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "text-decoration-color",
+          "text-decoration-style",
+          "text-decoration-line",
+          "text-decoration-thickness"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: [
+          "text-decoration-color",
+          "text-decoration-style",
+          "text-decoration-line"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "text-decoration-line",
+          "text-decoration-style",
+          "text-decoration-color",
+          "text-decoration-thickness"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration"
+      },
+      "text-decoration-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-color"
+      },
+      "text-decoration-line": {
+        syntax: "none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-line"
+      },
+      "text-decoration-skip": {
+        syntax: "none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "objects",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip"
+      },
+      "text-decoration-skip-ink": {
+        syntax: "auto | all | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink"
+      },
+      "text-decoration-style": {
+        syntax: "solid | double | dotted | dashed | wavy",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "solid",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-style"
+      },
+      "text-decoration-thickness": {
+        syntax: "auto | from-font | <length> | <percentage> ",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "referToElementFontSize",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness"
+      },
+      "text-emphasis": {
+        syntax: "<'text-emphasis-style'> || <'text-emphasis-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "text-emphasis-color",
+          "text-emphasis-style"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: [
+          "text-emphasis-style",
+          "text-emphasis-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "text-emphasis-style",
+          "text-emphasis-color"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-emphasis"
+      },
+      "text-emphasis-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color"
+      },
+      "text-emphasis-position": {
+        syntax: "[ over | under ] && [ right | left ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "over right",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position"
+      },
+      "text-emphasis-style": {
+        syntax: "none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style"
+      },
+      "text-indent": {
+        syntax: "<length-percentage> && hanging? && each-line?",
+        media: "visual",
+        inherited: true,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "0",
+        appliesto: "blockContainers",
+        computed: "percentageOrAbsoluteLengthPlusKeywords",
+        order: "lengthOrPercentageBeforeKeywords",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-indent"
+      },
+      "text-justify": {
+        syntax: "auto | inter-character | inter-word | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "auto",
+        appliesto: "inlineLevelAndTableCellElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-justify"
+      },
+      "text-orientation": {
+        syntax: "mixed | upright | sideways",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "mixed",
+        appliesto: "allElementsExceptTableRowGroupsRowsColumnGroupsAndColumns",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-orientation"
+      },
+      "text-overflow": {
+        syntax: "[ clip | ellipsis | <string> ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "clip",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-overflow"
+      },
+      "text-rendering": {
+        syntax: "auto | optimizeSpeed | optimizeLegibility | geometricPrecision",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Miscellaneous"
+        ],
+        initial: "auto",
+        appliesto: "textElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-rendering"
+      },
+      "text-shadow": {
+        syntax: "none | <shadow-t>#",
+        media: "visual",
+        inherited: true,
+        animationType: "shadowList",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "colorPlusThreeAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-shadow"
+      },
+      "text-size-adjust": {
+        syntax: "none | auto | <percentage>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "referToSizeOfFont",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "autoForSmartphoneBrowsersSupportingInflation",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-size-adjust"
+      },
+      "text-transform": {
+        syntax: "none | capitalize | uppercase | lowercase | full-width | full-size-kana",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-transform"
+      },
+      "text-underline-offset": {
+        syntax: "auto | <length> | <percentage> ",
+        media: "visual",
+        inherited: true,
+        animationType: "byComputedValueType",
+        percentages: "referToElementFontSize",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-underline-offset"
+      },
+      "text-underline-position": {
+        syntax: "auto | from-font | [ under || [ left | right ] ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-underline-position"
+      },
+      top: {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToContainingBlockHeight",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/top"
+      },
+      "touch-action": {
+        syntax: "auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Pointer Events"
+        ],
+        initial: "auto",
+        appliesto: "allElementsExceptNonReplacedInlineElementsTableRowsColumnsRowColumnGroups",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/touch-action"
+      },
+      transform: {
+        syntax: "none | <transform-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "transform",
+        percentages: "referToSizeOfBoundingBox",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transform"
+      },
+      "transform-box": {
+        syntax: "content-box | border-box | fill-box | stroke-box | view-box",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "view-box",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transform-box"
+      },
+      "transform-origin": {
+        syntax: "[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpc",
+        percentages: "referToSizeOfBoundingBox",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "50% 50% 0",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "oneOrTwoValuesLengthAbsoluteKeywordsPercentages",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transform-origin"
+      },
+      "transform-style": {
+        syntax: "flat | preserve-3d",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "flat",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transform-style"
+      },
+      transition: {
+        syntax: "<single-transition>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: [
+          "transition-delay",
+          "transition-duration",
+          "transition-property",
+          "transition-timing-function"
+        ],
+        appliesto: "allElementsAndPseudos",
+        computed: [
+          "transition-delay",
+          "transition-duration",
+          "transition-property",
+          "transition-timing-function"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition"
+      },
+      "transition-delay": {
+        syntax: "<time>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: "0s",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition-delay"
+      },
+      "transition-duration": {
+        syntax: "<time>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: "0s",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition-duration"
+      },
+      "transition-property": {
+        syntax: "none | <single-transition-property>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: "all",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition-property"
+      },
+      "transition-timing-function": {
+        syntax: "<easing-function>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: "ease",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition-timing-function"
+      },
+      translate: {
+        syntax: "none | <length-percentage> [ <length-percentage> <length>? ]?",
+        media: "visual",
+        inherited: false,
+        animationType: "transform",
+        percentages: "referToSizeOfBoundingBox",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/translate"
+      },
+      "unicode-bidi": {
+        syntax: "normal | embed | isolate | bidi-override | isolate-override | plaintext",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "normal",
+        appliesto: "allElementsSomeValuesNoEffectOnNonInlineElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/unicode-bidi"
+      },
+      "user-select": {
+        syntax: "auto | text | none | contain | all",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/user-select"
+      },
+      "vertical-align": {
+        syntax: "baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToLineHeight",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "baseline",
+        appliesto: "inlineLevelAndTableCellElements",
+        computed: "absoluteLengthOrKeyword",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/vertical-align"
+      },
+      visibility: {
+        syntax: "visible | hidden | collapse",
+        media: "visual",
+        inherited: true,
+        animationType: "visibility",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "visible",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/visibility"
+      },
+      "white-space": {
+        syntax: "normal | pre | nowrap | pre-wrap | pre-line | break-spaces",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/white-space"
+      },
+      widows: {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "2",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/widows"
+      },
+      width: {
+        syntax: "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "allElementsButNonReplacedAndTableRows",
+        computed: "percentageAutoOrAbsoluteLength",
+        order: "lengthOrPercentageBeforeKeywordIfBothPresent",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/width"
+      },
+      "will-change": {
+        syntax: "auto | <animateable-feature>#",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Will Change"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/will-change"
+      },
+      "word-break": {
+        syntax: "normal | break-all | keep-all | break-word",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/word-break"
+      },
+      "word-spacing": {
+        syntax: "normal | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "length",
+        percentages: "referToWidthOfAffectedGlyph",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "absoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/word-spacing"
+      },
+      "word-wrap": {
+        syntax: "normal | break-word",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "nonReplacedInlineElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow-wrap"
+      },
+      "writing-mode": {
+        syntax: "horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "horizontal-tb",
+        appliesto: "allElementsExceptTableRowColumnGroupsTableRowsColumns",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/writing-mode"
+      },
+      "z-index": {
+        syntax: "auto | <integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/z-index"
+      },
+      zoom: {
+        syntax: "normal | reset | <number> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/zoom"
+      }
+    };
+  }
+});
+
+// node_modules/mdn-data/css/syntaxes.json
+var require_syntaxes = __commonJS({
+  "node_modules/mdn-data/css/syntaxes.json"(exports2, module2) {
+    module2.exports = {
+      "abs()": {
+        syntax: "abs( <calc-sum> )"
+      },
+      "absolute-size": {
+        syntax: "xx-small | x-small | small | medium | large | x-large | xx-large | xxx-large"
+      },
+      "acos()": {
+        syntax: "acos( <calc-sum> )"
+      },
+      "alpha-value": {
+        syntax: "<number> | <percentage>"
+      },
+      "angle-percentage": {
+        syntax: "<angle> | <percentage>"
+      },
+      "angular-color-hint": {
+        syntax: "<angle-percentage>"
+      },
+      "angular-color-stop": {
+        syntax: "<color> && <color-stop-angle>?"
+      },
+      "angular-color-stop-list": {
+        syntax: "[ <angular-color-stop> [, <angular-color-hint>]? ]# , <angular-color-stop>"
+      },
+      "animateable-feature": {
+        syntax: "scroll-position | contents | <custom-ident>"
+      },
+      "asin()": {
+        syntax: "asin( <calc-sum> )"
+      },
+      "atan()": {
+        syntax: "atan( <calc-sum> )"
+      },
+      "atan2()": {
+        syntax: "atan2( <calc-sum>, <calc-sum> )"
+      },
+      attachment: {
+        syntax: "scroll | fixed | local"
+      },
+      "attr()": {
+        syntax: "attr( <attr-name> <type-or-unit>? [, <attr-fallback> ]? )"
+      },
+      "attr-matcher": {
+        syntax: "[ '~' | '|' | '^' | '$' | '*' ]? '='"
+      },
+      "attr-modifier": {
+        syntax: "i | s"
+      },
+      "attribute-selector": {
+        syntax: "'[' <wq-name> ']' | '[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']'"
+      },
+      "auto-repeat": {
+        syntax: "repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )"
+      },
+      "auto-track-list": {
+        syntax: "[ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>? <auto-repeat>\n[ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?"
+      },
+      axis: {
+        syntax: "block | inline | vertical | horizontal"
+      },
+      "baseline-position": {
+        syntax: "[ first | last ]? baseline"
+      },
+      "basic-shape": {
+        syntax: "<inset()> | <circle()> | <ellipse()> | <polygon()> | <path()>"
+      },
+      "bg-image": {
+        syntax: "none | <image>"
+      },
+      "bg-layer": {
+        syntax: "<bg-image> || <bg-position> [ / <bg-size> ]? || <repeat-style> || <attachment> || <box> || <box>"
+      },
+      "bg-position": {
+        syntax: "[ [ 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": {
+        syntax: "[ <length-percentage> | auto ]{1,2} | cover | contain"
+      },
+      "blur()": {
+        syntax: "blur( <length> )"
+      },
+      "blend-mode": {
+        syntax: "normal | multiply | screen | overlay | darken | lighten | color-dodge | color-burn | hard-light | soft-light | difference | exclusion | hue | saturation | color | luminosity"
+      },
+      box: {
+        syntax: "border-box | padding-box | content-box"
+      },
+      "brightness()": {
+        syntax: "brightness( <number-percentage> )"
+      },
+      "calc()": {
+        syntax: "calc( <calc-sum> )"
+      },
+      "calc-sum": {
+        syntax: "<calc-product> [ [ '+' | '-' ] <calc-product> ]*"
+      },
+      "calc-product": {
+        syntax: "<calc-value> [ '*' <calc-value> | '/' <number> ]*"
+      },
+      "calc-value": {
+        syntax: "<number> | <dimension> | <percentage> | <calc-constant> | ( <calc-sum> )"
+      },
+      "calc-constant": {
+        syntax: "e | pi | infinity | -infinity | NaN"
+      },
+      "cf-final-image": {
+        syntax: "<image> | <color>"
+      },
+      "cf-mixing-image": {
+        syntax: "<percentage>? && <image>"
+      },
+      "circle()": {
+        syntax: "circle( [ <shape-radius> ]? [ at <position> ]? )"
+      },
+      "clamp()": {
+        syntax: "clamp( <calc-sum>#{3} )"
+      },
+      "class-selector": {
+        syntax: "'.' <ident-token>"
+      },
+      "clip-source": {
+        syntax: "<url>"
+      },
+      color: {
+        syntax: "<rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <hex-color> | <named-color> | currentcolor | <deprecated-system-color>"
+      },
+      "color-stop": {
+        syntax: "<color-stop-length> | <color-stop-angle>"
+      },
+      "color-stop-angle": {
+        syntax: "<angle-percentage>{1,2}"
+      },
+      "color-stop-length": {
+        syntax: "<length-percentage>{1,2}"
+      },
+      "color-stop-list": {
+        syntax: "[ <linear-color-stop> [, <linear-color-hint>]? ]# , <linear-color-stop>"
+      },
+      combinator: {
+        syntax: "'>' | '+' | '~' | [ '||' ]"
+      },
+      "common-lig-values": {
+        syntax: "[ common-ligatures | no-common-ligatures ]"
+      },
+      "compat-auto": {
+        syntax: "searchfield | textarea | push-button | slider-horizontal | checkbox | radio | square-button | menulist | listbox | meter | progress-bar | button"
+      },
+      "composite-style": {
+        syntax: "clear | copy | source-over | source-in | source-out | source-atop | destination-over | destination-in | destination-out | destination-atop | xor"
+      },
+      "compositing-operator": {
+        syntax: "add | subtract | intersect | exclude"
+      },
+      "compound-selector": {
+        syntax: "[ <type-selector>? <subclass-selector>* [ <pseudo-element-selector> <pseudo-class-selector>* ]* ]!"
+      },
+      "compound-selector-list": {
+        syntax: "<compound-selector>#"
+      },
+      "complex-selector": {
+        syntax: "<compound-selector> [ <combinator>? <compound-selector> ]*"
+      },
+      "complex-selector-list": {
+        syntax: "<complex-selector>#"
+      },
+      "conic-gradient()": {
+        syntax: "conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )"
+      },
+      "contextual-alt-values": {
+        syntax: "[ contextual | no-contextual ]"
+      },
+      "content-distribution": {
+        syntax: "space-between | space-around | space-evenly | stretch"
+      },
+      "content-list": {
+        syntax: "[ <string> | contents | <image> | <counter> | <quote> | <target> | <leader()> ]+"
+      },
+      "content-position": {
+        syntax: "center | start | end | flex-start | flex-end"
+      },
+      "content-replacement": {
+        syntax: "<image>"
+      },
+      "contrast()": {
+        syntax: "contrast( [ <number-percentage> ] )"
+      },
+      "cos()": {
+        syntax: "cos( <calc-sum> )"
+      },
+      counter: {
+        syntax: "<counter()> | <counters()>"
+      },
+      "counter()": {
+        syntax: "counter( <counter-name>, <counter-style>? )"
+      },
+      "counter-name": {
+        syntax: "<custom-ident>"
+      },
+      "counter-style": {
+        syntax: "<counter-style-name> | symbols()"
+      },
+      "counter-style-name": {
+        syntax: "<custom-ident>"
+      },
+      "counters()": {
+        syntax: "counters( <counter-name>, <string>, <counter-style>? )"
+      },
+      "cross-fade()": {
+        syntax: "cross-fade( <cf-mixing-image> , <cf-final-image>? )"
+      },
+      "cubic-bezier-timing-function": {
+        syntax: "ease | ease-in | ease-out | ease-in-out | cubic-bezier(<number [0,1]>, <number>, <number [0,1]>, <number>)"
+      },
+      "deprecated-system-color": {
+        syntax: "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": {
+        syntax: "[ discretionary-ligatures | no-discretionary-ligatures ]"
+      },
+      "display-box": {
+        syntax: "contents | none"
+      },
+      "display-inside": {
+        syntax: "flow | flow-root | table | flex | grid | ruby"
+      },
+      "display-internal": {
+        syntax: "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": {
+        syntax: "inline-block | inline-list-item | inline-table | inline-flex | inline-grid"
+      },
+      "display-listitem": {
+        syntax: "<display-outside>? && [ flow | flow-root ]? && list-item"
+      },
+      "display-outside": {
+        syntax: "block | inline | run-in"
+      },
+      "drop-shadow()": {
+        syntax: "drop-shadow( <length>{2,3} <color>? )"
+      },
+      "east-asian-variant-values": {
+        syntax: "[ jis78 | jis83 | jis90 | jis04 | simplified | traditional ]"
+      },
+      "east-asian-width-values": {
+        syntax: "[ full-width | proportional-width ]"
+      },
+      "element()": {
+        syntax: "element( <id-selector> )"
+      },
+      "ellipse()": {
+        syntax: "ellipse( [ <shape-radius>{2} ]? [ at <position> ]? )"
+      },
+      "ending-shape": {
+        syntax: "circle | ellipse"
+      },
+      "env()": {
+        syntax: "env( <custom-ident> , <declaration-value>? )"
+      },
+      "exp()": {
+        syntax: "exp( <calc-sum> )"
+      },
+      "explicit-track-list": {
+        syntax: "[ <line-names>? <track-size> ]+ <line-names>?"
+      },
+      "family-name": {
+        syntax: "<string> | <custom-ident>+"
+      },
+      "feature-tag-value": {
+        syntax: "<string> [ <integer> | on | off ]?"
+      },
+      "feature-type": {
+        syntax: "@stylistic | @historical-forms | @styleset | @character-variant | @swash | @ornaments | @annotation"
+      },
+      "feature-value-block": {
+        syntax: "<feature-type> '{' <feature-value-declaration-list> '}'"
+      },
+      "feature-value-block-list": {
+        syntax: "<feature-value-block>+"
+      },
+      "feature-value-declaration": {
+        syntax: "<custom-ident>: <integer>+;"
+      },
+      "feature-value-declaration-list": {
+        syntax: "<feature-value-declaration>"
+      },
+      "feature-value-name": {
+        syntax: "<custom-ident>"
+      },
+      "fill-rule": {
+        syntax: "nonzero | evenodd"
+      },
+      "filter-function": {
+        syntax: "<blur()> | <brightness()> | <contrast()> | <drop-shadow()> | <grayscale()> | <hue-rotate()> | <invert()> | <opacity()> | <saturate()> | <sepia()>"
+      },
+      "filter-function-list": {
+        syntax: "[ <filter-function> | <url> ]+"
+      },
+      "final-bg-layer": {
+        syntax: "<'background-color'> || <bg-image> || <bg-position> [ / <bg-size> ]? || <repeat-style> || <attachment> || <box> || <box>"
+      },
+      "fixed-breadth": {
+        syntax: "<length-percentage>"
+      },
+      "fixed-repeat": {
+        syntax: "repeat( [ <integer [1,\u221E]> ] , [ <line-names>? <fixed-size> ]+ <line-names>? )"
+      },
+      "fixed-size": {
+        syntax: "<fixed-breadth> | minmax( <fixed-breadth> , <track-breadth> ) | minmax( <inflexible-breadth> , <fixed-breadth> )"
+      },
+      "font-stretch-absolute": {
+        syntax: "normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | <percentage>"
+      },
+      "font-variant-css21": {
+        syntax: "[ normal | small-caps ]"
+      },
+      "font-weight-absolute": {
+        syntax: "normal | bold | <number [1,1000]>"
+      },
+      "frequency-percentage": {
+        syntax: "<frequency> | <percentage>"
+      },
+      "general-enclosed": {
+        syntax: "[ <function-token> <any-value> ) ] | ( <ident> <any-value> )"
+      },
+      "generic-family": {
+        syntax: "serif | sans-serif | cursive | fantasy | monospace"
+      },
+      "generic-name": {
+        syntax: "serif | sans-serif | cursive | fantasy | monospace"
+      },
+      "geometry-box": {
+        syntax: "<shape-box> | fill-box | stroke-box | view-box"
+      },
+      gradient: {
+        syntax: "<linear-gradient()> | <repeating-linear-gradient()> | <radial-gradient()> | <repeating-radial-gradient()> | <conic-gradient()> | <repeating-conic-gradient()>"
+      },
+      "grayscale()": {
+        syntax: "grayscale( <number-percentage> )"
+      },
+      "grid-line": {
+        syntax: "auto | <custom-ident> | [ <integer> && <custom-ident>? ] | [ span && [ <integer> || <custom-ident> ] ]"
+      },
+      "historical-lig-values": {
+        syntax: "[ historical-ligatures | no-historical-ligatures ]"
+      },
+      "hsl()": {
+        syntax: "hsl( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsl( <hue>, <percentage>, <percentage>, <alpha-value>? )"
+      },
+      "hsla()": {
+        syntax: "hsla( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsla( <hue>, <percentage>, <percentage>, <alpha-value>? )"
+      },
+      hue: {
+        syntax: "<number> | <angle>"
+      },
+      "hue-rotate()": {
+        syntax: "hue-rotate( <angle> )"
+      },
+      "hwb()": {
+        syntax: "hwb( [<hue> | none] [<percentage> | none] [<percentage> | none] [ / [<alpha-value> | none] ]? )"
+      },
+      "hypot()": {
+        syntax: "hypot( <calc-sum># )"
+      },
+      "id-selector": {
+        syntax: "<hash-token>"
+      },
+      image: {
+        syntax: "<url> | <image()> | <image-set()> | <element()> | <paint()> | <cross-fade()> | <gradient>"
+      },
+      "image()": {
+        syntax: "image( <image-tags>? [ <image-src>? , <color>? ]! )"
+      },
+      "image-set()": {
+        syntax: "image-set( <image-set-option># )"
+      },
+      "image-set-option": {
+        syntax: "[ <image> | <string> ] [ <resolution> || type(<string>) ]"
+      },
+      "image-src": {
+        syntax: "<url> | <string>"
+      },
+      "image-tags": {
+        syntax: "ltr | rtl"
+      },
+      "inflexible-breadth": {
+        syntax: "<length-percentage> | min-content | max-content | auto"
+      },
+      "inset()": {
+        syntax: "inset( <length-percentage>{1,4} [ round <'border-radius'> ]? )"
+      },
+      "invert()": {
+        syntax: "invert( <number-percentage> )"
+      },
+      "keyframes-name": {
+        syntax: "<custom-ident> | <string>"
+      },
+      "keyframe-block": {
+        syntax: "<keyframe-selector># {\n  <declaration-list>\n}"
+      },
+      "keyframe-block-list": {
+        syntax: "<keyframe-block>+"
+      },
+      "keyframe-selector": {
+        syntax: "from | to | <percentage>"
+      },
+      "lab()": {
+        syntax: "lab( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )"
+      },
+      "layer()": {
+        syntax: "layer( <layer-name> )"
+      },
+      "layer-name": {
+        syntax: "<ident> [ '.' <ident> ]*"
+      },
+      "lch()": {
+        syntax: "lch( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )"
+      },
+      "leader()": {
+        syntax: "leader( <leader-type> )"
+      },
+      "leader-type": {
+        syntax: "dotted | solid | space | <string>"
+      },
+      "length-percentage": {
+        syntax: "<length> | <percentage>"
+      },
+      "line-names": {
+        syntax: "'[' <custom-ident>* ']'"
+      },
+      "line-name-list": {
+        syntax: "[ <line-names> | <name-repeat> ]+"
+      },
+      "line-style": {
+        syntax: "none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset"
+      },
+      "line-width": {
+        syntax: "<length> | thin | medium | thick"
+      },
+      "linear-color-hint": {
+        syntax: "<length-percentage>"
+      },
+      "linear-color-stop": {
+        syntax: "<color> <color-stop-length>?"
+      },
+      "linear-gradient()": {
+        syntax: "linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )"
+      },
+      "log()": {
+        syntax: "log( <calc-sum>, <calc-sum>? )"
+      },
+      "mask-layer": {
+        syntax: "<mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || <geometry-box> || [ <geometry-box> | no-clip ] || <compositing-operator> || <masking-mode>"
+      },
+      "mask-position": {
+        syntax: "[ <length-percentage> | left | center | right ] [ <length-percentage> | top | center | bottom ]?"
+      },
+      "mask-reference": {
+        syntax: "none | <image> | <mask-source>"
+      },
+      "mask-source": {
+        syntax: "<url>"
+      },
+      "masking-mode": {
+        syntax: "alpha | luminance | match-source"
+      },
+      "matrix()": {
+        syntax: "matrix( <number>#{6} )"
+      },
+      "matrix3d()": {
+        syntax: "matrix3d( <number>#{16} )"
+      },
+      "max()": {
+        syntax: "max( <calc-sum># )"
+      },
+      "media-and": {
+        syntax: "<media-in-parens> [ and <media-in-parens> ]+"
+      },
+      "media-condition": {
+        syntax: "<media-not> | <media-and> | <media-or> | <media-in-parens>"
+      },
+      "media-condition-without-or": {
+        syntax: "<media-not> | <media-and> | <media-in-parens>"
+      },
+      "media-feature": {
+        syntax: "( [ <mf-plain> | <mf-boolean> | <mf-range> ] )"
+      },
+      "media-in-parens": {
+        syntax: "( <media-condition> ) | <media-feature> | <general-enclosed>"
+      },
+      "media-not": {
+        syntax: "not <media-in-parens>"
+      },
+      "media-or": {
+        syntax: "<media-in-parens> [ or <media-in-parens> ]+"
+      },
+      "media-query": {
+        syntax: "<media-condition> | [ not | only ]? <media-type> [ and <media-condition-without-or> ]?"
+      },
+      "media-query-list": {
+        syntax: "<media-query>#"
+      },
+      "media-type": {
+        syntax: "<ident>"
+      },
+      "mf-boolean": {
+        syntax: "<mf-name>"
+      },
+      "mf-name": {
+        syntax: "<ident>"
+      },
+      "mf-plain": {
+        syntax: "<mf-name> : <mf-value>"
+      },
+      "mf-range": {
+        syntax: "<mf-name> [ '<' | '>' ]? '='? <mf-value>\n| <mf-value> [ '<' | '>' ]? '='? <mf-name>\n| <mf-value> '<' '='? <mf-name> '<' '='? <mf-value>\n| <mf-value> '>' '='? <mf-name> '>' '='? <mf-value>"
+      },
+      "mf-value": {
+        syntax: "<number> | <dimension> | <ident> | <ratio>"
+      },
+      "min()": {
+        syntax: "min( <calc-sum># )"
+      },
+      "minmax()": {
+        syntax: "minmax( [ <length-percentage> | min-content | max-content | auto ] , [ <length-percentage> | <flex> | min-content | max-content | auto ] )"
+      },
+      "mod()": {
+        syntax: "mod( <calc-sum>, <calc-sum> )"
+      },
+      "name-repeat": {
+        syntax: "repeat( [ <integer [1,\u221E]> | auto-fill ], <line-names>+ )"
+      },
+      "named-color": {
+        syntax: "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": {
+        syntax: "<ident>"
+      },
+      "ns-prefix": {
+        syntax: "[ <ident-token> | '*' ]? '|'"
+      },
+      "number-percentage": {
+        syntax: "<number> | <percentage>"
+      },
+      "numeric-figure-values": {
+        syntax: "[ lining-nums | oldstyle-nums ]"
+      },
+      "numeric-fraction-values": {
+        syntax: "[ diagonal-fractions | stacked-fractions ]"
+      },
+      "numeric-spacing-values": {
+        syntax: "[ proportional-nums | tabular-nums ]"
+      },
+      nth: {
+        syntax: "<an-plus-b> | even | odd"
+      },
+      "opacity()": {
+        syntax: "opacity( [ <number-percentage> ] )"
+      },
+      "overflow-position": {
+        syntax: "unsafe | safe"
+      },
+      "outline-radius": {
+        syntax: "<length> | <percentage>"
+      },
+      "page-body": {
+        syntax: "<declaration>? [ ; <page-body> ]? | <page-margin-box> <page-body>"
+      },
+      "page-margin-box": {
+        syntax: "<page-margin-box-type> '{' <declaration-list> '}'"
+      },
+      "page-margin-box-type": {
+        syntax: "@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": {
+        syntax: "[ <page-selector># ]?"
+      },
+      "page-selector": {
+        syntax: "<pseudo-page>+ | <ident> <pseudo-page>*"
+      },
+      "page-size": {
+        syntax: "A5 | A4 | A3 | B5 | B4 | JIS-B5 | JIS-B4 | letter | legal | ledger"
+      },
+      "path()": {
+        syntax: "path( [ <fill-rule>, ]? <string> )"
+      },
+      "paint()": {
+        syntax: "paint( <ident>, <declaration-value>? )"
+      },
+      "perspective()": {
+        syntax: "perspective( [ <length [0,\u221E]> | none ] )"
+      },
+      "polygon()": {
+        syntax: "polygon( <fill-rule>? , [ <length-percentage> <length-percentage> ]# )"
+      },
+      position: {
+        syntax: "[ [ 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()": {
+        syntax: "pow( <calc-sum>, <calc-sum> )"
+      },
+      "pseudo-class-selector": {
+        syntax: "':' <ident-token> | ':' <function-token> <any-value> ')'"
+      },
+      "pseudo-element-selector": {
+        syntax: "':' <pseudo-class-selector>"
+      },
+      "pseudo-page": {
+        syntax: ": [ left | right | first | blank ]"
+      },
+      quote: {
+        syntax: "open-quote | close-quote | no-open-quote | no-close-quote"
+      },
+      "radial-gradient()": {
+        syntax: "radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )"
+      },
+      ratio: {
+        syntax: "<number [0,\u221E]> [ / <number [0,\u221E]> ]?"
+      },
+      "relative-selector": {
+        syntax: "<combinator>? <complex-selector>"
+      },
+      "relative-selector-list": {
+        syntax: "<relative-selector>#"
+      },
+      "relative-size": {
+        syntax: "larger | smaller"
+      },
+      "rem()": {
+        syntax: "rem( <calc-sum>, <calc-sum> )"
+      },
+      "repeat-style": {
+        syntax: "repeat-x | repeat-y | [ repeat | space | round | no-repeat ]{1,2}"
+      },
+      "repeating-conic-gradient()": {
+        syntax: "repeating-conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )"
+      },
+      "repeating-linear-gradient()": {
+        syntax: "repeating-linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )"
+      },
+      "repeating-radial-gradient()": {
+        syntax: "repeating-radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )"
+      },
+      "reversed-counter-name": {
+        syntax: "reversed( <counter-name> )"
+      },
+      "rgb()": {
+        syntax: "rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) | rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )"
+      },
+      "rgba()": {
+        syntax: "rgba( <percentage>{3} [ / <alpha-value> ]? ) | rgba( <number>{3} [ / <alpha-value> ]? ) | rgba( <percentage>#{3} , <alpha-value>? ) | rgba( <number>#{3} , <alpha-value>? )"
+      },
+      "rotate()": {
+        syntax: "rotate( [ <angle> | <zero> ] )"
+      },
+      "rotate3d()": {
+        syntax: "rotate3d( <number> , <number> , <number> , [ <angle> | <zero> ] )"
+      },
+      "rotateX()": {
+        syntax: "rotateX( [ <angle> | <zero> ] )"
+      },
+      "rotateY()": {
+        syntax: "rotateY( [ <angle> | <zero> ] )"
+      },
+      "rotateZ()": {
+        syntax: "rotateZ( [ <angle> | <zero> ] )"
+      },
+      "round()": {
+        syntax: "round( <rounding-strategy>?, <calc-sum>, <calc-sum> )"
+      },
+      "rounding-strategy": {
+        syntax: "nearest | up | down | to-zero"
+      },
+      "saturate()": {
+        syntax: "saturate( <number-percentage> )"
+      },
+      "scale()": {
+        syntax: "scale( [ <number> | <percentage> ]#{1,2} )"
+      },
+      "scale3d()": {
+        syntax: "scale3d( [ <number> | <percentage> ]#{3} )"
+      },
+      "scaleX()": {
+        syntax: "scaleX( [ <number> | <percentage> ] )"
+      },
+      "scaleY()": {
+        syntax: "scaleY( [ <number> | <percentage> ] )"
+      },
+      "scaleZ()": {
+        syntax: "scaleZ( [ <number> | <percentage> ] )"
+      },
+      scroller: {
+        syntax: "root | nearest"
+      },
+      "self-position": {
+        syntax: "center | start | end | self-start | self-end | flex-start | flex-end"
+      },
+      "shape-radius": {
+        syntax: "<length-percentage> | closest-side | farthest-side"
+      },
+      "sign()": {
+        syntax: "sign( <calc-sum> )"
+      },
+      "skew()": {
+        syntax: "skew( [ <angle> | <zero> ] , [ <angle> | <zero> ]? )"
+      },
+      "skewX()": {
+        syntax: "skewX( [ <angle> | <zero> ] )"
+      },
+      "skewY()": {
+        syntax: "skewY( [ <angle> | <zero> ] )"
+      },
+      "sepia()": {
+        syntax: "sepia( <number-percentage> )"
+      },
+      shadow: {
+        syntax: "inset? && <length>{2,4} && <color>?"
+      },
+      "shadow-t": {
+        syntax: "[ <length>{2,3} && <color>? ]"
+      },
+      shape: {
+        syntax: "rect(<top>, <right>, <bottom>, <left>)"
+      },
+      "shape-box": {
+        syntax: "<box> | margin-box"
+      },
+      "side-or-corner": {
+        syntax: "[ left | right ] || [ top | bottom ]"
+      },
+      "sin()": {
+        syntax: "sin( <calc-sum> )"
+      },
+      "single-animation": {
+        syntax: "<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": {
+        syntax: "normal | reverse | alternate | alternate-reverse"
+      },
+      "single-animation-fill-mode": {
+        syntax: "none | forwards | backwards | both"
+      },
+      "single-animation-iteration-count": {
+        syntax: "infinite | <number>"
+      },
+      "single-animation-play-state": {
+        syntax: "running | paused"
+      },
+      "single-animation-timeline": {
+        syntax: "auto | none | <timeline-name> | scroll(<axis>? <scroller>?)"
+      },
+      "single-transition": {
+        syntax: "[ none | <single-transition-property> ] || <time> || <easing-function> || <time>"
+      },
+      "single-transition-property": {
+        syntax: "all | <custom-ident>"
+      },
+      size: {
+        syntax: "closest-side | farthest-side | closest-corner | farthest-corner | <length> | <length-percentage>{2}"
+      },
+      "sqrt()": {
+        syntax: "sqrt( <calc-sum> )"
+      },
+      "step-position": {
+        syntax: "jump-start | jump-end | jump-none | jump-both | start | end"
+      },
+      "step-timing-function": {
+        syntax: "step-start | step-end | steps(<integer>[, <step-position>]?)"
+      },
+      "subclass-selector": {
+        syntax: "<id-selector> | <class-selector> | <attribute-selector> | <pseudo-class-selector>"
+      },
+      "supports-condition": {
+        syntax: "not <supports-in-parens> | <supports-in-parens> [ and <supports-in-parens> ]* | <supports-in-parens> [ or <supports-in-parens> ]*"
+      },
+      "supports-in-parens": {
+        syntax: "( <supports-condition> ) | <supports-feature> | <general-enclosed>"
+      },
+      "supports-feature": {
+        syntax: "<supports-decl> | <supports-selector-fn>"
+      },
+      "supports-decl": {
+        syntax: "( <declaration> )"
+      },
+      "supports-selector-fn": {
+        syntax: "selector( <complex-selector> )"
+      },
+      symbol: {
+        syntax: "<string> | <image> | <custom-ident>"
+      },
+      "tan()": {
+        syntax: "tan( <calc-sum> )"
+      },
+      target: {
+        syntax: "<target-counter()> | <target-counters()> | <target-text()>"
+      },
+      "target-counter()": {
+        syntax: "target-counter( [ <string> | <url> ] , <custom-ident> , <counter-style>? )"
+      },
+      "target-counters()": {
+        syntax: "target-counters( [ <string> | <url> ] , <custom-ident> , <string> , <counter-style>? )"
+      },
+      "target-text()": {
+        syntax: "target-text( [ <string> | <url> ] , [ content | before | after | first-letter ]? )"
+      },
+      "time-percentage": {
+        syntax: "<time> | <percentage>"
+      },
+      "timeline-name": {
+        syntax: "<custom-ident> | <string>"
+      },
+      "easing-function": {
+        syntax: "linear | <cubic-bezier-timing-function> | <step-timing-function>"
+      },
+      "track-breadth": {
+        syntax: "<length-percentage> | <flex> | min-content | max-content | auto"
+      },
+      "track-list": {
+        syntax: "[ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?"
+      },
+      "track-repeat": {
+        syntax: "repeat( [ <integer [1,\u221E]> ] , [ <line-names>? <track-size> ]+ <line-names>? )"
+      },
+      "track-size": {
+        syntax: "<track-breadth> | minmax( <inflexible-breadth> , <track-breadth> ) | fit-content( <length-percentage> )"
+      },
+      "transform-function": {
+        syntax: "<matrix()> | <translate()> | <translateX()> | <translateY()> | <scale()> | <scaleX()> | <scaleY()> | <rotate()> | <skew()> | <skewX()> | <skewY()> | <matrix3d()> | <translate3d()> | <translateZ()> | <scale3d()> | <scaleZ()> | <rotate3d()> | <rotateX()> | <rotateY()> | <rotateZ()> | <perspective()>"
+      },
+      "transform-list": {
+        syntax: "<transform-function>+"
+      },
+      "translate()": {
+        syntax: "translate( <length-percentage> , <length-percentage>? )"
+      },
+      "translate3d()": {
+        syntax: "translate3d( <length-percentage> , <length-percentage> , <length> )"
+      },
+      "translateX()": {
+        syntax: "translateX( <length-percentage> )"
+      },
+      "translateY()": {
+        syntax: "translateY( <length-percentage> )"
+      },
+      "translateZ()": {
+        syntax: "translateZ( <length> )"
+      },
+      "type-or-unit": {
+        syntax: "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": {
+        syntax: "<wq-name> | <ns-prefix>? '*'"
+      },
+      "var()": {
+        syntax: "var( <custom-property-name> , <declaration-value>? )"
+      },
+      "viewport-length": {
+        syntax: "auto | <length-percentage>"
+      },
+      "visual-box": {
+        syntax: "content-box | padding-box | border-box"
+      },
+      "wq-name": {
+        syntax: "<ns-prefix>? <ident-token>"
+      }
+    };
+  }
+});
+
+// node_modules/css-tree/cjs/data.cjs
+var require_data = __commonJS({
+  "node_modules/css-tree/cjs/data.cjs"(exports2, module2) {
+    "use strict";
+    var dataPatch = require_data_patch();
+    var mdnAtrules = require_at_rules();
+    var mdnProperties = require_properties();
+    var mdnSyntaxes = require_syntaxes();
+    var extendSyntax = /^\s*\|\s*/;
+    function preprocessAtrules(dict) {
+      const result = /* @__PURE__ */ Object.create(null);
+      for (const atruleName in dict) {
+        const atrule = dict[atruleName];
+        let descriptors = null;
+        if (atrule.descriptors) {
+          descriptors = /* @__PURE__ */ Object.create(null);
+          for (const descriptor in atrule.descriptors) {
+            descriptors[descriptor] = atrule.descriptors[descriptor].syntax;
+          }
+        }
+        result[atruleName.substr(1)] = {
+          prelude: atrule.syntax.trim().replace(/\{(.|\s)+\}/, "").match(/^@\S+\s+([^;\{]*)/)[1].trim() || null,
+          descriptors
+        };
+      }
+      return result;
+    }
+    function patchDictionary(dict, patchDict) {
+      const result = {};
+      for (const key in dict) {
+        result[key] = dict[key].syntax || dict[key];
+      }
+      for (const key in patchDict) {
+        if (key in dict) {
+          if (patchDict[key].syntax) {
+            result[key] = extendSyntax.test(patchDict[key].syntax) ? result[key] + " " + patchDict[key].syntax.trim() : patchDict[key].syntax;
+          } else {
+            delete result[key];
+          }
+        } else {
+          if (patchDict[key].syntax) {
+            result[key] = patchDict[key].syntax.replace(extendSyntax, "");
+          }
+        }
+      }
+      return result;
+    }
+    function patchAtrules(dict, patchDict) {
+      const result = {};
+      for (const key in dict) {
+        const atrulePatch = patchDict[key] || {};
+        result[key] = {
+          prelude: key in patchDict && "prelude" in atrulePatch ? atrulePatch.prelude : dict[key].prelude || null,
+          descriptors: patchDictionary(dict[key].descriptors || {}, atrulePatch.descriptors || {})
+        };
+      }
+      for (const key in patchDict) {
+        if (!hasOwnProperty.call(dict, key)) {
+          const atrulePatch = patchDict[key] || {};
+          result[key] = {
+            prelude: atrulePatch.prelude || null,
+            descriptors: atrulePatch.descriptors && patchDictionary({}, atrulePatch.descriptors)
+          };
+        }
+      }
+      return result;
+    }
+    var definitions = {
+      types: patchDictionary(mdnSyntaxes, dataPatch.types),
+      atrules: patchAtrules(preprocessAtrules(mdnAtrules), dataPatch.atrules),
+      properties: patchDictionary(mdnProperties, dataPatch.properties)
+    };
+    module2.exports = definitions;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs
+var require_AnPlusB = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs"(exports2) {
+    "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);
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Atrule.cjs
+var require_Atrule = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Atrule.cjs"(exports2) {
+    "use strict";
+    var types = require_types2();
+    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(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:
+          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));
+          }
+          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, ";");
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs
+var require_AtrulePrelude = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs
+var require_AttributeSelector = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs"(exports2) {
+    "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, "]");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Block.cjs
+var require_Block = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Block.cjs"(exports2) {
+    "use strict";
+    var types = require_types2();
+    var AMPERSAND = 38;
+    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(isStyleBlock) {
+      const consumer = isStyleBlock ? 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.bind(this, isStyleBlock), consumeRaw));
+              break;
+            default:
+              if (isStyleBlock && this.isDelim(AMPERSAND)) {
+                children.push(consumeRule.call(this));
+              } else {
+                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, "}");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Brackets.cjs
+var require_Brackets = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Brackets.cjs"(exports2) {
+    "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, "]");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/CDC.cjs
+var require_CDC = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/CDC.cjs"(exports2) {
+    "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, "-->");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/CDO.cjs
+var require_CDO = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/CDO.cjs"(exports2) {
+    "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, "<!--");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs
+var require_ClassSelector = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Combinator.cjs
+var require_Combinator = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Combinator.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Comment.cjs
+var require_Comment = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Comment.cjs"(exports2) {
+    "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 + "*/");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Declaration.cjs
+var require_Declaration = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Declaration.cjs"(exports2) {
+    "use strict";
+    var names = require_names3();
+    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(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;
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs
+var require_DeclarationList = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs"(exports2) {
+    "use strict";
+    var types = require_types2();
+    var AMPERSAND = 38;
+    function consumeRaw(startToken) {
+      return this.Raw(startToken, 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, ";");
+        }
+      });
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Dimension.cjs
+var require_Dimension = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Dimension.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Function.cjs
+var require_Function = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Function.cjs"(exports2) {
+    "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, ")");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Hash.cjs
+var require_Hash = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Hash.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.xxx = xxx;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Identifier.cjs
+var require_Identifier = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Identifier.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/IdSelector.cjs
+var require_IdSelector = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/IdSelector.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs
+var require_MediaFeature = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs"(exports2) {
+    "use strict";
+    var types = require_types2();
+    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, ")");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs
+var require_MediaQuery = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs"(exports2) {
+    "use strict";
+    var types = require_types2();
+    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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs
+var require_MediaQueryList = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs"(exports2) {
+    "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, ","));
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs
+var require_NestingSelector = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs"(exports2) {
+    "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, "&");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Nth.cjs
+var require_Nth = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Nth.cjs"(exports2) {
+    "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);
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Number.cjs
+var require_Number = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Number.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Operator.cjs
+var require_Operator = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Operator.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Parentheses.cjs
+var require_Parentheses = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Parentheses.cjs"(exports2) {
+    "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, ")");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Percentage.cjs
+var require_Percentage = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Percentage.cjs"(exports2) {
+    "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 + "%");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs
+var require_PseudoClassSelector = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs"(exports2) {
+    "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 (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, ")");
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs
+var require_PseudoElementSelector = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs"(exports2) {
+    "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 (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, ")");
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Ratio.cjs
+var require_Ratio = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Ratio.cjs"(exports2) {
+    "use strict";
+    var types = require_types2();
+    var charCodeDefinitions = require_char_code_definitions();
+    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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Raw.cjs
+var require_Raw = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Raw.cjs"(exports2) {
+    "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(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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Rule.cjs
+var require_Rule = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Rule.cjs"(exports2) {
+    "use strict";
+    var types = require_types2();
+    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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Selector.cjs
+var require_Selector = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Selector.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/SelectorList.cjs
+var require_SelectorList = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/SelectorList.cjs"(exports2) {
+    "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, ","));
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/utils/string.cjs
+var require_string = __commonJS({
+  "node_modules/css-tree/cjs/utils/string.cjs"(exports2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions();
+    var utils = require_utils3();
+    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;
+    }
+    exports2.decode = decode;
+    exports2.encode = encode;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/String.cjs
+var require_String = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/String.cjs"(exports2) {
+    "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));
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs
+var require_StyleSheet = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs"(exports2) {
+    "use strict";
+    var types = require_types2();
+    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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.walkContext = walkContext;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs
+var require_TypeSelector = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs
+var require_UnicodeRange = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/utils/url.cjs
+var require_url2 = __commonJS({
+  "node_modules/css-tree/cjs/utils/url.cjs"(exports2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions();
+    var utils = require_utils3();
+    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 + ")";
+    }
+    exports2.decode = decode;
+    exports2.encode = encode;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Url.cjs
+var require_Url = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Url.cjs"(exports2) {
+    "use strict";
+    var url = require_url2();
+    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));
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/Value.cjs
+var require_Value = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/Value.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs
+var require_WhiteSpace = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/node/index.cjs
+var require_node4 = __commonJS({
+  "node_modules/css-tree/cjs/syntax/node/index.cjs"(exports2) {
+    "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 Declaration = require_Declaration();
+    var DeclarationList = require_DeclarationList();
+    var Dimension = require_Dimension();
+    var Function2 = require_Function();
+    var Hash = require_Hash();
+    var Identifier = require_Identifier();
+    var IdSelector = require_IdSelector();
+    var MediaFeature = require_MediaFeature();
+    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 Selector = require_Selector();
+    var SelectorList = require_SelectorList();
+    var String$1 = require_String();
+    var StyleSheet = require_StyleSheet();
+    var TypeSelector = require_TypeSelector();
+    var UnicodeRange = require_UnicodeRange();
+    var Url = require_Url();
+    var Value = require_Value();
+    var WhiteSpace = require_WhiteSpace();
+    exports2.AnPlusB = AnPlusB;
+    exports2.Atrule = Atrule;
+    exports2.AtrulePrelude = AtrulePrelude;
+    exports2.AttributeSelector = AttributeSelector;
+    exports2.Block = Block;
+    exports2.Brackets = Brackets;
+    exports2.CDC = CDC;
+    exports2.CDO = CDO;
+    exports2.ClassSelector = ClassSelector;
+    exports2.Combinator = Combinator;
+    exports2.Comment = Comment;
+    exports2.Declaration = Declaration;
+    exports2.DeclarationList = DeclarationList;
+    exports2.Dimension = Dimension;
+    exports2.Function = Function2;
+    exports2.Hash = Hash;
+    exports2.Identifier = Identifier;
+    exports2.IdSelector = IdSelector;
+    exports2.MediaFeature = MediaFeature;
+    exports2.MediaQuery = MediaQuery;
+    exports2.MediaQueryList = MediaQueryList;
+    exports2.NestingSelector = NestingSelector;
+    exports2.Nth = Nth;
+    exports2.Number = Number$1;
+    exports2.Operator = Operator;
+    exports2.Parentheses = Parentheses;
+    exports2.Percentage = Percentage;
+    exports2.PseudoClassSelector = PseudoClassSelector;
+    exports2.PseudoElementSelector = PseudoElementSelector;
+    exports2.Ratio = Ratio;
+    exports2.Raw = Raw;
+    exports2.Rule = Rule;
+    exports2.Selector = Selector;
+    exports2.SelectorList = SelectorList;
+    exports2.String = String$1;
+    exports2.StyleSheet = StyleSheet;
+    exports2.TypeSelector = TypeSelector;
+    exports2.UnicodeRange = UnicodeRange;
+    exports2.Url = Url;
+    exports2.Value = Value;
+    exports2.WhiteSpace = WhiteSpace;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/config/lexer.cjs
+var require_lexer = __commonJS({
+  "node_modules/css-tree/cjs/syntax/config/lexer.cjs"(exports2, module2) {
+    "use strict";
+    var data = require_data();
+    var index = require_node4();
+    var lexerConfig = {
+      generic: true,
+      ...data,
+      node: index
+    };
+    module2.exports = lexerConfig;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/scope/default.cjs
+var require_default = __commonJS({
+  "node_modules/css-tree/cjs/syntax/scope/default.cjs"(exports2, module2) {
+    "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;
+        }
+      }
+    }
+    module2.exports = defaultRecognizer;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs
+var require_atrulePrelude = __commonJS({
+  "node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs"(exports2, module2) {
+    "use strict";
+    var _default = require_default();
+    var atrulePrelude = {
+      getNode: _default
+    };
+    module2.exports = atrulePrelude;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/scope/selector.cjs
+var require_selector2 = __commonJS({
+  "node_modules/css-tree/cjs/syntax/scope/selector.cjs"(exports2, module2) {
+    "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
+    };
+    module2.exports = Selector;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/function/expression.cjs
+var require_expression = __commonJS({
+  "node_modules/css-tree/cjs/syntax/function/expression.cjs"(exports2, module2) {
+    "use strict";
+    function expressionFn() {
+      return this.createSingleNodeList(
+        this.Raw(this.tokenIndex, null, false)
+      );
+    }
+    module2.exports = expressionFn;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/function/var.cjs
+var require_var = __commonJS({
+  "node_modules/css-tree/cjs/syntax/function/var.cjs"(exports2, module2) {
+    "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.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;
+    }
+    module2.exports = varFn;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/scope/value.cjs
+var require_value2 = __commonJS({
+  "node_modules/css-tree/cjs/syntax/scope/value.cjs"(exports2, module2) {
+    "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
+    };
+    module2.exports = value;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/scope/index.cjs
+var require_scope = __commonJS({
+  "node_modules/css-tree/cjs/syntax/scope/index.cjs"(exports2) {
+    "use strict";
+    var atrulePrelude = require_atrulePrelude();
+    var selector = require_selector2();
+    var value = require_value2();
+    exports2.AtrulePrelude = atrulePrelude;
+    exports2.Selector = selector;
+    exports2.Value = value;
+  }
+});
+
+// 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"(exports2, module2) {
+    "use strict";
+    var fontFace = {
+      parse: {
+        prelude: null,
+        block() {
+          return this.Block(true);
+        }
+      }
+    };
+    module2.exports = fontFace;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/atrule/import.cjs
+var require_import = __commonJS({
+  "node_modules/css-tree/cjs/syntax/atrule/import.cjs"(exports2, module2) {
+    "use strict";
+    var types = require_types2();
+    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
+      }
+    };
+    module2.exports = importAtrule;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/atrule/media.cjs
+var require_media = __commonJS({
+  "node_modules/css-tree/cjs/syntax/atrule/media.cjs"(exports2, module2) {
+    "use strict";
+    var media = {
+      parse: {
+        prelude() {
+          return this.createSingleNodeList(
+            this.MediaQueryList()
+          );
+        },
+        block(isStyleBlock = false) {
+          return this.Block(isStyleBlock);
+        }
+      }
+    };
+    module2.exports = media;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/atrule/nest.cjs
+var require_nest = __commonJS({
+  "node_modules/css-tree/cjs/syntax/atrule/nest.cjs"(exports2, module2) {
+    "use strict";
+    var nest = {
+      parse: {
+        prelude() {
+          return this.createSingleNodeList(
+            this.SelectorList()
+          );
+        },
+        block() {
+          return this.Block(true);
+        }
+      }
+    };
+    module2.exports = nest;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/atrule/page.cjs
+var require_page = __commonJS({
+  "node_modules/css-tree/cjs/syntax/atrule/page.cjs"(exports2, module2) {
+    "use strict";
+    var page = {
+      parse: {
+        prelude() {
+          return this.createSingleNodeList(
+            this.SelectorList()
+          );
+        },
+        block() {
+          return this.Block(true);
+        }
+      }
+    };
+    module2.exports = page;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/atrule/supports.cjs
+var require_supports2 = __commonJS({
+  "node_modules/css-tree/cjs/syntax/atrule/supports.cjs"(exports2, module2) {
+    "use strict";
+    var types = require_types2();
+    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(isStyleBlock = false) {
+          return this.Block(isStyleBlock);
+        }
+      }
+    };
+    module2.exports = supports;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/atrule/index.cjs
+var require_atrule = __commonJS({
+  "node_modules/css-tree/cjs/syntax/atrule/index.cjs"(exports2, module2) {
+    "use strict";
+    var fontFace = require_font_face();
+    var _import = require_import();
+    var media = require_media();
+    var nest = require_nest();
+    var page = require_page();
+    var supports = require_supports2();
+    var atrule = {
+      "font-face": fontFace,
+      "import": _import,
+      media,
+      nest,
+      page,
+      supports
+    };
+    module2.exports = atrule;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/pseudo/index.cjs
+var require_pseudo = __commonJS({
+  "node_modules/css-tree/cjs/syntax/pseudo/index.cjs"(exports2, module2) {
+    "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,
+      "host": selector,
+      "host-context": selector
+    };
+    module2.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"(exports2) {
+    "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 Declaration = require_Declaration();
+    var DeclarationList = require_DeclarationList();
+    var Dimension = require_Dimension();
+    var Function2 = require_Function();
+    var Hash = require_Hash();
+    var Identifier = require_Identifier();
+    var IdSelector = require_IdSelector();
+    var MediaFeature = require_MediaFeature();
+    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 Selector = require_Selector();
+    var SelectorList = require_SelectorList();
+    var String2 = require_String();
+    var StyleSheet = require_StyleSheet();
+    var TypeSelector = require_TypeSelector();
+    var UnicodeRange = require_UnicodeRange();
+    var Url = require_Url();
+    var Value = require_Value();
+    var WhiteSpace = require_WhiteSpace();
+    exports2.AnPlusB = AnPlusB.parse;
+    exports2.Atrule = Atrule.parse;
+    exports2.AtrulePrelude = AtrulePrelude.parse;
+    exports2.AttributeSelector = AttributeSelector.parse;
+    exports2.Block = Block.parse;
+    exports2.Brackets = Brackets.parse;
+    exports2.CDC = CDC.parse;
+    exports2.CDO = CDO.parse;
+    exports2.ClassSelector = ClassSelector.parse;
+    exports2.Combinator = Combinator.parse;
+    exports2.Comment = Comment.parse;
+    exports2.Declaration = Declaration.parse;
+    exports2.DeclarationList = DeclarationList.parse;
+    exports2.Dimension = Dimension.parse;
+    exports2.Function = Function2.parse;
+    exports2.Hash = Hash.parse;
+    exports2.Identifier = Identifier.parse;
+    exports2.IdSelector = IdSelector.parse;
+    exports2.MediaFeature = MediaFeature.parse;
+    exports2.MediaQuery = MediaQuery.parse;
+    exports2.MediaQueryList = MediaQueryList.parse;
+    exports2.NestingSelector = NestingSelector.parse;
+    exports2.Nth = Nth.parse;
+    exports2.Number = Number2.parse;
+    exports2.Operator = Operator.parse;
+    exports2.Parentheses = Parentheses.parse;
+    exports2.Percentage = Percentage.parse;
+    exports2.PseudoClassSelector = PseudoClassSelector.parse;
+    exports2.PseudoElementSelector = PseudoElementSelector.parse;
+    exports2.Ratio = Ratio.parse;
+    exports2.Raw = Raw.parse;
+    exports2.Rule = Rule.parse;
+    exports2.Selector = Selector.parse;
+    exports2.SelectorList = SelectorList.parse;
+    exports2.String = String2.parse;
+    exports2.StyleSheet = StyleSheet.parse;
+    exports2.TypeSelector = TypeSelector.parse;
+    exports2.UnicodeRange = UnicodeRange.parse;
+    exports2.Url = Url.parse;
+    exports2.Value = Value.parse;
+    exports2.WhiteSpace = WhiteSpace.parse;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/config/parser.cjs
+var require_parser3 = __commonJS({
+  "node_modules/css-tree/cjs/syntax/config/parser.cjs"(exports2, module2) {
+    "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",
+        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
+    };
+    module2.exports = config;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/config/walker.cjs
+var require_walker = __commonJS({
+  "node_modules/css-tree/cjs/syntax/config/walker.cjs"(exports2, module2) {
+    "use strict";
+    var index = require_node4();
+    var config = {
+      node: index
+    };
+    module2.exports = config;
+  }
+});
+
+// node_modules/css-tree/cjs/syntax/index.cjs
+var require_syntax = __commonJS({
+  "node_modules/css-tree/cjs/syntax/index.cjs"(exports2, module2) {
+    "use strict";
+    var create = require_create5();
+    var lexer = require_lexer();
+    var parser = require_parser3();
+    var walker = require_walker();
+    var syntax = create({
+      ...lexer,
+      ...parser,
+      ...walker
+    });
+    module2.exports = syntax;
+  }
+});
+
+// node_modules/css-tree/package.json
+var require_package = __commonJS({
+  "node_modules/css-tree/package.json"(exports2, module2) {
+    module2.exports = {
+      name: "css-tree",
+      version: "2.3.1",
+      description: "A tool set for CSS: fast detailed parser (CSS \u2192 AST), walker (AST traversal), generator (AST \u2192 CSS) and lexer (validation and matching) based on specs and browser implementations",
+      author: "Roman Dvornov <rdvornov@gmail.com> (https://github.com/lahmatiy)",
+      license: "MIT",
+      repository: "csstree/csstree",
+      keywords: [
+        "css",
+        "ast",
+        "tokenizer",
+        "parser",
+        "walker",
+        "lexer",
+        "generator",
+        "utils",
+        "syntax",
+        "validation"
+      ],
+      type: "module",
+      module: "./lib/index.js",
+      main: "./cjs/index.cjs",
+      exports: {
+        ".": {
+          import: "./lib/index.js",
+          require: "./cjs/index.cjs"
+        },
+        "./dist/*": "./dist/*.js",
+        "./package.json": "./package.json",
+        "./tokenizer": {
+          import: "./lib/tokenizer/index.js",
+          require: "./cjs/tokenizer/index.cjs"
+        },
+        "./parser": {
+          import: "./lib/parser/index.js",
+          require: "./cjs/parser/index.cjs"
+        },
+        "./selector-parser": {
+          import: "./lib/parser/parse-selector.js",
+          require: "./cjs/parser/parse-selector.cjs"
+        },
+        "./generator": {
+          import: "./lib/generator/index.js",
+          require: "./cjs/generator/index.cjs"
+        },
+        "./walker": {
+          import: "./lib/walker/index.js",
+          require: "./cjs/walker/index.cjs"
+        },
+        "./convertor": {
+          import: "./lib/convertor/index.js",
+          require: "./cjs/convertor/index.cjs"
+        },
+        "./lexer": {
+          import: "./lib/lexer/index.js",
+          require: "./cjs/lexer/index.cjs"
+        },
+        "./definition-syntax": {
+          import: "./lib/definition-syntax/index.js",
+          require: "./cjs/definition-syntax/index.cjs"
+        },
+        "./definition-syntax-data": {
+          import: "./lib/data.js",
+          require: "./cjs/data.cjs"
+        },
+        "./definition-syntax-data-patch": {
+          import: "./lib/data-patch.js",
+          require: "./cjs/data-patch.cjs"
+        },
+        "./utils": {
+          import: "./lib/utils/index.js",
+          require: "./cjs/utils/index.cjs"
+        }
+      },
+      browser: {
+        "./cjs/data.cjs": "./dist/data.cjs",
+        "./cjs/version.cjs": "./dist/version.cjs",
+        "./lib/data.js": "./dist/data.js",
+        "./lib/version.js": "./dist/version.js"
+      },
+      unpkg: "dist/csstree.esm.js",
+      jsdelivr: "dist/csstree.esm.js",
+      scripts: {
+        watch: "npm run build -- --watch",
+        build: "npm run bundle && npm run esm-to-cjs --",
+        "build-and-test": "npm run build && npm run test:dist && npm run test:cjs",
+        bundle: "node scripts/bundle",
+        "bundle-and-test": "npm run bundle && npm run test:dist",
+        "esm-to-cjs": "node scripts/esm-to-cjs.cjs",
+        "esm-to-cjs-and-test": "npm run esm-to-cjs && npm run test:cjs",
+        lint: "eslint lib scripts && node scripts/review-syntax-patch --lint && node scripts/update-docs --lint",
+        "lint-and-test": "npm run lint && npm test",
+        "update:docs": "node scripts/update-docs",
+        "review:syntax-patch": "node scripts/review-syntax-patch",
+        test: "mocha lib/__tests --reporter ${REPORTER:-progress}",
+        "test:cjs": "mocha cjs/__tests --reporter ${REPORTER:-progress}",
+        "test:dist": "mocha dist/__tests --reporter ${REPORTER:-progress}",
+        coverage: "c8 --exclude lib/__tests --reporter=lcovonly npm test",
+        prepublishOnly: "npm run lint-and-test && npm run build-and-test",
+        hydrogen: "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/parse --stat -o /dev/null"
+      },
+      dependencies: {
+        "mdn-data": "2.0.30",
+        "source-map-js": "^1.0.1"
+      },
+      devDependencies: {
+        c8: "^7.12.0",
+        clap: "^2.0.1",
+        esbuild: "^0.14.53",
+        eslint: "^8.4.1",
+        "json-to-ast": "^2.1.0",
+        mocha: "^9.2.2",
+        rollup: "^2.68.0"
+      },
+      engines: {
+        node: "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+      },
+      files: [
+        "data",
+        "dist",
+        "cjs",
+        "!cjs/__tests",
+        "lib",
+        "!lib/__tests"
+      ]
+    };
+  }
+});
+
+// node_modules/css-tree/cjs/version.cjs
+var require_version = __commonJS({
+  "node_modules/css-tree/cjs/version.cjs"(exports2) {
+    "use strict";
+    var { version } = require_package();
+    exports2.version = version;
+  }
+});
+
+// node_modules/css-tree/cjs/definition-syntax/index.cjs
+var require_definition_syntax = __commonJS({
+  "node_modules/css-tree/cjs/definition-syntax/index.cjs"(exports2) {
+    "use strict";
+    var SyntaxError2 = require_SyntaxError2();
+    var generate = require_generate();
+    var parse = require_parse6();
+    var walk = require_walk2();
+    exports2.SyntaxError = SyntaxError2.SyntaxError;
+    exports2.generate = generate.generate;
+    exports2.parse = parse.parse;
+    exports2.walk = walk.walk;
+  }
+});
+
+// node_modules/css-tree/cjs/utils/clone.cjs
+var require_clone = __commonJS({
+  "node_modules/css-tree/cjs/utils/clone.cjs"(exports2) {
+    "use strict";
+    var List = require_List();
+    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;
+    }
+    exports2.clone = clone;
+  }
+});
+
+// node_modules/css-tree/cjs/utils/ident.cjs
+var require_ident = __commonJS({
+  "node_modules/css-tree/cjs/utils/ident.cjs"(exports2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions();
+    var utils = require_utils3();
+    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;
+    }
+    exports2.decode = decode;
+    exports2.encode = encode;
+  }
+});
+
+// node_modules/css-tree/cjs/index.cjs
+var require_cjs = __commonJS({
+  "node_modules/css-tree/cjs/index.cjs"(exports2) {
+    "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_names3();
+    var ident = require_ident();
+    var string = require_string();
+    var url = require_url2();
+    var types = require_types2();
+    var names = require_names2();
+    var TokenStream = require_TokenStream();
+    var {
+      tokenize,
+      parse,
+      generate,
+      lexer,
+      createLexer,
+      walk,
+      find,
+      findLast,
+      findAll,
+      toPlainObject,
+      fromPlainObject,
+      fork
+    } = index$1;
+    exports2.version = version.version;
+    exports2.createSyntax = create;
+    exports2.List = List.List;
+    exports2.Lexer = Lexer.Lexer;
+    exports2.definitionSyntax = index;
+    exports2.clone = clone.clone;
+    exports2.isCustomProperty = names$1.isCustomProperty;
+    exports2.keyword = names$1.keyword;
+    exports2.property = names$1.property;
+    exports2.vendorPrefix = names$1.vendorPrefix;
+    exports2.ident = ident;
+    exports2.string = string;
+    exports2.url = url;
+    exports2.tokenTypes = types;
+    exports2.tokenNames = names;
+    exports2.TokenStream = TokenStream.TokenStream;
+    exports2.createLexer = createLexer;
+    exports2.find = find;
+    exports2.findAll = findAll;
+    exports2.findLast = findLast;
+    exports2.fork = fork;
+    exports2.fromPlainObject = fromPlainObject;
+    exports2.generate = generate;
+    exports2.lexer = lexer;
+    exports2.parse = parse;
+    exports2.toPlainObject = toPlainObject;
+    exports2.tokenize = tokenize;
+    exports2.walk = walk;
+  }
+});
+
+// node_modules/csso/package.json
+var require_package2 = __commonJS({
+  "node_modules/csso/package.json"(exports2, module2) {
+    module2.exports = {
+      name: "csso",
+      version: "5.0.5",
+      description: "CSS minifier with structural optimisations",
+      author: "Sergey Kryzhanovsky <skryzhanovsky@ya.ru> (https://github.com/afelix)",
+      maintainers: [
+        {
+          name: "Roman Dvornov",
+          email: "rdvornov@gmail.com",
+          "github-username": "lahmatiy"
+        }
+      ],
+      repository: "css/csso",
+      license: "MIT",
+      keywords: [
+        "css",
+        "compress",
+        "minifier",
+        "minify",
+        "optimise",
+        "optimisation",
+        "csstree"
+      ],
+      type: "module",
+      unpkg: "dist/csso.esm.js",
+      jsdelivr: "dist/csso.esm.js",
+      browser: {
+        "./cjs/version.cjs": "./dist/version.cjs",
+        "./lib/version.js": "./dist/version.js"
+      },
+      main: "./cjs/index.cjs",
+      module: "./lib/index.js",
+      exports: {
+        ".": {
+          import: "./lib/index.js",
+          require: "./cjs/index.cjs"
+        },
+        "./syntax": {
+          import: "./lib/syntax.js",
+          require: "./cjs/syntax.cjs"
+        },
+        "./dist/*": "./dist/*.js",
+        "./package.json": "./package.json"
+      },
+      scripts: {
+        test: "mocha test --reporter ${REPORTER:-progress}",
+        "test:cjs": "mocha cjs-test --reporter ${REPORTER:-progress}",
+        "test:dist": "mocha dist/test --reporter ${REPORTER:-progress}",
+        lint: "eslint lib scripts test",
+        "lint-and-test": "npm run lint && npm test",
+        build: "npm run bundle && npm run esm-to-cjs",
+        "build-and-test": "npm run build && npm run test:dist && npm run test:cjs",
+        bundle: "node scripts/bundle",
+        "bundle-and-test": "npm run bundle && npm run test:dist",
+        "esm-to-cjs": "node scripts/esm-to-cjs.cjs",
+        "esm-to-cjs-and-test": "npm run esm-to-cjs && npm run test:cjs",
+        coverage: "c8 --reporter=lcovonly npm test",
+        prepublishOnly: "npm run lint-and-test && npm run build-and-test",
+        hydrogen: "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/csso --stat -o /dev/null"
+      },
+      dependencies: {
+        "css-tree": "~2.2.0"
+      },
+      devDependencies: {
+        c8: "^7.10.0",
+        esbuild: "^0.14.54",
+        eslint: "^7.24.0",
+        mocha: "^9.2.2",
+        rollup: "^2.60.2",
+        "source-map-js": "^1.0.1"
+      },
+      engines: {
+        node: "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+        npm: ">=7.0.0"
+      },
+      files: [
+        "dist",
+        "!dist/test",
+        "cjs",
+        "lib"
+      ]
+    };
+  }
+});
+
+// node_modules/csso/cjs/version.cjs
+var require_version2 = __commonJS({
+  "node_modules/csso/cjs/version.cjs"(exports2) {
+    "use strict";
+    var { version } = require_package2();
+    exports2.version = version;
+  }
+});
+
+// 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"(exports2) {
+    "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;
+    exports2.AtKeyword = AtKeyword;
+    exports2.BadString = BadString;
+    exports2.BadUrl = BadUrl;
+    exports2.CDC = CDC;
+    exports2.CDO = CDO;
+    exports2.Colon = Colon;
+    exports2.Comma = Comma;
+    exports2.Comment = Comment;
+    exports2.Delim = Delim;
+    exports2.Dimension = Dimension;
+    exports2.EOF = EOF;
+    exports2.Function = Function2;
+    exports2.Hash = Hash;
+    exports2.Ident = Ident;
+    exports2.LeftCurlyBracket = LeftCurlyBracket;
+    exports2.LeftParenthesis = LeftParenthesis;
+    exports2.LeftSquareBracket = LeftSquareBracket;
+    exports2.Number = Number2;
+    exports2.Percentage = Percentage;
+    exports2.RightCurlyBracket = RightCurlyBracket;
+    exports2.RightParenthesis = RightParenthesis;
+    exports2.RightSquareBracket = RightSquareBracket;
+    exports2.Semicolon = Semicolon;
+    exports2.String = String2;
+    exports2.Url = Url;
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.DigitCategory = DigitCategory;
+    exports2.EofCategory = EofCategory;
+    exports2.NameStartCategory = NameStartCategory;
+    exports2.NonPrintableCategory = NonPrintableCategory;
+    exports2.WhiteSpaceCategory = WhiteSpaceCategory;
+    exports2.charCodeCategory = charCodeCategory;
+    exports2.isBOM = isBOM;
+    exports2.isDigit = isDigit;
+    exports2.isHexDigit = isHexDigit;
+    exports2.isIdentifierStart = isIdentifierStart;
+    exports2.isLetter = isLetter;
+    exports2.isLowercaseLetter = isLowercaseLetter;
+    exports2.isName = isName;
+    exports2.isNameStart = isNameStart;
+    exports2.isNewline = isNewline;
+    exports2.isNonAscii = isNonAscii;
+    exports2.isNonPrintable = isNonPrintable;
+    exports2.isNumberStart = isNumberStart;
+    exports2.isUppercaseLetter = isUppercaseLetter;
+    exports2.isValidEscape = isValidEscape;
+    exports2.isWhiteSpace = isWhiteSpace;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/tokenizer/utils.cjs
+var require_utils4 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/utils.cjs"(exports2) {
+    "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);
+    }
+    exports2.cmpChar = cmpChar;
+    exports2.cmpStr = cmpStr;
+    exports2.consumeBadUrlRemnants = consumeBadUrlRemnants;
+    exports2.consumeEscaped = consumeEscaped;
+    exports2.consumeName = consumeName;
+    exports2.consumeNumber = consumeNumber;
+    exports2.decodeEscaped = decodeEscaped;
+    exports2.findDecimalNumberEnd = findDecimalNumberEnd;
+    exports2.findWhiteSpaceEnd = findWhiteSpaceEnd;
+    exports2.findWhiteSpaceStart = findWhiteSpaceStart;
+    exports2.getNewlineLength = getNewlineLength;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/tokenizer/names.cjs
+var require_names4 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/tokenizer/names.cjs"(exports2, module2) {
+    "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"
+    ];
+    module2.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"(exports2) {
+    "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;
+    }
+    exports2.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"(exports2) {
+    "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]
+          }
+        };
+      }
+    };
+    exports2.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"(exports2) {
+    "use strict";
+    var adoptBuffer = require_adopt_buffer2();
+    var utils = require_utils4();
+    var names = require_names4();
+    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;
+      }
+    };
+    exports2.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"(exports2) {
+    "use strict";
+    var types = require_types3();
+    var charCodeDefinitions = require_char_code_definitions2();
+    var utils = require_utils4();
+    var names = require_names4();
+    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);
+      }
+    }
+    exports2.AtKeyword = types.AtKeyword;
+    exports2.BadString = types.BadString;
+    exports2.BadUrl = types.BadUrl;
+    exports2.CDC = types.CDC;
+    exports2.CDO = types.CDO;
+    exports2.Colon = types.Colon;
+    exports2.Comma = types.Comma;
+    exports2.Comment = types.Comment;
+    exports2.Delim = types.Delim;
+    exports2.Dimension = types.Dimension;
+    exports2.EOF = types.EOF;
+    exports2.Function = types.Function;
+    exports2.Hash = types.Hash;
+    exports2.Ident = types.Ident;
+    exports2.LeftCurlyBracket = types.LeftCurlyBracket;
+    exports2.LeftParenthesis = types.LeftParenthesis;
+    exports2.LeftSquareBracket = types.LeftSquareBracket;
+    exports2.Number = types.Number;
+    exports2.Percentage = types.Percentage;
+    exports2.RightCurlyBracket = types.RightCurlyBracket;
+    exports2.RightParenthesis = types.RightParenthesis;
+    exports2.RightSquareBracket = types.RightSquareBracket;
+    exports2.Semicolon = types.Semicolon;
+    exports2.String = types.String;
+    exports2.Url = types.Url;
+    exports2.WhiteSpace = types.WhiteSpace;
+    exports2.tokenTypes = types;
+    exports2.DigitCategory = charCodeDefinitions.DigitCategory;
+    exports2.EofCategory = charCodeDefinitions.EofCategory;
+    exports2.NameStartCategory = charCodeDefinitions.NameStartCategory;
+    exports2.NonPrintableCategory = charCodeDefinitions.NonPrintableCategory;
+    exports2.WhiteSpaceCategory = charCodeDefinitions.WhiteSpaceCategory;
+    exports2.charCodeCategory = charCodeDefinitions.charCodeCategory;
+    exports2.isBOM = charCodeDefinitions.isBOM;
+    exports2.isDigit = charCodeDefinitions.isDigit;
+    exports2.isHexDigit = charCodeDefinitions.isHexDigit;
+    exports2.isIdentifierStart = charCodeDefinitions.isIdentifierStart;
+    exports2.isLetter = charCodeDefinitions.isLetter;
+    exports2.isLowercaseLetter = charCodeDefinitions.isLowercaseLetter;
+    exports2.isName = charCodeDefinitions.isName;
+    exports2.isNameStart = charCodeDefinitions.isNameStart;
+    exports2.isNewline = charCodeDefinitions.isNewline;
+    exports2.isNonAscii = charCodeDefinitions.isNonAscii;
+    exports2.isNonPrintable = charCodeDefinitions.isNonPrintable;
+    exports2.isNumberStart = charCodeDefinitions.isNumberStart;
+    exports2.isUppercaseLetter = charCodeDefinitions.isUppercaseLetter;
+    exports2.isValidEscape = charCodeDefinitions.isValidEscape;
+    exports2.isWhiteSpace = charCodeDefinitions.isWhiteSpace;
+    exports2.cmpChar = utils.cmpChar;
+    exports2.cmpStr = utils.cmpStr;
+    exports2.consumeBadUrlRemnants = utils.consumeBadUrlRemnants;
+    exports2.consumeEscaped = utils.consumeEscaped;
+    exports2.consumeName = utils.consumeName;
+    exports2.consumeNumber = utils.consumeNumber;
+    exports2.decodeEscaped = utils.decodeEscaped;
+    exports2.findDecimalNumberEnd = utils.findDecimalNumberEnd;
+    exports2.findWhiteSpaceEnd = utils.findWhiteSpaceEnd;
+    exports2.findWhiteSpaceStart = utils.findWhiteSpaceStart;
+    exports2.getNewlineLength = utils.getNewlineLength;
+    exports2.tokenNames = names;
+    exports2.OffsetToLocation = OffsetToLocation.OffsetToLocation;
+    exports2.TokenStream = TokenStream.TokenStream;
+    exports2.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"(exports2) {
+    "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);
+      }
+    };
+    exports2.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"(exports2) {
+    "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}
+`);
+        }
+      });
+    }
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.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"(exports2) {
+    "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_utils4();
+    var types = require_types3();
+    var names = require_names4();
+    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
+      });
+    }
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.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"(exports2) {
+    "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);
+    exports2.safe = safe;
+    exports2.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"(exports2) {
+    "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();
+      };
+    }
+    exports2.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"(exports2) {
+    "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;
+        }
+      };
+    }
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/lexer/error.cjs
+var require_error3 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/lexer/error.cjs"(exports2) {
+    "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;
+    };
+    exports2.SyntaxMatchError = SyntaxMatchError;
+    exports2.SyntaxReferenceError = SyntaxReferenceError;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/utils/names.cjs
+var require_names5 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/utils/names.cjs"(exports2) {
+    "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;
+    }
+    exports2.isCustomProperty = isCustomProperty;
+    exports2.keyword = keyword;
+    exports2.property = property;
+    exports2.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"(exports2) {
+    "use strict";
+    var cssWideKeywords = [
+      "initial",
+      "inherit",
+      "unset",
+      "revert",
+      "revert-layer"
+    ];
+    exports2.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"(exports2, module2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions2();
+    var types = require_types3();
+    var utils = require_utils4();
+    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;
+    }
+    module2.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"(exports2, module2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions2();
+    var types = require_types3();
+    var utils = require_utils4();
+    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;
+    }
+    module2.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"(exports2, module2) {
+    "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_utils4();
+    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)
+    };
+    module2.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"(exports2, module2) {
+    "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);
+    }
+    module2.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"(exports2) {
+    "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("-") + "^"
+      });
+    }
+    exports2.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"(exports2) {
+    "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);
+      }
+    };
+    exports2.Tokenizer = Tokenizer;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/definition-syntax/parse.cjs
+var require_parse7 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/definition-syntax/parse.cjs"(exports2) {
+    "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;
+    }
+    exports2.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"(exports2) {
+    "use strict";
+    var parse = require_parse7();
+    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
+      };
+    }
+    exports2.DISALLOW_EMPTY = DISALLOW_EMPTY;
+    exports2.MATCH = MATCH;
+    exports2.MISMATCH = MISMATCH;
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.matchAsList = matchAsList;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.getTrace = getTrace;
+    exports2.isKeyword = isKeyword;
+    exports2.isProperty = isProperty;
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.getStructureFromConfig = getStructureFromConfig;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/definition-syntax/walk.cjs
+var require_walk3 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/definition-syntax/walk.cjs"(exports2) {
+    "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);
+    }
+    exports2.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"(exports2) {
+    "use strict";
+    var error = require_error3();
+    var names = require_names5();
+    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_parse7();
+    var generate = require_generate2();
+    var walk = require_walk3();
+    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());
+      }
+    };
+    exports2.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"(exports2, module2) {
+    "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);
+    module2.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"(exports2, module2) {
+    "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));
+    module2.exports = createSyntax$1;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/data/patch.json
+var require_patch2 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/data/patch.json"(exports2, module2) {
+    module2.exports = {
+      atrules: {
+        charset: {
+          prelude: "<string>"
+        },
+        "font-face": {
+          descriptors: {
+            "unicode-range": {
+              comment: "replaces <unicode-range>, an old production name",
+              syntax: "<urange>#"
+            }
+          }
+        }
+      },
+      properties: {
+        "-moz-background-clip": {
+          comment: "deprecated syntax in old Firefox, https://developer.mozilla.org/en/docs/Web/CSS/background-clip",
+          syntax: "padding | border"
+        },
+        "-moz-border-radius-bottomleft": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-left-radius",
+          syntax: "<'border-bottom-left-radius'>"
+        },
+        "-moz-border-radius-bottomright": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-right-radius",
+          syntax: "<'border-bottom-right-radius'>"
+        },
+        "-moz-border-radius-topleft": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-left-radius",
+          syntax: "<'border-top-left-radius'>"
+        },
+        "-moz-border-radius-topright": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-right-radius",
+          syntax: "<'border-bottom-right-radius'>"
+        },
+        "-moz-control-character-visibility": {
+          comment: "firefox specific keywords, https://bugzilla.mozilla.org/show_bug.cgi?id=947588",
+          syntax: "visible | hidden"
+        },
+        "-moz-osx-font-smoothing": {
+          comment: "misssed old syntax https://developer.mozilla.org/en-US/docs/Web/CSS/font-smooth",
+          syntax: "auto | grayscale"
+        },
+        "-moz-user-select": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/user-select",
+          syntax: "none | text | all | -moz-none"
+        },
+        "-ms-flex-align": {
+          comment: "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-align",
+          syntax: "start | end | center | baseline | stretch"
+        },
+        "-ms-flex-item-align": {
+          comment: "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-align",
+          syntax: "auto | start | end | center | baseline | stretch"
+        },
+        "-ms-flex-line-pack": {
+          comment: "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-line-pack",
+          syntax: "start | end | center | justify | distribute | stretch"
+        },
+        "-ms-flex-negative": {
+          comment: "misssed old syntax implemented in IE; TODO: find references for comfirmation",
+          syntax: "<'flex-shrink'>"
+        },
+        "-ms-flex-pack": {
+          comment: "misssed old syntax implemented in IE, https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-pack",
+          syntax: "start | end | center | justify | distribute"
+        },
+        "-ms-flex-order": {
+          comment: "misssed old syntax implemented in IE; https://msdn.microsoft.com/en-us/library/jj127303(v=vs.85).aspx",
+          syntax: "<integer>"
+        },
+        "-ms-flex-positive": {
+          comment: "misssed old syntax implemented in IE; TODO: find references for comfirmation",
+          syntax: "<'flex-grow'>"
+        },
+        "-ms-flex-preferred-size": {
+          comment: "misssed old syntax implemented in IE; TODO: find references for comfirmation",
+          syntax: "<'flex-basis'>"
+        },
+        "-ms-interpolation-mode": {
+          comment: "https://msdn.microsoft.com/en-us/library/ff521095(v=vs.85).aspx",
+          syntax: "nearest-neighbor | bicubic"
+        },
+        "-ms-grid-column-align": {
+          comment: "add this property first since it uses as fallback for flexbox, https://msdn.microsoft.com/en-us/library/windows/apps/hh466338.aspx",
+          syntax: "start | end | center | stretch"
+        },
+        "-ms-grid-row-align": {
+          comment: "add this property first since it uses as fallback for flexbox, https://msdn.microsoft.com/en-us/library/windows/apps/hh466348.aspx",
+          syntax: "start | end | center | stretch"
+        },
+        "-ms-hyphenate-limit-last": {
+          comment: "misssed old syntax implemented in IE; https://www.w3.org/TR/css-text-4/#hyphenate-line-limits",
+          syntax: "none | always | column | page | spread"
+        },
+        "-webkit-appearance": {
+          comment: "webkit specific keywords",
+          references: [
+            "http://css-infos.net/property/-webkit-appearance"
+          ],
+          syntax: "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-background-clip": {
+          comment: "https://developer.mozilla.org/en/docs/Web/CSS/background-clip",
+          syntax: "[ <box> | border | padding | content | text ]#"
+        },
+        "-webkit-column-break-after": {
+          comment: "added, http://help.dottoro.com/lcrthhhv.php",
+          syntax: "always | auto | avoid"
+        },
+        "-webkit-column-break-before": {
+          comment: "added, http://help.dottoro.com/lcxquvkf.php",
+          syntax: "always | auto | avoid"
+        },
+        "-webkit-column-break-inside": {
+          comment: "added, http://help.dottoro.com/lclhnthl.php",
+          syntax: "always | auto | avoid"
+        },
+        "-webkit-font-smoothing": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/font-smooth",
+          syntax: "auto | none | antialiased | subpixel-antialiased"
+        },
+        "-webkit-mask-box-image": {
+          comment: "missed; https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-box-image",
+          syntax: "[ <url> | <gradient> | none ] [ <length-percentage>{4} <-webkit-mask-box-repeat>{2} ]?"
+        },
+        "-webkit-print-color-adjust": {
+          comment: "missed",
+          references: [
+            "https://developer.mozilla.org/en/docs/Web/CSS/-webkit-print-color-adjust"
+          ],
+          syntax: "economy | exact"
+        },
+        "-webkit-text-security": {
+          comment: "missed; http://help.dottoro.com/lcbkewgt.php",
+          syntax: "none | circle | disc | square"
+        },
+        "-webkit-user-drag": {
+          comment: "missed; http://help.dottoro.com/lcbixvwm.php",
+          syntax: "none | element | auto"
+        },
+        "-webkit-user-select": {
+          comment: "auto is supported by old webkit, https://developer.mozilla.org/en-US/docs/Web/CSS/user-select",
+          syntax: "auto | none | text | all"
+        },
+        "alignment-baseline": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#AlignmentBaselineProperty"
+          ],
+          syntax: "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical"
+        },
+        "background-clip": {
+          comment: "used <bg-clip> from CSS Backgrounds and Borders 4 since it adds new values",
+          references: [
+            "https://github.com/csstree/csstree/issues/190"
+          ],
+          syntax: "<bg-clip>#"
+        },
+        "baseline-shift": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#BaselineShiftProperty"
+          ],
+          syntax: "baseline | sub | super | <svg-length>"
+        },
+        behavior: {
+          comment: "added old IE property https://msdn.microsoft.com/en-us/library/ms530723(v=vs.85).aspx",
+          syntax: "<url>+"
+        },
+        "clip-rule": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/masking.html#ClipRuleProperty"
+          ],
+          syntax: "nonzero | evenodd"
+        },
+        cue: {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<'cue-before'> <'cue-after'>?"
+        },
+        "cue-after": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<url> <decibel>? | none"
+        },
+        "cue-before": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<url> <decibel>? | none"
+        },
+        cursor: {
+          comment: "added legacy keywords: hand, -webkit-grab. -webkit-grabbing, -webkit-zoom-in, -webkit-zoom-out, -moz-grab, -moz-grabbing, -moz-zoom-in, -moz-zoom-out",
+          references: [
+            "https://www.sitepoint.com/css3-cursor-styles/"
+          ],
+          syntax: "[ [ <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 ] ]"
+        },
+        display: {
+          comment: "extended with -ms-flexbox",
+          syntax: "| <-non-standard-display>"
+        },
+        position: {
+          comment: "extended with -webkit-sticky",
+          syntax: "| -webkit-sticky"
+        },
+        "dominant-baseline": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#DominantBaselineProperty"
+          ],
+          syntax: "auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge"
+        },
+        "image-rendering": {
+          comment: "extended with <-non-standard-image-rendering>, added SVG keywords optimizeSpeed and optimizeQuality",
+          references: [
+            "https://developer.mozilla.org/en/docs/Web/CSS/image-rendering",
+            "https://www.w3.org/TR/SVG/painting.html#ImageRenderingProperty"
+          ],
+          syntax: "| optimizeSpeed | optimizeQuality | <-non-standard-image-rendering>"
+        },
+        fill: {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#FillProperty"
+          ],
+          syntax: "<paint>"
+        },
+        "fill-opacity": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#FillProperty"
+          ],
+          syntax: "<number-zero-one>"
+        },
+        "fill-rule": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#FillProperty"
+          ],
+          syntax: "nonzero | evenodd"
+        },
+        filter: {
+          comment: "extend with IE legacy syntaxes",
+          syntax: "| <-ms-filter-function-list>"
+        },
+        "glyph-orientation-horizontal": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#GlyphOrientationHorizontalProperty"
+          ],
+          syntax: "<angle>"
+        },
+        "glyph-orientation-vertical": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#GlyphOrientationVerticalProperty"
+          ],
+          syntax: "<angle>"
+        },
+        kerning: {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#KerningProperty"
+          ],
+          syntax: "auto | <svg-length>"
+        },
+        "letter-spacing": {
+          comment: "fix syntax <length> -> <length-percentage>",
+          references: [
+            "https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/letter-spacing"
+          ],
+          syntax: "normal | <length-percentage>"
+        },
+        marker: {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
+          ],
+          syntax: "none | <url>"
+        },
+        "marker-end": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
+          ],
+          syntax: "none | <url>"
+        },
+        "marker-mid": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
+          ],
+          syntax: "none | <url>"
+        },
+        "marker-start": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
+          ],
+          syntax: "none | <url>"
+        },
+        "max-width": {
+          comment: "extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/max-width",
+          syntax: "| <-non-standard-width>"
+        },
+        width: {
+          references: [
+            "https://developer.mozilla.org/en-US/docs/Web/CSS/width",
+            "https://github.com/csstree/stylelint-validator/issues/29"
+          ],
+          syntax: "| fill | stretch | intrinsic | -moz-max-content | -webkit-max-content | -moz-fit-content | -webkit-fit-content"
+        },
+        "min-width": {
+          comment: "extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
+          syntax: "| <-non-standard-width>"
+        },
+        overflow: {
+          comment: "extend by vendor keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow",
+          syntax: "| <-non-standard-overflow>"
+        },
+        pause: {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<'pause-before'> <'pause-after'>?"
+        },
+        "pause-after": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
+        },
+        "pause-before": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
+        },
+        rest: {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<'rest-before'> <'rest-after'>?"
+        },
+        "rest-after": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
+        },
+        "rest-before": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
+        },
+        "shape-rendering": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#ShapeRenderingPropert"
+          ],
+          syntax: "auto | optimizeSpeed | crispEdges | geometricPrecision"
+        },
+        src: {
+          comment: "added @font-face's src property https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src",
+          syntax: "[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#"
+        },
+        speak: {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "auto | none | normal"
+        },
+        "speak-as": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "normal | spell-out || digits || [ literal-punctuation | no-punctuation ]"
+        },
+        stroke: {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<paint>"
+        },
+        "stroke-dasharray": {
+          comment: "added SVG property; a list of comma and/or white space separated <length>s and <percentage>s",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "none | [ <svg-length>+ ]#"
+        },
+        "stroke-dashoffset": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<svg-length>"
+        },
+        "stroke-linecap": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "butt | round | square"
+        },
+        "stroke-linejoin": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "miter | round | bevel"
+        },
+        "stroke-miterlimit": {
+          comment: "added SVG property (<miterlimit> = <number-one-or-greater>) ",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<number-one-or-greater>"
+        },
+        "stroke-opacity": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<number-zero-one>"
+        },
+        "stroke-width": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
+          ],
+          syntax: "<svg-length>"
+        },
+        "text-anchor": {
+          comment: "added SVG property",
+          references: [
+            "https://www.w3.org/TR/SVG/text.html#TextAlignmentProperties"
+          ],
+          syntax: "start | middle | end"
+        },
+        "unicode-bidi": {
+          comment: "added prefixed keywords https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-bidi",
+          syntax: "| -moz-isolate | -moz-isolate-override | -moz-plaintext | -webkit-isolate | -webkit-isolate-override | -webkit-plaintext"
+        },
+        "unicode-range": {
+          comment: "added missed property https://developer.mozilla.org/en-US/docs/Web/CSS/%40font-face/unicode-range",
+          syntax: "<urange>#"
+        },
+        "voice-balance": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<number> | left | center | right | leftwards | rightwards"
+        },
+        "voice-duration": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "auto | <time>"
+        },
+        "voice-family": {
+          comment: "<name> -> <family-name>, https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "[ [ <family-name> | <generic-voice> ] , ]* [ <family-name> | <generic-voice> ] | preserve"
+        },
+        "voice-pitch": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<frequency> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency> | <semitones> | <percentage> ] ]"
+        },
+        "voice-range": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "<frequency> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency> | <semitones> | <percentage> ] ]"
+        },
+        "voice-rate": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "[ normal | x-slow | slow | medium | fast | x-fast ] || <percentage>"
+        },
+        "voice-stress": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "normal | strong | moderate | none | reduced"
+        },
+        "voice-volume": {
+          comment: "https://www.w3.org/TR/css3-speech/#property-index",
+          syntax: "silent | [ [ x-soft | soft | medium | loud | x-loud ] || <decibel> ]"
+        },
+        "writing-mode": {
+          comment: "extend with SVG keywords",
+          syntax: "| <svg-writing-mode>"
+        }
+      },
+      types: {
+        "-legacy-gradient": {
+          comment: "added collection of legacy gradient syntaxes",
+          syntax: "<-webkit-gradient()> | <-legacy-linear-gradient> | <-legacy-repeating-linear-gradient> | <-legacy-radial-gradient> | <-legacy-repeating-radial-gradient>"
+        },
+        "-legacy-linear-gradient": {
+          comment: "like standard syntax but w/o `to` keyword https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient",
+          syntax: "-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": {
+          comment: "like standard syntax but w/o `to` keyword https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient",
+          syntax: "-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": {
+          comment: "like standard syntax but w/o `to` keyword https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient",
+          syntax: "[ <angle> | <side-or-corner> ]? , <color-stop-list>"
+        },
+        "-legacy-radial-gradient": {
+          comment: "deprecated syntax that implemented by some browsers https://www.w3.org/TR/2011/WD-css3-images-20110908/#radial-gradients",
+          syntax: "-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": {
+          comment: "deprecated syntax that implemented by some browsers https://www.w3.org/TR/2011/WD-css3-images-20110908/#radial-gradients",
+          syntax: "-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": {
+          comment: "deprecated syntax that implemented by some browsers https://www.w3.org/TR/2011/WD-css3-images-20110908/#radial-gradients",
+          syntax: "[ <position> , ]? [ [ [ <-legacy-radial-gradient-shape> || <-legacy-radial-gradient-size> ] | [ <length> | <percentage> ]{2} ] , ]? <color-stop-list>"
+        },
+        "-legacy-radial-gradient-size": {
+          comment: "before a standard it contains 2 extra keywords (`contain` and `cover`) https://www.w3.org/TR/2011/WD-css3-images-20110908/#ltsize",
+          syntax: "closest-side | closest-corner | farthest-side | farthest-corner | contain | cover"
+        },
+        "-legacy-radial-gradient-shape": {
+          comment: "define to double sure it doesn't extends in future https://www.w3.org/TR/2011/WD-css3-images-20110908/#ltshape",
+          syntax: "circle | ellipse"
+        },
+        "-non-standard-font": {
+          comment: "non standard fonts",
+          references: [
+            "https://webkit.org/blog/3709/using-the-system-font-in-web-content/"
+          ],
+          syntax: "-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": {
+          comment: "non standard colors",
+          references: [
+            "http://cssdot.ru/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_CSS/color-i305.html",
+            "https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Mozilla_Color_Preference_Extensions"
+          ],
+          syntax: "-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": {
+          comment: "non-standard keywords http://phrogz.net/tmp/canvas_image_zoom.html",
+          syntax: "optimize-contrast | -moz-crisp-edges | -o-crisp-edges | -webkit-optimize-contrast"
+        },
+        "-non-standard-overflow": {
+          comment: "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow",
+          syntax: "-moz-scrollbars-none | -moz-scrollbars-horizontal | -moz-scrollbars-vertical | -moz-hidden-unscrollable"
+        },
+        "-non-standard-width": {
+          comment: "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
+          syntax: "fill-available | min-intrinsic | intrinsic | -moz-available | -moz-fit-content | -moz-min-content | -moz-max-content | -webkit-min-content | -webkit-max-content"
+        },
+        "-webkit-gradient()": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/ - TODO: simplify when after match algorithm improvement ( [, point, radius | , point] -> [, radius]? , point )",
+          syntax: "-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": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/",
+          syntax: "from( <color> ) | color-stop( [ <number-zero-one> | <percentage> ] , <color> ) | to( <color> )"
+        },
+        "-webkit-gradient-point": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/",
+          syntax: "[ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ]"
+        },
+        "-webkit-gradient-radius": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/",
+          syntax: "<length> | <percentage>"
+        },
+        "-webkit-gradient-type": {
+          comment: "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/",
+          syntax: "linear | radial"
+        },
+        "-webkit-mask-box-repeat": {
+          comment: "missed; https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-box-image",
+          syntax: "repeat | stretch | round"
+        },
+        "-webkit-mask-clip-style": {
+          comment: "missed; there is no enough information about `-webkit-mask-clip` property, but looks like all those keywords are working",
+          syntax: "border | border-box | padding | padding-box | content | content-box | text"
+        },
+        "-ms-filter-function-list": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
+          syntax: "<-ms-filter-function>+"
+        },
+        "-ms-filter-function": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
+          syntax: "<-ms-filter-function-progid> | <-ms-filter-function-legacy>"
+        },
+        "-ms-filter-function-progid": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
+          syntax: "'progid:' [ <ident-token> '.' ]* [ <ident-token> | <function-token> <any-value>? ) ]"
+        },
+        "-ms-filter-function-legacy": {
+          comment: "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
+          syntax: "<ident-token> | <function-token> <any-value>? )"
+        },
+        "-ms-filter": {
+          syntax: "<string>"
+        },
+        age: {
+          comment: "https://www.w3.org/TR/css3-speech/#voice-family",
+          syntax: "child | young | old"
+        },
+        "attr-name": {
+          syntax: "<wq-name>"
+        },
+        "attr-fallback": {
+          syntax: "<any-value>"
+        },
+        "bg-clip": {
+          comment: "missed, https://drafts.csswg.org/css-backgrounds-4/#typedef-bg-clip",
+          syntax: "<box> | border | text"
+        },
+        "border-radius": {
+          comment: "missed, https://drafts.csswg.org/css-backgrounds-3/#the-border-radius",
+          syntax: "<length-percentage>{1,2}"
+        },
+        bottom: {
+          comment: "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
+          syntax: "<length> | auto"
+        },
+        "content-list": {
+          comment: "added attr(), see https://github.com/csstree/csstree/issues/201",
+          syntax: "[ <string> | contents | <image> | <counter> | <quote> | <target> | <leader()> | <attr()> ]+"
+        },
+        "element()": {
+          comment: "https://drafts.csswg.org/css-gcpm/#element-syntax & https://drafts.csswg.org/css-images-4/#element-notation",
+          syntax: "element( <custom-ident> , [ first | start | last | first-except ]? ) | element( <id-selector> )"
+        },
+        "generic-voice": {
+          comment: "https://www.w3.org/TR/css3-speech/#voice-family",
+          syntax: "[ <age>? <gender> <integer>? ]"
+        },
+        gender: {
+          comment: "https://www.w3.org/TR/css3-speech/#voice-family",
+          syntax: "male | female | neutral"
+        },
+        "generic-family": {
+          comment: "added -apple-system",
+          references: [
+            "https://webkit.org/blog/3709/using-the-system-font-in-web-content/"
+          ],
+          syntax: "| -apple-system"
+        },
+        gradient: {
+          comment: "added legacy syntaxes support",
+          syntax: "| <-legacy-gradient>"
+        },
+        "lab()": {
+          comment: "missed; https://www.w3.org/TR/css-color-4/#specifying-lab-lch",
+          syntax: "lab( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )"
+        },
+        "lch()": {
+          comment: "missed; https://www.w3.org/TR/css-color-4/#specifying-lab-lch",
+          syntax: "lch( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )"
+        },
+        left: {
+          comment: "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
+          syntax: "<length> | auto"
+        },
+        "mask-image": {
+          comment: "missed; https://drafts.fxtf.org/css-masking-1/#the-mask-image",
+          syntax: "<mask-reference>#"
+        },
+        "named-color": {
+          comment: "added non standard color names",
+          syntax: "| <-non-standard-color>"
+        },
+        paint: {
+          comment: "used by SVG https://www.w3.org/TR/SVG/painting.html#SpecifyingPaint",
+          syntax: "none | <color> | <url> [ none | <color> ]? | context-fill | context-stroke"
+        },
+        ratio: {
+          comment: "missed, https://drafts.csswg.org/css-values-4/#ratio-value",
+          syntax: "<number [0,\u221E]> [ / <number [0,\u221E]> ]?"
+        },
+        "reversed-counter-name": {
+          comment: "missed; https://drafts.csswg.org/css-lists/#typedef-reversed-counter-name",
+          syntax: "reversed( <counter-name> )"
+        },
+        right: {
+          comment: "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
+          syntax: "<length> | auto"
+        },
+        shape: {
+          comment: "missed spaces in function body and add backwards compatible syntax",
+          syntax: "rect( <top>, <right>, <bottom>, <left> ) | rect( <top> <right> <bottom> <left> )"
+        },
+        "svg-length": {
+          comment: "All coordinates and lengths in SVG can be specified with or without a unit identifier",
+          references: [
+            "https://www.w3.org/TR/SVG11/coords.html#Units"
+          ],
+          syntax: "<percentage> | <length> | <number>"
+        },
+        "svg-writing-mode": {
+          comment: "SVG specific keywords (deprecated for CSS)",
+          references: [
+            "https://developer.mozilla.org/en/docs/Web/CSS/writing-mode",
+            "https://www.w3.org/TR/SVG/text.html#WritingModeProperty"
+          ],
+          syntax: "lr-tb | rl-tb | tb-rl | lr | rl | tb"
+        },
+        top: {
+          comment: "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
+          syntax: "<length> | auto"
+        },
+        "track-group": {
+          comment: "used by old grid-columns and grid-rows syntax v0",
+          syntax: "'(' [ <string>* <track-minmax> <string>* ]+ ')' [ '[' <positive-integer> ']' ]? | <track-minmax>"
+        },
+        "track-list-v0": {
+          comment: "used by old grid-columns and grid-rows syntax v0",
+          syntax: "[ <string>* <track-group> <string>* ]+ | none"
+        },
+        "track-minmax": {
+          comment: "used by old grid-columns and grid-rows syntax v0",
+          syntax: "minmax( <track-breadth> , <track-breadth> ) | auto | <track-breadth> | fit-content"
+        },
+        x: {
+          comment: "missed; not sure we should add it, but no others except `cursor` is using it so it's ok for now; https://drafts.csswg.org/css-ui-3/#cursor",
+          syntax: "<number>"
+        },
+        y: {
+          comment: "missed; not sure we should add it, but no others except `cursor` is using so it's ok for now; https://drafts.csswg.org/css-ui-3/#cursor",
+          syntax: "<number>"
+        },
+        declaration: {
+          comment: "missed, restored by https://drafts.csswg.org/css-syntax",
+          syntax: "<ident-token> : <declaration-value>? [ '!' important ]?"
+        },
+        "declaration-list": {
+          comment: "missed, restored by https://drafts.csswg.org/css-syntax",
+          syntax: "[ <declaration>? ';' ]* <declaration>?"
+        },
+        url: {
+          comment: "https://drafts.csswg.org/css-values-4/#urls",
+          syntax: "url( <string> <url-modifier>* ) | <url-token>"
+        },
+        "url-modifier": {
+          comment: "https://drafts.csswg.org/css-values-4/#typedef-url-modifier",
+          syntax: "<ident> | <function-token> <any-value> )"
+        },
+        "number-zero-one": {
+          syntax: "<number [0,1]>"
+        },
+        "number-one-or-greater": {
+          syntax: "<number [1,\u221E]>"
+        },
+        "positive-integer": {
+          syntax: "<integer [0,\u221E]>"
+        },
+        "-non-standard-display": {
+          syntax: "-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"
+        }
+      }
+    };
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/data-patch.cjs
+var require_data_patch2 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/data-patch.cjs"(exports2, module2) {
+    "use strict";
+    var patch = require_patch2();
+    var patch$1 = patch;
+    module2.exports = patch$1;
+  }
+});
+
+// node_modules/csso/node_modules/mdn-data/css/at-rules.json
+var require_at_rules2 = __commonJS({
+  "node_modules/csso/node_modules/mdn-data/css/at-rules.json"(exports2, module2) {
+    module2.exports = {
+      "@charset": {
+        syntax: '@charset "<charset>";',
+        groups: [
+          "CSS Charsets"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@charset"
+      },
+      "@counter-style": {
+        syntax: "@counter-style <counter-style-name> {\n  [ system: <counter-system>; ] ||\n  [ symbols: <counter-symbols>; ] ||\n  [ additive-symbols: <additive-symbols>; ] ||\n  [ negative: <negative-symbol>; ] ||\n  [ prefix: <prefix>; ] ||\n  [ suffix: <suffix>; ] ||\n  [ range: <range>; ] ||\n  [ pad: <padding>; ] ||\n  [ speak-as: <speak-as>; ] ||\n  [ fallback: <counter-style-name>; ]\n}",
+        interfaces: [
+          "CSSCounterStyleRule"
+        ],
+        groups: [
+          "CSS Counter Styles"
+        ],
+        descriptors: {
+          "additive-symbols": {
+            syntax: "[ <integer> && <symbol> ]#",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          fallback: {
+            syntax: "<counter-style-name>",
+            media: "all",
+            initial: "decimal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          negative: {
+            syntax: "<symbol> <symbol>?",
+            media: "all",
+            initial: '"-" hyphen-minus',
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          pad: {
+            syntax: "<integer> && <symbol>",
+            media: "all",
+            initial: '0 ""',
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          prefix: {
+            syntax: "<symbol>",
+            media: "all",
+            initial: '""',
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          range: {
+            syntax: "[ [ <integer> | infinite ]{2} ]# | auto",
+            media: "all",
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "speak-as": {
+            syntax: "auto | bullets | numbers | words | spell-out | <counter-style-name>",
+            media: "all",
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          suffix: {
+            syntax: "<symbol>",
+            media: "all",
+            initial: '". "',
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          symbols: {
+            syntax: "<symbol>+",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          system: {
+            syntax: "cyclic | numeric | alphabetic | symbolic | additive | [ fixed <integer>? ] | [ extends <counter-style-name> ]",
+            media: "all",
+            initial: "symbolic",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          }
+        },
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@counter-style"
+      },
+      "@document": {
+        syntax: "@document [ <url> | url-prefix(<string>) | domain(<string>) | media-document(<string>) | regexp(<string>) ]# {\n  <group-rule-body>\n}",
+        interfaces: [
+          "CSSGroupingRule",
+          "CSSConditionRule"
+        ],
+        groups: [
+          "CSS Conditional Rules"
+        ],
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@document"
+      },
+      "@font-face": {
+        syntax: "@font-face {\n  [ font-family: <family-name>; ] ||\n  [ src: <src>; ] ||\n  [ unicode-range: <unicode-range>; ] ||\n  [ font-variant: <font-variant>; ] ||\n  [ font-feature-settings: <font-feature-settings>; ] ||\n  [ font-variation-settings: <font-variation-settings>; ] ||\n  [ font-stretch: <font-stretch>; ] ||\n  [ font-weight: <font-weight>; ] ||\n  [ font-style: <font-style>; ] ||\n  [ size-adjust: <size-adjust>; ] ||\n  [ ascent-override: <ascent-override>; ] ||\n  [ descent-override: <descent-override>; ] ||\n  [ line-gap-override: <line-gap-override>; ]\n}",
+        interfaces: [
+          "CSSFontFaceRule"
+        ],
+        groups: [
+          "CSS Fonts"
+        ],
+        descriptors: {
+          "ascent-override": {
+            syntax: "normal | <percentage>",
+            media: "all",
+            initial: "normal",
+            percentages: "asSpecified",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "experimental"
+          },
+          "descent-override": {
+            syntax: "normal | <percentage>",
+            media: "all",
+            initial: "normal",
+            percentages: "asSpecified",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "experimental"
+          },
+          "font-display": {
+            syntax: "[ auto | block | swap | fallback | optional ]",
+            media: "visual",
+            percentages: "no",
+            initial: "auto",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "experimental"
+          },
+          "font-family": {
+            syntax: "<family-name>",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "font-feature-settings": {
+            syntax: "normal | <feature-tag-value>#",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "font-variation-settings": {
+            syntax: "normal | [ <string> <number> ]#",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "font-stretch": {
+            syntax: "<font-stretch-absolute>{1,2}",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "font-style": {
+            syntax: "normal | italic | oblique <angle>{0,2}",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "font-weight": {
+            syntax: "<font-weight-absolute>{1,2}",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "font-variant": {
+            syntax: "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 ]",
+            media: "all",
+            initial: "normal",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "line-gap-override": {
+            syntax: "normal | <percentage>",
+            media: "all",
+            initial: "normal",
+            percentages: "asSpecified",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "experimental"
+          },
+          "size-adjust": {
+            syntax: "<percentage>",
+            media: "all",
+            initial: "100%",
+            percentages: "asSpecified",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "experimental"
+          },
+          src: {
+            syntax: "[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "unicode-range": {
+            syntax: "<unicode-range>#",
+            media: "all",
+            initial: "U+0-10FFFF",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          }
+        },
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@font-face"
+      },
+      "@font-feature-values": {
+        syntax: "@font-feature-values <family-name># {\n  <feature-value-block-list>\n}",
+        interfaces: [
+          "CSSFontFeatureValuesRule"
+        ],
+        groups: [
+          "CSS Fonts"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@font-feature-values"
+      },
+      "@import": {
+        syntax: "@import [ <string> | <url> ]\n        [ layer | layer(<layer-name>) ]?\n        [ supports( [ <supports-condition> | <declaration> ] ) ]?\n        <media-query-list>? ;",
+        groups: [
+          "CSS Conditional Rules",
+          "Media Queries"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@import"
+      },
+      "@keyframes": {
+        syntax: "@keyframes <keyframes-name> {\n  <keyframe-block-list>\n}",
+        interfaces: [
+          "CSSKeyframeRule",
+          "CSSKeyframesRule"
+        ],
+        groups: [
+          "CSS Animations"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@keyframes"
+      },
+      "@layer": {
+        syntax: "@layer [ <layer-name># | <layer-name>?  {\n  <stylesheet>\n} ]",
+        interfaces: [
+          "CSSLayerBlockRule",
+          "CSSLayerStatementRule"
+        ],
+        groups: [
+          "CSS Cascading and Inheritance"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@layer"
+      },
+      "@media": {
+        syntax: "@media <media-query-list> {\n  <group-rule-body>\n}",
+        interfaces: [
+          "CSSGroupingRule",
+          "CSSConditionRule",
+          "CSSMediaRule",
+          "CSSCustomMediaRule"
+        ],
+        groups: [
+          "CSS Conditional Rules",
+          "Media Queries"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@media"
+      },
+      "@namespace": {
+        syntax: "@namespace <namespace-prefix>? [ <string> | <url> ];",
+        groups: [
+          "CSS Namespaces"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@namespace"
+      },
+      "@page": {
+        syntax: "@page <page-selector-list> {\n  <page-body>\n}",
+        interfaces: [
+          "CSSPageRule"
+        ],
+        groups: [
+          "CSS Pages"
+        ],
+        descriptors: {
+          bleed: {
+            syntax: "auto | <length>",
+            media: [
+              "visual",
+              "paged"
+            ],
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          marks: {
+            syntax: "none | [ crop || cross ]",
+            media: [
+              "visual",
+              "paged"
+            ],
+            initial: "none",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          size: {
+            syntax: "<length>{1,2} | auto | [ <page-size> || [ portrait | landscape ] ]",
+            media: [
+              "visual",
+              "paged"
+            ],
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecifiedRelativeToAbsoluteLengths",
+            order: "orderOfAppearance",
+            status: "standard"
+          }
+        },
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@page"
+      },
+      "@property": {
+        syntax: "@property <custom-property-name> {\n  <declaration-list>\n}",
+        interfaces: [
+          "CSS",
+          "CSSPropertyRule"
+        ],
+        groups: [
+          "CSS Houdini"
+        ],
+        descriptors: {
+          syntax: {
+            syntax: "<string>",
+            media: "all",
+            percentages: "no",
+            initial: "n/a (required)",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "experimental"
+          },
+          inherits: {
+            syntax: "true | false",
+            media: "all",
+            percentages: "no",
+            initial: "auto",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "experimental"
+          },
+          "initial-value": {
+            syntax: "<string>",
+            media: "all",
+            initial: "n/a (required)",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "experimental"
+          }
+        },
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@property"
+      },
+      "@scroll-timeline": {
+        syntax: "@scroll-timeline <timeline-name> { <declaration-list> }",
+        interfaces: [
+          "ScrollTimeline"
+        ],
+        groups: [
+          "CSS Animations"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@scroll-timeline"
+      },
+      "@supports": {
+        syntax: "@supports <supports-condition> {\n  <group-rule-body>\n}",
+        interfaces: [
+          "CSSGroupingRule",
+          "CSSConditionRule",
+          "CSSSupportsRule"
+        ],
+        groups: [
+          "CSS Conditional Rules"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@supports"
+      },
+      "@viewport": {
+        syntax: "@viewport {\n  <group-rule-body>\n}",
+        interfaces: [
+          "CSSViewportRule"
+        ],
+        groups: [
+          "CSS Device Adaptation"
+        ],
+        descriptors: {
+          height: {
+            syntax: "<viewport-length>{1,2}",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: [
+              "min-height",
+              "max-height"
+            ],
+            percentages: [
+              "min-height",
+              "max-height"
+            ],
+            computed: [
+              "min-height",
+              "max-height"
+            ],
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          "max-height": {
+            syntax: "<viewport-length>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToHeightOfInitialViewport",
+            computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "max-width": {
+            syntax: "<viewport-length>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToWidthOfInitialViewport",
+            computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "max-zoom": {
+            syntax: "auto | <number> | <percentage>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "the zoom factor itself",
+            computed: "autoNonNegativeOrPercentage",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "min-height": {
+            syntax: "<viewport-length>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToHeightOfInitialViewport",
+            computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "min-width": {
+            syntax: "<viewport-length>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToWidthOfInitialViewport",
+            computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "min-zoom": {
+            syntax: "auto | <number> | <percentage>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "the zoom factor itself",
+            computed: "autoNonNegativeOrPercentage",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          orientation: {
+            syntax: "auto | portrait | landscape",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "referToSizeOfBoundingBox",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "user-zoom": {
+            syntax: "zoom | fixed",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "zoom",
+            percentages: "referToSizeOfBoundingBox",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          "viewport-fit": {
+            syntax: "auto | contain | cover",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "no",
+            computed: "asSpecified",
+            order: "uniqueOrder",
+            status: "standard"
+          },
+          width: {
+            syntax: "<viewport-length>{1,2}",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: [
+              "min-width",
+              "max-width"
+            ],
+            percentages: [
+              "min-width",
+              "max-width"
+            ],
+            computed: [
+              "min-width",
+              "max-width"
+            ],
+            order: "orderOfAppearance",
+            status: "standard"
+          },
+          zoom: {
+            syntax: "auto | <number> | <percentage>",
+            media: [
+              "visual",
+              "continuous"
+            ],
+            initial: "auto",
+            percentages: "the zoom factor itself",
+            computed: "autoNonNegativeOrPercentage",
+            order: "uniqueOrder",
+            status: "standard"
+          }
+        },
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/@viewport"
+      }
+    };
+  }
+});
+
+// node_modules/csso/node_modules/mdn-data/css/properties.json
+var require_properties2 = __commonJS({
+  "node_modules/csso/node_modules/mdn-data/css/properties.json"(exports2, module2) {
+    module2.exports = {
+      "--*": {
+        syntax: "<declaration-value>",
+        media: "all",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Variables"
+        ],
+        initial: "seeProse",
+        appliesto: "allElements",
+        computed: "asSpecifiedWithVarsSubstituted",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/--*"
+      },
+      "-ms-accelerator": {
+        syntax: "false | true",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "false",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-accelerator"
+      },
+      "-ms-block-progression": {
+        syntax: "tb | rl | bt | lr",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "tb",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-block-progression"
+      },
+      "-ms-content-zoom-chaining": {
+        syntax: "none | chained",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-chaining"
+      },
+      "-ms-content-zooming": {
+        syntax: "none | zoom",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "zoomForTheTopLevelNoneForTheRest",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zooming"
+      },
+      "-ms-content-zoom-limit": {
+        syntax: "<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: [
+          "-ms-content-zoom-limit-max",
+          "-ms-content-zoom-limit-min"
+        ],
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-content-zoom-limit-max",
+          "-ms-content-zoom-limit-min"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-content-zoom-limit-max",
+          "-ms-content-zoom-limit-min"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit"
+      },
+      "-ms-content-zoom-limit-max": {
+        syntax: "<percentage>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "maxZoomFactor",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "400%",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit-max"
+      },
+      "-ms-content-zoom-limit-min": {
+        syntax: "<percentage>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "minZoomFactor",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "100%",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-limit-min"
+      },
+      "-ms-content-zoom-snap": {
+        syntax: "<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-content-zoom-snap-type",
+          "-ms-content-zoom-snap-points"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-content-zoom-snap-type",
+          "-ms-content-zoom-snap-points"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap"
+      },
+      "-ms-content-zoom-snap-points": {
+        syntax: "snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "snapInterval(0%, 100%)",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap-points"
+      },
+      "-ms-content-zoom-snap-type": {
+        syntax: "none | proximity | mandatory",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-content-zoom-snap-type"
+      },
+      "-ms-filter": {
+        syntax: "<string>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: '""',
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-filter"
+      },
+      "-ms-flow-from": {
+        syntax: "[ none | <custom-ident> ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-flow-from"
+      },
+      "-ms-flow-into": {
+        syntax: "[ none | <custom-ident> ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "iframeElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-flow-into"
+      },
+      "-ms-grid-columns": {
+        syntax: "none | <track-list> | <auto-track-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpcDifferenceLpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-grid-columns"
+      },
+      "-ms-grid-rows": {
+        syntax: "none | <track-list> | <auto-track-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpcDifferenceLpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-grid-rows"
+      },
+      "-ms-high-contrast-adjust": {
+        syntax: "auto | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-high-contrast-adjust"
+      },
+      "-ms-hyphenate-limit-chars": {
+        syntax: "auto | <integer>{1,3}",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-chars"
+      },
+      "-ms-hyphenate-limit-lines": {
+        syntax: "no-limit | <integer>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "no-limit",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-lines"
+      },
+      "-ms-hyphenate-limit-zone": {
+        syntax: "<percentage> | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "referToLineBoxWidth",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "0",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-hyphenate-limit-zone"
+      },
+      "-ms-ime-align": {
+        syntax: "auto | after",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-ime-align"
+      },
+      "-ms-overflow-style": {
+        syntax: "auto | none | scrollbar | -ms-autohiding-scrollbar",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-overflow-style"
+      },
+      "-ms-scrollbar-3dlight-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "dependsOnUserAgent",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-3dlight-color"
+      },
+      "-ms-scrollbar-arrow-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ButtonText",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-arrow-color"
+      },
+      "-ms-scrollbar-base-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "dependsOnUserAgent",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-base-color"
+      },
+      "-ms-scrollbar-darkshadow-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ThreeDDarkShadow",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-darkshadow-color"
+      },
+      "-ms-scrollbar-face-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ThreeDFace",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-face-color"
+      },
+      "-ms-scrollbar-highlight-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ThreeDHighlight",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-highlight-color"
+      },
+      "-ms-scrollbar-shadow-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "ThreeDDarkShadow",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-shadow-color"
+      },
+      "-ms-scrollbar-track-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "Scrollbar",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-track-color"
+      },
+      "-ms-scroll-chaining": {
+        syntax: "chained | none",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "chained",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-chaining"
+      },
+      "-ms-scroll-limit": {
+        syntax: "<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-scroll-limit-x-min",
+          "-ms-scroll-limit-y-min",
+          "-ms-scroll-limit-x-max",
+          "-ms-scroll-limit-y-max"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-scroll-limit-x-min",
+          "-ms-scroll-limit-y-min",
+          "-ms-scroll-limit-x-max",
+          "-ms-scroll-limit-y-max"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit"
+      },
+      "-ms-scroll-limit-x-max": {
+        syntax: "auto | <length>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-x-max"
+      },
+      "-ms-scroll-limit-x-min": {
+        syntax: "<length>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "0",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-x-min"
+      },
+      "-ms-scroll-limit-y-max": {
+        syntax: "auto | <length>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-y-max"
+      },
+      "-ms-scroll-limit-y-min": {
+        syntax: "<length>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "0",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-limit-y-min"
+      },
+      "-ms-scroll-rails": {
+        syntax: "none | railed",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "railed",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-rails"
+      },
+      "-ms-scroll-snap-points-x": {
+        syntax: "snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "snapInterval(0px, 100%)",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-points-x"
+      },
+      "-ms-scroll-snap-points-y": {
+        syntax: "snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "snapInterval(0px, 100%)",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-points-y"
+      },
+      "-ms-scroll-snap-type": {
+        syntax: "none | proximity | mandatory",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-type"
+      },
+      "-ms-scroll-snap-x": {
+        syntax: "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-scroll-snap-type",
+          "-ms-scroll-snap-points-x"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-scroll-snap-type",
+          "-ms-scroll-snap-points-x"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-x"
+      },
+      "-ms-scroll-snap-y": {
+        syntax: "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: [
+          "-ms-scroll-snap-type",
+          "-ms-scroll-snap-points-y"
+        ],
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "-ms-scroll-snap-type",
+          "-ms-scroll-snap-points-y"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-snap-y"
+      },
+      "-ms-scroll-translation": {
+        syntax: "none | vertical-to-horizontal",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-scroll-translation"
+      },
+      "-ms-text-autospace": {
+        syntax: "none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-text-autospace"
+      },
+      "-ms-touch-select": {
+        syntax: "grippers | none",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "grippers",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-touch-select"
+      },
+      "-ms-user-select": {
+        syntax: "none | element | text",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "text",
+        appliesto: "nonReplacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-user-select"
+      },
+      "-ms-wrap-flow": {
+        syntax: "auto | both | start | end | maximum | clear",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-flow"
+      },
+      "-ms-wrap-margin": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "0",
+        appliesto: "exclusionElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-margin"
+      },
+      "-ms-wrap-through": {
+        syntax: "wrap | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "wrap",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-ms-wrap-through"
+      },
+      "-moz-appearance": {
+        syntax: "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",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "noneButOverriddenInUserAgentCSS",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/appearance"
+      },
+      "-moz-binding": {
+        syntax: "<url> | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElementsExceptGeneratedContentOrPseudoElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-binding"
+      },
+      "-moz-border-bottom-colors": {
+        syntax: "<color>+ | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-bottom-colors"
+      },
+      "-moz-border-left-colors": {
+        syntax: "<color>+ | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-left-colors"
+      },
+      "-moz-border-right-colors": {
+        syntax: "<color>+ | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-right-colors"
+      },
+      "-moz-border-top-colors": {
+        syntax: "<color>+ | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-border-top-colors"
+      },
+      "-moz-context-properties": {
+        syntax: "none | [ fill | fill-opacity | stroke | stroke-opacity ]#",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElementsThatCanReferenceImages",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-context-properties"
+      },
+      "-moz-float-edge": {
+        syntax: "border-box | content-box | margin-box | padding-box",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "content-box",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-float-edge"
+      },
+      "-moz-force-broken-image-icon": {
+        syntax: "0 | 1",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "images",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-force-broken-image-icon"
+      },
+      "-moz-image-region": {
+        syntax: "<shape> | auto",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "auto",
+        appliesto: "xulImageElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-image-region"
+      },
+      "-moz-orient": {
+        syntax: "inline | block | horizontal | vertical",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "inline",
+        appliesto: "anyElementEffectOnProgressAndMeter",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-orient"
+      },
+      "-moz-outline-radius": {
+        syntax: "<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "-moz-outline-radius-topleft",
+          "-moz-outline-radius-topright",
+          "-moz-outline-radius-bottomright",
+          "-moz-outline-radius-bottomleft"
+        ],
+        percentages: [
+          "-moz-outline-radius-topleft",
+          "-moz-outline-radius-topright",
+          "-moz-outline-radius-bottomright",
+          "-moz-outline-radius-bottomleft"
+        ],
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: [
+          "-moz-outline-radius-topleft",
+          "-moz-outline-radius-topright",
+          "-moz-outline-radius-bottomright",
+          "-moz-outline-radius-bottomleft"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "-moz-outline-radius-topleft",
+          "-moz-outline-radius-topright",
+          "-moz-outline-radius-bottomright",
+          "-moz-outline-radius-bottomleft"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius"
+      },
+      "-moz-outline-radius-bottomleft": {
+        syntax: "<outline-radius>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomleft"
+      },
+      "-moz-outline-radius-bottomright": {
+        syntax: "<outline-radius>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomright"
+      },
+      "-moz-outline-radius-topleft": {
+        syntax: "<outline-radius>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topleft"
+      },
+      "-moz-outline-radius-topright": {
+        syntax: "<outline-radius>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topright"
+      },
+      "-moz-stack-sizing": {
+        syntax: "ignore | stretch-to-fit",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "stretch-to-fit",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-stack-sizing"
+      },
+      "-moz-text-blink": {
+        syntax: "none | blink",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-text-blink"
+      },
+      "-moz-user-focus": {
+        syntax: "ignore | normal | select-after | select-before | select-menu | select-same | select-all | none",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-user-focus"
+      },
+      "-moz-user-input": {
+        syntax: "auto | none | enabled | disabled",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-user-input"
+      },
+      "-moz-user-modify": {
+        syntax: "read-only | read-write | write-only",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "read-only",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-user-modify"
+      },
+      "-moz-window-dragging": {
+        syntax: "drag | no-drag",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "drag",
+        appliesto: "allElementsCreatingNativeWindows",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-window-dragging"
+      },
+      "-moz-window-shadow": {
+        syntax: "default | menu | tooltip | sheet | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "default",
+        appliesto: "allElementsCreatingNativeWindows",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-moz-window-shadow"
+      },
+      "-webkit-appearance": {
+        syntax: "none | button | button-bevel | 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 | 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",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "noneButOverriddenInUserAgentCSS",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/appearance"
+      },
+      "-webkit-border-before": {
+        syntax: "<'border-width'> || <'border-style'> || <color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: [
+          "-webkit-border-before-width"
+        ],
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-border-before"
+      },
+      "-webkit-border-before-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "nonstandard"
+      },
+      "-webkit-border-before-style": {
+        syntax: "<'border-style'>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard"
+      },
+      "-webkit-border-before-width": {
+        syntax: "<'border-width'>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "nonstandard"
+      },
+      "-webkit-box-reflect": {
+        syntax: "[ above | below | right | left ]? <length>? <image>?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-box-reflect"
+      },
+      "-webkit-line-clamp": {
+        syntax: "none | <integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions",
+          "CSS Overflow"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-line-clamp"
+      },
+      "-webkit-mask": {
+        syntax: "[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <box> | border | padding | content | text ] || [ <box> | border | padding | content ] ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: [
+          "-webkit-mask-image",
+          "-webkit-mask-repeat",
+          "-webkit-mask-attachment",
+          "-webkit-mask-position",
+          "-webkit-mask-origin",
+          "-webkit-mask-clip"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "-webkit-mask-image",
+          "-webkit-mask-repeat",
+          "-webkit-mask-attachment",
+          "-webkit-mask-position",
+          "-webkit-mask-origin",
+          "-webkit-mask-clip"
+        ],
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask"
+      },
+      "-webkit-mask-attachment": {
+        syntax: "<attachment>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "scroll",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-attachment"
+      },
+      "-webkit-mask-clip": {
+        syntax: "[ <box> | border | padding | content | text ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "border",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-clip"
+      },
+      "-webkit-mask-composite": {
+        syntax: "<composite-style>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "source-over",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-composite"
+      },
+      "-webkit-mask-image": {
+        syntax: "<mask-reference>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "absoluteURIOrNone",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-image"
+      },
+      "-webkit-mask-origin": {
+        syntax: "[ <box> | border | padding | content ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "padding",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-origin"
+      },
+      "-webkit-mask-position": {
+        syntax: "<position>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToSizeOfElement",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "0% 0%",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrPercentage",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-position"
+      },
+      "-webkit-mask-position-x": {
+        syntax: "[ <length-percentage> | left | center | right ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToSizeOfElement",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "0%",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrPercentage",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-x"
+      },
+      "-webkit-mask-position-y": {
+        syntax: "[ <length-percentage> | top | center | bottom ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToSizeOfElement",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "0%",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrPercentage",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-y"
+      },
+      "-webkit-mask-repeat": {
+        syntax: "<repeat-style>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "repeat",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-repeat"
+      },
+      "-webkit-mask-repeat-x": {
+        syntax: "repeat | no-repeat | space | round",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "repeat",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-x"
+      },
+      "-webkit-mask-repeat-y": {
+        syntax: "repeat | no-repeat | space | round",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "repeat",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrPercentage",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-y"
+      },
+      "-webkit-mask-size": {
+        syntax: "<bg-size>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "relativeToBackgroundPositioningArea",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "auto auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-size"
+      },
+      "-webkit-overflow-scrolling": {
+        syntax: "auto | touch",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-overflow-scrolling"
+      },
+      "-webkit-tap-highlight-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "black",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-tap-highlight-color"
+      },
+      "-webkit-text-fill-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-fill-color"
+      },
+      "-webkit-text-stroke": {
+        syntax: "<length> || <color>",
+        media: "visual",
+        inherited: true,
+        animationType: [
+          "-webkit-text-stroke-width",
+          "-webkit-text-stroke-color"
+        ],
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: [
+          "-webkit-text-stroke-width",
+          "-webkit-text-stroke-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "-webkit-text-stroke-width",
+          "-webkit-text-stroke-color"
+        ],
+        order: "canonicalOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke"
+      },
+      "-webkit-text-stroke-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-color"
+      },
+      "-webkit-text-stroke-width": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "absoluteLength",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-width"
+      },
+      "-webkit-touch-callout": {
+        syntax: "default | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "default",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/-webkit-touch-callout"
+      },
+      "-webkit-user-modify": {
+        syntax: "read-only | read-write | read-write-plaintext-only",
+        media: "interactive",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "WebKit Extensions"
+        ],
+        initial: "read-only",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard"
+      },
+      "accent-color": {
+        syntax: "auto | <color>",
+        media: "interactive",
+        inherited: true,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asAutoOrColor",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/accent-color"
+      },
+      "align-content": {
+        syntax: "normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "multilineFlexContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-content"
+      },
+      "align-items": {
+        syntax: "normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-items"
+      },
+      "align-self": {
+        syntax: "auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "auto",
+        appliesto: "flexItemsGridItemsAndAbsolutelyPositionedBoxes",
+        computed: "autoOnAbsolutelyPositionedElementsValueOfAlignItemsOnParent",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-self"
+      },
+      "align-tracks": {
+        syntax: "[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "normal",
+        appliesto: "gridContainersWithMasonryLayoutInTheirBlockAxis",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/align-tracks"
+      },
+      all: {
+        syntax: "initial | inherit | unset | revert | revert-layer",
+        media: "noPracticalMedia",
+        inherited: false,
+        animationType: "eachOfShorthandPropertiesExceptUnicodeBiDiAndDirection",
+        percentages: "no",
+        groups: [
+          "CSS Miscellaneous"
+        ],
+        initial: "noPracticalInitialValue",
+        appliesto: "allElements",
+        computed: "asSpecifiedAppliesToEachProperty",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/all"
+      },
+      animation: {
+        syntax: "<single-animation>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: [
+          "animation-name",
+          "animation-duration",
+          "animation-timing-function",
+          "animation-delay",
+          "animation-iteration-count",
+          "animation-direction",
+          "animation-fill-mode",
+          "animation-play-state",
+          "animation-timeline"
+        ],
+        appliesto: "allElementsAndPseudos",
+        computed: [
+          "animation-name",
+          "animation-duration",
+          "animation-timing-function",
+          "animation-delay",
+          "animation-direction",
+          "animation-iteration-count",
+          "animation-fill-mode",
+          "animation-play-state",
+          "animation-timeline"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation"
+      },
+      "animation-delay": {
+        syntax: "<time>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "0s",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-delay"
+      },
+      "animation-direction": {
+        syntax: "<single-animation-direction>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "normal",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-direction"
+      },
+      "animation-duration": {
+        syntax: "<time>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "0s",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-duration"
+      },
+      "animation-fill-mode": {
+        syntax: "<single-animation-fill-mode>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "none",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode"
+      },
+      "animation-iteration-count": {
+        syntax: "<single-animation-iteration-count>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "1",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count"
+      },
+      "animation-name": {
+        syntax: "[ none | <keyframes-name> ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "none",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-name"
+      },
+      "animation-play-state": {
+        syntax: "<single-animation-play-state>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "running",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-play-state"
+      },
+      "animation-timing-function": {
+        syntax: "<easing-function>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "ease",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-timing-function"
+      },
+      "animation-timeline": {
+        syntax: "<single-animation-timeline>#",
+        media: "visual",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Animations"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "listEachItemIdentifyerOrNoneAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/animation-timeline"
+      },
+      appearance: {
+        syntax: "none | auto | textfield | menulist-button | <compat-auto>",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/appearance"
+      },
+      "aspect-ratio": {
+        syntax: "auto | <ratio>",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElementsExceptInlineBoxesAndInternalRubyOrTableBoxes",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/aspect-ratio"
+      },
+      azimuth: {
+        syntax: "<angle> | [ [ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards",
+        media: "aural",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Speech"
+        ],
+        initial: "center",
+        appliesto: "allElements",
+        computed: "normalizedAngle",
+        order: "orderOfAppearance",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/azimuth"
+      },
+      "backdrop-filter": {
+        syntax: "none | <filter-function-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "filterList",
+        percentages: "no",
+        groups: [
+          "Filter Effects"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/backdrop-filter"
+      },
+      "backface-visibility": {
+        syntax: "visible | hidden",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "visible",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/backface-visibility"
+      },
+      background: {
+        syntax: "[ <bg-layer> , ]* <final-bg-layer>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "background-color",
+          "background-image",
+          "background-clip",
+          "background-position",
+          "background-size",
+          "background-repeat",
+          "background-attachment"
+        ],
+        percentages: [
+          "background-position",
+          "background-size"
+        ],
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "background-image",
+          "background-position",
+          "background-size",
+          "background-repeat",
+          "background-origin",
+          "background-clip",
+          "background-attachment",
+          "background-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "background-image",
+          "background-position",
+          "background-size",
+          "background-repeat",
+          "background-origin",
+          "background-clip",
+          "background-attachment",
+          "background-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background"
+      },
+      "background-attachment": {
+        syntax: "<attachment>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "scroll",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-attachment"
+      },
+      "background-blend-mode": {
+        syntax: "<blend-mode>#",
+        media: "none",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Compositing and Blending"
+        ],
+        initial: "normal",
+        appliesto: "allElementsSVGContainerGraphicsAndGraphicsReferencingElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-blend-mode"
+      },
+      "background-clip": {
+        syntax: "<box>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "border-box",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-clip"
+      },
+      "background-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "transparent",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-color"
+      },
+      "background-image": {
+        syntax: "<bg-image>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-image"
+      },
+      "background-origin": {
+        syntax: "<box>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "padding-box",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-origin"
+      },
+      "background-position": {
+        syntax: "<bg-position>#",
+        media: "visual",
+        inherited: false,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "referToSizeOfBackgroundPositioningAreaMinusBackgroundImageSize",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0% 0%",
+        appliesto: "allElements",
+        computed: [
+          "background-position-x",
+          "background-position-y"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-position"
+      },
+      "background-position-x": {
+        syntax: "[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToWidthOfBackgroundPositioningAreaMinusBackgroundImageHeight",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0%",
+        appliesto: "allElements",
+        computed: "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-position-x"
+      },
+      "background-position-y": {
+        syntax: "[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToHeightOfBackgroundPositioningAreaMinusBackgroundImageHeight",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0%",
+        appliesto: "allElements",
+        computed: "listEachItemConsistingOfAbsoluteLengthPercentageAndOrigin",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-position-y"
+      },
+      "background-repeat": {
+        syntax: "<repeat-style>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "repeat",
+        appliesto: "allElements",
+        computed: "listEachItemHasTwoKeywordsOnePerDimension",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-repeat"
+      },
+      "background-size": {
+        syntax: "<bg-size>#",
+        media: "visual",
+        inherited: false,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "relativeToBackgroundPositioningArea",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "auto auto",
+        appliesto: "allElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/background-size"
+      },
+      "block-overflow": {
+        syntax: "clip | ellipsis | <string>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "clip",
+        appliesto: "blockContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental"
+      },
+      "block-size": {
+        syntax: "<'width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "blockSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsWidthAndHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/block-size"
+      },
+      border: {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-color",
+          "border-style",
+          "border-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "border-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "border-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border"
+      },
+      "border-block": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block"
+      },
+      "border-block-color": {
+        syntax: "<'border-top-color'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-color"
+      },
+      "border-block-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-style"
+      },
+      "border-block-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-width"
+      },
+      "border-block-end": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-block-end-color",
+          "border-block-end-style",
+          "border-block-end-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-end"
+      },
+      "border-block-end-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-end-color"
+      },
+      "border-block-end-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-end-style"
+      },
+      "border-block-end-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-end-width"
+      },
+      "border-block-start": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-block-start-color",
+          "border-block-start-style",
+          "border-block-start-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "border-block-start-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-start"
+      },
+      "border-block-start-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-start-color"
+      },
+      "border-block-start-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-start-style"
+      },
+      "border-block-start-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-block-start-width"
+      },
+      "border-bottom": {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-bottom-color",
+          "border-bottom-style",
+          "border-bottom-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-bottom-width",
+          "border-bottom-style",
+          "border-bottom-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-bottom-width",
+          "border-bottom-style",
+          "border-bottom-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom"
+      },
+      "border-bottom-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-color"
+      },
+      "border-bottom-left-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius"
+      },
+      "border-bottom-right-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius"
+      },
+      "border-bottom-style": {
+        syntax: "<line-style>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-style"
+      },
+      "border-bottom-width": {
+        syntax: "<line-width>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthOr0IfBorderBottomStyleNoneOrHidden",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-bottom-width"
+      },
+      "border-collapse": {
+        syntax: "collapse | separate",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "separate",
+        appliesto: "tableElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-collapse"
+      },
+      "border-color": {
+        syntax: "<color>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-bottom-color",
+          "border-left-color",
+          "border-right-color",
+          "border-top-color"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-color",
+          "border-right-color",
+          "border-bottom-color",
+          "border-left-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-bottom-color",
+          "border-left-color",
+          "border-right-color",
+          "border-top-color"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-color"
+      },
+      "border-end-end-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius"
+      },
+      "border-end-start-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius"
+      },
+      "border-image": {
+        syntax: "<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: [
+          "border-image-slice",
+          "border-image-width"
+        ],
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-image-source",
+          "border-image-slice",
+          "border-image-width",
+          "border-image-outset",
+          "border-image-repeat"
+        ],
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: [
+          "border-image-outset",
+          "border-image-repeat",
+          "border-image-slice",
+          "border-image-source",
+          "border-image-width"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image"
+      },
+      "border-image-outset": {
+        syntax: "[ <length> | <number> ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-outset"
+      },
+      "border-image-repeat": {
+        syntax: "[ stretch | repeat | round | space ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "stretch",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-repeat"
+      },
+      "border-image-slice": {
+        syntax: "<number-percentage>{1,4} && fill?",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "referToSizeOfBorderImage",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "100%",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "oneToFourPercentagesOrAbsoluteLengthsPlusFill",
+        order: "percentagesOrLengthsFollowedByFill",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-slice"
+      },
+      "border-image-source": {
+        syntax: "none | <image>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "noneOrImageWithAbsoluteURI",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-source"
+      },
+      "border-image-width": {
+        syntax: "[ <length-percentage> | <number> | auto ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "referToWidthOrHeightOfBorderImageArea",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "1",
+        appliesto: "allElementsExceptTableElementsWhenCollapse",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-image-width"
+      },
+      "border-inline": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline"
+      },
+      "border-inline-end": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-inline-end-color",
+          "border-inline-end-style",
+          "border-inline-end-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "border-inline-end-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-end"
+      },
+      "border-inline-color": {
+        syntax: "<'border-top-color'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-color"
+      },
+      "border-inline-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-style"
+      },
+      "border-inline-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-width"
+      },
+      "border-inline-end-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color"
+      },
+      "border-inline-end-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style"
+      },
+      "border-inline-end-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width"
+      },
+      "border-inline-start": {
+        syntax: "<'border-top-width'> || <'border-top-style'> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-inline-start-color",
+          "border-inline-start-style",
+          "border-inline-start-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: [
+          "border-width",
+          "border-style",
+          "color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-width",
+          "border-style",
+          "border-inline-start-color"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-start"
+      },
+      "border-inline-start-color": {
+        syntax: "<'border-top-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color"
+      },
+      "border-inline-start-style": {
+        syntax: "<'border-top-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style"
+      },
+      "border-inline-start-width": {
+        syntax: "<'border-top-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthZeroIfBorderStyleNoneOrHidden",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width"
+      },
+      "border-left": {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-left-color",
+          "border-left-style",
+          "border-left-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-left-width",
+          "border-left-style",
+          "border-left-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-left-width",
+          "border-left-style",
+          "border-left-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-left"
+      },
+      "border-left-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-left-color"
+      },
+      "border-left-style": {
+        syntax: "<line-style>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-left-style"
+      },
+      "border-left-width": {
+        syntax: "<line-width>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthOr0IfBorderLeftStyleNoneOrHidden",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-left-width"
+      },
+      "border-radius": {
+        syntax: "<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-top-left-radius",
+          "border-top-right-radius",
+          "border-bottom-right-radius",
+          "border-bottom-left-radius"
+        ],
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-left-radius",
+          "border-top-right-radius",
+          "border-bottom-right-radius",
+          "border-bottom-left-radius"
+        ],
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: [
+          "border-bottom-left-radius",
+          "border-bottom-right-radius",
+          "border-top-left-radius",
+          "border-top-right-radius"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-radius"
+      },
+      "border-right": {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-right-color",
+          "border-right-style",
+          "border-right-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-right-width",
+          "border-right-style",
+          "border-right-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-right-width",
+          "border-right-style",
+          "border-right-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-right"
+      },
+      "border-right-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-right-color"
+      },
+      "border-right-style": {
+        syntax: "<line-style>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-right-style"
+      },
+      "border-right-width": {
+        syntax: "<line-width>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthOr0IfBorderRightStyleNoneOrHidden",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-right-width"
+      },
+      "border-spacing": {
+        syntax: "<length> <length>?",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "0",
+        appliesto: "tableElements",
+        computed: "twoAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-spacing"
+      },
+      "border-start-end-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius"
+      },
+      "border-start-start-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius"
+      },
+      "border-style": {
+        syntax: "<line-style>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-style",
+          "border-right-style",
+          "border-bottom-style",
+          "border-left-style"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-bottom-style",
+          "border-left-style",
+          "border-right-style",
+          "border-top-style"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-style"
+      },
+      "border-top": {
+        syntax: "<line-width> || <line-style> || <color>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-top-color",
+          "border-top-style",
+          "border-top-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-top-width",
+          "border-top-style",
+          "border-top-color"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top"
+      },
+      "border-top-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-color"
+      },
+      "border-top-left-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius"
+      },
+      "border-top-right-radius": {
+        syntax: "<length-percentage>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfBorderBox",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "0",
+        appliesto: "allElementsUAsNotRequiredWhenCollapse",
+        computed: "twoAbsoluteLengthOrPercentages",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius"
+      },
+      "border-top-style": {
+        syntax: "<line-style>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-style"
+      },
+      "border-top-width": {
+        syntax: "<line-width>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLengthOr0IfBorderTopStyleNoneOrHidden",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-top-width"
+      },
+      "border-width": {
+        syntax: "<line-width>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "border-bottom-width",
+          "border-left-width",
+          "border-right-width",
+          "border-top-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: [
+          "border-top-width",
+          "border-right-width",
+          "border-bottom-width",
+          "border-left-width"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "border-bottom-width",
+          "border-left-width",
+          "border-right-width",
+          "border-top-width"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/border-width"
+      },
+      bottom: {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToContainingBlockHeight",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/bottom"
+      },
+      "box-align": {
+        syntax: "start | center | end | baseline | stretch",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "stretch",
+        appliesto: "elementsWithDisplayBoxOrInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-align"
+      },
+      "box-decoration-break": {
+        syntax: "slice | clone",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "slice",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-decoration-break"
+      },
+      "box-direction": {
+        syntax: "normal | reverse | inherit",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "normal",
+        appliesto: "elementsWithDisplayBoxOrInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-direction"
+      },
+      "box-flex": {
+        syntax: "<number>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "0",
+        appliesto: "directChildrenOfElementsWithDisplayMozBoxMozInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-flex"
+      },
+      "box-flex-group": {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "1",
+        appliesto: "inFlowChildrenOfBoxElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-flex-group"
+      },
+      "box-lines": {
+        syntax: "single | multiple",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "single",
+        appliesto: "boxElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-lines"
+      },
+      "box-ordinal-group": {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "1",
+        appliesto: "childrenOfBoxElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-ordinal-group"
+      },
+      "box-orient": {
+        syntax: "horizontal | vertical | inline-axis | block-axis | inherit",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "inlineAxisHorizontalInXUL",
+        appliesto: "elementsWithDisplayBoxOrInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-orient"
+      },
+      "box-pack": {
+        syntax: "start | center | end | justify",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions",
+          "WebKit Extensions"
+        ],
+        initial: "start",
+        appliesto: "elementsWithDisplayMozBoxMozInlineBox",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-pack"
+      },
+      "box-shadow": {
+        syntax: "none | <shadow>#",
+        media: "visual",
+        inherited: false,
+        animationType: "shadowList",
+        percentages: "no",
+        groups: [
+          "CSS Backgrounds and Borders"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "absoluteLengthsSpecifiedColorAsSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-shadow"
+      },
+      "box-sizing": {
+        syntax: "content-box | border-box",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "content-box",
+        appliesto: "allElementsAcceptingWidthOrHeight",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/box-sizing"
+      },
+      "break-after": {
+        syntax: "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/break-after"
+      },
+      "break-before": {
+        syntax: "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/break-before"
+      },
+      "break-inside": {
+        syntax: "auto | avoid | avoid-page | avoid-column | avoid-region",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/break-inside"
+      },
+      "caption-side": {
+        syntax: "top | bottom | block-start | block-end | inline-start | inline-end",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "top",
+        appliesto: "tableCaptionElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/caption-side"
+      },
+      "caret-color": {
+        syntax: "auto | <color>",
+        media: "interactive",
+        inherited: true,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asAutoOrColor",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/caret-color"
+      },
+      clear: {
+        syntax: "none | left | right | both | inline-start | inline-end",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "none",
+        appliesto: "blockLevelElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/clear"
+      },
+      clip: {
+        syntax: "<shape> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "rectangle",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "auto",
+        appliesto: "absolutelyPositionedElements",
+        computed: "autoOrRectangle",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/clip"
+      },
+      "clip-path": {
+        syntax: "<clip-source> | [ <basic-shape> || <geometry-box> ] | none",
+        media: "visual",
+        inherited: false,
+        animationType: "basicShapeOtherwiseNo",
+        percentages: "referToReferenceBoxWhenSpecifiedOtherwiseBorderBox",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/clip-path"
+      },
+      color: {
+        syntax: "<color>",
+        media: "visual",
+        inherited: true,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "canvastext",
+        appliesto: "allElementsAndText",
+        computed: "computedColor",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/color"
+      },
+      "print-color-adjust": {
+        syntax: "economy | exact",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "economy",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/print-color-adjust"
+      },
+      "color-scheme": {
+        syntax: "normal | [ light | dark | <custom-ident> ]+ && only?",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "normal",
+        appliesto: "allElementsAndText",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/color-scheme"
+      },
+      "column-count": {
+        syntax: "<integer> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "auto",
+        appliesto: "blockContainersExceptTableWrappers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-count"
+      },
+      "column-fill": {
+        syntax: "auto | balance | balance-all",
+        media: "visualInContinuousMediaNoEffectInOverflowColumns",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "balance",
+        appliesto: "multicolElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-fill"
+      },
+      "column-gap": {
+        syntax: "normal | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "multiColumnElementsFlexContainersGridContainers",
+        computed: "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-gap"
+      },
+      "column-rule": {
+        syntax: "<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "column-rule-color",
+          "column-rule-style",
+          "column-rule-width"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: [
+          "column-rule-width",
+          "column-rule-style",
+          "column-rule-color"
+        ],
+        appliesto: "multicolElements",
+        computed: [
+          "column-rule-color",
+          "column-rule-style",
+          "column-rule-width"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-rule"
+      },
+      "column-rule-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "currentcolor",
+        appliesto: "multicolElements",
+        computed: "computedColor",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-rule-color"
+      },
+      "column-rule-style": {
+        syntax: "<'border-style'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "none",
+        appliesto: "multicolElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-rule-style"
+      },
+      "column-rule-width": {
+        syntax: "<'border-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "medium",
+        appliesto: "multicolElements",
+        computed: "absoluteLength0IfColumnRuleStyleNoneOrHidden",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-rule-width"
+      },
+      "column-span": {
+        syntax: "none | all",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "none",
+        appliesto: "inFlowBlockLevelElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-span"
+      },
+      "column-width": {
+        syntax: "<length> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: "auto",
+        appliesto: "blockContainersExceptTableWrappers",
+        computed: "absoluteLengthZeroOrLarger",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-width"
+      },
+      columns: {
+        syntax: "<'column-width'> || <'column-count'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "column-width",
+          "column-count"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Columns"
+        ],
+        initial: [
+          "column-width",
+          "column-count"
+        ],
+        appliesto: "blockContainersExceptTableWrappers",
+        computed: [
+          "column-width",
+          "column-count"
+        ],
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/columns"
+      },
+      contain: {
+        syntax: "none | strict | content | [ size || layout || style || paint ]",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Containment"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/contain"
+      },
+      content: {
+        syntax: "normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> ]+ ]?",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Generated Content"
+        ],
+        initial: "normal",
+        appliesto: "allElementsTreeAbidingPseudoElementsPageMarginBoxes",
+        computed: "normalOnElementsForPseudosNoneAbsoluteURIStringOrAsSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/content"
+      },
+      "content-visibility": {
+        syntax: "visible | auto | hidden",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Containment"
+        ],
+        initial: "visible",
+        appliesto: "elementsForWhichLayoutContainmentCanApply",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/content-visibility"
+      },
+      "counter-increment": {
+        syntax: "[ <counter-name> <integer>? ]+ | none",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Counter Styles"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/counter-increment"
+      },
+      "counter-reset": {
+        syntax: "[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Counter Styles"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/counter-reset"
+      },
+      "counter-set": {
+        syntax: "[ <counter-name> <integer>? ]+ | none",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Counter Styles"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/counter-set"
+      },
+      cursor: {
+        syntax: "[ [ <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 ] ]",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/cursor"
+      },
+      direction: {
+        syntax: "ltr | rtl",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "ltr",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/direction"
+      },
+      display: {
+        syntax: "[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>",
+        media: "all",
+        inherited: false,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Display"
+        ],
+        initial: "inline",
+        appliesto: "allElements",
+        computed: "asSpecifiedExceptPositionedFloatingAndRootElementsKeywordMaybeDifferent",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/display"
+      },
+      "empty-cells": {
+        syntax: "show | hide",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "show",
+        appliesto: "tableCellElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/empty-cells"
+      },
+      filter: {
+        syntax: "none | <filter-function-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "filterList",
+        percentages: "no",
+        groups: [
+          "Filter Effects"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/filter"
+      },
+      flex: {
+        syntax: "none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "flex-grow",
+          "flex-shrink",
+          "flex-basis"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: [
+          "flex-grow",
+          "flex-shrink",
+          "flex-basis"
+        ],
+        appliesto: "flexItemsAndInFlowPseudos",
+        computed: [
+          "flex-grow",
+          "flex-shrink",
+          "flex-basis"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex"
+      },
+      "flex-basis": {
+        syntax: "content | <'width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToFlexContainersInnerMainSize",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "auto",
+        appliesto: "flexItemsAndInFlowPseudos",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "lengthOrPercentageBeforeKeywordIfBothPresent",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-basis"
+      },
+      "flex-direction": {
+        syntax: "row | row-reverse | column | column-reverse",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "row",
+        appliesto: "flexContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-direction"
+      },
+      "flex-flow": {
+        syntax: "<'flex-direction'> || <'flex-wrap'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: [
+          "flex-direction",
+          "flex-wrap"
+        ],
+        appliesto: "flexContainers",
+        computed: [
+          "flex-direction",
+          "flex-wrap"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-flow"
+      },
+      "flex-grow": {
+        syntax: "<number>",
+        media: "visual",
+        inherited: false,
+        animationType: "number",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "0",
+        appliesto: "flexItemsAndInFlowPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-grow"
+      },
+      "flex-shrink": {
+        syntax: "<number>",
+        media: "visual",
+        inherited: false,
+        animationType: "number",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "1",
+        appliesto: "flexItemsAndInFlowPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-shrink"
+      },
+      "flex-wrap": {
+        syntax: "nowrap | wrap | wrap-reverse",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "nowrap",
+        appliesto: "flexContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/flex-wrap"
+      },
+      float: {
+        syntax: "left | right | none | inline-start | inline-end",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "none",
+        appliesto: "allElementsNoEffectIfDisplayNone",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/float"
+      },
+      font: {
+        syntax: "[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar",
+        media: "visual",
+        inherited: true,
+        animationType: [
+          "font-style",
+          "font-variant",
+          "font-weight",
+          "font-stretch",
+          "font-size",
+          "line-height",
+          "font-family"
+        ],
+        percentages: [
+          "font-size",
+          "line-height"
+        ],
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: [
+          "font-style",
+          "font-variant",
+          "font-weight",
+          "font-stretch",
+          "font-size",
+          "line-height",
+          "font-family"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "font-style",
+          "font-variant",
+          "font-weight",
+          "font-stretch",
+          "font-size",
+          "line-height",
+          "font-family"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font"
+      },
+      "font-family": {
+        syntax: "[ <family-name> | <generic-family> ]#",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "dependsOnUserAgent",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-family"
+      },
+      "font-feature-settings": {
+        syntax: "normal | <feature-tag-value>#",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-feature-settings"
+      },
+      "font-kerning": {
+        syntax: "auto | normal | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-kerning"
+      },
+      "font-language-override": {
+        syntax: "normal | <string>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-language-override"
+      },
+      "font-optical-sizing": {
+        syntax: "auto | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing"
+      },
+      "font-variation-settings": {
+        syntax: "normal | [ <string> <number> ]#",
+        media: "visual",
+        inherited: true,
+        animationType: "transform",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variation-settings"
+      },
+      "font-size": {
+        syntax: "<absolute-size> | <relative-size> | <length-percentage>",
+        media: "visual",
+        inherited: true,
+        animationType: "length",
+        percentages: "referToParentElementsFontSize",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-size"
+      },
+      "font-size-adjust": {
+        syntax: "none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]",
+        media: "visual",
+        inherited: true,
+        animationType: "number",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-size-adjust"
+      },
+      "font-smooth": {
+        syntax: "auto | never | always | <absolute-size> | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-smooth"
+      },
+      "font-stretch": {
+        syntax: "<font-stretch-absolute>",
+        media: "visual",
+        inherited: true,
+        animationType: "fontStretch",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-stretch"
+      },
+      "font-style": {
+        syntax: "normal | italic | oblique <angle>?",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-style"
+      },
+      "font-synthesis": {
+        syntax: "none | [ weight || style || small-caps ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "weight style",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-synthesis"
+      },
+      "font-variant": {
+        syntax: "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 ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant"
+      },
+      "font-variant-alternates": {
+        syntax: "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> ) ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates"
+      },
+      "font-variant-caps": {
+        syntax: "normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-caps"
+      },
+      "font-variant-east-asian": {
+        syntax: "normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian"
+      },
+      "font-variant-ligatures": {
+        syntax: "normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures"
+      },
+      "font-variant-numeric": {
+        syntax: "normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric"
+      },
+      "font-variant-position": {
+        syntax: "normal | sub | super",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-variant-position"
+      },
+      "font-weight": {
+        syntax: "<font-weight-absolute> | bolder | lighter",
+        media: "visual",
+        inherited: true,
+        animationType: "fontWeight",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "keywordOrNumericalValueBolderLighterTransformedToRealValue",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/font-weight"
+      },
+      "forced-color-adjust": {
+        syntax: "auto | none",
+        media: "visual",
+        inherited: true,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "auto",
+        appliesto: "allElementsAndText",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/forced-color-adjust"
+      },
+      gap: {
+        syntax: "<'row-gap'> <'column-gap'>?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "row-gap",
+          "column-gap"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: [
+          "row-gap",
+          "column-gap"
+        ],
+        appliesto: "multiColumnElementsFlexContainersGridContainers",
+        computed: [
+          "row-gap",
+          "column-gap"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/gap"
+      },
+      grid: {
+        syntax: "<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: [
+          "grid-template-rows",
+          "grid-template-columns",
+          "grid-auto-rows",
+          "grid-auto-columns"
+        ],
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-template-rows",
+          "grid-template-columns",
+          "grid-template-areas",
+          "grid-auto-rows",
+          "grid-auto-columns",
+          "grid-auto-flow",
+          "grid-column-gap",
+          "grid-row-gap",
+          "column-gap",
+          "row-gap"
+        ],
+        appliesto: "gridContainers",
+        computed: [
+          "grid-template-rows",
+          "grid-template-columns",
+          "grid-template-areas",
+          "grid-auto-rows",
+          "grid-auto-columns",
+          "grid-auto-flow",
+          "grid-column-gap",
+          "grid-row-gap",
+          "column-gap",
+          "row-gap"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid"
+      },
+      "grid-area": {
+        syntax: "<grid-line> [ / <grid-line> ]{0,3}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-row-start",
+          "grid-column-start",
+          "grid-row-end",
+          "grid-column-end"
+        ],
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: [
+          "grid-row-start",
+          "grid-column-start",
+          "grid-row-end",
+          "grid-column-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-area"
+      },
+      "grid-auto-columns": {
+        syntax: "<track-size>+",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridContainers",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns"
+      },
+      "grid-auto-flow": {
+        syntax: "[ row | column ] || dense",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "row",
+        appliesto: "gridContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow"
+      },
+      "grid-auto-rows": {
+        syntax: "<track-size>+",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridContainers",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows"
+      },
+      "grid-column": {
+        syntax: "<grid-line> [ / <grid-line> ]?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-column-start",
+          "grid-column-end"
+        ],
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: [
+          "grid-column-start",
+          "grid-column-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-column"
+      },
+      "grid-column-end": {
+        syntax: "<grid-line>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-column-end"
+      },
+      "grid-column-gap": {
+        syntax: "<length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "0",
+        appliesto: "gridContainers",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/column-gap"
+      },
+      "grid-column-start": {
+        syntax: "<grid-line>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-column-start"
+      },
+      "grid-gap": {
+        syntax: "<'grid-row-gap'> <'grid-column-gap'>?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "grid-row-gap",
+          "grid-column-gap"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-row-gap",
+          "grid-column-gap"
+        ],
+        appliesto: "gridContainers",
+        computed: [
+          "grid-row-gap",
+          "grid-column-gap"
+        ],
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/gap"
+      },
+      "grid-row": {
+        syntax: "<grid-line> [ / <grid-line> ]?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-row-start",
+          "grid-row-end"
+        ],
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: [
+          "grid-row-start",
+          "grid-row-end"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-row"
+      },
+      "grid-row-end": {
+        syntax: "<grid-line>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-row-end"
+      },
+      "grid-row-gap": {
+        syntax: "<length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "0",
+        appliesto: "gridContainers",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/row-gap"
+      },
+      "grid-row-start": {
+        syntax: "<grid-line>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "auto",
+        appliesto: "gridItemsAndBoxesWithinGridContainer",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-row-start"
+      },
+      "grid-template": {
+        syntax: "none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: [
+          "grid-template-columns",
+          "grid-template-rows"
+        ],
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: [
+          "grid-template-columns",
+          "grid-template-rows",
+          "grid-template-areas"
+        ],
+        appliesto: "gridContainers",
+        computed: [
+          "grid-template-columns",
+          "grid-template-rows",
+          "grid-template-areas"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-template"
+      },
+      "grid-template-areas": {
+        syntax: "none | <string>+",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-template-areas"
+      },
+      "grid-template-columns": {
+        syntax: "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpcDifferenceLpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-template-columns"
+      },
+      "grid-template-rows": {
+        syntax: "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpcDifferenceLpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "none",
+        appliesto: "gridContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/grid-template-rows"
+      },
+      "hanging-punctuation": {
+        syntax: "none | [ first || [ force-end | allow-end ] || last ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/hanging-punctuation"
+      },
+      height: {
+        syntax: "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "regardingHeightOfGeneratedBoxContainingBlockPercentagesRelativeToContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "allElementsButNonReplacedAndTableColumns",
+        computed: "percentageAutoOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/height"
+      },
+      "hyphenate-character": {
+        syntax: "auto | <string>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/hyphenate-character"
+      },
+      hyphens: {
+        syntax: "none | manual | auto",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "manual",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/hyphens"
+      },
+      "image-orientation": {
+        syntax: "from-image | <angle> | [ <angle>? flip ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "from-image",
+        appliesto: "allElements",
+        computed: "angleRoundedToNextQuarter",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/image-orientation"
+      },
+      "image-rendering": {
+        syntax: "auto | crisp-edges | pixelated",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/image-rendering"
+      },
+      "image-resolution": {
+        syntax: "[ from-image || <resolution> ] && snap?",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "1dppx",
+        appliesto: "allElements",
+        computed: "asSpecifiedWithExceptionOfResolution",
+        order: "uniqueOrder",
+        status: "experimental"
+      },
+      "ime-mode": {
+        syntax: "auto | normal | active | inactive | disabled",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "textFields",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/ime-mode"
+      },
+      "initial-letter": {
+        syntax: "normal | [ <number> <integer>? ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Inline"
+        ],
+        initial: "normal",
+        appliesto: "firstLetterPseudoElementsAndInlineLevelFirstChildren",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/initial-letter"
+      },
+      "initial-letter-align": {
+        syntax: "[ auto | alphabetic | hanging | ideographic ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Inline"
+        ],
+        initial: "auto",
+        appliesto: "firstLetterPseudoElementsAndInlineLevelFirstChildren",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/initial-letter-align"
+      },
+      "inline-size": {
+        syntax: "<'width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "inlineSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsWidthAndHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inline-size"
+      },
+      "input-security": {
+        syntax: "auto | none",
+        media: "interactive",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "sensitiveTextInputs",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard"
+      },
+      inset: {
+        syntax: "<'top'>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalHeightOrWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset"
+      },
+      "inset-block": {
+        syntax: "<'top'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalHeightOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-block"
+      },
+      "inset-block-end": {
+        syntax: "<'top'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalHeightOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-block-end"
+      },
+      "inset-block-start": {
+        syntax: "<'top'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalHeightOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-block-start"
+      },
+      "inset-inline": {
+        syntax: "<'top'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-inline"
+      },
+      "inset-inline-end": {
+        syntax: "<'top'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-inline-end"
+      },
+      "inset-inline-start": {
+        syntax: "<'top'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "sameAsBoxOffsets",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/inset-inline-start"
+      },
+      isolation: {
+        syntax: "auto | isolate",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Compositing and Blending"
+        ],
+        initial: "auto",
+        appliesto: "allElementsSVGContainerGraphicsAndGraphicsReferencingElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/isolation"
+      },
+      "justify-content": {
+        syntax: "normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "flexContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/justify-content"
+      },
+      "justify-items": {
+        syntax: "normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "legacy",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/justify-items"
+      },
+      "justify-self": {
+        syntax: "auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "auto",
+        appliesto: "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/justify-self"
+      },
+      "justify-tracks": {
+        syntax: "[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "normal",
+        appliesto: "gridContainersWithMasonryLayoutInTheirInlineAxis",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/justify-tracks"
+      },
+      left: {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/left"
+      },
+      "letter-spacing": {
+        syntax: "normal | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "optimumValueOfAbsoluteLengthOrNormal",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/letter-spacing"
+      },
+      "line-break": {
+        syntax: "auto | loose | normal | strict | anywhere",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/line-break"
+      },
+      "line-clamp": {
+        syntax: "none | <integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "none",
+        appliesto: "blockContainersExceptMultiColumnContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental"
+      },
+      "line-height": {
+        syntax: "normal | <number> | <length> | <percentage>",
+        media: "visual",
+        inherited: true,
+        animationType: "numberOrLength",
+        percentages: "referToElementFontSize",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "absoluteLengthOrAsSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/line-height"
+      },
+      "line-height-step": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fonts"
+        ],
+        initial: "0",
+        appliesto: "blockContainers",
+        computed: "absoluteLength",
+        order: "perGrammar",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/line-height-step"
+      },
+      "list-style": {
+        syntax: "<'list-style-type'> || <'list-style-position'> || <'list-style-image'>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Lists and Counters"
+        ],
+        initial: [
+          "list-style-type",
+          "list-style-position",
+          "list-style-image"
+        ],
+        appliesto: "listItems",
+        computed: [
+          "list-style-image",
+          "list-style-position",
+          "list-style-type"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/list-style"
+      },
+      "list-style-image": {
+        syntax: "<image> | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Lists and Counters"
+        ],
+        initial: "none",
+        appliesto: "listItems",
+        computed: "theKeywordListStyleImageNoneOrComputedValue",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/list-style-image"
+      },
+      "list-style-position": {
+        syntax: "inside | outside",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Lists and Counters"
+        ],
+        initial: "outside",
+        appliesto: "listItems",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/list-style-position"
+      },
+      "list-style-type": {
+        syntax: "<counter-style> | <string> | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Lists and Counters"
+        ],
+        initial: "disc",
+        appliesto: "listItems",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/list-style-type"
+      },
+      margin: {
+        syntax: "[ <length> | <percentage> | auto ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: [
+          "margin-bottom",
+          "margin-left",
+          "margin-right",
+          "margin-top"
+        ],
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: [
+          "margin-bottom",
+          "margin-left",
+          "margin-right",
+          "margin-top"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin"
+      },
+      "margin-block": {
+        syntax: "<'margin-left'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-block"
+      },
+      "margin-block-end": {
+        syntax: "<'margin-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-block-end"
+      },
+      "margin-block-start": {
+        syntax: "<'margin-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-block-start"
+      },
+      "margin-bottom": {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-bottom"
+      },
+      "margin-inline": {
+        syntax: "<'margin-left'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-inline"
+      },
+      "margin-inline-end": {
+        syntax: "<'margin-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-inline-end"
+      },
+      "margin-inline-start": {
+        syntax: "<'margin-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "dependsOnLayoutModel",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsMargin",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-inline-start"
+      },
+      "margin-left": {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-left"
+      },
+      "margin-right": {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-right"
+      },
+      "margin-top": {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-top"
+      },
+      "margin-trim": {
+        syntax: "none | in-flow | all",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "none",
+        appliesto: "blockContainersAndMultiColumnContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/margin-trim"
+      },
+      mask: {
+        syntax: "<mask-layer>#",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "mask-image",
+          "mask-mode",
+          "mask-repeat",
+          "mask-position",
+          "mask-clip",
+          "mask-origin",
+          "mask-size",
+          "mask-composite"
+        ],
+        percentages: [
+          "mask-position"
+        ],
+        groups: [
+          "CSS Masking"
+        ],
+        initial: [
+          "mask-image",
+          "mask-mode",
+          "mask-repeat",
+          "mask-position",
+          "mask-clip",
+          "mask-origin",
+          "mask-size",
+          "mask-composite"
+        ],
+        appliesto: "allElementsSVGContainerElements",
+        computed: [
+          "mask-image",
+          "mask-mode",
+          "mask-repeat",
+          "mask-position",
+          "mask-clip",
+          "mask-origin",
+          "mask-size",
+          "mask-composite"
+        ],
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask"
+      },
+      "mask-border": {
+        syntax: "<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "mask-border-mode",
+          "mask-border-outset",
+          "mask-border-repeat",
+          "mask-border-slice",
+          "mask-border-source",
+          "mask-border-width"
+        ],
+        percentages: [
+          "mask-border-slice",
+          "mask-border-width"
+        ],
+        groups: [
+          "CSS Masking"
+        ],
+        initial: [
+          "mask-border-mode",
+          "mask-border-outset",
+          "mask-border-repeat",
+          "mask-border-slice",
+          "mask-border-source",
+          "mask-border-width"
+        ],
+        appliesto: "allElementsSVGContainerElements",
+        computed: [
+          "mask-border-mode",
+          "mask-border-outset",
+          "mask-border-repeat",
+          "mask-border-slice",
+          "mask-border-source",
+          "mask-border-width"
+        ],
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border"
+      },
+      "mask-border-mode": {
+        syntax: "luminance | alpha",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "alpha",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-mode"
+      },
+      "mask-border-outset": {
+        syntax: "[ <length> | <number> ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "0",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-outset"
+      },
+      "mask-border-repeat": {
+        syntax: "[ stretch | repeat | round | space ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "stretch",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat"
+      },
+      "mask-border-slice": {
+        syntax: "<number-percentage>{1,4} fill?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "referToSizeOfMaskBorderImage",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "0",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-slice"
+      },
+      "mask-border-source": {
+        syntax: "none | <image>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-source"
+      },
+      "mask-border-width": {
+        syntax: "[ <length-percentage> | <number> | auto ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "relativeToMaskBorderImageArea",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "auto",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-border-width"
+      },
+      "mask-clip": {
+        syntax: "[ <geometry-box> | no-clip ]#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "border-box",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-clip"
+      },
+      "mask-composite": {
+        syntax: "<compositing-operator>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "add",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-composite"
+      },
+      "mask-image": {
+        syntax: "<mask-reference>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "none",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedURLsAbsolute",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-image"
+      },
+      "mask-mode": {
+        syntax: "<masking-mode>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "match-source",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-mode"
+      },
+      "mask-origin": {
+        syntax: "<geometry-box>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "border-box",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-origin"
+      },
+      "mask-position": {
+        syntax: "<position>#",
+        media: "visual",
+        inherited: false,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "referToSizeOfMaskPaintingArea",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "center",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "consistsOfTwoKeywordsForOriginAndOffsets",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-position"
+      },
+      "mask-repeat": {
+        syntax: "<repeat-style>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "no-repeat",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "consistsOfTwoDimensionKeywords",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-repeat"
+      },
+      "mask-size": {
+        syntax: "<bg-size>#",
+        media: "visual",
+        inherited: false,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "auto",
+        appliesto: "allElementsSVGContainerElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-size"
+      },
+      "mask-type": {
+        syntax: "luminance | alpha",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Masking"
+        ],
+        initial: "luminance",
+        appliesto: "maskElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mask-type"
+      },
+      "masonry-auto-flow": {
+        syntax: "[ pack | next ] || [ definite-first | ordered ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Grid Layout"
+        ],
+        initial: "pack",
+        appliesto: "gridContainersWithMasonryLayout",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow"
+      },
+      "math-style": {
+        syntax: "normal | compact",
+        media: "visual",
+        inherited: true,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "MathML"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/math-style"
+      },
+      "max-block-size": {
+        syntax: "<'max-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "blockSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsMaxWidthAndMaxHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/max-block-size"
+      },
+      "max-height": {
+        syntax: "none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "regardingHeightOfGeneratedBoxContainingBlockPercentagesNone",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "none",
+        appliesto: "allElementsButNonReplacedAndTableColumns",
+        computed: "percentageAsSpecifiedAbsoluteLengthOrNone",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/max-height"
+      },
+      "max-inline-size": {
+        syntax: "<'max-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "inlineSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "none",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsMaxWidthAndMaxHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/max-inline-size"
+      },
+      "max-lines": {
+        syntax: "none | <integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "none",
+        appliesto: "blockContainersExceptMultiColumnContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "experimental"
+      },
+      "max-width": {
+        syntax: "none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "none",
+        appliesto: "allElementsButNonReplacedAndTableRows",
+        computed: "percentageAsSpecifiedAbsoluteLengthOrNone",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/max-width"
+      },
+      "min-block-size": {
+        syntax: "<'min-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "blockSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsMinWidthAndMinHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/min-block-size"
+      },
+      "min-height": {
+        syntax: "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "regardingHeightOfGeneratedBoxContainingBlockPercentages0",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "allElementsButNonReplacedAndTableColumns",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/min-height"
+      },
+      "min-inline-size": {
+        syntax: "<'min-width'>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "inlineSizeOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "sameAsWidthAndHeight",
+        computed: "sameAsMinWidthAndMinHeight",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/min-inline-size"
+      },
+      "min-width": {
+        syntax: "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "allElementsButNonReplacedAndTableRows",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/min-width"
+      },
+      "mix-blend-mode": {
+        syntax: "<blend-mode> | plus-lighter",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Compositing and Blending"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode"
+      },
+      "object-fit": {
+        syntax: "fill | contain | cover | none | scale-down",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "fill",
+        appliesto: "replacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/object-fit"
+      },
+      "object-position": {
+        syntax: "<position>",
+        media: "visual",
+        inherited: true,
+        animationType: "repeatableListOfSimpleListOfLpc",
+        percentages: "referToWidthAndHeightOfElement",
+        groups: [
+          "CSS Images"
+        ],
+        initial: "50% 50%",
+        appliesto: "replacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/object-position"
+      },
+      offset: {
+        syntax: "[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "offset-position",
+          "offset-path",
+          "offset-distance",
+          "offset-anchor",
+          "offset-rotate"
+        ],
+        percentages: [
+          "offset-position",
+          "offset-distance",
+          "offset-anchor"
+        ],
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: [
+          "offset-position",
+          "offset-path",
+          "offset-distance",
+          "offset-anchor",
+          "offset-rotate"
+        ],
+        appliesto: "transformableElements",
+        computed: [
+          "offset-position",
+          "offset-path",
+          "offset-distance",
+          "offset-anchor",
+          "offset-rotate"
+        ],
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/offset"
+      },
+      "offset-anchor": {
+        syntax: "auto | <position>",
+        media: "visual",
+        inherited: false,
+        animationType: "position",
+        percentages: "relativeToWidthAndHeight",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "auto",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "offset-distance": {
+        syntax: "<length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToTotalPathLength",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "0",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/offset-distance"
+      },
+      "offset-path": {
+        syntax: "none | ray( [ <angle> && <size> && contain? ] ) | <path()> | <url> | [ <basic-shape> || <geometry-box> ]",
+        media: "visual",
+        inherited: false,
+        animationType: "angleOrBasicShapeOrPath",
+        percentages: "no",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/offset-path"
+      },
+      "offset-position": {
+        syntax: "auto | <position>",
+        media: "visual",
+        inherited: false,
+        animationType: "position",
+        percentages: "referToSizeOfContainingBlock",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "auto",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "perGrammar",
+        status: "experimental"
+      },
+      "offset-rotate": {
+        syntax: "[ auto | reverse ] || <angle>",
+        media: "visual",
+        inherited: false,
+        animationType: "angleOrBasicShapeOrPath",
+        percentages: "no",
+        groups: [
+          "CSS Motion Path"
+        ],
+        initial: "auto",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/offset-rotate"
+      },
+      opacity: {
+        syntax: "<alpha-value>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "mapToRange0To1",
+        groups: [
+          "CSS Color"
+        ],
+        initial: "1",
+        appliesto: "allElements",
+        computed: "specifiedValueNumberClipped0To1",
+        order: "perGrammar",
+        alsoAppliesTo: [
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/opacity"
+      },
+      order: {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Flexible Box Layout"
+        ],
+        initial: "0",
+        appliesto: "flexItemsGridItemsAbsolutelyPositionedContainerChildren",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/order"
+      },
+      orphans: {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "2",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/orphans"
+      },
+      outline: {
+        syntax: "[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: [
+          "outline-color",
+          "outline-width",
+          "outline-style"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: [
+          "outline-color",
+          "outline-style",
+          "outline-width"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "outline-color",
+          "outline-width",
+          "outline-style"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline"
+      },
+      "outline-color": {
+        syntax: "<color> | invert",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "invertOrCurrentColor",
+        appliesto: "allElements",
+        computed: "invertForTranslucentColorRGBAOtherwiseRGB",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline-color"
+      },
+      "outline-offset": {
+        syntax: "<length>",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline-offset"
+      },
+      "outline-style": {
+        syntax: "auto | <'border-style'>",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline-style"
+      },
+      "outline-width": {
+        syntax: "<line-width>",
+        media: [
+          "visual",
+          "interactive"
+        ],
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "medium",
+        appliesto: "allElements",
+        computed: "absoluteLength0ForNone",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/outline-width"
+      },
+      overflow: {
+        syntax: "[ visible | hidden | clip | scroll | auto ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "visible",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: [
+          "overflow-x",
+          "overflow-y"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow"
+      },
+      "overflow-anchor": {
+        syntax: "auto | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Anchoring"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "overflow-block": {
+        syntax: "visible | hidden | clip | scroll | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "auto",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "overflow-clip-box": {
+        syntax: "padding-box | content-box",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Mozilla Extensions"
+        ],
+        initial: "padding-box",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Mozilla/CSS/overflow-clip-box"
+      },
+      "overflow-clip-margin": {
+        syntax: "<visual-box> || <length [0,\u221E]>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "0px",
+        appliesto: "allElements",
+        computed: "theComputedLength",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "overflow-inline": {
+        syntax: "visible | hidden | clip | scroll | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "auto",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent",
+        order: "perGrammar",
+        status: "standard"
+      },
+      "overflow-wrap": {
+        syntax: "normal | break-word | anywhere",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "nonReplacedInlineElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow-wrap"
+      },
+      "overflow-x": {
+        syntax: "visible | hidden | clip | scroll | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "visible",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow-x"
+      },
+      "overflow-y": {
+        syntax: "visible | hidden | clip | scroll | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "visible",
+        appliesto: "blockContainersFlexContainersGridContainers",
+        computed: "asSpecifiedButVisibleOrClipReplacedToAutoOrHiddenIfOtherValueDifferent",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow-y"
+      },
+      "overscroll-behavior": {
+        syntax: "[ contain | none | auto ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: [
+          "overscroll-behavior-x",
+          "overscroll-behavior-y"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior"
+      },
+      "overscroll-behavior-block": {
+        syntax: "contain | none | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block"
+      },
+      "overscroll-behavior-inline": {
+        syntax: "contain | none | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline"
+      },
+      "overscroll-behavior-x": {
+        syntax: "contain | none | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x"
+      },
+      "overscroll-behavior-y": {
+        syntax: "contain | none | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "nonReplacedBlockAndInlineBlockElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y"
+      },
+      padding: {
+        syntax: "[ <length> | <percentage> ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: [
+          "padding-bottom",
+          "padding-left",
+          "padding-right",
+          "padding-top"
+        ],
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: [
+          "padding-bottom",
+          "padding-left",
+          "padding-right",
+          "padding-top"
+        ],
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding"
+      },
+      "padding-block": {
+        syntax: "<'padding-left'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-block"
+      },
+      "padding-block-end": {
+        syntax: "<'padding-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-block-end"
+      },
+      "padding-block-start": {
+        syntax: "<'padding-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-block-start"
+      },
+      "padding-bottom": {
+        syntax: "<length> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-bottom"
+      },
+      "padding-inline": {
+        syntax: "<'padding-left'>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-inline"
+      },
+      "padding-inline-end": {
+        syntax: "<'padding-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-inline-end"
+      },
+      "padding-inline-start": {
+        syntax: "<'padding-left'>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "logicalWidthOfContainingBlock",
+        groups: [
+          "CSS Logical Properties"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-inline-start"
+      },
+      "padding-left": {
+        syntax: "<length> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-left"
+      },
+      "padding-right": {
+        syntax: "<length> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-right"
+      },
+      "padding-top": {
+        syntax: "<length> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "0",
+        appliesto: "allElementsExceptInternalTableDisplayTypes",
+        computed: "percentageAsSpecifiedOrAbsoluteLength",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/padding-top"
+      },
+      "page-break-after": {
+        syntax: "auto | always | avoid | left | right | recto | verso",
+        media: [
+          "visual",
+          "paged"
+        ],
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Pages"
+        ],
+        initial: "auto",
+        appliesto: "blockElementsInNormalFlow",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/page-break-after"
+      },
+      "page-break-before": {
+        syntax: "auto | always | avoid | left | right | recto | verso",
+        media: [
+          "visual",
+          "paged"
+        ],
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Pages"
+        ],
+        initial: "auto",
+        appliesto: "blockElementsInNormalFlow",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/page-break-before"
+      },
+      "page-break-inside": {
+        syntax: "auto | avoid",
+        media: [
+          "visual",
+          "paged"
+        ],
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Pages"
+        ],
+        initial: "auto",
+        appliesto: "blockElementsInNormalFlow",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/page-break-inside"
+      },
+      "paint-order": {
+        syntax: "normal | [ fill || stroke || markers ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "textElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/paint-order"
+      },
+      perspective: {
+        syntax: "none | <length>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "absoluteLengthOrNone",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/perspective"
+      },
+      "perspective-origin": {
+        syntax: "<position>",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpc",
+        percentages: "referToSizeOfBoundingBox",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "50% 50%",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "oneOrTwoValuesLengthAbsoluteKeywordsPercentages",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/perspective-origin"
+      },
+      "place-content": {
+        syntax: "<'align-content'> <'justify-content'>?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "multilineFlexContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/place-content"
+      },
+      "place-items": {
+        syntax: "<'align-items'> <'justify-items'>?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: [
+          "align-items",
+          "justify-items"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "align-items",
+          "justify-items"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/place-items"
+      },
+      "place-self": {
+        syntax: "<'align-self'> <'justify-self'>?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: [
+          "align-self",
+          "justify-self"
+        ],
+        appliesto: "blockLevelBoxesAndAbsolutelyPositionedBoxesAndGridItems",
+        computed: [
+          "align-self",
+          "justify-self"
+        ],
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/place-self"
+      },
+      "pointer-events": {
+        syntax: "auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/pointer-events"
+      },
+      position: {
+        syntax: "static | relative | absolute | sticky | fixed",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "static",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/position"
+      },
+      quotes: {
+        syntax: "none | auto | [ <string> <string> ]+",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Generated Content"
+        ],
+        initial: "dependsOnUserAgent",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/quotes"
+      },
+      resize: {
+        syntax: "none | both | horizontal | vertical | block | inline",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "none",
+        appliesto: "elementsWithOverflowNotVisibleAndReplacedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/resize"
+      },
+      right: {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/right"
+      },
+      rotate: {
+        syntax: "none | <angle> | [ x | y | z | <number>{3} ] && <angle>",
+        media: "visual",
+        inherited: false,
+        animationType: "transform",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/rotate"
+      },
+      "row-gap": {
+        syntax: "normal | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToDimensionOfContentArea",
+        groups: [
+          "CSS Box Alignment"
+        ],
+        initial: "normal",
+        appliesto: "multiColumnElementsFlexContainersGridContainers",
+        computed: "asSpecifiedWithLengthsAbsoluteAndNormalComputingToZeroExceptMultiColumn",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/row-gap"
+      },
+      "ruby-align": {
+        syntax: "start | center | space-between | space-around",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Ruby"
+        ],
+        initial: "space-around",
+        appliesto: "rubyBasesAnnotationsBaseAnnotationContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/ruby-align"
+      },
+      "ruby-merge": {
+        syntax: "separate | collapse | auto",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Ruby"
+        ],
+        initial: "separate",
+        appliesto: "rubyAnnotationsContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental"
+      },
+      "ruby-position": {
+        syntax: "[ alternate || [ over | under ] ] | inter-character",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Ruby"
+        ],
+        initial: "alternate",
+        appliesto: "rubyAnnotationsContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/ruby-position"
+      },
+      scale: {
+        syntax: "none | <number>{1,3}",
+        media: "visual",
+        inherited: false,
+        animationType: "transform",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scale"
+      },
+      "scrollbar-color": {
+        syntax: "auto | <color>{2}",
+        media: "visual",
+        inherited: true,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Scrollbars"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scrollbar-color"
+      },
+      "scrollbar-gutter": {
+        syntax: "auto | stable && both-edges?",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Overflow"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scrollbar-gutter"
+      },
+      "scrollbar-width": {
+        syntax: "auto | thin | none",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scrollbars"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scrollbar-width"
+      },
+      "scroll-behavior": {
+        syntax: "auto | smooth",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSSOM View"
+        ],
+        initial: "auto",
+        appliesto: "scrollingBoxes",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-behavior"
+      },
+      "scroll-margin": {
+        syntax: "<length>{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin"
+      },
+      "scroll-margin-block": {
+        syntax: "<length>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block"
+      },
+      "scroll-margin-block-start": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start"
+      },
+      "scroll-margin-block-end": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end"
+      },
+      "scroll-margin-bottom": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom"
+      },
+      "scroll-margin-inline": {
+        syntax: "<length>{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline"
+      },
+      "scroll-margin-inline-start": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start"
+      },
+      "scroll-margin-inline-end": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end"
+      },
+      "scroll-margin-left": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left"
+      },
+      "scroll-margin-right": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right"
+      },
+      "scroll-margin-top": {
+        syntax: "<length>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top"
+      },
+      "scroll-padding": {
+        syntax: "[ auto | <length-percentage> ]{1,4}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding"
+      },
+      "scroll-padding-block": {
+        syntax: "[ auto | <length-percentage> ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block"
+      },
+      "scroll-padding-block-start": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start"
+      },
+      "scroll-padding-block-end": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end"
+      },
+      "scroll-padding-bottom": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom"
+      },
+      "scroll-padding-inline": {
+        syntax: "[ auto | <length-percentage> ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline"
+      },
+      "scroll-padding-inline-start": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start"
+      },
+      "scroll-padding-inline-end": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end"
+      },
+      "scroll-padding-left": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left"
+      },
+      "scroll-padding-right": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right"
+      },
+      "scroll-padding-top": {
+        syntax: "auto | <length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "relativeToTheScrollContainersScrollport",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "auto",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top"
+      },
+      "scroll-snap-align": {
+        syntax: "[ none | start | end | center ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align"
+      },
+      "scroll-snap-coordinate": {
+        syntax: "none | <position>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "position",
+        percentages: "referToBorderBox",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-coordinate"
+      },
+      "scroll-snap-destination": {
+        syntax: "<position>",
+        media: "interactive",
+        inherited: false,
+        animationType: "position",
+        percentages: "relativeToScrollContainerPaddingBoxAxis",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "0px 0px",
+        appliesto: "scrollContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-destination"
+      },
+      "scroll-snap-points-x": {
+        syntax: "none | repeat( <length-percentage> )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "relativeToScrollContainerPaddingBoxAxis",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "scrollContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-x"
+      },
+      "scroll-snap-points-y": {
+        syntax: "none | repeat( <length-percentage> )",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "relativeToScrollContainerPaddingBoxAxis",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "scrollContainers",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-y"
+      },
+      "scroll-snap-stop": {
+        syntax: "normal | always",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop"
+      },
+      "scroll-snap-type": {
+        syntax: "none | [ x | y | block | inline | both ] [ mandatory | proximity ]?",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type"
+      },
+      "scroll-snap-type-x": {
+        syntax: "none | mandatory | proximity",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-x"
+      },
+      "scroll-snap-type-y": {
+        syntax: "none | mandatory | proximity",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Scroll Snap"
+        ],
+        initial: "none",
+        appliesto: "scrollContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "obsolete",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-y"
+      },
+      "shape-image-threshold": {
+        syntax: "<alpha-value>",
+        media: "visual",
+        inherited: false,
+        animationType: "number",
+        percentages: "no",
+        groups: [
+          "CSS Shapes"
+        ],
+        initial: "0.0",
+        appliesto: "floats",
+        computed: "specifiedValueNumberClipped0To1",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold"
+      },
+      "shape-margin": {
+        syntax: "<length-percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Shapes"
+        ],
+        initial: "0",
+        appliesto: "floats",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/shape-margin"
+      },
+      "shape-outside": {
+        syntax: "none | [ <shape-box> || <basic-shape> ] | <image>",
+        media: "visual",
+        inherited: false,
+        animationType: "basicShapeOtherwiseNo",
+        percentages: "no",
+        groups: [
+          "CSS Shapes"
+        ],
+        initial: "none",
+        appliesto: "floats",
+        computed: "asDefinedForBasicShapeWithAbsoluteURIOtherwiseAsSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/shape-outside"
+      },
+      "tab-size": {
+        syntax: "<integer> | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "length",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "8",
+        appliesto: "blockContainers",
+        computed: "specifiedIntegerOrAbsoluteLength",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/tab-size"
+      },
+      "table-layout": {
+        syntax: "auto | fixed",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "auto",
+        appliesto: "tableElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/table-layout"
+      },
+      "text-align": {
+        syntax: "start | end | left | right | center | justify | match-parent",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "startOrNamelessValueIfLTRRightIfRTL",
+        appliesto: "blockContainers",
+        computed: "asSpecifiedExceptMatchParent",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-align"
+      },
+      "text-align-last": {
+        syntax: "auto | start | end | left | right | center | justify",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "auto",
+        appliesto: "blockContainers",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-align-last"
+      },
+      "text-combine-upright": {
+        syntax: "none | all | [ digits <integer>? ]",
+        media: "visual",
+        inherited: true,
+        animationType: "notAnimatable",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "none",
+        appliesto: "nonReplacedInlineElements",
+        computed: "keywordPlusIntegerIfDigits",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-combine-upright"
+      },
+      "text-decoration": {
+        syntax: "<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "text-decoration-color",
+          "text-decoration-style",
+          "text-decoration-line",
+          "text-decoration-thickness"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: [
+          "text-decoration-color",
+          "text-decoration-style",
+          "text-decoration-line"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "text-decoration-line",
+          "text-decoration-style",
+          "text-decoration-color",
+          "text-decoration-thickness"
+        ],
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration"
+      },
+      "text-decoration-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-color"
+      },
+      "text-decoration-line": {
+        syntax: "none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-line"
+      },
+      "text-decoration-skip": {
+        syntax: "none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "objects",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip"
+      },
+      "text-decoration-skip-ink": {
+        syntax: "auto | all | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink"
+      },
+      "text-decoration-style": {
+        syntax: "solid | double | dotted | dashed | wavy",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "solid",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-style"
+      },
+      "text-decoration-thickness": {
+        syntax: "auto | from-font | <length> | <percentage> ",
+        media: "visual",
+        inherited: false,
+        animationType: "byComputedValueType",
+        percentages: "referToElementFontSize",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness"
+      },
+      "text-emphasis": {
+        syntax: "<'text-emphasis-style'> || <'text-emphasis-color'>",
+        media: "visual",
+        inherited: false,
+        animationType: [
+          "text-emphasis-color",
+          "text-emphasis-style"
+        ],
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: [
+          "text-emphasis-style",
+          "text-emphasis-color"
+        ],
+        appliesto: "allElements",
+        computed: [
+          "text-emphasis-style",
+          "text-emphasis-color"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-emphasis"
+      },
+      "text-emphasis-color": {
+        syntax: "<color>",
+        media: "visual",
+        inherited: false,
+        animationType: "color",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "currentcolor",
+        appliesto: "allElements",
+        computed: "computedColor",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color"
+      },
+      "text-emphasis-position": {
+        syntax: "[ over | under ] && [ right | left ]",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "over right",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position"
+      },
+      "text-emphasis-style": {
+        syntax: "none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style"
+      },
+      "text-indent": {
+        syntax: "<length-percentage> && hanging? && each-line?",
+        media: "visual",
+        inherited: true,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "0",
+        appliesto: "blockContainers",
+        computed: "percentageOrAbsoluteLengthPlusKeywords",
+        order: "lengthOrPercentageBeforeKeywords",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-indent"
+      },
+      "text-justify": {
+        syntax: "auto | inter-character | inter-word | none",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "auto",
+        appliesto: "inlineLevelAndTableCellElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-justify"
+      },
+      "text-orientation": {
+        syntax: "mixed | upright | sideways",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "mixed",
+        appliesto: "allElementsExceptTableRowGroupsRowsColumnGroupsAndColumns",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-orientation"
+      },
+      "text-overflow": {
+        syntax: "[ clip | ellipsis | <string> ]{1,2}",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "clip",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-overflow"
+      },
+      "text-rendering": {
+        syntax: "auto | optimizeSpeed | optimizeLegibility | geometricPrecision",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Miscellaneous"
+        ],
+        initial: "auto",
+        appliesto: "textElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-rendering"
+      },
+      "text-shadow": {
+        syntax: "none | <shadow-t>#",
+        media: "visual",
+        inherited: true,
+        animationType: "shadowList",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "colorPlusThreeAbsoluteLengths",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-shadow"
+      },
+      "text-size-adjust": {
+        syntax: "none | auto | <percentage>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "referToSizeOfFont",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "autoForSmartphoneBrowsersSupportingInflation",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "experimental",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-size-adjust"
+      },
+      "text-transform": {
+        syntax: "none | capitalize | uppercase | lowercase | full-width | full-size-kana",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "none",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-transform"
+      },
+      "text-underline-offset": {
+        syntax: "auto | <length> | <percentage> ",
+        media: "visual",
+        inherited: true,
+        animationType: "byComputedValueType",
+        percentages: "referToElementFontSize",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-underline-offset"
+      },
+      "text-underline-position": {
+        syntax: "auto | from-font | [ under || [ left | right ] ]",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text Decoration"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/text-underline-position"
+      },
+      top: {
+        syntax: "<length> | <percentage> | auto",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToContainingBlockHeight",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "lengthAbsolutePercentageAsSpecifiedOtherwiseAuto",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/top"
+      },
+      "touch-action": {
+        syntax: "auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "Pointer Events"
+        ],
+        initial: "auto",
+        appliesto: "allElementsExceptNonReplacedInlineElementsTableRowsColumnsRowColumnGroups",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/touch-action"
+      },
+      transform: {
+        syntax: "none | <transform-list>",
+        media: "visual",
+        inherited: false,
+        animationType: "transform",
+        percentages: "referToSizeOfBoundingBox",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transform"
+      },
+      "transform-box": {
+        syntax: "content-box | border-box | fill-box | stroke-box | view-box",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "view-box",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transform-box"
+      },
+      "transform-origin": {
+        syntax: "[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?",
+        media: "visual",
+        inherited: false,
+        animationType: "simpleListOfLpc",
+        percentages: "referToSizeOfBoundingBox",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "50% 50% 0",
+        appliesto: "transformableElements",
+        computed: "forLengthAbsoluteValueOtherwisePercentage",
+        order: "oneOrTwoValuesLengthAbsoluteKeywordsPercentages",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transform-origin"
+      },
+      "transform-style": {
+        syntax: "flat | preserve-3d",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "flat",
+        appliesto: "transformableElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transform-style"
+      },
+      transition: {
+        syntax: "<single-transition>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: [
+          "transition-delay",
+          "transition-duration",
+          "transition-property",
+          "transition-timing-function"
+        ],
+        appliesto: "allElementsAndPseudos",
+        computed: [
+          "transition-delay",
+          "transition-duration",
+          "transition-property",
+          "transition-timing-function"
+        ],
+        order: "orderOfAppearance",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition"
+      },
+      "transition-delay": {
+        syntax: "<time>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: "0s",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition-delay"
+      },
+      "transition-duration": {
+        syntax: "<time>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: "0s",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition-duration"
+      },
+      "transition-property": {
+        syntax: "none | <single-transition-property>#",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: "all",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition-property"
+      },
+      "transition-timing-function": {
+        syntax: "<easing-function>#",
+        media: "interactive",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Transitions"
+        ],
+        initial: "ease",
+        appliesto: "allElementsAndPseudos",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/transition-timing-function"
+      },
+      translate: {
+        syntax: "none | <length-percentage> [ <length-percentage> <length>? ]?",
+        media: "visual",
+        inherited: false,
+        animationType: "transform",
+        percentages: "referToSizeOfBoundingBox",
+        groups: [
+          "CSS Transforms"
+        ],
+        initial: "none",
+        appliesto: "transformableElements",
+        computed: "asSpecifiedRelativeToAbsoluteLengths",
+        order: "perGrammar",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/translate"
+      },
+      "unicode-bidi": {
+        syntax: "normal | embed | isolate | bidi-override | isolate-override | plaintext",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "normal",
+        appliesto: "allElementsSomeValuesNoEffectOnNonInlineElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/unicode-bidi"
+      },
+      "user-select": {
+        syntax: "auto | text | none | contain | all",
+        media: "visual",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Basic User Interface"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/user-select"
+      },
+      "vertical-align": {
+        syntax: "baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>",
+        media: "visual",
+        inherited: false,
+        animationType: "length",
+        percentages: "referToLineHeight",
+        groups: [
+          "CSS Table"
+        ],
+        initial: "baseline",
+        appliesto: "inlineLevelAndTableCellElements",
+        computed: "absoluteLengthOrKeyword",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/vertical-align"
+      },
+      visibility: {
+        syntax: "visible | hidden | collapse",
+        media: "visual",
+        inherited: true,
+        animationType: "visibility",
+        percentages: "no",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "visible",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/visibility"
+      },
+      "white-space": {
+        syntax: "normal | pre | nowrap | pre-wrap | pre-line | break-spaces",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/white-space"
+      },
+      widows: {
+        syntax: "<integer>",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Fragmentation"
+        ],
+        initial: "2",
+        appliesto: "blockContainerElements",
+        computed: "asSpecified",
+        order: "perGrammar",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/widows"
+      },
+      width: {
+        syntax: "auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)",
+        media: "visual",
+        inherited: false,
+        animationType: "lpc",
+        percentages: "referToWidthOfContainingBlock",
+        groups: [
+          "CSS Box Model"
+        ],
+        initial: "auto",
+        appliesto: "allElementsButNonReplacedAndTableRows",
+        computed: "percentageAutoOrAbsoluteLength",
+        order: "lengthOrPercentageBeforeKeywordIfBothPresent",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/width"
+      },
+      "will-change": {
+        syntax: "auto | <animateable-feature>#",
+        media: "all",
+        inherited: false,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Will Change"
+        ],
+        initial: "auto",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/will-change"
+      },
+      "word-break": {
+        syntax: "normal | break-all | keep-all | break-word",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/word-break"
+      },
+      "word-spacing": {
+        syntax: "normal | <length>",
+        media: "visual",
+        inherited: true,
+        animationType: "length",
+        percentages: "referToWidthOfAffectedGlyph",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "optimumMinAndMaxValueOfAbsoluteLengthPercentageOrNormal",
+        order: "uniqueOrder",
+        alsoAppliesTo: [
+          "::first-letter",
+          "::first-line",
+          "::placeholder"
+        ],
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/word-spacing"
+      },
+      "word-wrap": {
+        syntax: "normal | break-word",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Text"
+        ],
+        initial: "normal",
+        appliesto: "nonReplacedInlineElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/overflow-wrap"
+      },
+      "writing-mode": {
+        syntax: "horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr",
+        media: "visual",
+        inherited: true,
+        animationType: "discrete",
+        percentages: "no",
+        groups: [
+          "CSS Writing Modes"
+        ],
+        initial: "horizontal-tb",
+        appliesto: "allElementsExceptTableRowColumnGroupsTableRowsColumns",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/writing-mode"
+      },
+      "z-index": {
+        syntax: "auto | <integer>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "CSS Positioning"
+        ],
+        initial: "auto",
+        appliesto: "positionedElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        stacking: true,
+        status: "standard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/z-index"
+      },
+      zoom: {
+        syntax: "normal | reset | <number> | <percentage>",
+        media: "visual",
+        inherited: false,
+        animationType: "integer",
+        percentages: "no",
+        groups: [
+          "Microsoft Extensions"
+        ],
+        initial: "normal",
+        appliesto: "allElements",
+        computed: "asSpecified",
+        order: "uniqueOrder",
+        status: "nonstandard",
+        mdn_url: "https://developer.mozilla.org/docs/Web/CSS/zoom"
+      }
+    };
+  }
+});
+
+// node_modules/csso/node_modules/mdn-data/css/syntaxes.json
+var require_syntaxes2 = __commonJS({
+  "node_modules/csso/node_modules/mdn-data/css/syntaxes.json"(exports2, module2) {
+    module2.exports = {
+      "absolute-size": {
+        syntax: "xx-small | x-small | small | medium | large | x-large | xx-large | xxx-large"
+      },
+      "alpha-value": {
+        syntax: "<number> | <percentage>"
+      },
+      "angle-percentage": {
+        syntax: "<angle> | <percentage>"
+      },
+      "angular-color-hint": {
+        syntax: "<angle-percentage>"
+      },
+      "angular-color-stop": {
+        syntax: "<color> && <color-stop-angle>?"
+      },
+      "angular-color-stop-list": {
+        syntax: "[ <angular-color-stop> [, <angular-color-hint>]? ]# , <angular-color-stop>"
+      },
+      "animateable-feature": {
+        syntax: "scroll-position | contents | <custom-ident>"
+      },
+      attachment: {
+        syntax: "scroll | fixed | local"
+      },
+      "attr()": {
+        syntax: "attr( <attr-name> <type-or-unit>? [, <attr-fallback> ]? )"
+      },
+      "attr-matcher": {
+        syntax: "[ '~' | '|' | '^' | '$' | '*' ]? '='"
+      },
+      "attr-modifier": {
+        syntax: "i | s"
+      },
+      "attribute-selector": {
+        syntax: "'[' <wq-name> ']' | '[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']'"
+      },
+      "auto-repeat": {
+        syntax: "repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )"
+      },
+      "auto-track-list": {
+        syntax: "[ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>? <auto-repeat>\n[ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?"
+      },
+      "baseline-position": {
+        syntax: "[ first | last ]? baseline"
+      },
+      "basic-shape": {
+        syntax: "<inset()> | <circle()> | <ellipse()> | <polygon()> | <path()>"
+      },
+      "bg-image": {
+        syntax: "none | <image>"
+      },
+      "bg-layer": {
+        syntax: "<bg-image> || <bg-position> [ / <bg-size> ]? || <repeat-style> || <attachment> || <box> || <box>"
+      },
+      "bg-position": {
+        syntax: "[ [ 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": {
+        syntax: "[ <length-percentage> | auto ]{1,2} | cover | contain"
+      },
+      "blur()": {
+        syntax: "blur( <length> )"
+      },
+      "blend-mode": {
+        syntax: "normal | multiply | screen | overlay | darken | lighten | color-dodge | color-burn | hard-light | soft-light | difference | exclusion | hue | saturation | color | luminosity"
+      },
+      box: {
+        syntax: "border-box | padding-box | content-box"
+      },
+      "brightness()": {
+        syntax: "brightness( <number-percentage> )"
+      },
+      "calc()": {
+        syntax: "calc( <calc-sum> )"
+      },
+      "calc-sum": {
+        syntax: "<calc-product> [ [ '+' | '-' ] <calc-product> ]*"
+      },
+      "calc-product": {
+        syntax: "<calc-value> [ '*' <calc-value> | '/' <number> ]*"
+      },
+      "calc-value": {
+        syntax: "<number> | <dimension> | <percentage> | ( <calc-sum> )"
+      },
+      "cf-final-image": {
+        syntax: "<image> | <color>"
+      },
+      "cf-mixing-image": {
+        syntax: "<percentage>? && <image>"
+      },
+      "circle()": {
+        syntax: "circle( [ <shape-radius> ]? [ at <position> ]? )"
+      },
+      "clamp()": {
+        syntax: "clamp( <calc-sum>#{3} )"
+      },
+      "class-selector": {
+        syntax: "'.' <ident-token>"
+      },
+      "clip-source": {
+        syntax: "<url>"
+      },
+      color: {
+        syntax: "<rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <hex-color> | <named-color> | currentcolor | <deprecated-system-color>"
+      },
+      "color-stop": {
+        syntax: "<color-stop-length> | <color-stop-angle>"
+      },
+      "color-stop-angle": {
+        syntax: "<angle-percentage>{1,2}"
+      },
+      "color-stop-length": {
+        syntax: "<length-percentage>{1,2}"
+      },
+      "color-stop-list": {
+        syntax: "[ <linear-color-stop> [, <linear-color-hint>]? ]# , <linear-color-stop>"
+      },
+      combinator: {
+        syntax: "'>' | '+' | '~' | [ '||' ]"
+      },
+      "common-lig-values": {
+        syntax: "[ common-ligatures | no-common-ligatures ]"
+      },
+      "compat-auto": {
+        syntax: "searchfield | textarea | push-button | slider-horizontal | checkbox | radio | square-button | menulist | listbox | meter | progress-bar | button"
+      },
+      "composite-style": {
+        syntax: "clear | copy | source-over | source-in | source-out | source-atop | destination-over | destination-in | destination-out | destination-atop | xor"
+      },
+      "compositing-operator": {
+        syntax: "add | subtract | intersect | exclude"
+      },
+      "compound-selector": {
+        syntax: "[ <type-selector>? <subclass-selector>* [ <pseudo-element-selector> <pseudo-class-selector>* ]* ]!"
+      },
+      "compound-selector-list": {
+        syntax: "<compound-selector>#"
+      },
+      "complex-selector": {
+        syntax: "<compound-selector> [ <combinator>? <compound-selector> ]*"
+      },
+      "complex-selector-list": {
+        syntax: "<complex-selector>#"
+      },
+      "conic-gradient()": {
+        syntax: "conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )"
+      },
+      "contextual-alt-values": {
+        syntax: "[ contextual | no-contextual ]"
+      },
+      "content-distribution": {
+        syntax: "space-between | space-around | space-evenly | stretch"
+      },
+      "content-list": {
+        syntax: "[ <string> | contents | <image> | <counter> | <quote> | <target> | <leader()> ]+"
+      },
+      "content-position": {
+        syntax: "center | start | end | flex-start | flex-end"
+      },
+      "content-replacement": {
+        syntax: "<image>"
+      },
+      "contrast()": {
+        syntax: "contrast( [ <number-percentage> ] )"
+      },
+      counter: {
+        syntax: "<counter()> | <counters()>"
+      },
+      "counter()": {
+        syntax: "counter( <counter-name>, <counter-style>? )"
+      },
+      "counter-name": {
+        syntax: "<custom-ident>"
+      },
+      "counter-style": {
+        syntax: "<counter-style-name> | symbols()"
+      },
+      "counter-style-name": {
+        syntax: "<custom-ident>"
+      },
+      "counters()": {
+        syntax: "counters( <counter-name>, <string>, <counter-style>? )"
+      },
+      "cross-fade()": {
+        syntax: "cross-fade( <cf-mixing-image> , <cf-final-image>? )"
+      },
+      "cubic-bezier-timing-function": {
+        syntax: "ease | ease-in | ease-out | ease-in-out | cubic-bezier(<number [0,1]>, <number>, <number [0,1]>, <number>)"
+      },
+      "deprecated-system-color": {
+        syntax: "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": {
+        syntax: "[ discretionary-ligatures | no-discretionary-ligatures ]"
+      },
+      "display-box": {
+        syntax: "contents | none"
+      },
+      "display-inside": {
+        syntax: "flow | flow-root | table | flex | grid | ruby"
+      },
+      "display-internal": {
+        syntax: "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": {
+        syntax: "inline-block | inline-list-item | inline-table | inline-flex | inline-grid"
+      },
+      "display-listitem": {
+        syntax: "<display-outside>? && [ flow | flow-root ]? && list-item"
+      },
+      "display-outside": {
+        syntax: "block | inline | run-in"
+      },
+      "drop-shadow()": {
+        syntax: "drop-shadow( <length>{2,3} <color>? )"
+      },
+      "east-asian-variant-values": {
+        syntax: "[ jis78 | jis83 | jis90 | jis04 | simplified | traditional ]"
+      },
+      "east-asian-width-values": {
+        syntax: "[ full-width | proportional-width ]"
+      },
+      "element()": {
+        syntax: "element( <id-selector> )"
+      },
+      "ellipse()": {
+        syntax: "ellipse( [ <shape-radius>{2} ]? [ at <position> ]? )"
+      },
+      "ending-shape": {
+        syntax: "circle | ellipse"
+      },
+      "env()": {
+        syntax: "env( <custom-ident> , <declaration-value>? )"
+      },
+      "explicit-track-list": {
+        syntax: "[ <line-names>? <track-size> ]+ <line-names>?"
+      },
+      "family-name": {
+        syntax: "<string> | <custom-ident>+"
+      },
+      "feature-tag-value": {
+        syntax: "<string> [ <integer> | on | off ]?"
+      },
+      "feature-type": {
+        syntax: "@stylistic | @historical-forms | @styleset | @character-variant | @swash | @ornaments | @annotation"
+      },
+      "feature-value-block": {
+        syntax: "<feature-type> '{' <feature-value-declaration-list> '}'"
+      },
+      "feature-value-block-list": {
+        syntax: "<feature-value-block>+"
+      },
+      "feature-value-declaration": {
+        syntax: "<custom-ident>: <integer>+;"
+      },
+      "feature-value-declaration-list": {
+        syntax: "<feature-value-declaration>"
+      },
+      "feature-value-name": {
+        syntax: "<custom-ident>"
+      },
+      "fill-rule": {
+        syntax: "nonzero | evenodd"
+      },
+      "filter-function": {
+        syntax: "<blur()> | <brightness()> | <contrast()> | <drop-shadow()> | <grayscale()> | <hue-rotate()> | <invert()> | <opacity()> | <saturate()> | <sepia()>"
+      },
+      "filter-function-list": {
+        syntax: "[ <filter-function> | <url> ]+"
+      },
+      "final-bg-layer": {
+        syntax: "<'background-color'> || <bg-image> || <bg-position> [ / <bg-size> ]? || <repeat-style> || <attachment> || <box> || <box>"
+      },
+      "fit-content()": {
+        syntax: "fit-content( [ <length> | <percentage> ] )"
+      },
+      "fixed-breadth": {
+        syntax: "<length-percentage>"
+      },
+      "fixed-repeat": {
+        syntax: "repeat( [ <integer [1,\u221E]> ] , [ <line-names>? <fixed-size> ]+ <line-names>? )"
+      },
+      "fixed-size": {
+        syntax: "<fixed-breadth> | minmax( <fixed-breadth> , <track-breadth> ) | minmax( <inflexible-breadth> , <fixed-breadth> )"
+      },
+      "font-stretch-absolute": {
+        syntax: "normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | <percentage>"
+      },
+      "font-variant-css21": {
+        syntax: "[ normal | small-caps ]"
+      },
+      "font-weight-absolute": {
+        syntax: "normal | bold | <number [1,1000]>"
+      },
+      "frequency-percentage": {
+        syntax: "<frequency> | <percentage>"
+      },
+      "general-enclosed": {
+        syntax: "[ <function-token> <any-value> ) ] | ( <ident> <any-value> )"
+      },
+      "generic-family": {
+        syntax: "serif | sans-serif | cursive | fantasy | monospace"
+      },
+      "generic-name": {
+        syntax: "serif | sans-serif | cursive | fantasy | monospace"
+      },
+      "geometry-box": {
+        syntax: "<shape-box> | fill-box | stroke-box | view-box"
+      },
+      gradient: {
+        syntax: "<linear-gradient()> | <repeating-linear-gradient()> | <radial-gradient()> | <repeating-radial-gradient()> | <conic-gradient()> | <repeating-conic-gradient()>"
+      },
+      "grayscale()": {
+        syntax: "grayscale( <number-percentage> )"
+      },
+      "grid-line": {
+        syntax: "auto | <custom-ident> | [ <integer> && <custom-ident>? ] | [ span && [ <integer> || <custom-ident> ] ]"
+      },
+      "historical-lig-values": {
+        syntax: "[ historical-ligatures | no-historical-ligatures ]"
+      },
+      "hsl()": {
+        syntax: "hsl( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsl( <hue>, <percentage>, <percentage>, <alpha-value>? )"
+      },
+      "hsla()": {
+        syntax: "hsla( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsla( <hue>, <percentage>, <percentage>, <alpha-value>? )"
+      },
+      hue: {
+        syntax: "<number> | <angle>"
+      },
+      "hue-rotate()": {
+        syntax: "hue-rotate( <angle> )"
+      },
+      "hwb()": {
+        syntax: "hwb( [<hue> | none] [<percentage> | none] [<percentage> | none] [ / [<alpha-value> | none] ]? )"
+      },
+      "id-selector": {
+        syntax: "<hash-token>"
+      },
+      image: {
+        syntax: "<url> | <image()> | <image-set()> | <element()> | <paint()> | <cross-fade()> | <gradient>"
+      },
+      "image()": {
+        syntax: "image( <image-tags>? [ <image-src>? , <color>? ]! )"
+      },
+      "image-set()": {
+        syntax: "image-set( <image-set-option># )"
+      },
+      "image-set-option": {
+        syntax: "[ <image> | <string> ] [ <resolution> || type(<string>) ]"
+      },
+      "image-src": {
+        syntax: "<url> | <string>"
+      },
+      "image-tags": {
+        syntax: "ltr | rtl"
+      },
+      "inflexible-breadth": {
+        syntax: "<length> | <percentage> | min-content | max-content | auto"
+      },
+      "inset()": {
+        syntax: "inset( <length-percentage>{1,4} [ round <'border-radius'> ]? )"
+      },
+      "invert()": {
+        syntax: "invert( <number-percentage> )"
+      },
+      "keyframes-name": {
+        syntax: "<custom-ident> | <string>"
+      },
+      "keyframe-block": {
+        syntax: "<keyframe-selector># {\n  <declaration-list>\n}"
+      },
+      "keyframe-block-list": {
+        syntax: "<keyframe-block>+"
+      },
+      "keyframe-selector": {
+        syntax: "from | to | <percentage>"
+      },
+      "layer()": {
+        syntax: "layer( <layer-name> )"
+      },
+      "layer-name": {
+        syntax: "<ident> [ '.' <ident> ]*"
+      },
+      "leader()": {
+        syntax: "leader( <leader-type> )"
+      },
+      "leader-type": {
+        syntax: "dotted | solid | space | <string>"
+      },
+      "length-percentage": {
+        syntax: "<length> | <percentage>"
+      },
+      "line-names": {
+        syntax: "'[' <custom-ident>* ']'"
+      },
+      "line-name-list": {
+        syntax: "[ <line-names> | <name-repeat> ]+"
+      },
+      "line-style": {
+        syntax: "none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset"
+      },
+      "line-width": {
+        syntax: "<length> | thin | medium | thick"
+      },
+      "linear-color-hint": {
+        syntax: "<length-percentage>"
+      },
+      "linear-color-stop": {
+        syntax: "<color> <color-stop-length>?"
+      },
+      "linear-gradient()": {
+        syntax: "linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )"
+      },
+      "mask-layer": {
+        syntax: "<mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || <geometry-box> || [ <geometry-box> | no-clip ] || <compositing-operator> || <masking-mode>"
+      },
+      "mask-position": {
+        syntax: "[ <length-percentage> | left | center | right ] [ <length-percentage> | top | center | bottom ]?"
+      },
+      "mask-reference": {
+        syntax: "none | <image> | <mask-source>"
+      },
+      "mask-source": {
+        syntax: "<url>"
+      },
+      "masking-mode": {
+        syntax: "alpha | luminance | match-source"
+      },
+      "matrix()": {
+        syntax: "matrix( <number>#{6} )"
+      },
+      "matrix3d()": {
+        syntax: "matrix3d( <number>#{16} )"
+      },
+      "max()": {
+        syntax: "max( <calc-sum># )"
+      },
+      "media-and": {
+        syntax: "<media-in-parens> [ and <media-in-parens> ]+"
+      },
+      "media-condition": {
+        syntax: "<media-not> | <media-and> | <media-or> | <media-in-parens>"
+      },
+      "media-condition-without-or": {
+        syntax: "<media-not> | <media-and> | <media-in-parens>"
+      },
+      "media-feature": {
+        syntax: "( [ <mf-plain> | <mf-boolean> | <mf-range> ] )"
+      },
+      "media-in-parens": {
+        syntax: "( <media-condition> ) | <media-feature> | <general-enclosed>"
+      },
+      "media-not": {
+        syntax: "not <media-in-parens>"
+      },
+      "media-or": {
+        syntax: "<media-in-parens> [ or <media-in-parens> ]+"
+      },
+      "media-query": {
+        syntax: "<media-condition> | [ not | only ]? <media-type> [ and <media-condition-without-or> ]?"
+      },
+      "media-query-list": {
+        syntax: "<media-query>#"
+      },
+      "media-type": {
+        syntax: "<ident>"
+      },
+      "mf-boolean": {
+        syntax: "<mf-name>"
+      },
+      "mf-name": {
+        syntax: "<ident>"
+      },
+      "mf-plain": {
+        syntax: "<mf-name> : <mf-value>"
+      },
+      "mf-range": {
+        syntax: "<mf-name> [ '<' | '>' ]? '='? <mf-value>\n| <mf-value> [ '<' | '>' ]? '='? <mf-name>\n| <mf-value> '<' '='? <mf-name> '<' '='? <mf-value>\n| <mf-value> '>' '='? <mf-name> '>' '='? <mf-value>"
+      },
+      "mf-value": {
+        syntax: "<number> | <dimension> | <ident> | <ratio>"
+      },
+      "min()": {
+        syntax: "min( <calc-sum># )"
+      },
+      "minmax()": {
+        syntax: "minmax( [ <length> | <percentage> | min-content | max-content | auto ] , [ <length> | <percentage> | <flex> | min-content | max-content | auto ] )"
+      },
+      "name-repeat": {
+        syntax: "repeat( [ <integer [1,\u221E]> | auto-fill ], <line-names>+ )"
+      },
+      "named-color": {
+        syntax: "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": {
+        syntax: "<ident>"
+      },
+      "ns-prefix": {
+        syntax: "[ <ident-token> | '*' ]? '|'"
+      },
+      "number-percentage": {
+        syntax: "<number> | <percentage>"
+      },
+      "numeric-figure-values": {
+        syntax: "[ lining-nums | oldstyle-nums ]"
+      },
+      "numeric-fraction-values": {
+        syntax: "[ diagonal-fractions | stacked-fractions ]"
+      },
+      "numeric-spacing-values": {
+        syntax: "[ proportional-nums | tabular-nums ]"
+      },
+      nth: {
+        syntax: "<an-plus-b> | even | odd"
+      },
+      "opacity()": {
+        syntax: "opacity( [ <number-percentage> ] )"
+      },
+      "overflow-position": {
+        syntax: "unsafe | safe"
+      },
+      "outline-radius": {
+        syntax: "<length> | <percentage>"
+      },
+      "page-body": {
+        syntax: "<declaration>? [ ; <page-body> ]? | <page-margin-box> <page-body>"
+      },
+      "page-margin-box": {
+        syntax: "<page-margin-box-type> '{' <declaration-list> '}'"
+      },
+      "page-margin-box-type": {
+        syntax: "@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": {
+        syntax: "[ <page-selector># ]?"
+      },
+      "page-selector": {
+        syntax: "<pseudo-page>+ | <ident> <pseudo-page>*"
+      },
+      "page-size": {
+        syntax: "A5 | A4 | A3 | B5 | B4 | JIS-B5 | JIS-B4 | letter | legal | ledger"
+      },
+      "path()": {
+        syntax: "path( [ <fill-rule>, ]? <string> )"
+      },
+      "paint()": {
+        syntax: "paint( <ident>, <declaration-value>? )"
+      },
+      "perspective()": {
+        syntax: "perspective( <length> )"
+      },
+      "polygon()": {
+        syntax: "polygon( <fill-rule>? , [ <length-percentage> <length-percentage> ]# )"
+      },
+      position: {
+        syntax: "[ [ 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": {
+        syntax: "':' <ident-token> | ':' <function-token> <any-value> ')'"
+      },
+      "pseudo-element-selector": {
+        syntax: "':' <pseudo-class-selector>"
+      },
+      "pseudo-page": {
+        syntax: ": [ left | right | first | blank ]"
+      },
+      quote: {
+        syntax: "open-quote | close-quote | no-open-quote | no-close-quote"
+      },
+      "radial-gradient()": {
+        syntax: "radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )"
+      },
+      "relative-selector": {
+        syntax: "<combinator>? <complex-selector>"
+      },
+      "relative-selector-list": {
+        syntax: "<relative-selector>#"
+      },
+      "relative-size": {
+        syntax: "larger | smaller"
+      },
+      "repeat-style": {
+        syntax: "repeat-x | repeat-y | [ repeat | space | round | no-repeat ]{1,2}"
+      },
+      "repeating-conic-gradient()": {
+        syntax: "repeating-conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )"
+      },
+      "repeating-linear-gradient()": {
+        syntax: "repeating-linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )"
+      },
+      "repeating-radial-gradient()": {
+        syntax: "repeating-radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )"
+      },
+      "rgb()": {
+        syntax: "rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) | rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )"
+      },
+      "rgba()": {
+        syntax: "rgba( <percentage>{3} [ / <alpha-value> ]? ) | rgba( <number>{3} [ / <alpha-value> ]? ) | rgba( <percentage>#{3} , <alpha-value>? ) | rgba( <number>#{3} , <alpha-value>? )"
+      },
+      "rotate()": {
+        syntax: "rotate( [ <angle> | <zero> ] )"
+      },
+      "rotate3d()": {
+        syntax: "rotate3d( <number> , <number> , <number> , [ <angle> | <zero> ] )"
+      },
+      "rotateX()": {
+        syntax: "rotateX( [ <angle> | <zero> ] )"
+      },
+      "rotateY()": {
+        syntax: "rotateY( [ <angle> | <zero> ] )"
+      },
+      "rotateZ()": {
+        syntax: "rotateZ( [ <angle> | <zero> ] )"
+      },
+      "saturate()": {
+        syntax: "saturate( <number-percentage> )"
+      },
+      "scale()": {
+        syntax: "scale( <number> , <number>? )"
+      },
+      "scale3d()": {
+        syntax: "scale3d( <number> , <number> , <number> )"
+      },
+      "scaleX()": {
+        syntax: "scaleX( <number> )"
+      },
+      "scaleY()": {
+        syntax: "scaleY( <number> )"
+      },
+      "scaleZ()": {
+        syntax: "scaleZ( <number> )"
+      },
+      "self-position": {
+        syntax: "center | start | end | self-start | self-end | flex-start | flex-end"
+      },
+      "shape-radius": {
+        syntax: "<length-percentage> | closest-side | farthest-side"
+      },
+      "skew()": {
+        syntax: "skew( [ <angle> | <zero> ] , [ <angle> | <zero> ]? )"
+      },
+      "skewX()": {
+        syntax: "skewX( [ <angle> | <zero> ] )"
+      },
+      "skewY()": {
+        syntax: "skewY( [ <angle> | <zero> ] )"
+      },
+      "sepia()": {
+        syntax: "sepia( <number-percentage> )"
+      },
+      shadow: {
+        syntax: "inset? && <length>{2,4} && <color>?"
+      },
+      "shadow-t": {
+        syntax: "[ <length>{2,3} && <color>? ]"
+      },
+      shape: {
+        syntax: "rect(<top>, <right>, <bottom>, <left>)"
+      },
+      "shape-box": {
+        syntax: "<box> | margin-box"
+      },
+      "side-or-corner": {
+        syntax: "[ left | right ] || [ top | bottom ]"
+      },
+      "single-animation": {
+        syntax: "<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": {
+        syntax: "normal | reverse | alternate | alternate-reverse"
+      },
+      "single-animation-fill-mode": {
+        syntax: "none | forwards | backwards | both"
+      },
+      "single-animation-iteration-count": {
+        syntax: "infinite | <number>"
+      },
+      "single-animation-play-state": {
+        syntax: "running | paused"
+      },
+      "single-animation-timeline": {
+        syntax: "auto | none | <timeline-name>"
+      },
+      "single-transition": {
+        syntax: "[ none | <single-transition-property> ] || <time> || <easing-function> || <time>"
+      },
+      "single-transition-property": {
+        syntax: "all | <custom-ident>"
+      },
+      size: {
+        syntax: "closest-side | farthest-side | closest-corner | farthest-corner | <length> | <length-percentage>{2}"
+      },
+      "step-position": {
+        syntax: "jump-start | jump-end | jump-none | jump-both | start | end"
+      },
+      "step-timing-function": {
+        syntax: "step-start | step-end | steps(<integer>[, <step-position>]?)"
+      },
+      "subclass-selector": {
+        syntax: "<id-selector> | <class-selector> | <attribute-selector> | <pseudo-class-selector>"
+      },
+      "supports-condition": {
+        syntax: "not <supports-in-parens> | <supports-in-parens> [ and <supports-in-parens> ]* | <supports-in-parens> [ or <supports-in-parens> ]*"
+      },
+      "supports-in-parens": {
+        syntax: "( <supports-condition> ) | <supports-feature> | <general-enclosed>"
+      },
+      "supports-feature": {
+        syntax: "<supports-decl> | <supports-selector-fn>"
+      },
+      "supports-decl": {
+        syntax: "( <declaration> )"
+      },
+      "supports-selector-fn": {
+        syntax: "selector( <complex-selector> )"
+      },
+      symbol: {
+        syntax: "<string> | <image> | <custom-ident>"
+      },
+      target: {
+        syntax: "<target-counter()> | <target-counters()> | <target-text()>"
+      },
+      "target-counter()": {
+        syntax: "target-counter( [ <string> | <url> ] , <custom-ident> , <counter-style>? )"
+      },
+      "target-counters()": {
+        syntax: "target-counters( [ <string> | <url> ] , <custom-ident> , <string> , <counter-style>? )"
+      },
+      "target-text()": {
+        syntax: "target-text( [ <string> | <url> ] , [ content | before | after | first-letter ]? )"
+      },
+      "time-percentage": {
+        syntax: "<time> | <percentage>"
+      },
+      "timeline-name": {
+        syntax: "<custom-ident> | <string>"
+      },
+      "easing-function": {
+        syntax: "linear | <cubic-bezier-timing-function> | <step-timing-function>"
+      },
+      "track-breadth": {
+        syntax: "<length-percentage> | <flex> | min-content | max-content | auto"
+      },
+      "track-list": {
+        syntax: "[ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?"
+      },
+      "track-repeat": {
+        syntax: "repeat( [ <integer [1,\u221E]> ] , [ <line-names>? <track-size> ]+ <line-names>? )"
+      },
+      "track-size": {
+        syntax: "<track-breadth> | minmax( <inflexible-breadth> , <track-breadth> ) | fit-content( [ <length> | <percentage> ] )"
+      },
+      "transform-function": {
+        syntax: "<matrix()> | <translate()> | <translateX()> | <translateY()> | <scale()> | <scaleX()> | <scaleY()> | <rotate()> | <skew()> | <skewX()> | <skewY()> | <matrix3d()> | <translate3d()> | <translateZ()> | <scale3d()> | <scaleZ()> | <rotate3d()> | <rotateX()> | <rotateY()> | <rotateZ()> | <perspective()>"
+      },
+      "transform-list": {
+        syntax: "<transform-function>+"
+      },
+      "translate()": {
+        syntax: "translate( <length-percentage> , <length-percentage>? )"
+      },
+      "translate3d()": {
+        syntax: "translate3d( <length-percentage> , <length-percentage> , <length> )"
+      },
+      "translateX()": {
+        syntax: "translateX( <length-percentage> )"
+      },
+      "translateY()": {
+        syntax: "translateY( <length-percentage> )"
+      },
+      "translateZ()": {
+        syntax: "translateZ( <length> )"
+      },
+      "type-or-unit": {
+        syntax: "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": {
+        syntax: "<wq-name> | <ns-prefix>? '*'"
+      },
+      "var()": {
+        syntax: "var( <custom-property-name> , <declaration-value>? )"
+      },
+      "viewport-length": {
+        syntax: "auto | <length-percentage>"
+      },
+      "visual-box": {
+        syntax: "content-box | padding-box | border-box"
+      },
+      "wq-name": {
+        syntax: "<ns-prefix>? <ident-token>"
+      }
+    };
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/data.cjs
+var require_data2 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/data.cjs"(exports2, module2) {
+    "use strict";
+    var dataPatch = require_data_patch2();
+    var mdnAtrules = require_at_rules2();
+    var mdnProperties = require_properties2();
+    var mdnSyntaxes = require_syntaxes2();
+    var extendSyntax = /^\s*\|\s*/;
+    function preprocessAtrules(dict) {
+      const result = /* @__PURE__ */ Object.create(null);
+      for (const atruleName in dict) {
+        const atrule = dict[atruleName];
+        let descriptors = null;
+        if (atrule.descriptors) {
+          descriptors = /* @__PURE__ */ Object.create(null);
+          for (const descriptor in atrule.descriptors) {
+            descriptors[descriptor] = atrule.descriptors[descriptor].syntax;
+          }
+        }
+        result[atruleName.substr(1)] = {
+          prelude: atrule.syntax.trim().replace(/\{(.|\s)+\}/, "").match(/^@\S+\s+([^;\{]*)/)[1].trim() || null,
+          descriptors
+        };
+      }
+      return result;
+    }
+    function patchDictionary(dict, patchDict) {
+      const result = {};
+      for (const key in dict) {
+        result[key] = dict[key].syntax || dict[key];
+      }
+      for (const key in patchDict) {
+        if (key in dict) {
+          if (patchDict[key].syntax) {
+            result[key] = extendSyntax.test(patchDict[key].syntax) ? result[key] + " " + patchDict[key].syntax.trim() : patchDict[key].syntax;
+          } else {
+            delete result[key];
+          }
+        } else {
+          if (patchDict[key].syntax) {
+            result[key] = patchDict[key].syntax.replace(extendSyntax, "");
+          }
+        }
+      }
+      return result;
+    }
+    function patchAtrules(dict, patchDict) {
+      const result = {};
+      for (const key in dict) {
+        const patchDescriptors = patchDict[key] && patchDict[key].descriptors || null;
+        result[key] = {
+          prelude: key in patchDict && "prelude" in patchDict[key] ? patchDict[key].prelude : dict[key].prelude || null,
+          descriptors: patchDictionary(dict[key].descriptors || {}, patchDescriptors || {})
+        };
+      }
+      for (const key in patchDict) {
+        if (!hasOwnProperty.call(dict, key)) {
+          result[key] = {
+            prelude: patchDict[key].prelude || null,
+            descriptors: patchDict[key].descriptors && patchDictionary({}, patchDict[key].descriptors)
+          };
+        }
+      }
+      return result;
+    }
+    var definitions = {
+      types: patchDictionary(mdnSyntaxes, dataPatch.types),
+      atrules: patchAtrules(preprocessAtrules(mdnAtrules), dataPatch.atrules),
+      properties: patchDictionary(mdnProperties, dataPatch.properties)
+    };
+    module2.exports = definitions;
+  }
+});
+
+// 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"(exports2) {
+    "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);
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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, ";");
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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, "]");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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, "}");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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, "]");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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, "-->");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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, "<!--");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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 + "*/");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "use strict";
+    var names = require_names5();
+    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;
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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, ";");
+        }
+      });
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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, ")");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs
+var require_MediaFeature2 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs"(exports2) {
+    "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, ")");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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, ","));
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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, ")");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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 + "%");
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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, ")");
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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, ")");
+      }
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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, ","));
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions2();
+    var utils = require_utils4();
+    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;
+    }
+    exports2.decode = decode;
+    exports2.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"(exports2) {
+    "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));
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/utils/url.cjs
+var require_url3 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/utils/url.cjs"(exports2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions2();
+    var utils = require_utils4();
+    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 + ")";
+    }
+    exports2.decode = decode;
+    exports2.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"(exports2) {
+    "use strict";
+    var url = require_url3();
+    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));
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.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"(exports2) {
+    "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);
+    }
+    exports2.generate = generate;
+    exports2.name = name;
+    exports2.parse = parse;
+    exports2.structure = structure;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/syntax/node/index.cjs
+var require_node5 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/syntax/node/index.cjs"(exports2) {
+    "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_MediaFeature2();
+    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();
+    exports2.AnPlusB = AnPlusB;
+    exports2.Atrule = Atrule;
+    exports2.AtrulePrelude = AtrulePrelude;
+    exports2.AttributeSelector = AttributeSelector;
+    exports2.Block = Block;
+    exports2.Brackets = Brackets;
+    exports2.CDC = CDC;
+    exports2.CDO = CDO;
+    exports2.ClassSelector = ClassSelector;
+    exports2.Combinator = Combinator;
+    exports2.Comment = Comment;
+    exports2.Declaration = Declaration;
+    exports2.DeclarationList = DeclarationList;
+    exports2.Dimension = Dimension;
+    exports2.Function = Function2;
+    exports2.Hash = Hash;
+    exports2.Identifier = Identifier;
+    exports2.IdSelector = IdSelector;
+    exports2.MediaFeature = MediaFeature;
+    exports2.MediaQuery = MediaQuery;
+    exports2.MediaQueryList = MediaQueryList;
+    exports2.Nth = Nth;
+    exports2.Number = Number$1;
+    exports2.Operator = Operator;
+    exports2.Parentheses = Parentheses;
+    exports2.Percentage = Percentage;
+    exports2.PseudoClassSelector = PseudoClassSelector;
+    exports2.PseudoElementSelector = PseudoElementSelector;
+    exports2.Ratio = Ratio;
+    exports2.Raw = Raw;
+    exports2.Rule = Rule;
+    exports2.Selector = Selector;
+    exports2.SelectorList = SelectorList;
+    exports2.String = String$1;
+    exports2.StyleSheet = StyleSheet;
+    exports2.TypeSelector = TypeSelector;
+    exports2.UnicodeRange = UnicodeRange;
+    exports2.Url = Url;
+    exports2.Value = Value;
+    exports2.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"(exports2, module2) {
+    "use strict";
+    var data = require_data2();
+    var index = require_node5();
+    var lexerConfig = {
+      generic: true,
+      ...data,
+      node: index
+    };
+    module2.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"(exports2, module2) {
+    "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;
+        }
+      }
+    }
+    module2.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"(exports2, module2) {
+    "use strict";
+    var _default = require_default2();
+    var atrulePrelude = {
+      getNode: _default
+    };
+    module2.exports = atrulePrelude;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/syntax/scope/selector.cjs
+var require_selector3 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/syntax/scope/selector.cjs"(exports2, module2) {
+    "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
+    };
+    module2.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"(exports2, module2) {
+    "use strict";
+    function expressionFn() {
+      return this.createSingleNodeList(
+        this.Raw(this.tokenIndex, null, false)
+      );
+    }
+    module2.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"(exports2, module2) {
+    "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;
+    }
+    module2.exports = varFn;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/syntax/scope/value.cjs
+var require_value3 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/syntax/scope/value.cjs"(exports2, module2) {
+    "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
+    };
+    module2.exports = value;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/syntax/scope/index.cjs
+var require_scope2 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/syntax/scope/index.cjs"(exports2) {
+    "use strict";
+    var atrulePrelude = require_atrulePrelude2();
+    var selector = require_selector3();
+    var value = require_value3();
+    exports2.AtrulePrelude = atrulePrelude;
+    exports2.Selector = selector;
+    exports2.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"(exports2, module2) {
+    "use strict";
+    var fontFace = {
+      parse: {
+        prelude: null,
+        block() {
+          return this.Block(true);
+        }
+      }
+    };
+    module2.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"(exports2, module2) {
+    "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
+      }
+    };
+    module2.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"(exports2, module2) {
+    "use strict";
+    var media = {
+      parse: {
+        prelude() {
+          return this.createSingleNodeList(
+            this.MediaQueryList()
+          );
+        },
+        block() {
+          return this.Block(false);
+        }
+      }
+    };
+    module2.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"(exports2, module2) {
+    "use strict";
+    var page = {
+      parse: {
+        prelude() {
+          return this.createSingleNodeList(
+            this.SelectorList()
+          );
+        },
+        block() {
+          return this.Block(true);
+        }
+      }
+    };
+    module2.exports = page;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/supports.cjs
+var require_supports3 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/syntax/atrule/supports.cjs"(exports2, module2) {
+    "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);
+        }
+      }
+    };
+    module2.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"(exports2, module2) {
+    "use strict";
+    var fontFace = require_font_face2();
+    var _import = require_import2();
+    var media = require_media2();
+    var page = require_page2();
+    var supports = require_supports3();
+    var atrule = {
+      "font-face": fontFace,
+      "import": _import,
+      media,
+      page,
+      supports
+    };
+    module2.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"(exports2, module2) {
+    "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
+    };
+    module2.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"(exports2) {
+    "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_MediaFeature2();
+    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();
+    exports2.AnPlusB = AnPlusB.parse;
+    exports2.Atrule = Atrule.parse;
+    exports2.AtrulePrelude = AtrulePrelude.parse;
+    exports2.AttributeSelector = AttributeSelector.parse;
+    exports2.Block = Block.parse;
+    exports2.Brackets = Brackets.parse;
+    exports2.CDC = CDC.parse;
+    exports2.CDO = CDO.parse;
+    exports2.ClassSelector = ClassSelector.parse;
+    exports2.Combinator = Combinator.parse;
+    exports2.Comment = Comment.parse;
+    exports2.Declaration = Declaration.parse;
+    exports2.DeclarationList = DeclarationList.parse;
+    exports2.Dimension = Dimension.parse;
+    exports2.Function = Function2.parse;
+    exports2.Hash = Hash.parse;
+    exports2.Identifier = Identifier.parse;
+    exports2.IdSelector = IdSelector.parse;
+    exports2.MediaFeature = MediaFeature.parse;
+    exports2.MediaQuery = MediaQuery.parse;
+    exports2.MediaQueryList = MediaQueryList.parse;
+    exports2.Nth = Nth.parse;
+    exports2.Number = Number2.parse;
+    exports2.Operator = Operator.parse;
+    exports2.Parentheses = Parentheses.parse;
+    exports2.Percentage = Percentage.parse;
+    exports2.PseudoClassSelector = PseudoClassSelector.parse;
+    exports2.PseudoElementSelector = PseudoElementSelector.parse;
+    exports2.Ratio = Ratio.parse;
+    exports2.Raw = Raw.parse;
+    exports2.Rule = Rule.parse;
+    exports2.Selector = Selector.parse;
+    exports2.SelectorList = SelectorList.parse;
+    exports2.String = String2.parse;
+    exports2.StyleSheet = StyleSheet.parse;
+    exports2.TypeSelector = TypeSelector.parse;
+    exports2.UnicodeRange = UnicodeRange.parse;
+    exports2.Url = Url.parse;
+    exports2.Value = Value.parse;
+    exports2.WhiteSpace = WhiteSpace.parse;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser.cjs
+var require_parser4 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/syntax/config/parser.cjs"(exports2, module2) {
+    "use strict";
+    var index = require_scope2();
+    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
+    };
+    module2.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"(exports2, module2) {
+    "use strict";
+    var index = require_node5();
+    var config = {
+      node: index
+    };
+    module2.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"(exports2, module2) {
+    "use strict";
+    var create = require_create10();
+    var lexer = require_lexer2();
+    var parser = require_parser4();
+    var walker = require_walker2();
+    var syntax = create({
+      ...lexer,
+      ...parser,
+      ...walker
+    });
+    module2.exports = syntax;
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/package.json
+var require_package3 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/package.json"(exports2, module2) {
+    module2.exports = {
+      name: "css-tree",
+      version: "2.2.1",
+      description: "A tool set for CSS: fast detailed parser (CSS \u2192 AST), walker (AST traversal), generator (AST \u2192 CSS) and lexer (validation and matching) based on specs and browser implementations",
+      author: "Roman Dvornov <rdvornov@gmail.com> (https://github.com/lahmatiy)",
+      license: "MIT",
+      repository: "csstree/csstree",
+      keywords: [
+        "css",
+        "ast",
+        "tokenizer",
+        "parser",
+        "walker",
+        "lexer",
+        "generator",
+        "utils",
+        "syntax",
+        "validation"
+      ],
+      type: "module",
+      module: "./lib/index.js",
+      main: "./cjs/index.cjs",
+      exports: {
+        ".": {
+          import: "./lib/index.js",
+          require: "./cjs/index.cjs"
+        },
+        "./dist/*": "./dist/*.js",
+        "./package.json": "./package.json",
+        "./tokenizer": {
+          import: "./lib/tokenizer/index.js",
+          require: "./cjs/tokenizer/index.cjs"
+        },
+        "./parser": {
+          import: "./lib/parser/index.js",
+          require: "./cjs/parser/index.cjs"
+        },
+        "./selector-parser": {
+          import: "./lib/parser/parse-selector.js",
+          require: "./cjs/parser/parse-selector.cjs"
+        },
+        "./generator": {
+          import: "./lib/generator/index.js",
+          require: "./cjs/generator/index.cjs"
+        },
+        "./walker": {
+          import: "./lib/walker/index.js",
+          require: "./cjs/walker/index.cjs"
+        },
+        "./convertor": {
+          import: "./lib/convertor/index.js",
+          require: "./cjs/convertor/index.cjs"
+        },
+        "./lexer": {
+          import: "./lib/lexer/index.js",
+          require: "./cjs/lexer/index.cjs"
+        },
+        "./definition-syntax": {
+          import: "./lib/definition-syntax/index.js",
+          require: "./cjs/definition-syntax/index.cjs"
+        },
+        "./definition-syntax-data": {
+          import: "./lib/data.js",
+          require: "./cjs/data.cjs"
+        },
+        "./definition-syntax-data-patch": {
+          import: "./lib/data-patch.js",
+          require: "./cjs/data-patch.cjs"
+        },
+        "./utils": {
+          import: "./lib/utils/index.js",
+          require: "./cjs/utils/index.cjs"
+        }
+      },
+      browser: {
+        "./cjs/data.cjs": "./dist/data.cjs",
+        "./cjs/version.cjs": "./dist/version.cjs",
+        "./lib/data.js": "./dist/data.js",
+        "./lib/version.js": "./dist/version.js"
+      },
+      unpkg: "dist/csstree.esm.js",
+      jsdelivr: "dist/csstree.esm.js",
+      scripts: {
+        watch: "npm run build -- --watch",
+        build: "npm run bundle && npm run esm-to-cjs --",
+        "build-and-test": "npm run build && npm run test:dist && npm run test:cjs",
+        bundle: "node scripts/bundle",
+        "bundle-and-test": "npm run bundle && npm run test:dist",
+        "esm-to-cjs": "node scripts/esm-to-cjs.cjs",
+        "esm-to-cjs-and-test": "npm run esm-to-cjs && npm run test:cjs",
+        lint: "eslint lib scripts && node scripts/review-syntax-patch --lint && node scripts/update-docs --lint",
+        "lint-and-test": "npm run lint && npm test",
+        "update:docs": "node scripts/update-docs",
+        "review:syntax-patch": "node scripts/review-syntax-patch",
+        test: "mocha lib/__tests --reporter ${REPORTER:-progress}",
+        "test:cjs": "mocha cjs/__tests --reporter ${REPORTER:-progress}",
+        "test:dist": "mocha dist/__tests --reporter ${REPORTER:-progress}",
+        coverage: "c8 --exclude lib/__tests --reporter=lcovonly npm test",
+        prepublishOnly: "npm run lint-and-test && npm run build-and-test",
+        hydrogen: "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/parse --stat -o /dev/null"
+      },
+      dependencies: {
+        "mdn-data": "2.0.28",
+        "source-map-js": "^1.0.1"
+      },
+      devDependencies: {
+        c8: "^7.7.1",
+        clap: "^2.0.1",
+        esbuild: "^0.14.53",
+        eslint: "^8.4.1",
+        "json-to-ast": "^2.1.0",
+        mocha: "^9.1.4",
+        rollup: "^2.68.0"
+      },
+      engines: {
+        node: "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+        npm: ">=7.0.0"
+      },
+      files: [
+        "data",
+        "dist",
+        "cjs",
+        "!cjs/__tests",
+        "lib",
+        "!lib/__tests"
+      ]
+    };
+  }
+});
+
+// node_modules/csso/node_modules/css-tree/cjs/version.cjs
+var require_version3 = __commonJS({
+  "node_modules/csso/node_modules/css-tree/cjs/version.cjs"(exports2) {
+    "use strict";
+    var { version } = require_package3();
+    exports2.version = version;
+  }
+});
+
+// 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"(exports2) {
+    "use strict";
+    var SyntaxError2 = require_SyntaxError4();
+    var generate = require_generate2();
+    var parse = require_parse7();
+    var walk = require_walk3();
+    exports2.SyntaxError = SyntaxError2.SyntaxError;
+    exports2.generate = generate.generate;
+    exports2.parse = parse.parse;
+    exports2.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"(exports2) {
+    "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;
+    }
+    exports2.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"(exports2) {
+    "use strict";
+    var charCodeDefinitions = require_char_code_definitions2();
+    var utils = require_utils4();
+    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;
+    }
+    exports2.decode = decode;
+    exports2.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"(exports2) {
+    "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_names5();
+    var ident = require_ident2();
+    var string = require_string2();
+    var url = require_url3();
+    var types = require_types3();
+    var names = require_names4();
+    var TokenStream = require_TokenStream2();
+    var {
+      tokenize,
+      parse,
+      generate,
+      lexer,
+      createLexer,
+      walk,
+      find,
+      findLast,
+      findAll,
+      toPlainObject,
+      fromPlainObject,
+      fork
+    } = index$1;
+    exports2.version = version.version;
+    exports2.createSyntax = create;
+    exports2.List = List.List;
+    exports2.Lexer = Lexer.Lexer;
+    exports2.definitionSyntax = index;
+    exports2.clone = clone.clone;
+    exports2.isCustomProperty = names$1.isCustomProperty;
+    exports2.keyword = names$1.keyword;
+    exports2.property = names$1.property;
+    exports2.vendorPrefix = names$1.vendorPrefix;
+    exports2.ident = ident;
+    exports2.string = string;
+    exports2.url = url;
+    exports2.tokenTypes = types;
+    exports2.tokenNames = names;
+    exports2.TokenStream = TokenStream.TokenStream;
+    exports2.createLexer = createLexer;
+    exports2.find = find;
+    exports2.findAll = findAll;
+    exports2.findLast = findLast;
+    exports2.fork = fork;
+    exports2.fromPlainObject = fromPlainObject;
+    exports2.generate = generate;
+    exports2.lexer = lexer;
+    exports2.parse = parse;
+    exports2.toPlainObject = toPlainObject;
+    exports2.tokenize = tokenize;
+    exports2.walk = walk;
+  }
+});
+
+// node_modules/csso/cjs/usage.cjs
+var require_usage = __commonJS({
+  "node_modules/csso/cjs/usage.cjs"(exports2) {
+    "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
+      };
+    }
+    exports2.buildIndex = buildIndex;
+  }
+});
+
+// node_modules/csso/cjs/clean/utils.cjs
+var require_utils5 = __commonJS({
+  "node_modules/csso/cjs/clean/utils.cjs"(exports2) {
+    "use strict";
+    function hasNoChildren(node) {
+      return !node || !node.children || node.children.isEmpty;
+    }
+    function isNodeChildrenList(node, list) {
+      return node !== null && node.children === list;
+    }
+    exports2.hasNoChildren = hasNoChildren;
+    exports2.isNodeChildrenList = isNodeChildrenList;
+  }
+});
+
+// node_modules/csso/cjs/clean/Atrule.cjs
+var require_Atrule3 = __commonJS({
+  "node_modules/csso/cjs/clean/Atrule.cjs"(exports2, module2) {
+    "use strict";
+    var cssTree = require_cjs2();
+    var utils = require_utils5();
+    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);
+            }
+          }
+        }
+      }
+    }
+    module2.exports = cleanAtrule;
+  }
+});
+
+// node_modules/csso/cjs/clean/Comment.cjs
+var require_Comment3 = __commonJS({
+  "node_modules/csso/cjs/clean/Comment.cjs"(exports2, module2) {
+    "use strict";
+    function cleanComment(data, item, list) {
+      list.remove(item);
+    }
+    module2.exports = cleanComment;
+  }
+});
+
+// node_modules/csso/cjs/clean/Declaration.cjs
+var require_Declaration3 = __commonJS({
+  "node_modules/csso/cjs/clean/Declaration.cjs"(exports2, module2) {
+    "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();
+        }
+      }
+    }
+    module2.exports = cleanDeclartion;
+  }
+});
+
+// node_modules/csso/cjs/clean/Raw.cjs
+var require_Raw3 = __commonJS({
+  "node_modules/csso/cjs/clean/Raw.cjs"(exports2, module2) {
+    "use strict";
+    var utils = require_utils5();
+    function cleanRaw(node, item, list) {
+      if (utils.isNodeChildrenList(this.stylesheet, list) || utils.isNodeChildrenList(this.block, list)) {
+        list.remove(item);
+      }
+    }
+    module2.exports = cleanRaw;
+  }
+});
+
+// node_modules/csso/cjs/clean/Rule.cjs
+var require_Rule3 = __commonJS({
+  "node_modules/csso/cjs/clean/Rule.cjs"(exports2, module2) {
+    "use strict";
+    var cssTree = require_cjs2();
+    var utils = require_utils5();
+    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;
+        }
+      }
+    }
+    module2.exports = cleanRule;
+  }
+});
+
+// node_modules/csso/cjs/clean/TypeSelector.cjs
+var require_TypeSelector3 = __commonJS({
+  "node_modules/csso/cjs/clean/TypeSelector.cjs"(exports2, module2) {
+    "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);
+      }
+    }
+    module2.exports = cleanTypeSelector;
+  }
+});
+
+// node_modules/csso/cjs/clean/WhiteSpace.cjs
+var require_WhiteSpace3 = __commonJS({
+  "node_modules/csso/cjs/clean/WhiteSpace.cjs"(exports2, module2) {
+    "use strict";
+    function cleanWhitespace(node, item, list) {
+      list.remove(item);
+    }
+    module2.exports = cleanWhitespace;
+  }
+});
+
+// node_modules/csso/cjs/clean/index.cjs
+var require_clean = __commonJS({
+  "node_modules/csso/cjs/clean/index.cjs"(exports2, module2) {
+    "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);
+          }
+        }
+      });
+    }
+    module2.exports = clean;
+  }
+});
+
+// node_modules/csso/cjs/replace/atrule/keyframes.cjs
+var require_keyframes = __commonJS({
+  "node_modules/csso/cjs/replace/atrule/keyframes.cjs"(exports2, module2) {
+    "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"
+              };
+            }
+          });
+        });
+      });
+    }
+    module2.exports = compressKeyframes;
+  }
+});
+
+// node_modules/csso/cjs/replace/Atrule.cjs
+var require_Atrule4 = __commonJS({
+  "node_modules/csso/cjs/replace/Atrule.cjs"(exports2, module2) {
+    "use strict";
+    var cssTree = require_cjs2();
+    var keyframes = require_keyframes();
+    function Atrule(node) {
+      if (cssTree.keyword(node.name).basename === "keyframes") {
+        keyframes(node);
+      }
+    }
+    module2.exports = Atrule;
+  }
+});
+
+// node_modules/csso/cjs/replace/AttributeSelector.cjs
+var require_AttributeSelector3 = __commonJS({
+  "node_modules/csso/cjs/replace/AttributeSelector.cjs"(exports2, module2) {
+    "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
+        };
+      }
+    }
+    module2.exports = AttributeSelector;
+  }
+});
+
+// node_modules/csso/cjs/replace/property/font.cjs
+var require_font = __commonJS({
+  "node_modules/csso/cjs/replace/property/font.cjs"(exports2, module2) {
+    "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"
+        }));
+      }
+    }
+    module2.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"(exports2, module2) {
+    "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;
+        }
+      }
+    }
+    module2.exports = compressFontWeight;
+  }
+});
+
+// node_modules/csso/cjs/replace/property/background.cjs
+var require_background = __commonJS({
+  "node_modules/csso/cjs/replace/property/background.cjs"(exports2, module2) {
+    "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);
+    }
+    module2.exports = compressBackground;
+  }
+});
+
+// node_modules/csso/cjs/replace/property/border.cjs
+var require_border = __commonJS({
+  "node_modules/csso/cjs/replace/property/border.cjs"(exports2, module2) {
+    "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);
+          }
+        }
+      });
+    }
+    module2.exports = compressBorder;
+  }
+});
+
+// node_modules/csso/cjs/replace/Value.cjs
+var require_Value3 = __commonJS({
+  "node_modules/csso/cjs/replace/Value.cjs"(exports2, module2) {
+    "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);
+      }
+    }
+    module2.exports = compressValue;
+  }
+});
+
+// node_modules/csso/cjs/replace/Number.cjs
+var require_Number3 = __commonJS({
+  "node_modules/csso/cjs/replace/Number.cjs"(exports2) {
+    "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);
+    }
+    exports2.Number = Number2;
+    exports2.packNumber = packNumber;
+  }
+});
+
+// node_modules/csso/cjs/replace/Dimension.cjs
+var require_Dimension3 = __commonJS({
+  "node_modules/csso/cjs/replace/Dimension.cjs"(exports2, module2) {
+    "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
+        };
+      }
+    }
+    module2.exports = compressDimension;
+  }
+});
+
+// node_modules/csso/cjs/replace/Percentage.cjs
+var require_Percentage3 = __commonJS({
+  "node_modules/csso/cjs/replace/Percentage.cjs"(exports2, module2) {
+    "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;
+        }
+      }
+    }
+    module2.exports = compressPercentage;
+  }
+});
+
+// node_modules/csso/cjs/replace/Url.cjs
+var require_Url3 = __commonJS({
+  "node_modules/csso/cjs/replace/Url.cjs"(exports2, module2) {
+    "use strict";
+    function Url(node) {
+      node.value = node.value.replace(/\\/g, "/");
+    }
+    module2.exports = Url;
+  }
+});
+
+// node_modules/csso/cjs/replace/color.cjs
+var require_color = __commonJS({
+  "node_modules/csso/cjs/replace/color.cjs"(exports2) {
+    "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;
+      }
+    }
+    exports2.compressFunction = compressFunction;
+    exports2.compressHex = compressHex;
+    exports2.compressIdent = compressIdent;
+  }
+});
+
+// node_modules/csso/cjs/replace/index.cjs
+var require_replace = __commonJS({
+  "node_modules/csso/cjs/replace/index.cjs"(exports2, module2) {
+    "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);
+          }
+        }
+      });
+    }
+    module2.exports = replace;
+  }
+});
+
+// node_modules/csso/cjs/restructure/prepare/createDeclarationIndexer.cjs
+var require_createDeclarationIndexer = __commonJS({
+  "node_modules/csso/cjs/restructure/prepare/createDeclarationIndexer.cjs"(exports2, module2) {
+    "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;
+      };
+    }
+    module2.exports = createDeclarationIndexer;
+  }
+});
+
+// node_modules/csso/cjs/restructure/prepare/specificity.cjs
+var require_specificity = __commonJS({
+  "node_modules/csso/cjs/restructure/prepare/specificity.cjs"(exports2, module2) {
+    "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];
+    }
+    module2.exports = specificity;
+  }
+});
+
+// node_modules/csso/cjs/restructure/prepare/processSelector.cjs
+var require_processSelector = __commonJS({
+  "node_modules/csso/cjs/restructure/prepare/processSelector.cjs"(exports2, module2) {
+    "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;
+    }
+    module2.exports = processSelector;
+  }
+});
+
+// node_modules/csso/cjs/restructure/prepare/index.cjs
+var require_prepare = __commonJS({
+  "node_modules/csso/cjs/restructure/prepare/index.cjs"(exports2, module2) {
+    "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
+      };
+    }
+    module2.exports = prepare;
+  }
+});
+
+// node_modules/csso/cjs/restructure/1-mergeAtrule.cjs
+var require_mergeAtrule = __commonJS({
+  "node_modules/csso/cjs/restructure/1-mergeAtrule.cjs"(exports2, module2) {
+    "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
+      });
+    }
+    module2.exports = rejoinAtrule;
+  }
+});
+
+// node_modules/csso/cjs/restructure/utils.cjs
+var require_utils6 = __commonJS({
+  "node_modules/csso/cjs/restructure/utils.cjs"(exports2) {
+    "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;
+    }
+    exports2.addSelectors = addSelectors;
+    exports2.compareDeclarations = compareDeclarations;
+    exports2.hasSimilarSelectors = hasSimilarSelectors;
+    exports2.isEqualDeclarations = isEqualDeclarations;
+    exports2.isEqualSelectors = isEqualSelectors;
+    exports2.unsafeToSkipNode = unsafeToSkipNode;
+  }
+});
+
+// node_modules/csso/cjs/restructure/2-initialMergeRuleset.cjs
+var require_initialMergeRuleset = __commonJS({
+  "node_modules/csso/cjs/restructure/2-initialMergeRuleset.cjs"(exports2, module2) {
+    "use strict";
+    var cssTree = require_cjs2();
+    var utils = require_utils6();
+    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
+      });
+    }
+    module2.exports = initialMergeRule;
+  }
+});
+
+// node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs
+var require_disjoinRuleset = __commonJS({
+  "node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs"(exports2, module2) {
+    "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
+      });
+    }
+    module2.exports = disjoinRule;
+  }
+});
+
+// node_modules/csso/cjs/restructure/4-restructShorthand.cjs
+var require_restructShorthand = __commonJS({
+  "node_modules/csso/cjs/restructure/4-restructShorthand.cjs"(exports2, module2) {
+    "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);
+    }
+    module2.exports = restructBlock;
+  }
+});
+
+// node_modules/csso/cjs/restructure/6-restructBlock.cjs
+var require_restructBlock = __commonJS({
+  "node_modules/csso/cjs/restructure/6-restructBlock.cjs"(exports2, module2) {
+    "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);
+        }
+      });
+    }
+    module2.exports = restructBlock;
+  }
+});
+
+// node_modules/csso/cjs/restructure/7-mergeRuleset.cjs
+var require_mergeRuleset = __commonJS({
+  "node_modules/csso/cjs/restructure/7-mergeRuleset.cjs"(exports2, module2) {
+    "use strict";
+    var cssTree = require_cjs2();
+    var utils = require_utils6();
+    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
+      });
+    }
+    module2.exports = mergeRule;
+  }
+});
+
+// node_modules/csso/cjs/restructure/8-restructRuleset.cjs
+var require_restructRuleset = __commonJS({
+  "node_modules/csso/cjs/restructure/8-restructRuleset.cjs"(exports2, module2) {
+    "use strict";
+    var cssTree = require_cjs2();
+    var utils = require_utils6();
+    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
+      });
+    }
+    module2.exports = restructRule;
+  }
+});
+
+// node_modules/csso/cjs/restructure/index.cjs
+var require_restructure = __commonJS({
+  "node_modules/csso/cjs/restructure/index.cjs"(exports2, module2) {
+    "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);
+    }
+    module2.exports = restructure;
+  }
+});
+
+// node_modules/csso/cjs/compress.cjs
+var require_compress = __commonJS({
+  "node_modules/csso/cjs/compress.cjs"(exports2, module2) {
+    "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
+      };
+    }
+    module2.exports = compress;
+  }
+});
+
+// node_modules/csso/cjs/syntax.cjs
+var require_syntax3 = __commonJS({
+  "node_modules/csso/cjs/syntax.cjs"(exports2) {
+    "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 + ")"
+            );
+          }
+        }
+      }
+    });
+    exports2.compress = compress;
+    exports2.specificity = specificity;
+    exports2.find = find;
+    exports2.findAll = findAll;
+    exports2.findLast = findLast;
+    exports2.fromPlainObject = fromPlainObject;
+    exports2.generate = generate;
+    exports2.lexer = lexer;
+    exports2.parse = parse;
+    exports2.toPlainObject = toPlainObject;
+    exports2.tokenize = tokenize;
+    exports2.walk = walk;
+  }
+});
+
+// node_modules/csso/cjs/utils.cjs
+var require_utils7 = __commonJS({
+  "node_modules/csso/cjs/utils.cjs"(exports2) {
+    "use strict";
+    var processSelector = require_processSelector();
+    var utils$1 = require_utils6();
+    exports2.processSelector = processSelector;
+    exports2.addSelectors = utils$1.addSelectors;
+    exports2.compareDeclarations = utils$1.compareDeclarations;
+    exports2.hasSimilarSelectors = utils$1.hasSimilarSelectors;
+    exports2.isEqualDeclarations = utils$1.isEqualDeclarations;
+    exports2.isEqualSelectors = utils$1.isEqualSelectors;
+    exports2.unsafeToSkipNode = utils$1.unsafeToSkipNode;
+  }
+});
+
+// node_modules/csso/cjs/index.cjs
+var require_cjs3 = __commonJS({
+  "node_modules/csso/cjs/index.cjs"(exports2) {
+    "use strict";
+    var version = require_version2();
+    var syntax = require_syntax3();
+    var utils = require_utils7();
+    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);
+    }
+    exports2.version = version.version;
+    exports2.syntax = syntax;
+    exports2.utils = utils;
+    exports2.minify = minifyStylesheet;
+    exports2.minifyBlock = minifyBlock;
+  }
+});
+
+// node_modules/svgo/lib/style.js
+var require_style = __commonJS({
+  "node_modules/svgo/lib/style.js"(exports2) {
+    "use strict";
+    var csstree = require_cjs();
+    var csswhat = require_commonjs();
+    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" || cssNode.name === "-webkit-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.has(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;
+    };
+    exports2.compareSpecificity = compareSpecificity;
+    var collectStylesheet = (root) => {
+      const rules = [];
+      const parents = /* @__PURE__ */ new Map();
+      visit(root, {
+        element: {
+          enter: (node, parentNode) => {
+            parents.set(node, parentNode);
+            if (node.name !== "style") {
+              return;
+            }
+            if (node.attributes.type == null || node.attributes.type === "" || node.attributes.type === "text/css") {
+              const dynamic = node.attributes.media != null && node.attributes.media !== "all";
+              for (const child of node.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 };
+    };
+    exports2.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 && inheritableAttrs.has(name) && !presentationNonInheritableGroupAttrs.has(name)) {
+            computedStyles[name] = { ...computed, inherited: true };
+          }
+        }
+        parent = parents.get(parent);
+      }
+      return computedStyles;
+    };
+    exports2.computeStyle = computeStyle;
+    var includesAttrSelector = (selector, name, value = null, traversed = false) => {
+      const selectors = typeof selector === "string" ? csswhat.parse(selector) : csswhat.parse(csstree.generate(selector.data));
+      for (const subselector of selectors) {
+        const hasAttrSelector = subselector.some((segment, index) => {
+          if (traversed) {
+            if (index === subselector.length - 1) {
+              return false;
+            }
+            const isNextTraversal = csswhat.isTraversal(subselector[index + 1]);
+            if (!isNextTraversal) {
+              return false;
+            }
+          }
+          if (segment.type !== "attribute" || segment.name !== name) {
+            return false;
+          }
+          return value == null ? true : segment.value === value;
+        });
+        if (hasAttrSelector) {
+          return true;
+        }
+      }
+      return false;
+    };
+    exports2.includesAttrSelector = includesAttrSelector;
+  }
+});
+
+// node_modules/svgo/plugins/inlineStyles.js
+var require_inlineStyles = __commonJS({
+  "node_modules/svgo/plugins/inlineStyles.js"(exports2) {
+    "use strict";
+    var csstree = require_cjs();
+    var {
+      syntax: { specificity }
+    } = require_cjs3();
+    var {
+      visitSkip,
+      querySelectorAll,
+      detachNodeFromParent
+    } = require_xast();
+    var { compareSpecificity, includesAttrSelector } = require_style();
+    var { attrsGroups, pseudoClasses } = require_collections();
+    exports2.name = "inlineStyles";
+    exports2.description = "inline styles (additional options)";
+    var preservedPseudos = [
+      ...pseudoClasses.functional,
+      ...pseudoClasses.treeStructural
+    ];
+    exports2.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;
+            }
+            const cssText = node.children.filter((child) => child.type === "text" || child.type === "cdata").map((child) => child.value).join("");
+            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: "Rule",
+              enter(node2) {
+                const atrule = this.atrule;
+                let mediaQuery = "";
+                if (atrule != null) {
+                  mediaQuery = atrule.name;
+                  if (atrule.prelude != null) {
+                    mediaQuery += ` ${csstree.generate(atrule.prelude)}`;
+                  }
+                }
+                if (!useMqs.includes(mediaQuery)) {
+                  return;
+                }
+                if (node2.prelude.type === "SelectorList") {
+                  node2.prelude.children.forEach((childNode, item) => {
+                    if (childNode.type === "Selector") {
+                      const pseudos = [];
+                      childNode.children.forEach(
+                        (grandchildNode, grandchildItem, grandchildList) => {
+                          const isPseudo = grandchildNode.type === "PseudoClassSelector" || grandchildNode.type === "PseudoElementSelector";
+                          if (isPseudo && !preservedPseudos.includes(grandchildNode.name)) {
+                            pseudos.push({
+                              item: grandchildItem,
+                              list: grandchildList
+                            });
+                          }
+                        }
+                      );
+                      const pseudoSelectors = csstree.generate({
+                        type: "Selector",
+                        children: new csstree.List().fromArray(
+                          pseudos.map((pseudo) => pseudo.item.data)
+                        )
+                      });
+                      if (usePseudos.includes(pseudoSelectors)) {
+                        for (const pseudo of pseudos) {
+                          pseudo.list.remove(pseudo.item);
+                        }
+                      }
+                      selectors.push({ node: childNode, rule: node2, item });
+                    }
+                  });
+                }
+              }
+            });
+          }
+        },
+        root: {
+          exit: () => {
+            if (styles.length === 0) {
+              return;
+            }
+            const sortedSelectors = selectors.slice().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 ?? "",
+                  {
+                    context: "declarationList",
+                    parseValue: false
+                  }
+                );
+                if (styleDeclarationList.type !== "DeclarationList") {
+                  continue;
+                }
+                const styleDeclarationItems = /* @__PURE__ */ new Map();
+                let firstListItem;
+                csstree.walk(styleDeclarationList, {
+                  visit: "Declaration",
+                  enter(node, item) {
+                    if (firstListItem == null) {
+                      firstListItem = item;
+                    }
+                    styleDeclarationItems.set(node.property.toLowerCase(), item);
+                  }
+                });
+                csstree.walk(selector.rule, {
+                  visit: "Declaration",
+                  enter(ruleDeclaration) {
+                    const property = ruleDeclaration.property;
+                    if (attrsGroups.presentation.has(property) && !selectors.some(
+                      (selector2) => includesAttrSelector(selector2.item, property)
+                    )) {
+                      delete selectedEl.attributes[property];
+                    }
+                    const matchedItem = styleDeclarationItems.get(property);
+                    const ruleDeclarationItem = styleDeclarationList.children.createItem(ruleDeclaration);
+                    if (matchedItem == null) {
+                      styleDeclarationList.children.insert(
+                        ruleDeclarationItem,
+                        firstListItem
+                      );
+                    } else if (matchedItem.data.important !== true && ruleDeclaration.important === true) {
+                      styleDeclarationList.children.replace(
+                        matchedItem,
+                        ruleDeclarationItem
+                      );
+                      styleDeclarationItems.set(property, ruleDeclarationItem);
+                    }
+                  }
+                });
+                const newStyles = csstree.generate(styleDeclarationList);
+                if (newStyles.length !== 0) {
+                  selectedEl.attributes.style = newStyles;
+                }
+              }
+              if (removeMatchedSelectors && matchedElements.length !== 0 && selector.rule.prelude.type === "SelectorList") {
+                selector.rule.prelude.children.remove(selector.item);
+              }
+              selector.matchedElements = matchedElements;
+            }
+            if (!removeMatchedSelectors) {
+              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(" ")
+                );
+                for (const child of selector.node.children) {
+                  if (child.type === "ClassSelector" && !selectors.some(
+                    (selector2) => includesAttrSelector(
+                      selector2.item,
+                      "class",
+                      child.name,
+                      true
+                    )
+                  )) {
+                    classList.delete(child.name);
+                  }
+                }
+                if (classList.size === 0) {
+                  delete selectedEl.attributes.class;
+                } else {
+                  selectedEl.attributes.class = Array.from(classList).join(" ");
+                }
+                const firstSubSelector = selector.node.children.first;
+                if (firstSubSelector?.type === "IdSelector" && selectedEl.attributes.id === firstSubSelector.name && !selectors.some(
+                  (selector2) => includesAttrSelector(
+                    selector2.item,
+                    "id",
+                    firstSubSelector.name,
+                    true
+                  )
+                )) {
+                  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" && node.prelude.children.isEmpty) {
+                    list.remove(item);
+                  }
+                }
+              });
+              if (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);
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/lib/svgo/tools.js
+var require_tools = __commonJS({
+  "node_modules/svgo/lib/svgo/tools.js"(exports2) {
+    "use strict";
+    var { attrsGroups, referencesProps } = require_collections();
+    var regReferencesUrl = /\burl\((["'])?#(.+?)\1\)/g;
+    var regReferencesHref = /^#(.+?)$/;
+    var regReferencesBegin = /(\w+)\.[a-zA-Z]/;
+    exports2.encodeSVGDatauri = (str, type) => {
+      var prefix = "data:image/svg+xml";
+      if (!type || type === "base64") {
+        prefix += ";base64,";
+        str = prefix + Buffer.from(str).toString("base64");
+      } else if (type === "enc") {
+        str = prefix + "," + encodeURIComponent(str);
+      } else if (type === "unenc") {
+        str = prefix + "," + str;
+      }
+      return str;
+    };
+    exports2.decodeSVGDatauri = (str) => {
+      var regexp = /data:image\/svg\+xml(;charset=[^;,]*)?(;base64)?,(.*)/;
+      var match = regexp.exec(str);
+      if (!match) return str;
+      var data = match[3];
+      if (match[2]) {
+        str = Buffer.from(data, "base64").toString("utf8");
+      } else if (data.charAt(0) === "%") {
+        str = decodeURIComponent(data);
+      } else if (data.charAt(0) === "<") {
+        str = data;
+      }
+      return str;
+    };
+    exports2.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 = (value) => {
+      const strValue = value.toString();
+      if (0 < value && value < 1 && strValue.startsWith("0")) {
+        return strValue.slice(1);
+      }
+      if (-1 < value && value < 0 && strValue[1] === "0") {
+        return strValue[0] + strValue.slice(2);
+      }
+      return strValue;
+    };
+    exports2.removeLeadingZero = removeLeadingZero;
+    var hasScripts = (node) => {
+      if (node.name === "script" && node.children.length !== 0) {
+        return true;
+      }
+      if (node.name === "a") {
+        const hasJsLinks = Object.entries(node.attributes).some(
+          ([attrKey, attrValue]) => (attrKey === "href" || attrKey.endsWith(":href")) && attrValue != null && attrValue.trimStart().startsWith("javascript:")
+        );
+        if (hasJsLinks) {
+          return true;
+        }
+      }
+      const eventAttrs = [
+        ...attrsGroups.animationEvent,
+        ...attrsGroups.documentEvent,
+        ...attrsGroups.documentElementEvent,
+        ...attrsGroups.globalEvent,
+        ...attrsGroups.graphicalEvent
+      ];
+      return eventAttrs.some((attr) => node.attributes[attr] != null);
+    };
+    exports2.hasScripts = hasScripts;
+    var includesUrlReference = (body) => {
+      return new RegExp(regReferencesUrl).test(body);
+    };
+    exports2.includesUrlReference = includesUrlReference;
+    var findReferences = (attribute, value) => {
+      const results = [];
+      if (referencesProps.has(attribute)) {
+        const matches = value.matchAll(regReferencesUrl);
+        for (const match of matches) {
+          results.push(match[2]);
+        }
+      }
+      if (attribute === "href" || attribute.endsWith(":href")) {
+        const match = regReferencesHref.exec(value);
+        if (match != null) {
+          results.push(match[1]);
+        }
+      }
+      if (attribute === "begin") {
+        const match = regReferencesBegin.exec(value);
+        if (match != null) {
+          results.push(match[1]);
+        }
+      }
+      return results.map((body) => decodeURI(body));
+    };
+    exports2.findReferences = findReferences;
+    var toFixed = (num, precision) => {
+      const pow = 10 ** precision;
+      return Math.round(num * pow) / pow;
+    };
+    exports2.toFixed = toFixed;
+  }
+});
+
+// node_modules/svgo/plugins/minifyStyles.js
+var require_minifyStyles = __commonJS({
+  "node_modules/svgo/plugins/minifyStyles.js"(exports2) {
+    "use strict";
+    var csso = require_cjs3();
+    var { detachNodeFromParent } = require_xast();
+    var { hasScripts } = require_tools();
+    exports2.name = "minifyStyles";
+    exports2.description = "minifies styles and removes unused styles";
+    exports2.fn = (_root, { usage, ...params }) => {
+      const styleElements = /* @__PURE__ */ new Map();
+      const elementsWithStyleAttributes = [];
+      const tagsUsage = /* @__PURE__ */ new Set();
+      const idsUsage = /* @__PURE__ */ new Set();
+      const classesUsage = /* @__PURE__ */ new Set();
+      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;
+      }
+      let deoptimized = false;
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            if (hasScripts(node)) {
+              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.set(node, parentNode);
+            } else if (node.attributes.style != null) {
+              elementsWithStyleAttributes.push(node);
+            }
+          }
+        },
+        root: {
+          exit: () => {
+            const cssoUsage = {};
+            if (!deoptimized || forceUsageDeoptimized) {
+              if (enableTagsUsage) {
+                cssoUsage.tags = Array.from(tagsUsage);
+              }
+              if (enableIdsUsage) {
+                cssoUsage.ids = Array.from(idsUsage);
+              }
+              if (enableClassesUsage) {
+                cssoUsage.classes = Array.from(classesUsage);
+              }
+            }
+            for (const [styleNode, styleNodeParent] of styleElements.entries()) {
+              if (styleNode.children[0].type === "text" || styleNode.children[0].type === "cdata") {
+                const cssText = styleNode.children[0].value;
+                const minified = csso.minify(cssText, {
+                  ...params,
+                  usage: cssoUsage
+                }).css;
+                if (minified.length === 0) {
+                  detachNodeFromParent(styleNode, styleNodeParent);
+                  continue;
+                }
+                if (cssText.indexOf(">") >= 0 || cssText.indexOf("<") >= 0) {
+                  styleNode.children[0].type = "cdata";
+                  styleNode.children[0].value = minified;
+                } else {
+                  styleNode.children[0].type = "text";
+                  styleNode.children[0].value = minified;
+                }
+              }
+            }
+            for (const node of elementsWithStyleAttributes) {
+              const elemStyle = node.attributes.style;
+              node.attributes.style = csso.minifyBlock(elemStyle, {
+                ...params
+              }).css;
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/cleanupIds.js
+var require_cleanupIds = __commonJS({
+  "node_modules/svgo/plugins/cleanupIds.js"(exports2) {
+    "use strict";
+    var { visitSkip } = require_xast();
+    var { hasScripts, findReferences } = require_tools();
+    exports2.name = "cleanupIds";
+    exports2.description = "removes unused IDs and minifies used";
+    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("");
+    };
+    exports2.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) {
+              if (node.name === "style" && node.children.length !== 0 || hasScripts(node)) {
+                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 {
+                const ids = findReferences(name, value);
+                for (const id of ids) {
+                  let refs = referencesById.get(id);
+                  if (refs == null) {
+                    refs = [];
+                    referencesById.set(id, refs);
+                  }
+                  refs.push({ element: node, name });
+                }
+              }
+            }
+          }
+        },
+        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) || referencesById.has(currentIdString) && nodeById.get(currentIdString) == null);
+                  node.attributes.id = currentIdString;
+                  for (const { element, name } of refs) {
+                    const value = element.attributes[name];
+                    if (value.includes("#")) {
+                      element.attributes[name] = value.replace(
+                        `#${encodeURI(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;
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeUselessDefs.js
+var require_removeUselessDefs = __commonJS({
+  "node_modules/svgo/plugins/removeUselessDefs.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    var { elemsGroups } = require_collections();
+    exports2.name = "removeUselessDefs";
+    exports2.description = "removes elements in <defs> without id";
+    exports2.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.has(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);
+          }
+        }
+      }
+    };
+  }
+});
+
+// node_modules/svgo/plugins/cleanupNumericValues.js
+var require_cleanupNumericValues = __commonJS({
+  "node_modules/svgo/plugins/cleanupNumericValues.js"(exports2) {
+    "use strict";
+    var { removeLeadingZero } = require_tools();
+    exports2.name = "cleanupNumericValues";
+    exports2.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
+    };
+    exports2.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;
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/convertColors.js
+var require_convertColors = __commonJS({
+  "node_modules/svgo/plugins/convertColors.js"(exports2) {
+    "use strict";
+    var collections = require_collections();
+    exports2.name = "convertColors";
+    exports2.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();
+    };
+    exports2.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.has(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;
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeUnknownsAndDefaults.js
+var require_removeUnknownsAndDefaults = __commonJS({
+  "node_modules/svgo/plugins/removeUnknownsAndDefaults.js"(exports2) {
+    "use strict";
+    var { visitSkip, detachNodeFromParent } = require_xast();
+    var { collectStylesheet, computeStyle } = require_style();
+    var {
+      elems,
+      attrsGroups,
+      elemsGroups,
+      attrsGroupsDefaults,
+      presentationNonInheritableGroupAttrs
+    } = require_collections();
+    exports2.name = "removeUnknownsAndDefaults";
+    exports2.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);
+    }
+    exports2.fn = (root, params) => {
+      const {
+        unknownContent = true,
+        unknownAttrs = true,
+        defaultAttrs = true,
+        defaultMarkupDeclarations = true,
+        uselessOverrides = true,
+        keepDataAttrs = true,
+        keepAriaAttrs = true,
+        keepRoleAttr = false
+      } = params;
+      const stylesheet = collectStylesheet(root);
+      return {
+        instruction: {
+          enter: (node) => {
+            if (defaultMarkupDeclarations) {
+              node.value = node.value.replace(/\s*standalone\s*=\s*(["'])no\1/, "");
+            }
+          }
+        },
+        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?.[name] == null) {
+                  delete node.attributes[name];
+                }
+              }
+              if (uselessOverrides && node.attributes.id == null) {
+                const style = computedParentStyle?.[name];
+                if (presentationNonInheritableGroupAttrs.has(name) === false && style != null && style.type === "static" && style.value === value) {
+                  delete node.attributes[name];
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeNonInheritableGroupAttrs.js
+var require_removeNonInheritableGroupAttrs = __commonJS({
+  "node_modules/svgo/plugins/removeNonInheritableGroupAttrs.js"(exports2) {
+    "use strict";
+    var {
+      inheritableAttrs,
+      attrsGroups,
+      presentationNonInheritableGroupAttrs
+    } = require_collections();
+    exports2.name = "removeNonInheritableGroupAttrs";
+    exports2.description = "removes non-inheritable group\u2019s presentational attributes";
+    exports2.fn = () => {
+      return {
+        element: {
+          enter: (node) => {
+            if (node.name === "g") {
+              for (const name of Object.keys(node.attributes)) {
+                if (attrsGroups.presentation.has(name) && !inheritableAttrs.has(name) && !presentationNonInheritableGroupAttrs.has(name)) {
+                  delete node.attributes[name];
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeUselessStrokeAndFill.js
+var require_removeUselessStrokeAndFill = __commonJS({
+  "node_modules/svgo/plugins/removeUselessStrokeAndFill.js"(exports2) {
+    "use strict";
+    var { visit, visitSkip, detachNodeFromParent } = require_xast();
+    var { collectStylesheet, computeStyle } = require_style();
+    var { hasScripts } = require_tools();
+    var { elemsGroups } = require_collections();
+    exports2.name = "removeUselessStrokeAndFill";
+    exports2.description = "removes useless stroke and fill attributes";
+    exports2.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" || hasScripts(node)) {
+              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.has(node.name)) {
+              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);
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeViewBox.js
+var require_removeViewBox = __commonJS({
+  "node_modules/svgo/plugins/removeViewBox.js"(exports2) {
+    "use strict";
+    exports2.name = "removeViewBox";
+    exports2.description = "removes viewBox attribute when possible";
+    var viewBoxElems = /* @__PURE__ */ new Set(["pattern", "svg", "symbol"]);
+    exports2.fn = () => {
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            if (viewBoxElems.has(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;
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/cleanupEnableBackground.js
+var require_cleanupEnableBackground = __commonJS({
+  "node_modules/svgo/plugins/cleanupEnableBackground.js"(exports2) {
+    "use strict";
+    var csstree = require_cjs();
+    var { visit } = require_xast();
+    exports2.name = "cleanupEnableBackground";
+    exports2.description = "remove or cleanup enable-background attribute when possible";
+    var regEnableBackground = /^new\s0\s0\s([-+]?\d*\.?\d+([eE][-+]?\d+)?)\s([-+]?\d*\.?\d+([eE][-+]?\d+)?)$/;
+    exports2.fn = (root) => {
+      let hasFilter = false;
+      visit(root, {
+        element: {
+          enter: (node) => {
+            if (node.name === "filter") {
+              hasFilter = true;
+            }
+          }
+        }
+      });
+      return {
+        element: {
+          enter: (node) => {
+            let newStyle = null;
+            let enableBackgroundDeclaration = null;
+            if (node.attributes.style != null) {
+              newStyle = csstree.parse(node.attributes.style, {
+                context: "declarationList"
+              });
+              if (newStyle.type === "DeclarationList") {
+                const enableBackgroundDeclarations = [];
+                csstree.walk(newStyle, (node2, nodeItem) => {
+                  if (node2.type === "Declaration" && node2.property === "enable-background") {
+                    enableBackgroundDeclarations.push(nodeItem);
+                    enableBackgroundDeclaration = nodeItem;
+                  }
+                });
+                for (let i = 0; i < enableBackgroundDeclarations.length - 1; i++) {
+                  newStyle.children.remove(enableBackgroundDeclarations[i]);
+                }
+              }
+            }
+            if (!hasFilter) {
+              delete node.attributes["enable-background"];
+              if (newStyle?.type === "DeclarationList") {
+                if (enableBackgroundDeclaration) {
+                  newStyle.children.remove(enableBackgroundDeclaration);
+                }
+                if (newStyle.children.isEmpty) {
+                  delete node.attributes.style;
+                } else {
+                  node.attributes.style = csstree.generate(newStyle);
+                }
+              }
+              return;
+            }
+            const hasDimensions = node.attributes.width != null && node.attributes.height != null;
+            if ((node.name === "svg" || node.name === "mask" || node.name === "pattern") && hasDimensions) {
+              const attrValue = node.attributes["enable-background"];
+              const attrCleaned = cleanupValue(
+                attrValue,
+                node.name,
+                node.attributes.width,
+                node.attributes.height
+              );
+              if (attrCleaned) {
+                node.attributes["enable-background"] = attrCleaned;
+              } else {
+                delete node.attributes["enable-background"];
+              }
+              if (newStyle?.type === "DeclarationList" && enableBackgroundDeclaration) {
+                const styleValue = csstree.generate(
+                  // @ts-ignore
+                  enableBackgroundDeclaration.data.value
+                );
+                const styleCleaned = cleanupValue(
+                  styleValue,
+                  node.name,
+                  node.attributes.width,
+                  node.attributes.height
+                );
+                if (styleCleaned) {
+                  enableBackgroundDeclaration.data.value = {
+                    type: "Raw",
+                    value: styleCleaned
+                  };
+                } else {
+                  newStyle.children.remove(enableBackgroundDeclaration);
+                }
+              }
+            }
+            if (newStyle?.type === "DeclarationList") {
+              if (newStyle.children.isEmpty) {
+                delete node.attributes.style;
+              } else {
+                node.attributes.style = csstree.generate(newStyle);
+              }
+            }
+          }
+        }
+      };
+    };
+    var cleanupValue = (value, nodeName, width, height) => {
+      const match = regEnableBackground.exec(value);
+      if (match != null && width === match[1] && height === match[3]) {
+        return nodeName === "svg" ? void 0 : "new";
+      }
+      return value;
+    };
+  }
+});
+
+// node_modules/svgo/lib/path.js
+var require_path = __commonJS({
+  "node_modules/svgo/lib/path.js"(exports2) {
+    "use strict";
+    var { removeLeadingZero, toFixed } = 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 = (
+        /** @type {ReadNumberState} */
+        "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 = (
+        /** @type {number[]} */
+        []
+      );
+      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;
+    };
+    exports2.parsePathData = parsePathData;
+    var roundAndStringify = (number, precision) => {
+      if (precision != null) {
+        number = toFixed(number, precision);
+      }
+      return {
+        roundedStr: removeLeadingZero(number),
+        rounded: number
+      };
+    };
+    var stringifyArgs = (command, args, precision, disableSpaceAfterFlags) => {
+      let result = "";
+      let previous;
+      for (let i = 0; i < args.length; i++) {
+        const { roundedStr, rounded } = roundAndStringify(args[i], precision);
+        if (disableSpaceAfterFlags && (command === "A" || command === "a") && // consider combined arcs
+        (i % 7 === 4 || i % 7 === 5)) {
+          result += roundedStr;
+        } else if (i === 0 || rounded < 0) {
+          result += roundedStr;
+        } else if (!Number.isInteger(previous) && rounded != 0 && rounded < 1 && rounded > -1) {
+          result += roundedStr;
+        } else {
+          result += ` ${roundedStr}`;
+        }
+        previous = rounded;
+      }
+      return result;
+    };
+    var stringifyPathData = ({ pathData, precision, disableSpaceAfterFlags }) => {
+      if (pathData.length === 1) {
+        const { command, args } = pathData[0];
+        return command + stringifyArgs(command, args, precision, disableSpaceAfterFlags);
+      }
+      let result = "";
+      let prev = { ...pathData[0] };
+      if (pathData[1].command === "L") {
+        prev.command = "M";
+      } else if (pathData[1].command === "l") {
+        prev.command = "m";
+      }
+      for (let i = 1; i < pathData.length; i++) {
+        const { command, args } = pathData[i];
+        if (prev.command === command && prev.command !== "M" && prev.command !== "m" || // combine matching moveto and lineto sequences
+        prev.command === "M" && command === "L" || prev.command === "m" && command === "l") {
+          prev.args = [...prev.args, ...args];
+          if (i === pathData.length - 1) {
+            result += prev.command + stringifyArgs(
+              prev.command,
+              prev.args,
+              precision,
+              disableSpaceAfterFlags
+            );
+          }
+        } else {
+          result += prev.command + stringifyArgs(
+            prev.command,
+            prev.args,
+            precision,
+            disableSpaceAfterFlags
+          );
+          if (i === pathData.length - 1) {
+            result += command + stringifyArgs(command, args, precision, disableSpaceAfterFlags);
+          } else {
+            prev = { command, args };
+          }
+        }
+      }
+      return result;
+    };
+    exports2.stringifyPathData = stringifyPathData;
+  }
+});
+
+// node_modules/svgo/plugins/removeHiddenElems.js
+var require_removeHiddenElems = __commonJS({
+  "node_modules/svgo/plugins/removeHiddenElems.js"(exports2) {
+    "use strict";
+    var { elemsGroups } = require_collections();
+    var {
+      visit,
+      visitSkip,
+      querySelector,
+      detachNodeFromParent
+    } = require_xast();
+    var { collectStylesheet, computeStyle } = require_style();
+    var { parsePathData } = require_path();
+    var { hasScripts, findReferences } = require_tools();
+    var nonRendering = elemsGroups.nonRendering;
+    exports2.name = "removeHiddenElems";
+    exports2.description = "removes hidden elements (zero sized, with absent attributes)";
+    exports2.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);
+      const nonRenderedNodes = /* @__PURE__ */ new Map();
+      const removedDefIds = /* @__PURE__ */ new Set();
+      const allDefs = /* @__PURE__ */ new Map();
+      const allReferences = /* @__PURE__ */ new Set();
+      const referencesById = /* @__PURE__ */ new Map();
+      let deoptimized = false;
+      function removeElement(node, parentNode) {
+        if (node.type === "element" && node.attributes.id != null && parentNode.type === "element" && parentNode.name === "defs") {
+          removedDefIds.add(node.attributes.id);
+        }
+        detachNodeFromParent(node, parentNode);
+      }
+      visit(root, {
+        element: {
+          enter: (node, parentNode) => {
+            if (nonRendering.has(node.name)) {
+              if (node.attributes.id == null) {
+                detachNodeFromParent(node, parentNode);
+                return visitSkip;
+              }
+              nonRenderedNodes.set(node, parentNode);
+              return visitSkip;
+            }
+            const computedStyle = computeStyle(stylesheet, node);
+            if (opacity0 && computedStyle.opacity && computedStyle.opacity.type === "static" && computedStyle.opacity.value === "0") {
+              removeElement(node, parentNode);
+            }
+          }
+        }
+      });
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            if (node.name === "style" && node.children.length !== 0 || hasScripts(node)) {
+              deoptimized = true;
+              return;
+            }
+            if (node.name === "defs") {
+              allDefs.set(node, parentNode);
+            }
+            if (node.name === "use") {
+              for (const attr of Object.keys(node.attributes)) {
+                if (attr !== "href" && !attr.endsWith(":href")) continue;
+                const value = node.attributes[attr];
+                const id = value.slice(1);
+                let refs = referencesById.get(id);
+                if (!refs) {
+                  refs = [];
+                  referencesById.set(id, refs);
+                }
+                refs.push({ 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) {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (displayNone && computedStyle.display && computedStyle.display.type === "static" && computedStyle.display.value === "none" && // markers with display: none still rendered
+            node.name !== "marker") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (circleR0 && node.name === "circle" && node.children.length === 0 && node.attributes.r === "0") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (ellipseRX0 && node.name === "ellipse" && node.children.length === 0 && node.attributes.rx === "0") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (ellipseRY0 && node.name === "ellipse" && node.children.length === 0 && node.attributes.ry === "0") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (rectWidth0 && node.name === "rect" && node.children.length === 0 && node.attributes.width === "0") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (rectHeight0 && rectWidth0 && node.name === "rect" && node.children.length === 0 && node.attributes.height === "0") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (patternWidth0 && node.name === "pattern" && node.attributes.width === "0") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (patternHeight0 && node.name === "pattern" && node.attributes.height === "0") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (imageWidth0 && node.name === "image" && node.attributes.width === "0") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (imageHeight0 && node.name === "image" && node.attributes.height === "0") {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (pathEmptyD && node.name === "path") {
+              if (node.attributes.d == null) {
+                removeElement(node, parentNode);
+                return;
+              }
+              const pathData = parsePathData(node.attributes.d);
+              if (pathData.length === 0) {
+                removeElement(node, parentNode);
+                return;
+              }
+              if (pathData.length === 1 && computedStyle["marker-start"] == null && computedStyle["marker-end"] == null) {
+                removeElement(node, parentNode);
+                return;
+              }
+            }
+            if (polylineEmptyPoints && node.name === "polyline" && node.attributes.points == null) {
+              removeElement(node, parentNode);
+              return;
+            }
+            if (polygonEmptyPoints && node.name === "polygon" && node.attributes.points == null) {
+              removeElement(node, parentNode);
+              return;
+            }
+            for (const [name, value] of Object.entries(node.attributes)) {
+              const ids = findReferences(name, value);
+              for (const id of ids) {
+                allReferences.add(id);
+              }
+            }
+          }
+        },
+        root: {
+          exit: () => {
+            for (const id of removedDefIds) {
+              const refs = referencesById.get(id);
+              if (refs) {
+                for (const { node, parentNode } of refs) {
+                  detachNodeFromParent(node, parentNode);
+                }
+              }
+            }
+            if (!deoptimized) {
+              for (const [
+                nonRenderedNode,
+                nonRenderedParent
+              ] of nonRenderedNodes.entries()) {
+                const id = nonRenderedNode.attributes.id;
+                if (!allReferences.has(id)) {
+                  detachNodeFromParent(nonRenderedNode, nonRenderedParent);
+                }
+              }
+            }
+            for (const [node, parentNode] of allDefs.entries()) {
+              if (node.children.length === 0) {
+                detachNodeFromParent(node, parentNode);
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeEmptyText.js
+var require_removeEmptyText = __commonJS({
+  "node_modules/svgo/plugins/removeEmptyText.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeEmptyText";
+    exports2.description = "removes empty <text> elements";
+    exports2.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);
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/convertShapeToPath.js
+var require_convertShapeToPath = __commonJS({
+  "node_modules/svgo/plugins/convertShapeToPath.js"(exports2) {
+    "use strict";
+    var { stringifyPathData } = require_path();
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "convertShapeToPath";
+    exports2.description = "converts basic shapes to more compact path form";
+    var regNumber = /[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?/g;
+    exports2.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;
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/convertEllipseToCircle.js
+var require_convertEllipseToCircle = __commonJS({
+  "node_modules/svgo/plugins/convertEllipseToCircle.js"(exports2) {
+    "use strict";
+    exports2.name = "convertEllipseToCircle";
+    exports2.description = "converts non-eccentric <ellipse>s to <circle>s";
+    exports2.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;
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/moveElemsAttrsToGroup.js
+var require_moveElemsAttrsToGroup = __commonJS({
+  "node_modules/svgo/plugins/moveElemsAttrsToGroup.js"(exports2) {
+    "use strict";
+    var { visit } = require_xast();
+    var { inheritableAttrs, pathElems } = require_collections();
+    exports2.name = "moveElemsAttrsToGroup";
+    exports2.description = "Move common attributes of group children to the group";
+    exports2.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.has(child.name)) {
+                  everyChildIsPath = false;
+                }
+                if (initial) {
+                  initial = false;
+                  for (const [name, value] of Object.entries(child.attributes)) {
+                    if (inheritableAttrs.has(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];
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/moveGroupAttrsToElems.js
+var require_moveGroupAttrsToElems = __commonJS({
+  "node_modules/svgo/plugins/moveGroupAttrsToElems.js"(exports2) {
+    "use strict";
+    var { pathElems, referencesProps } = require_collections();
+    var { includesUrlReference } = require_tools();
+    exports2.name = "moveGroupAttrsToElems";
+    exports2.description = "moves some group attributes to the content elements";
+    var pathElemsWithGroupsAndText = [...pathElems, "g", "text"];
+    exports2.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.has(name) && includesUrlReference(value)
+            ) === 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;
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/collapseGroups.js
+var require_collapseGroups = __commonJS({
+  "node_modules/svgo/plugins/collapseGroups.js"(exports2) {
+    "use strict";
+    var { inheritableAttrs, elemsGroups } = require_collections();
+    exports2.name = "collapseGroups";
+    exports2.description = "collapses useless groups";
+    var hasAnimatedAttr = (node, name) => {
+      if (node.type === "element") {
+        if (elemsGroups.animation.has(node.name) && node.attributes.attributeName === name) {
+          return true;
+        }
+        for (const child of node.children) {
+          if (hasAnimatedAttr(child, name)) {
+            return true;
+          }
+        }
+      }
+      return false;
+    };
+    exports2.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.has(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.has(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
+                });
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/_path.js
+var require_path2 = __commonJS({
+  "node_modules/svgo/plugins/_path.js"(exports2) {
+    "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;
+    };
+    exports2.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;
+    };
+    exports2.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;
+    }
+    exports2.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;
+      }
+    };
+  }
+});
+
+// node_modules/svgo/plugins/_transforms.js
+var require_transforms = __commonJS({
+  "node_modules/svgo/plugins/_transforms.js"(exports2) {
+    "use strict";
+    var { toFixed } = require_tools();
+    var transformTypes = /* @__PURE__ */ new Set([
+      "matrix",
+      "rotate",
+      "scale",
+      "skewX",
+      "skewY",
+      "translate"
+    ]);
+    var regTransformSplit = /\s*(matrix|translate|scale|rotate|skewX|skewY)\s*\(\s*(.+?)\s*\)[\s,]*/;
+    var regNumericValues = /[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?/g;
+    exports2.transform2js = (transformString) => {
+      const transforms = [];
+      let currentTransform = null;
+      for (const item of transformString.split(regTransformSplit)) {
+        if (!item) {
+          continue;
+        }
+        if (transformTypes.has(item)) {
+          currentTransform = { name: item, data: [] };
+          transforms.push(currentTransform);
+        } else {
+          let num;
+          while (num = regNumericValues.exec(item)) {
+            num = Number(num);
+            if (currentTransform != null) {
+              currentTransform.data.push(num);
+            }
+          }
+        }
+      }
+      return currentTransform == null || currentTransform.data.length == 0 ? [] : transforms;
+    };
+    exports2.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 = {
+      /**
+       * @param {number} deg
+       * @returns {number}
+       */
+      rad: (deg) => {
+        return deg * Math.PI / 180;
+      },
+      /**
+       * @param {number} rad
+       * @returns {number}
+       */
+      deg: (rad) => {
+        return rad * 180 / Math.PI;
+      },
+      /**
+       * @param {number} deg
+       * @returns {number}
+       */
+      cos: (deg) => {
+        return Math.cos(mth.rad(deg));
+      },
+      /**
+       * @param {number} val
+       * @param {number} floatPrecision
+       * @returns {number}
+       */
+      acos: (val, floatPrecision) => {
+        return toFixed(mth.deg(Math.acos(val)), floatPrecision);
+      },
+      /**
+       * @param {number} deg
+       * @returns {number}
+       */
+      sin: (deg) => {
+        return Math.sin(mth.rad(deg));
+      },
+      /**
+       * @param {number} val
+       * @param {number} floatPrecision
+       * @returns {number}
+       */
+      asin: (val, floatPrecision) => {
+        return toFixed(mth.deg(Math.asin(val)), floatPrecision);
+      },
+      /**
+       * @param {number} deg
+       * @returns {number}
+       */
+      tan: (deg) => {
+        return Math.tan(mth.rad(deg));
+      },
+      /**
+       * @param {number} val
+       * @param {number} floatPrecision
+       * @returns {number}
+       */
+      atan: (val, floatPrecision) => {
+        return toFixed(mth.deg(Math.atan(val)), floatPrecision);
+      }
+    };
+    exports2.matrixToTransform = (transform, params) => {
+      const floatPrecision = params.floatPrecision;
+      const data = transform.data;
+      const transforms = [];
+      if (data[4] || data[5]) {
+        transforms.push({
+          name: "translate",
+          data: data.slice(4, data[5] ? 6 : 5)
+        });
+      }
+      let sx = toFixed(Math.hypot(data[0], data[1]), params.transformPrecision);
+      let sy = toFixed(
+        (data[0] * data[3] - data[1] * data[2]) / sx,
+        params.transformPrecision
+      );
+      const colsSum = data[0] * data[2] + data[1] * data[3];
+      const rowsSum = data[0] * data[1] + data[2] * data[3];
+      const scaleBefore = rowsSum !== 0 || sx === sy;
+      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 = Math.hypot(data[0], data[2]);
+          sy = Math.hypot(data[1], data[3]);
+          if (toFixed(data[0], params.transformPrecision) < 0) {
+            sx = -sx;
+          }
+          if (data[3] < 0 || Math.sign(data[1]) === Math.sign(data[2]) && toFixed(data[3], params.transformPrecision) === 0) {
+            sy = -sy;
+          }
+          transforms.push({ name: "scale", data: [sx, sy] });
+        }
+        const angle = Math.min(Math.max(-1, data[0] / sx), 1);
+        const 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();
+          const oneOverCos = 1 - data[0] / sx;
+          const sin = data[1] / (scaleBefore ? sx : sy);
+          const x = data[4] * (scaleBefore ? 1 : sy);
+          const y = data[5] * (scaleBefore ? 1 : sx);
+          const denom = (oneOverCos ** 2 + sin ** 2) * (scaleBefore ? 1 : sx * sy);
+          rotate.push(
+            (oneOverCos * x - sin * y) / denom,
+            (oneOverCos * 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}`);
+      }
+    };
+    exports2.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]
+      ];
+    };
+  }
+});
+
+// node_modules/svgo/plugins/applyTransforms.js
+var require_applyTransforms = __commonJS({
+  "node_modules/svgo/plugins/applyTransforms.js"(exports2) {
+    "use strict";
+    var { collectStylesheet, computeStyle } = require_style();
+    var {
+      transformsMultiply,
+      transform2js,
+      transformArc
+    } = require_transforms();
+    var { path2js } = require_path2();
+    var {
+      removeLeadingZero,
+      includesUrlReference
+    } = 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) => {
+            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.has(name) && includesUrlReference(value)
+            )) {
+              return;
+            }
+            const computedStyle = computeStyle(stylesheet, node);
+            const transformStyle = computedStyle.transform;
+            if (transformStyle.type === "static" && transformStyle.value !== node.attributes.transform) {
+              return;
+            }
+            const matrix = transformsMultiply(
+              transform2js(node.attributes.transform)
+            );
+            const stroke = computedStyle.stroke?.type === "static" ? computedStyle.stroke.value : null;
+            const strokeWidth = computedStyle["stroke-width"]?.type === "static" ? computedStyle["stroke-width"].value : null;
+            const transformPrecision = params.transformPrecision;
+            if (computedStyle.stroke?.type === "dynamic" || 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) {
+                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;
+          }
+        }
+      };
+    };
+    exports2.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;
+      }
+    };
+  }
+});
+
+// node_modules/svgo/plugins/convertPathData.js
+var require_convertPathData = __commonJS({
+  "node_modules/svgo/plugins/convertPathData.js"(exports2) {
+    "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, toFixed } = require_tools();
+    exports2.name = "convertPathData";
+    exports2.description = "optimizes path data: writes in shorter form, applies transformations";
+    var roundData;
+    var precision;
+    var error;
+    var arcThreshold;
+    var arcTolerance;
+    exports2.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,
+        convertToQ = true,
+        lineShorthands = true,
+        convertToZ = true,
+        curveSmoothShorthands = true,
+        floatPrecision = 3,
+        transformPrecision = 5,
+        smartArcRounding = true,
+        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,
+        convertToQ,
+        lineShorthands,
+        convertToZ,
+        curveSmoothShorthands,
+        floatPrecision,
+        transformPrecision,
+        smartArcRounding,
+        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.has(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 && 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;
+              const isSafeToUseZ = maybeHasStroke ? computedStyle["stroke-linecap"]?.type === "static" && computedStyle["stroke-linecap"].value === "round" && computedStyle["stroke-linejoin"]?.type === "static" && computedStyle["stroke-linejoin"].value === "round" : true;
+              var data = path2js(node);
+              if (data.length) {
+                convertToRelative(data);
+                data = filters(data, newParams, {
+                  isSafeToUseZ,
+                  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, { isSafeToUseZ, maybeHasStrokeAndLinecap, hasMarkerMid }) {
+      const stringify = data2Path.bind(null, params);
+      const relSubpoint = [0, 0];
+      const pathBase = [0, 0];
+      let prev = {};
+      let prevQControlPoint;
+      path = path.filter(function(item, index, path2) {
+        const qControlPoint = prevQControlPoint;
+        prevQControlPoint = void 0;
+        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);
+            const pdata = prev.args;
+            const 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 (prev.command == "c" && isConvex(prev.args) && isArcPrev(prev.args, circle) || 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]) && (next.command === "c" || next.command === "s"); ) {
+              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(index + 1, arcCurves.length - 1 - hasPrev, ...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];
+            }
+          }
+          const sagitta = command === "a" ? calculateSagitta(data) : void 0;
+          if (params.smartArcRounding && sagitta !== void 0 && precision) {
+            for (let precisionNew = precision; precisionNew >= 0; precisionNew--) {
+              const radius = toFixed(data[0], precisionNew);
+              const sagittaNew = (
+                /** @type {number} */
+                calculateSagitta([radius, radius, ...data.slice(2)])
+              );
+              if (Math.abs(sagitta - sagittaNew) < error) {
+                data[0] = radius;
+                data[1] = radius;
+              } else {
+                break;
+              }
+            }
+          }
+          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" && prev.command !== "q" && prev.command !== "t") {
+              command = "l";
+              data = data.slice(-2);
+            } else if (command === "a" && (data[0] === 0 || data[1] === 0 || sagitta !== void 0 && sagitta < error)) {
+              command = "l";
+              data = data.slice(-2);
+            }
+          }
+          if (params.convertToQ && command == "c") {
+            const x1 = (
+              // @ts-ignore
+              0.75 * (item.base[0] + data[0]) - 0.25 * item.base[0]
+            );
+            const x2 = (
+              // @ts-ignore
+              0.75 * (item.base[0] + data[2]) - 0.25 * (item.base[0] + data[4])
+            );
+            if (Math.abs(x1 - x2) < error * 2) {
+              const y1 = (
+                // @ts-ignore
+                0.75 * (item.base[1] + data[1]) - 0.25 * item.base[1]
+              );
+              const y2 = (
+                // @ts-ignore
+                0.75 * (item.base[1] + data[3]) - 0.25 * (item.base[1] + data[5])
+              );
+              if (Math.abs(y1 - y2) < error * 2) {
+                const newData = data.slice();
+                newData.splice(
+                  0,
+                  4,
+                  // @ts-ignore
+                  x1 + x2 - item.base[0],
+                  // @ts-ignore
+                  y1 + y2 - item.base[1]
+                );
+                roundData(newData);
+                const originalLength = cleanupOutData(data, params).length, newLength = cleanupOutData(newData, params).length;
+                if (newLength < originalLength) {
+                  command = "q";
+                  data = newData;
+                  if (next && next.command == "s") makeLonghand(next, data);
+                }
+              }
+            }
+          }
+          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") && prev.command && command == prev.command.toLowerCase() && (command != "h" && command != "v" || 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 (prev.command === "c" && Math.abs(data[0] - -(prev.args[2] - prev.args[4])) < error && Math.abs(data[1] - -(prev.args[3] - prev.args[5])) < error) {
+                command = "s";
+                data = data.slice(2);
+              } else if (prev.command === "s" && Math.abs(data[0] - -(prev.args[0] - prev.args[2])) < error && Math.abs(data[1] - -(prev.args[1] - prev.args[3])) < error) {
+                command = "s";
+                data = data.slice(2);
+              } else if (prev.command !== "c" && prev.command !== "s" && Math.abs(data[0]) < error && Math.abs(data[1]) < error) {
+                command = "s";
+                data = data.slice(2);
+              }
+            } else if (command === "q") {
+              if (prev.command === "q" && Math.abs(data[0] - (prev.args[2] - prev.args[0])) < error && Math.abs(data[1] - (prev.args[3] - prev.args[1])) < error) {
+                command = "t";
+                data = data.slice(2);
+              } else if (prev.command === "t") {
+                const predictedControlPoint = reflectPoint(
+                  // @ts-ignore
+                  qControlPoint,
+                  // @ts-ignore
+                  item.base
+                );
+                const realControlPoint = [
+                  // @ts-ignore
+                  data[0] + item.base[0],
+                  // @ts-ignore
+                  data[1] + item.base[1]
+                ];
+                if (Math.abs(predictedControlPoint[0] - realControlPoint[0]) < error && Math.abs(predictedControlPoint[1] - realControlPoint[1]) < error) {
+                  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;
+            }
+          }
+          if (params.convertToZ && (isSafeToUseZ || next?.command === "Z" || next?.command === "z") && (command === "l" || command === "h" || command === "v")) {
+            if (
+              // @ts-ignore
+              Math.abs(pathBase[0] - item.coords[0]) < error && // @ts-ignore
+              Math.abs(pathBase[1] - item.coords[1]) < error
+            ) {
+              command = "z";
+              data = [];
+            }
+          }
+          item.command = command;
+          item.args = data;
+        } else {
+          relSubpoint[0] = pathBase[0];
+          relSubpoint[1] = pathBase[1];
+          if (prev.command === "Z" || prev.command === "z") return false;
+        }
+        if ((command === "Z" || command === "z") && params.removeUseless && isSafeToUseZ && // @ts-ignore
+        Math.abs(item.base[0] - item.coords[0]) < error / 10 && // @ts-ignore
+        Math.abs(item.base[1] - item.coords[1]) < error / 10)
+          return false;
+        if (command === "q") {
+          prevQControlPoint = [data[0] + item.base[0], data[1] + item.base[1]];
+        } else if (command === "t") {
+          if (qControlPoint) {
+            prevQControlPoint = reflectPoint(qControlPoint, item.base);
+          } else {
+            prevQControlPoint = item.coords;
+          }
+        }
+        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(), rdata = 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);
+        roundData(rdata);
+        var absoluteDataStr = cleanupOutData(adata, params), relativeDataStr = cleanupOutData(rdata, 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 || Math.floor(data[0]) === 0 && !Number.isInteger(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 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 calculateSagitta(data) {
+      if (data[3] === 1) return void 0;
+      const [rx, ry] = data;
+      if (Math.abs(rx - ry) > error) return void 0;
+      const chord = Math.sqrt(data[5] ** 2 + data[6] ** 2);
+      if (chord > rx * 2) return void 0;
+      return rx - Math.sqrt(rx ** 2 - 0.25 * chord ** 2);
+    }
+    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.sqrt((point1[0] - point2[0]) ** 2 + (point1[1] - point2[1]) ** 2);
+    }
+    function reflectPoint(controlPoint, base) {
+      return [2 * base[0] - controlPoint[0], 2 * base[1] - controlPoint[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;
+      }, "");
+    }
+  }
+});
+
+// node_modules/svgo/plugins/convertTransform.js
+var require_convertTransform = __commonJS({
+  "node_modules/svgo/plugins/convertTransform.js"(exports2) {
+    "use strict";
+    var { cleanupOutData, toFixed } = require_tools();
+    var {
+      transform2js,
+      transformsMultiply,
+      matrixToTransform
+    } = require_transforms();
+    exports2.name = "convertTransform";
+    exports2.description = "collapses multiple transformations and optimizes it";
+    exports2.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 numberOfDigits = newParams.transformPrecision;
+      if (matrixData.length) {
+        newParams.transformPrecision = Math.min(
+          newParams.transformPrecision,
+          Math.max.apply(Math, matrixData.map(floatDigits)) || newParams.transformPrecision
+        );
+        numberOfDigits = 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, numberOfDigits - 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++) {
+        let 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]?.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) => {
+      const transformString = transformJS.map((transform) => {
+        roundTransform(transform, params);
+        return `${transform.name}(${cleanupOutData(transform.data, params)})`;
+      }).join("");
+      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 (toFixed(data[i], 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;
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeEmptyAttrs.js
+var require_removeEmptyAttrs = __commonJS({
+  "node_modules/svgo/plugins/removeEmptyAttrs.js"(exports2) {
+    "use strict";
+    var { attrsGroups } = require_collections();
+    exports2.name = "removeEmptyAttrs";
+    exports2.description = "removes empty attributes";
+    exports2.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.has(name)) {
+                delete node.attributes[name];
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeEmptyContainers.js
+var require_removeEmptyContainers = __commonJS({
+  "node_modules/svgo/plugins/removeEmptyContainers.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    var { elemsGroups } = require_collections();
+    exports2.name = "removeEmptyContainers";
+    exports2.description = "removes empty container elements";
+    exports2.fn = () => {
+      return {
+        element: {
+          exit: (node, parentNode) => {
+            if (node.name === "svg" || !elemsGroups.container.has(node.name) || 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;
+            }
+            if (parentNode.type === "element" && parentNode.name === "switch") {
+              return;
+            }
+            detachNodeFromParent(node, parentNode);
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/mergePaths.js
+var require_mergePaths = __commonJS({
+  "node_modules/svgo/plugins/mergePaths.js"(exports2) {
+    "use strict";
+    var { collectStylesheet, computeStyle } = require_style();
+    var { path2js, js2path, intersects } = require_path2();
+    exports2.name = "mergePaths";
+    exports2.description = "merges multiple paths in one if possible";
+    exports2.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) => {
+            if (node.children.length <= 1) {
+              return;
+            }
+            const elementsToRemove = [];
+            let prevChild = node.children[0];
+            let prevPathData = null;
+            const updatePreviousPath = (child, pathData) => {
+              js2path(child, pathData, {
+                floatPrecision,
+                noSpaceAfterFlags
+              });
+              prevPathData = null;
+            };
+            for (let i = 1; i < node.children.length; i++) {
+              const child = node.children[i];
+              if (prevChild.type !== "element" || prevChild.name !== "path" || prevChild.children.length !== 0 || prevChild.attributes.d == null) {
+                if (prevPathData && prevChild.type === "element") {
+                  updatePreviousPath(prevChild, prevPathData);
+                }
+                prevChild = child;
+                continue;
+              }
+              if (child.type !== "element" || child.name !== "path" || child.children.length !== 0 || child.attributes.d == null) {
+                if (prevPathData) {
+                  updatePreviousPath(prevChild, prevPathData);
+                }
+                prevChild = child;
+                continue;
+              }
+              const computedStyle = computeStyle(stylesheet, child);
+              if (computedStyle["marker-start"] || computedStyle["marker-mid"] || computedStyle["marker-end"]) {
+                if (prevPathData) {
+                  updatePreviousPath(prevChild, prevPathData);
+                }
+                prevChild = child;
+                continue;
+              }
+              const childAttrs = Object.keys(child.attributes);
+              if (childAttrs.length !== Object.keys(prevChild.attributes).length) {
+                if (prevPathData) {
+                  updatePreviousPath(prevChild, prevPathData);
+                }
+                prevChild = child;
+                continue;
+              }
+              const areAttrsEqual = childAttrs.some((attr) => {
+                return attr !== "d" && prevChild.type === "element" && prevChild.attributes[attr] !== child.attributes[attr];
+              });
+              if (areAttrsEqual) {
+                if (prevPathData) {
+                  updatePreviousPath(prevChild, prevPathData);
+                }
+                prevChild = child;
+                continue;
+              }
+              const hasPrevPath = prevPathData != null;
+              const currentPathData = path2js(child);
+              prevPathData = prevPathData ?? path2js(prevChild);
+              if (force || !intersects(prevPathData, currentPathData)) {
+                prevPathData.push(...currentPathData);
+                elementsToRemove.push(child);
+                continue;
+              }
+              if (hasPrevPath) {
+                updatePreviousPath(prevChild, prevPathData);
+              }
+              prevChild = child;
+              prevPathData = null;
+            }
+            if (prevPathData && prevChild.type === "element") {
+              updatePreviousPath(prevChild, prevPathData);
+            }
+            node.children = node.children.filter(
+              (child) => !elementsToRemove.includes(child)
+            );
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeUnusedNS.js
+var require_removeUnusedNS = __commonJS({
+  "node_modules/svgo/plugins/removeUnusedNS.js"(exports2) {
+    "use strict";
+    exports2.name = "removeUnusedNS";
+    exports2.description = "removes unused namespaces declaration";
+    exports2.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}`];
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/sortAttrs.js
+var require_sortAttrs = __commonJS({
+  "node_modules/svgo/plugins/sortAttrs.js"(exports2) {
+    "use strict";
+    exports2.name = "sortAttrs";
+    exports2.description = "Sort element attributes for better compression";
+    exports2.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;
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/sortDefsChildren.js
+var require_sortDefsChildren = __commonJS({
+  "node_modules/svgo/plugins/sortDefsChildren.js"(exports2) {
+    "use strict";
+    exports2.name = "sortDefsChildren";
+    exports2.description = "Sorts children of <defs> to improve compression";
+    exports2.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;
+              });
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeTitle.js
+var require_removeTitle = __commonJS({
+  "node_modules/svgo/plugins/removeTitle.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeTitle";
+    exports2.description = "removes <title>";
+    exports2.fn = () => {
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            if (node.name === "title") {
+              detachNodeFromParent(node, parentNode);
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeDesc.js
+var require_removeDesc = __commonJS({
+  "node_modules/svgo/plugins/removeDesc.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeDesc";
+    exports2.description = "removes <desc>";
+    var standardDescs = /^(Created with|Created using)/;
+    exports2.fn = (root, params) => {
+      const { removeAny = false } = 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);
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/preset-default.js
+var require_preset_default = __commonJS({
+  "node_modules/svgo/plugins/preset-default.js"(exports2, module2) {
+    "use strict";
+    var { createPreset } = require_plugins();
+    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: "preset-default",
+      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
+      ]
+    });
+    module2.exports = presetDefault;
+  }
+});
+
+// node_modules/svgo/plugins/addAttributesToSVGElement.js
+var require_addAttributesToSVGElement = __commonJS({
+  "node_modules/svgo/plugins/addAttributesToSVGElement.js"(exports2) {
+    "use strict";
+    exports2.name = "addAttributesToSVGElement";
+    exports2.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
+        }
+      ]
+    }
+  }
+]
+`;
+    exports2.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];
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/addClassesToSVGElement.js
+var require_addClassesToSVGElement = __commonJS({
+  "node_modules/svgo/plugins/addClassesToSVGElement.js"(exports2) {
+    "use strict";
+    exports2.name = "addClassesToSVGElement";
+    exports2.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"]
+    }
+  }
+]
+`;
+    exports2.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(" ");
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/cleanupListOfValues.js
+var require_cleanupListOfValues = __commonJS({
+  "node_modules/svgo/plugins/cleanupListOfValues.js"(exports2) {
+    "use strict";
+    var { removeLeadingZero } = require_tools();
+    exports2.name = "cleanupListOfValues";
+    exports2.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
+    };
+    exports2.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);
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/convertOneStopGradients.js
+var require_convertOneStopGradients = __commonJS({
+  "node_modules/svgo/plugins/convertOneStopGradients.js"(exports2) {
+    "use strict";
+    var { attrsGroupsDefaults, colorsProps } = require_collections();
+    var {
+      detachNodeFromParent,
+      querySelectorAll,
+      querySelector
+    } = require_xast();
+    var { computeStyle, collectStylesheet } = require_style();
+    exports2.name = "convertOneStopGradients";
+    exports2.description = "converts one-stop (single color) gradients to a plain color";
+    exports2.fn = (root) => {
+      const stylesheet = collectStylesheet(root);
+      const effectedDefs = /* @__PURE__ */ new Set();
+      const allDefs = /* @__PURE__ */ new Map();
+      const gradientsToDetach = /* @__PURE__ */ new Map();
+      let xlinkHrefCount = 0;
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            if (node.attributes["xlink:href"] != null) {
+              xlinkHrefCount++;
+            }
+            if (node.name === "defs") {
+              allDefs.set(node, parentNode);
+              return;
+            }
+            if (node.name !== "linearGradient" && node.name !== "radialGradient") {
+              return;
+            }
+            const stops = node.children.filter((child) => {
+              return child.type === "element" && child.name === "stop";
+            });
+            const href = node.attributes["xlink:href"] || node.attributes["href"];
+            let effectiveNode = stops.length === 0 && href != null && href.startsWith("#") ? querySelector(root, href) : node;
+            if (effectiveNode == null || effectiveNode.type !== "element") {
+              gradientsToDetach.set(node, parentNode);
+              return;
+            }
+            const effectiveStops = effectiveNode.children.filter((child) => {
+              return child.type === "element" && child.name === "stop";
+            });
+            if (effectiveStops.length !== 1 || effectiveStops[0].type !== "element") {
+              return;
+            }
+            if (parentNode.type === "element" && parentNode.name === "defs") {
+              effectedDefs.add(parentNode);
+            }
+            gradientsToDetach.set(node, parentNode);
+            let color;
+            const style = computeStyle(stylesheet, effectiveStops[0])["stop-color"];
+            if (style != null && style.type === "static") {
+              color = style.value;
+            }
+            const selectorVal = `url(#${node.attributes.id})`;
+            const selector = [...colorsProps].map((attr) => `[${attr}="${selectorVal}"]`).join(",");
+            const elements = querySelectorAll(root, selector);
+            for (const element of elements) {
+              if (element.type !== "element") {
+                continue;
+              }
+              for (const attr of colorsProps) {
+                if (element.attributes[attr] !== selectorVal) {
+                  continue;
+                }
+                if (color != null) {
+                  element.attributes[attr] = color;
+                } else {
+                  delete element.attributes[attr];
+                }
+              }
+            }
+            const styledElements = querySelectorAll(
+              root,
+              `[style*=${selectorVal}]`
+            );
+            for (const element of styledElements) {
+              if (element.type !== "element") {
+                continue;
+              }
+              element.attributes.style = element.attributes.style.replace(
+                selectorVal,
+                color || attrsGroupsDefaults.presentation["stop-color"]
+              );
+            }
+          },
+          exit: (node) => {
+            if (node.name === "svg") {
+              for (const [gradient, parent] of gradientsToDetach.entries()) {
+                if (gradient.attributes["xlink:href"] != null) {
+                  xlinkHrefCount--;
+                }
+                detachNodeFromParent(gradient, parent);
+              }
+              if (xlinkHrefCount === 0) {
+                delete node.attributes["xmlns:xlink"];
+              }
+              for (const [defs, parent] of allDefs.entries()) {
+                if (effectedDefs.has(defs) && defs.children.length === 0) {
+                  detachNodeFromParent(defs, parent);
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/convertStyleToAttrs.js
+var require_convertStyleToAttrs = __commonJS({
+  "node_modules/svgo/plugins/convertStyleToAttrs.js"(exports2) {
+    "use strict";
+    var { attrsGroups } = require_collections();
+    exports2.name = "convertStyleToAttrs";
+    exports2.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"
+    );
+    exports2.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.has(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;
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/prefixIds.js
+var require_prefixIds = __commonJS({
+  "node_modules/svgo/plugins/prefixIds.js"(exports2) {
+    "use strict";
+    var csstree = require_cjs();
+    var { referencesProps } = require_collections();
+    exports2.name = "prefixIds";
+    exports2.description = "prefix IDs";
+    var getBasename = (path) => {
+      const matched = /[/\\]?([^/\\]+)$/.exec(path);
+      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 = (prefixGenerator, body) => {
+      const prefix = prefixGenerator(body);
+      if (body.startsWith(prefix)) {
+        return body;
+      }
+      return prefix + body;
+    };
+    var prefixReference = (prefixGenerator, reference) => {
+      if (reference.startsWith("#")) {
+        return "#" + prefixId(prefixGenerator, reference.slice(1));
+      }
+      return null;
+    };
+    var generatePrefix = (body, node, info, prefixGenerator, delim, history) => {
+      if (typeof prefixGenerator === "function") {
+        let prefix = history.get(body);
+        if (prefix != null) {
+          return prefix;
+        }
+        prefix = prefixGenerator(node, info) + delim;
+        history.set(body, prefix);
+        return prefix;
+      }
+      if (typeof prefixGenerator === "string") {
+        return prefixGenerator + delim;
+      }
+      if (prefixGenerator === false) {
+        return "";
+      }
+      if (info.path != null && info.path.length > 0) {
+        return escapeIdentifierName(getBasename(info.path)) + delim;
+      }
+      return "prefix" + delim;
+    };
+    exports2.fn = (_root, params, info) => {
+      const {
+        delim = "__",
+        prefix,
+        prefixIds = true,
+        prefixClassNames = true
+      } = params;
+      const prefixMap = /* @__PURE__ */ new Map();
+      return {
+        element: {
+          enter: (node) => {
+            const prefixGenerator = (id) => generatePrefix(id, node, info, prefix, delim, prefixMap);
+            if (node.name === "style") {
+              if (node.children.length === 0) {
+                return;
+              }
+              for (const child of node.children) {
+                if (child.type !== "text" && child.type !== "cdata") {
+                  continue;
+                }
+                const cssText = child.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(prefixGenerator, node2.name);
+                    return;
+                  }
+                  if (node2.type === "Url" && node2.value.length > 0) {
+                    const prefixed = prefixReference(
+                      prefixGenerator,
+                      unquote(node2.value)
+                    );
+                    if (prefixed != null) {
+                      node2.value = prefixed;
+                    }
+                  }
+                });
+                child.value = csstree.generate(cssAst);
+                return;
+              }
+            }
+            if (prefixIds && node.attributes.id != null && node.attributes.id.length !== 0) {
+              node.attributes.id = prefixId(prefixGenerator, 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(prefixGenerator, name)).join(" ");
+            }
+            for (const name of ["href", "xlink:href"]) {
+              if (node.attributes[name] != null && node.attributes[name].length !== 0) {
+                const prefixed = prefixReference(
+                  prefixGenerator,
+                  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(
+                  /\burl\((["'])?(#.+?)\1\)/gi,
+                  (match, _, url) => {
+                    const prefixed = prefixReference(prefixGenerator, 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(prefixGenerator, id)}.${postfix}`;
+                  }
+                  return val;
+                });
+                node.attributes[name] = parts.join("; ");
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeAttributesBySelector.js
+var require_removeAttributesBySelector = __commonJS({
+  "node_modules/svgo/plugins/removeAttributesBySelector.js"(exports2) {
+    "use strict";
+    var { querySelectorAll } = require_xast();
+    exports2.name = "removeAttributesBySelector";
+    exports2.description = "removes attributes of elements that match a css selector";
+    exports2.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 {};
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeAttrs.js
+var require_removeAttrs = __commonJS({
+  "node_modules/svgo/plugins/removeAttrs.js"(exports2) {
+    "use strict";
+    exports2.name = "removeAttrs";
+    exports2.description = "removes specified attributes";
+    var DEFAULT_SEPARATOR = ":";
+    var ENOATTRS = `Warning: The plugin "removeAttrs" requires the "attrs" parameter.
+It should have a pattern to remove, otherwise the plugin is a noop.
+Config example:
+
+plugins: [
+  {
+    name: "removeAttrs",
+    params: {
+      attrs: "(fill|stroke)"
+    }
+  }
+]
+`;
+    exports2.fn = (root, params) => {
+      if (typeof params.attrs == "undefined") {
+        console.warn(ENOATTRS);
+        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)) {
+                pattern = [".*", pattern, ".*"].join(elemSeparator);
+              } else if (pattern.split(elemSeparator).length < 3) {
+                pattern = [pattern, ".*"].join(elemSeparator);
+              }
+              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];
+                  }
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeDimensions.js
+var require_removeDimensions = __commonJS({
+  "node_modules/svgo/plugins/removeDimensions.js"(exports2) {
+    "use strict";
+    exports2.name = "removeDimensions";
+    exports2.description = "removes width and height in presence of viewBox (opposite to removeViewBox, disable it first)";
+    exports2.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;
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeElementsByAttr.js
+var require_removeElementsByAttr = __commonJS({
+  "node_modules/svgo/plugins/removeElementsByAttr.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeElementsByAttr";
+    exports2.description = "removes arbitrary elements by ID or className (disabled by default)";
+    exports2.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;
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeOffCanvasPaths.js
+var require_removeOffCanvasPaths = __commonJS({
+  "node_modules/svgo/plugins/removeOffCanvasPaths.js"(exports2) {
+    "use strict";
+    var { visitSkip, detachNodeFromParent } = require_xast();
+    var { parsePathData } = require_path();
+    var { intersects } = require_path2();
+    exports2.name = "removeOffCanvasPaths";
+    exports2.description = "removes elements that are drawn outside of the viewbox (disabled by default)";
+    exports2.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);
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeRasterImages.js
+var require_removeRasterImages = __commonJS({
+  "node_modules/svgo/plugins/removeRasterImages.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeRasterImages";
+    exports2.description = "removes raster images (disabled by default)";
+    exports2.fn = () => {
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            if (node.name === "image" && node.attributes["xlink:href"] != null && /(\.|image\/)(jpe?g|png|gif)/.test(node.attributes["xlink:href"])) {
+              detachNodeFromParent(node, parentNode);
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeScriptElement.js
+var require_removeScriptElement = __commonJS({
+  "node_modules/svgo/plugins/removeScriptElement.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    var { attrsGroups } = require_collections();
+    exports2.name = "removeScriptElement";
+    exports2.description = "removes scripts (disabled by default)";
+    var eventAttrs = [
+      ...attrsGroups.animationEvent,
+      ...attrsGroups.documentEvent,
+      ...attrsGroups.documentElementEvent,
+      ...attrsGroups.globalEvent,
+      ...attrsGroups.graphicalEvent
+    ];
+    exports2.fn = () => {
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            if (node.name === "script") {
+              detachNodeFromParent(node, parentNode);
+              return;
+            }
+            for (const attr of eventAttrs) {
+              if (node.attributes[attr] != null) {
+                delete node.attributes[attr];
+              }
+            }
+          },
+          exit: (node, parentNode) => {
+            if (node.name !== "a") {
+              return;
+            }
+            for (const attr of Object.keys(node.attributes)) {
+              if (attr === "href" || attr.endsWith(":href")) {
+                if (node.attributes[attr] == null || !node.attributes[attr].trimStart().startsWith("javascript:")) {
+                  continue;
+                }
+                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
+                  });
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeStyleElement.js
+var require_removeStyleElement = __commonJS({
+  "node_modules/svgo/plugins/removeStyleElement.js"(exports2) {
+    "use strict";
+    var { detachNodeFromParent } = require_xast();
+    exports2.name = "removeStyleElement";
+    exports2.description = "removes <style> element (disabled by default)";
+    exports2.fn = () => {
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            if (node.name === "style") {
+              detachNodeFromParent(node, parentNode);
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeXlink.js
+var require_removeXlink = __commonJS({
+  "node_modules/svgo/plugins/removeXlink.js"(exports2) {
+    "use strict";
+    var { elems } = require_collections();
+    exports2.name = "removeXlink";
+    exports2.description = "remove xlink namespace and replaces attributes with the SVG 2 equivalent where applicable";
+    var XLINK_NAMESPACE = "http://www.w3.org/1999/xlink";
+    var SHOW_TO_TARGET = {
+      new: "_blank",
+      replace: "_self"
+    };
+    var LEGACY_ELEMENTS = /* @__PURE__ */ new Set([
+      "cursor",
+      "filter",
+      "font-face-uri",
+      "glyphRef",
+      "tref"
+    ]);
+    var findPrefixedAttrs = (node, prefixes, attr) => {
+      return prefixes.map((prefix) => `${prefix}:${attr}`).filter((attr2) => node.attributes[attr2] != null);
+    };
+    exports2.fn = (_, params) => {
+      const { includeLegacy } = params;
+      const xlinkPrefixes = [];
+      const overriddenPrefixes = [];
+      const usedInLegacyElement = [];
+      return {
+        element: {
+          enter: (node) => {
+            for (const [key, value] of Object.entries(node.attributes)) {
+              if (key.startsWith("xmlns:")) {
+                const prefix = key.split(":", 2)[1];
+                if (value === XLINK_NAMESPACE) {
+                  xlinkPrefixes.push(prefix);
+                  continue;
+                }
+                if (xlinkPrefixes.includes(prefix)) {
+                  overriddenPrefixes.push(prefix);
+                }
+              }
+            }
+            if (overriddenPrefixes.some((prefix) => xlinkPrefixes.includes(prefix))) {
+              return;
+            }
+            const showAttrs = findPrefixedAttrs(node, xlinkPrefixes, "show");
+            let showHandled = node.attributes.target != null;
+            for (let i = showAttrs.length - 1; i >= 0; i--) {
+              const attr = showAttrs[i];
+              const value = node.attributes[attr];
+              const mapping = SHOW_TO_TARGET[value];
+              if (showHandled || mapping == null) {
+                delete node.attributes[attr];
+                continue;
+              }
+              if (mapping !== elems[node.name]?.defaults?.target) {
+                node.attributes.target = mapping;
+              }
+              delete node.attributes[attr];
+              showHandled = true;
+            }
+            const titleAttrs = findPrefixedAttrs(node, xlinkPrefixes, "title");
+            for (let i = titleAttrs.length - 1; i >= 0; i--) {
+              const attr = titleAttrs[i];
+              const value = node.attributes[attr];
+              const hasTitle = node.children.filter(
+                (child) => child.type === "element" && child.name === "title"
+              );
+              if (hasTitle.length > 0) {
+                delete node.attributes[attr];
+                continue;
+              }
+              const titleTag = {
+                type: "element",
+                name: "title",
+                attributes: {},
+                children: [
+                  {
+                    type: "text",
+                    value
+                  }
+                ]
+              };
+              Object.defineProperty(titleTag, "parentNode", {
+                writable: true,
+                value: node
+              });
+              node.children.unshift(titleTag);
+              delete node.attributes[attr];
+            }
+            const hrefAttrs = findPrefixedAttrs(node, xlinkPrefixes, "href");
+            if (hrefAttrs.length > 0 && LEGACY_ELEMENTS.has(node.name) && !includeLegacy) {
+              hrefAttrs.map((attr) => attr.split(":", 1)[0]).forEach((prefix) => usedInLegacyElement.push(prefix));
+              return;
+            }
+            for (let i = hrefAttrs.length - 1; i >= 0; i--) {
+              const attr = hrefAttrs[i];
+              const value = node.attributes[attr];
+              if (node.attributes.href != null) {
+                delete node.attributes[attr];
+                continue;
+              }
+              node.attributes.href = value;
+              delete node.attributes[attr];
+            }
+          },
+          exit: (node) => {
+            for (const [key, value] of Object.entries(node.attributes)) {
+              const [prefix, attr] = key.split(":", 2);
+              if (xlinkPrefixes.includes(prefix) && !overriddenPrefixes.includes(prefix) && !usedInLegacyElement.includes(prefix) && !includeLegacy) {
+                delete node.attributes[key];
+                continue;
+              }
+              if (key.startsWith("xmlns:") && !usedInLegacyElement.includes(attr)) {
+                if (value === XLINK_NAMESPACE) {
+                  const index = xlinkPrefixes.indexOf(attr);
+                  xlinkPrefixes.splice(index, 1);
+                  delete node.attributes[key];
+                  continue;
+                }
+                if (overriddenPrefixes.includes(prefix)) {
+                  const index = overriddenPrefixes.indexOf(attr);
+                  overriddenPrefixes.splice(index, 1);
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/removeXMLNS.js
+var require_removeXMLNS = __commonJS({
+  "node_modules/svgo/plugins/removeXMLNS.js"(exports2) {
+    "use strict";
+    exports2.name = "removeXMLNS";
+    exports2.description = "removes xmlns attribute (for inline svg, disabled by default)";
+    exports2.fn = () => {
+      return {
+        element: {
+          enter: (node) => {
+            if (node.name === "svg") {
+              delete node.attributes.xmlns;
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/plugins/reusePaths.js
+var require_reusePaths = __commonJS({
+  "node_modules/svgo/plugins/reusePaths.js"(exports2) {
+    "use strict";
+    var { collectStylesheet } = require_style();
+    var { detachNodeFromParent, querySelectorAll } = require_xast();
+    exports2.name = "reusePaths";
+    exports2.description = "Finds <path> elements with the same d, fill, and stroke, and converts them to <use> elements referencing a single <path> def.";
+    exports2.fn = (root) => {
+      const stylesheet = collectStylesheet(root);
+      const paths = /* @__PURE__ */ new Map();
+      let svgDefs;
+      const hrefs = /* @__PURE__ */ new Set();
+      return {
+        element: {
+          enter: (node, parentNode) => {
+            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);
+            }
+            if (svgDefs == null && node.name === "defs" && parentNode.type === "element" && parentNode.name === "svg") {
+              svgDefs = node;
+            }
+            if (node.name === "use") {
+              for (const name of ["href", "xlink:href"]) {
+                const href = node.attributes[name];
+                if (href != null && href.startsWith("#") && href.length > 1) {
+                  hrefs.add(href.slice(1));
+                }
+              }
+            }
+          },
+          exit: (node, parentNode) => {
+            if (node.name === "svg" && parentNode.type === "root") {
+              let defsTag = svgDefs;
+              if (defsTag == null) {
+                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: {},
+                    children: []
+                  };
+                  for (const attr of ["fill", "stroke", "d"]) {
+                    if (list[0].attributes[attr] != null) {
+                      reusablePath.attributes[attr] = list[0].attributes[attr];
+                    }
+                  }
+                  const originalId = list[0].attributes.id;
+                  if (originalId == null || hrefs.has(originalId) || stylesheet.rules.some(
+                    (rule) => rule.selector === `#${originalId}`
+                  )) {
+                    reusablePath.attributes.id = "reuse-" + index++;
+                  } else {
+                    reusablePath.attributes.id = originalId;
+                    delete list[0].attributes.id;
+                  }
+                  Object.defineProperty(reusablePath, "parentNode", {
+                    writable: true,
+                    value: defsTag
+                  });
+                  defsTag.children.push(reusablePath);
+                  for (const pathNode of list) {
+                    delete pathNode.attributes.d;
+                    delete pathNode.attributes.stroke;
+                    delete pathNode.attributes.fill;
+                    if (defsTag.children.includes(pathNode) && pathNode.children.length === 0) {
+                      if (Object.keys(pathNode.attributes).length === 0) {
+                        detachNodeFromParent(pathNode, defsTag);
+                        continue;
+                      }
+                      if (Object.keys(pathNode.attributes).length === 1 && pathNode.attributes.id != null) {
+                        detachNodeFromParent(pathNode, defsTag);
+                        const selector = `[xlink\\:href=#${pathNode.attributes.id}], [href=#${pathNode.attributes.id}]`;
+                        for (const child of querySelectorAll(node, selector)) {
+                          if (child.type !== "element") {
+                            continue;
+                          }
+                          for (const name of ["href", "xlink:href"]) {
+                            if (child.attributes[name] != null) {
+                              child.attributes[name] = "#" + reusablePath.attributes.id;
+                            }
+                          }
+                        }
+                        continue;
+                      }
+                    }
+                    pathNode.name = "use";
+                    pathNode.attributes["xlink:href"] = "#" + reusablePath.attributes.id;
+                  }
+                }
+              }
+              if (defsTag.children.length !== 0) {
+                if (node.attributes["xmlns:xlink"] == null) {
+                  node.attributes["xmlns:xlink"] = "http://www.w3.org/1999/xlink";
+                }
+                if (svgDefs == null) {
+                  node.children.unshift(defsTag);
+                }
+              }
+            }
+          }
+        }
+      };
+    };
+  }
+});
+
+// node_modules/svgo/lib/builtin.js
+var require_builtin = __commonJS({
+  "node_modules/svgo/lib/builtin.js"(exports2) {
+    "use strict";
+    exports2.builtin = [
+      require_preset_default(),
+      require_addAttributesToSVGElement(),
+      require_addClassesToSVGElement(),
+      require_cleanupAttrs(),
+      require_cleanupEnableBackground(),
+      require_cleanupIds(),
+      require_cleanupListOfValues(),
+      require_cleanupNumericValues(),
+      require_collapseGroups(),
+      require_convertColors(),
+      require_convertEllipseToCircle(),
+      require_convertOneStopGradients(),
+      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_removeXlink(),
+      require_removeXMLNS(),
+      require_removeXMLProcInst(),
+      require_reusePaths(),
+      require_sortAttrs(),
+      require_sortDefsChildren()
+    ];
+  }
+});
+
+// node_modules/svgo/lib/svgo.js
+var require_svgo = __commonJS({
+  "node_modules/svgo/lib/svgo.js"(exports2) {
+    "use strict";
+    var { parseSvg } = require_parser2();
+    var { stringifySvg } = require_stringifier2();
+    var { builtin } = require_builtin();
+    var { invokePlugins } = require_plugins();
+    var { encodeSVGDatauri } = require_tools();
+    var pluginsMap = {};
+    for (const plugin of builtin) {
+      pluginsMap[plugin.name] = plugin;
+    }
+    var resolvePluginConfig = (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 (typeof plugin === "object" && plugin != null) {
+        if (plugin.name == null) {
+          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;
+    };
+    var optimize = (input, config) => {
+      if (config == null) {
+        config = {};
+      }
+      if (typeof config !== "object") {
+        throw Error("Config should be an object");
+      }
+      const maxPassCount = config.multipass ? 10 : 1;
+      let prevResultSize = Number.POSITIVE_INFINITY;
+      let output = "";
+      const info = {};
+      if (config.path != null) {
+        info.path = config.path;
+      }
+      for (let i = 0; i < maxPassCount; i += 1) {
+        info.multipassCount = i;
+        const ast = parseSvg(input, config.path);
+        const plugins = config.plugins || ["preset-default"];
+        if (!Array.isArray(plugins)) {
+          throw Error(
+            "malformed config, `plugins` property must be an array.\nSee more info here: https://github.com/svg/svgo#configuration"
+          );
+        }
+        const resolvedPlugins = plugins.filter((plugin) => plugin != null).map(resolvePluginConfig);
+        if (resolvedPlugins.length < plugins.length) {
+          console.warn(
+            "Warning: plugins list includes null or undefined elements, these will be ignored."
+          );
+        }
+        const globalOverrides = {};
+        if (config.floatPrecision != null) {
+          globalOverrides.floatPrecision = config.floatPrecision;
+        }
+        invokePlugins(ast, info, resolvedPlugins, null, globalOverrides);
+        output = stringifySvg(ast, config.js2svg);
+        if (output.length < prevResultSize) {
+          input = output;
+          prevResultSize = output.length;
+        } else {
+          break;
+        }
+      }
+      if (config.datauri) {
+        output = encodeSVGDatauri(output, config.datauri);
+      }
+      return {
+        data: output
+      };
+    };
+    exports2.optimize = optimize;
+  }
+});
+
+// node_modules/svgo/lib/svgo-node.js
+var require_svgo_node = __commonJS({
+  "node_modules/svgo/lib/svgo-node.js"(exports2) {
+    "use strict";
+    var os = require("os");
+    var fs = require("fs");
+    var { pathToFileURL } = require("url");
+    var path = require("path");
+    var { optimize: optimizeAgnostic } = require_svgo();
+    var importConfig = async (configFile) => {
+      let config;
+      if (configFile.endsWith(".cjs")) {
+        config = require(configFile);
+      } else {
+        const { default: imported } = await import(pathToFileURL(configFile));
+        config = imported;
+      }
+      if (config == null || typeof config !== "object" || Array.isArray(config)) {
+        throw Error(`Invalid config file "${configFile}"`);
+      }
+      return config;
+    };
+    var isFile = async (file) => {
+      try {
+        const stats = await fs.promises.stat(file);
+        return stats.isFile();
+      } catch {
+        return false;
+      }
+    };
+    var loadConfig = async (configFile, cwd = process.cwd()) => {
+      if (configFile != null) {
+        if (path.isAbsolute(configFile)) {
+          return await importConfig(configFile);
+        } else {
+          return await importConfig(path.join(cwd, configFile));
+        }
+      }
+      let dir = cwd;
+      while (true) {
+        const js = path.join(dir, "svgo.config.js");
+        if (await isFile(js)) {
+          return await importConfig(js);
+        }
+        const mjs = path.join(dir, "svgo.config.mjs");
+        if (await isFile(mjs)) {
+          return await importConfig(mjs);
+        }
+        const cjs = path.join(dir, "svgo.config.cjs");
+        if (await isFile(cjs)) {
+          return await importConfig(cjs);
+        }
+        const parent = path.dirname(dir);
+        if (dir === parent) {
+          return null;
+        }
+        dir = parent;
+      }
+    };
+    exports2.loadConfig = loadConfig;
+    var optimize = (input, config) => {
+      if (config == null) {
+        config = {};
+      }
+      if (typeof config !== "object") {
+        throw Error("Config should be an object");
+      }
+      return optimizeAgnostic(input, {
+        ...config,
+        js2svg: {
+          // platform specific default for end of line
+          eol: os.EOL === "\r\n" ? "crlf" : "lf",
+          ...config.js2svg
+        }
+      });
+    };
+    exports2.optimize = optimize;
+  }
+});
+
+// node_modules/postcss-svgo/src/lib/url.js
+var require_url4 = __commonJS({
+  "node_modules/postcss-svgo/src/lib/url.js"(exports2, module2) {
+    "use strict";
+    function encode(data) {
+      return data.replace(/"/g, "'").replace(/%/g, "%25").replace(/</g, "%3C").replace(/>/g, "%3E").replace(/&/g, "%26").replace(/#/g, "%23").replace(/\s+/g, " ");
+    }
+    var decode = decodeURIComponent;
+    module2.exports = { encode, decode };
+  }
+});
+
+// node_modules/postcss-svgo/src/index.js
+var require_src6 = __commonJS({
+  "node_modules/postcss-svgo/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var { optimize } = require_svgo_node();
+    var { encode, decode } = require_url4();
+    var PLUGIN = "postcss-svgo";
+    var dataURI = /data:image\/svg\+xml(;((charset=)?utf-8|base64))?,/i;
+    var dataURIBase64 = /data:image\/svg\+xml;base64,/i;
+    var escapedQuotes = /\b([\w-]+)\s*=\s*\\"([\S\s]+?)\\"/g;
+    function minifySVG(input, opts) {
+      let svg = input;
+      let decodedUri, isUriEncoded;
+      try {
+        decodedUri = decode(input);
+        isUriEncoded = decodedUri !== input;
+      } catch (e) {
+        isUriEncoded = false;
+      }
+      if (isUriEncoded) {
+        svg = /** @type {string} */
+        decodedUri;
+      }
+      if (opts.encode !== void 0) {
+        isUriEncoded = opts.encode;
+      }
+      svg = svg.replace(escapedQuotes, '$1="$2"');
+      const result = optimize(svg, opts);
+      return {
+        result: (
+          /** @type {import('svgo').Output}*/
+          result.data
+        ),
+        isUriEncoded
+      };
+    }
+    function minify(decl, opts, postcssResult) {
+      const parsed = valueParser(decl.value);
+      const minified = parsed.walk((node) => {
+        if (node.type !== "function" || node.value.toLowerCase() !== "url" || !node.nodes.length) {
+          return;
+        }
+        let { value, quote } = (
+          /** @type {valueParser.StringNode} */
+          node.nodes[0]
+        );
+        let optimizedValue;
+        try {
+          if (dataURIBase64.test(value)) {
+            const url = new URL(value);
+            const base64String = `${url.protocol}${url.pathname}`.replace(
+              dataURI,
+              ""
+            );
+            const svg = Buffer.from(base64String, "base64").toString("utf8");
+            const { result } = minifySVG(svg, opts);
+            const data = Buffer.from(result).toString("base64");
+            optimizedValue = "data:image/svg+xml;base64," + data + url.hash;
+          } else if (dataURI.test(value)) {
+            const svg = value.replace(dataURI, "");
+            const { result, isUriEncoded } = minifySVG(svg, opts);
+            let data = isUriEncoded ? encode(result) : result;
+            data = data.replace(/#/g, "%23");
+            optimizedValue = "data:image/svg+xml;charset=utf-8," + data;
+            quote = isUriEncoded ? '"' : "'";
+          } else {
+            return;
+          }
+        } catch (error) {
+          decl.warn(postcssResult, `${error}`);
+          return;
+        }
+        node.nodes[0] = Object.assign({}, node.nodes[0], {
+          value: optimizedValue,
+          quote,
+          type: "string",
+          before: "",
+          after: ""
+        });
+        return false;
+      });
+      decl.value = minified.toString();
+    }
+    function pluginCreator(opts = {}) {
+      return {
+        postcssPlugin: PLUGIN,
+        OnceExit(css, { result }) {
+          css.walkDecls((decl) => {
+            if (!dataURI.test(decl.value)) {
+              return;
+            }
+            minify(decl, opts, result);
+          });
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-reduce-transforms/src/index.js
+var require_src7 = __commonJS({
+  "node_modules/postcss-reduce-transforms/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    function getValues(list, node, index) {
+      if (index % 2 === 0) {
+        let value = NaN;
+        if (node.type === "function" && (node.value === "var" || node.value === "env") && node.nodes.length === 1) {
+          value = valueParser.stringify(node.nodes);
+        } else if (node.type === "word") {
+          value = parseFloat(node.value);
+        }
+        return [...list, value];
+      }
+      return list;
+    }
+    function matrix3d(node, values) {
+      if (values.length !== 16) {
+        return;
+      }
+      if (values[15] && values[2] === 0 && values[3] === 0 && values[6] === 0 && values[7] === 0 && values[8] === 0 && values[9] === 0 && values[10] === 1 && values[11] === 0 && values[14] === 0 && values[15] === 1) {
+        const { nodes } = node;
+        node.value = "matrix";
+        node.nodes = [
+          nodes[0],
+          // a
+          nodes[1],
+          // ,
+          nodes[2],
+          // b
+          nodes[3],
+          // ,
+          nodes[8],
+          // c
+          nodes[9],
+          // ,
+          nodes[10],
+          // d
+          nodes[11],
+          // ,
+          nodes[24],
+          // tx
+          nodes[25],
+          // ,
+          nodes[26]
+          // ty
+        ];
+      }
+    }
+    var rotate3dMappings = /* @__PURE__ */ new Map([
+      [[1, 0, 0].toString(), "rotateX"],
+      // rotate3d(1, 0, 0, a) => rotateX(a)
+      [[0, 1, 0].toString(), "rotateY"],
+      // rotate3d(0, 1, 0, a) => rotateY(a)
+      [[0, 0, 1].toString(), "rotate"]
+      // rotate3d(0, 0, 1, a) => rotate(a)
+    ]);
+    function rotate3d(node, values) {
+      if (values.length !== 4) {
+        return;
+      }
+      const { nodes } = node;
+      const match = rotate3dMappings.get(values.slice(0, 3).toString());
+      if (match) {
+        node.value = match;
+        node.nodes = [nodes[6]];
+      }
+    }
+    function rotateZ(node, values) {
+      if (values.length !== 1) {
+        return;
+      }
+      node.value = "rotate";
+    }
+    function scale(node, values) {
+      if (values.length !== 2) {
+        return;
+      }
+      const { nodes } = node;
+      const [first, second] = values;
+      if (first === second) {
+        node.nodes = [nodes[0]];
+        return;
+      }
+      if (second === 1) {
+        node.value = "scaleX";
+        node.nodes = [nodes[0]];
+        return;
+      }
+      if (first === 1) {
+        node.value = "scaleY";
+        node.nodes = [nodes[2]];
+        return;
+      }
+    }
+    function scale3d(node, values) {
+      if (values.length !== 3) {
+        return;
+      }
+      const { nodes } = node;
+      const [first, second, third] = values;
+      if (second === 1 && third === 1) {
+        node.value = "scaleX";
+        node.nodes = [nodes[0]];
+        return;
+      }
+      if (first === 1 && third === 1) {
+        node.value = "scaleY";
+        node.nodes = [nodes[2]];
+        return;
+      }
+      if (first === 1 && second === 1) {
+        node.value = "scaleZ";
+        node.nodes = [nodes[4]];
+        return;
+      }
+    }
+    function translate(node, values) {
+      if (values.length !== 2) {
+        return;
+      }
+      const { nodes } = node;
+      if (values[1] === 0) {
+        node.nodes = [nodes[0]];
+        return;
+      }
+      if (values[0] === 0) {
+        node.value = "translateY";
+        node.nodes = [nodes[2]];
+        return;
+      }
+    }
+    function translate3d(node, values) {
+      if (values.length !== 3) {
+        return;
+      }
+      const { nodes } = node;
+      if (values[0] === 0 && values[1] === 0) {
+        node.value = "translateZ";
+        node.nodes = [nodes[4]];
+      }
+    }
+    var reducers = /* @__PURE__ */ new Map([
+      ["matrix3d", matrix3d],
+      ["rotate3d", rotate3d],
+      ["rotateZ", rotateZ],
+      ["scale", scale],
+      ["scale3d", scale3d],
+      ["translate", translate],
+      ["translate3d", translate3d]
+    ]);
+    function normalizeReducerName(name) {
+      const lowerCasedName = name.toLowerCase();
+      if (lowerCasedName === "rotatez") {
+        return "rotateZ";
+      }
+      return lowerCasedName;
+    }
+    function reduce(node) {
+      if (node.type === "function") {
+        const normalizedReducerName = normalizeReducerName(node.value);
+        const reducer = reducers.get(normalizedReducerName);
+        if (reducer !== void 0) {
+          reducer(node, node.nodes.reduce(getValues, []));
+        }
+      }
+      return false;
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-reduce-transforms",
+        prepare() {
+          const cache = /* @__PURE__ */ new Map();
+          return {
+            OnceExit(css) {
+              css.walkDecls(/transform$/i, (decl) => {
+                const value = decl.value;
+                if (!value) {
+                  return;
+                }
+                if (cache.has(value)) {
+                  decl.value = cache.get(value);
+                  return;
+                }
+                const result = valueParser(value).walk(reduce).toString();
+                decl.value = result;
+                cache.set(value, result);
+              });
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-convert-values/src/lib/convert.js
+var require_convert = __commonJS({
+  "node_modules/postcss-convert-values/src/lib/convert.js"(exports2, module2) {
+    "use strict";
+    var lengthConv = /* @__PURE__ */ new Map([
+      ["in", 96],
+      ["px", 1],
+      ["pt", 4 / 3],
+      ["pc", 16]
+    ]);
+    var timeConv = /* @__PURE__ */ new Map([
+      ["s", 1e3],
+      ["ms", 1]
+    ]);
+    var angleConv = /* @__PURE__ */ new Map([
+      ["turn", 360],
+      ["deg", 1]
+    ]);
+    function dropLeadingZero(number) {
+      const value = String(number);
+      if (number % 1) {
+        if (value[0] === "0") {
+          return value.slice(1);
+        }
+        if (value[0] === "-" && value[1] === "0") {
+          return "-" + value.slice(2);
+        }
+      }
+      return value;
+    }
+    function transform(number, originalUnit, conversions) {
+      let conversionUnits = [...conversions.keys()].filter((u) => {
+        return originalUnit !== u;
+      });
+      const base = number * /** @type {number} */
+      conversions.get(originalUnit);
+      return conversionUnits.map(
+        (u) => dropLeadingZero(base / /** @type {number} */
+        conversions.get(u)) + u
+      ).reduce((a, b) => a.length < b.length ? a : b);
+    }
+    module2.exports = function(number, unit, { time, length, angle }) {
+      let value = dropLeadingZero(number) + (unit ? unit : "");
+      let converted;
+      const lowerCaseUnit = unit.toLowerCase();
+      if (length !== false && lengthConv.has(lowerCaseUnit)) {
+        converted = transform(number, lowerCaseUnit, lengthConv);
+      }
+      if (time !== false && timeConv.has(lowerCaseUnit)) {
+        converted = transform(number, lowerCaseUnit, timeConv);
+      }
+      if (angle !== false && angleConv.has(lowerCaseUnit)) {
+        converted = transform(number, lowerCaseUnit, angleConv);
+      }
+      if (converted && converted.length < value.length) {
+        value = converted;
+      }
+      return value;
+    };
+  }
+});
+
+// node_modules/postcss-convert-values/src/index.js
+var require_src8 = __commonJS({
+  "node_modules/postcss-convert-values/src/index.js"(exports2, module2) {
+    "use strict";
+    var { dirname } = require("path");
+    var valueParser = require_lib();
+    var browserslist = require_browserslist();
+    var convert = require_convert();
+    var LENGTH_UNITS = /* @__PURE__ */ new Set([
+      "em",
+      "ex",
+      "ch",
+      "rem",
+      "vw",
+      "vh",
+      "vmin",
+      "vmax",
+      "cm",
+      "mm",
+      "q",
+      "in",
+      "pt",
+      "pc",
+      "px"
+    ]);
+    var notALength = /* @__PURE__ */ new Set([
+      "descent-override",
+      "ascent-override",
+      "font-stretch",
+      "size-adjust",
+      "line-gap-override"
+    ]);
+    var keepWhenZero = /* @__PURE__ */ new Set([
+      "stroke-dashoffset",
+      "stroke-width",
+      "line-height"
+    ]);
+    var keepZeroPercent = /* @__PURE__ */ new Set(["max-height", "height", "min-width"]);
+    function stripLeadingDot(item) {
+      if (item.charCodeAt(0) === ".".charCodeAt(0)) {
+        return item.slice(1);
+      } else {
+        return item;
+      }
+    }
+    function parseWord(node, opts, keepZeroUnit) {
+      const pair = valueParser.unit(node.value);
+      if (pair) {
+        const num = Number(pair.number);
+        const u = stripLeadingDot(pair.unit);
+        if (num === 0) {
+          node.value = 0 + (keepZeroUnit || !LENGTH_UNITS.has(u.toLowerCase()) && u !== "%" ? u : "");
+        } else {
+          node.value = convert(num, u, opts);
+          if (typeof opts.precision === "number" && u.toLowerCase() === "px" && pair.number.includes(".")) {
+            const precision = Math.pow(10, opts.precision);
+            node.value = Math.round(parseFloat(node.value) * precision) / precision + u;
+          }
+        }
+      }
+    }
+    function clampOpacity(node) {
+      const pair = valueParser.unit(node.value);
+      if (!pair) {
+        return;
+      }
+      let num = Number(pair.number);
+      if (num > 1) {
+        node.value = pair.unit === "%" ? num + pair.unit : 1 + pair.unit;
+      } else if (num < 0) {
+        node.value = 0 + pair.unit;
+      }
+    }
+    function shouldKeepZeroUnit(decl, browsers) {
+      const { parent } = decl;
+      const lowerCasedProp = decl.prop.toLowerCase();
+      return decl.value.includes("%") && keepZeroPercent.has(lowerCasedProp) && browsers.includes("ie 11") || lowerCasedProp === "stroke-dasharray" && parent && parent.parent && parent.parent.type === "atrule" && /** @type {import('postcss').AtRule} */
+      parent.parent.name.toLowerCase() === "keyframes" || lowerCasedProp === "initial-value" && parent && parent.type === "atrule" && /** @type {import('postcss').AtRule} */
+      parent.name === "property" && /** @type {import('postcss').AtRule} */
+      parent.nodes !== void 0 && /** @type {import('postcss').AtRule} */
+      parent.nodes.some(
+        (node) => node.type === "decl" && node.prop.toLowerCase() === "syntax" && node.value === "'<percentage>'"
+      ) || keepWhenZero.has(lowerCasedProp);
+    }
+    function transform(opts, browsers, decl) {
+      const lowerCasedProp = decl.prop.toLowerCase();
+      if (lowerCasedProp.includes("flex") || lowerCasedProp.indexOf("--") === 0 || notALength.has(lowerCasedProp)) {
+        return;
+      }
+      decl.value = valueParser(decl.value).walk((node) => {
+        const lowerCasedValue = node.value.toLowerCase();
+        if (node.type === "word") {
+          parseWord(node, opts, shouldKeepZeroUnit(decl, browsers));
+          if (lowerCasedProp === "opacity" || lowerCasedProp === "shape-image-threshold") {
+            clampOpacity(node);
+          }
+        } else if (node.type === "function") {
+          if (lowerCasedValue === "calc" || lowerCasedValue === "min" || lowerCasedValue === "max" || lowerCasedValue === "clamp" || lowerCasedValue === "hsl" || lowerCasedValue === "hsla") {
+            valueParser.walk(node.nodes, (n) => {
+              if (n.type === "word") {
+                parseWord(n, opts, true);
+              }
+            });
+            return false;
+          }
+          if (lowerCasedValue === "url") {
+            return false;
+          }
+        }
+      }).toString();
+    }
+    var plugin = "postcss-convert-values";
+    function pluginCreator(opts = { precision: false }) {
+      return {
+        postcssPlugin: plugin,
+        /**
+         * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
+         */
+        prepare(result) {
+          const { stats, env, from, file } = result.opts || {};
+          const browsers = browserslist(opts.overrideBrowserslist, {
+            stats: opts.stats || stats,
+            path: opts.path || dirname(from || file || __filename),
+            env: opts.env || env
+          });
+          return {
+            OnceExit(css) {
+              css.walkDecls((decl) => transform(opts, browsers, decl));
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/util/unesc.js
+var require_unesc = __commonJS({
+  "node_modules/postcss-selector-parser/dist/util/unesc.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = unesc;
+    function gobbleHex(str) {
+      var lower = str.toLowerCase();
+      var hex = "";
+      var spaceTerminated = false;
+      for (var i = 0; i < 6 && lower[i] !== void 0; i++) {
+        var code = lower.charCodeAt(i);
+        var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57;
+        spaceTerminated = code === 32;
+        if (!valid) {
+          break;
+        }
+        hex += lower[i];
+      }
+      if (hex.length === 0) {
+        return void 0;
+      }
+      var codePoint = parseInt(hex, 16);
+      var isSurrogate = codePoint >= 55296 && codePoint <= 57343;
+      if (isSurrogate || codePoint === 0 || codePoint > 1114111) {
+        return ["\uFFFD", hex.length + (spaceTerminated ? 1 : 0)];
+      }
+      return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];
+    }
+    var CONTAINS_ESCAPE = /\\/;
+    function unesc(str) {
+      var needToProcess = CONTAINS_ESCAPE.test(str);
+      if (!needToProcess) {
+        return str;
+      }
+      var ret = "";
+      for (var i = 0; i < str.length; i++) {
+        if (str[i] === "\\") {
+          var gobbled = gobbleHex(str.slice(i + 1, i + 7));
+          if (gobbled !== void 0) {
+            ret += gobbled[0];
+            i += gobbled[1];
+            continue;
+          }
+          if (str[i + 1] === "\\") {
+            ret += "\\";
+            i++;
+            continue;
+          }
+          if (str.length === i + 1) {
+            ret += str[i];
+          }
+          continue;
+        }
+        ret += str[i];
+      }
+      return ret;
+    }
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/util/getProp.js
+var require_getProp = __commonJS({
+  "node_modules/postcss-selector-parser/dist/util/getProp.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = getProp;
+    function getProp(obj) {
+      for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+        props[_key - 1] = arguments[_key];
+      }
+      while (props.length > 0) {
+        var prop = props.shift();
+        if (!obj[prop]) {
+          return void 0;
+        }
+        obj = obj[prop];
+      }
+      return obj;
+    }
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/util/ensureObject.js
+var require_ensureObject = __commonJS({
+  "node_modules/postcss-selector-parser/dist/util/ensureObject.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = ensureObject;
+    function ensureObject(obj) {
+      for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+        props[_key - 1] = arguments[_key];
+      }
+      while (props.length > 0) {
+        var prop = props.shift();
+        if (!obj[prop]) {
+          obj[prop] = {};
+        }
+        obj = obj[prop];
+      }
+    }
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/util/stripComments.js
+var require_stripComments = __commonJS({
+  "node_modules/postcss-selector-parser/dist/util/stripComments.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = stripComments;
+    function stripComments(str) {
+      var s = "";
+      var commentStart = str.indexOf("/*");
+      var lastEnd = 0;
+      while (commentStart >= 0) {
+        s = s + str.slice(lastEnd, commentStart);
+        var commentEnd = str.indexOf("*/", commentStart + 2);
+        if (commentEnd < 0) {
+          return s;
+        }
+        lastEnd = commentEnd + 2;
+        commentStart = str.indexOf("/*", lastEnd);
+      }
+      s = s + str.slice(lastEnd);
+      return s;
+    }
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/util/index.js
+var require_util2 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/util/index.js"(exports2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2.unesc = exports2.stripComments = exports2.getProp = exports2.ensureObject = void 0;
+    var _unesc = _interopRequireDefault(require_unesc());
+    exports2.unesc = _unesc["default"];
+    var _getProp = _interopRequireDefault(require_getProp());
+    exports2.getProp = _getProp["default"];
+    var _ensureObject = _interopRequireDefault(require_ensureObject());
+    exports2.ensureObject = _ensureObject["default"];
+    var _stripComments = _interopRequireDefault(require_stripComments());
+    exports2.stripComments = _stripComments["default"];
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/node.js
+var require_node6 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/node.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _util = require_util2();
+    function _defineProperties(target, props) {
+      for (var i = 0; i < props.length; i++) {
+        var descriptor = props[i];
+        descriptor.enumerable = descriptor.enumerable || false;
+        descriptor.configurable = true;
+        if ("value" in descriptor) descriptor.writable = true;
+        Object.defineProperty(target, descriptor.key, descriptor);
+      }
+    }
+    function _createClass(Constructor, protoProps, staticProps) {
+      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+      if (staticProps) _defineProperties(Constructor, staticProps);
+      Object.defineProperty(Constructor, "prototype", { writable: false });
+      return Constructor;
+    }
+    var cloneNode = function cloneNode2(obj, parent) {
+      if (typeof obj !== "object" || obj === null) {
+        return obj;
+      }
+      var cloned = new obj.constructor();
+      for (var i in obj) {
+        if (!obj.hasOwnProperty(i)) {
+          continue;
+        }
+        var value = obj[i];
+        var type = typeof value;
+        if (i === "parent" && type === "object") {
+          if (parent) {
+            cloned[i] = parent;
+          }
+        } else if (value instanceof Array) {
+          cloned[i] = value.map(function(j) {
+            return cloneNode2(j, cloned);
+          });
+        } else {
+          cloned[i] = cloneNode2(value, cloned);
+        }
+      }
+      return cloned;
+    };
+    var Node = /* @__PURE__ */ function() {
+      function Node2(opts) {
+        if (opts === void 0) {
+          opts = {};
+        }
+        Object.assign(this, opts);
+        this.spaces = this.spaces || {};
+        this.spaces.before = this.spaces.before || "";
+        this.spaces.after = this.spaces.after || "";
+      }
+      var _proto = Node2.prototype;
+      _proto.remove = function remove() {
+        if (this.parent) {
+          this.parent.removeChild(this);
+        }
+        this.parent = void 0;
+        return this;
+      };
+      _proto.replaceWith = function replaceWith() {
+        if (this.parent) {
+          for (var index in arguments) {
+            this.parent.insertBefore(this, arguments[index]);
+          }
+          this.remove();
+        }
+        return this;
+      };
+      _proto.next = function next() {
+        return this.parent.at(this.parent.index(this) + 1);
+      };
+      _proto.prev = function prev() {
+        return this.parent.at(this.parent.index(this) - 1);
+      };
+      _proto.clone = function clone(overrides) {
+        if (overrides === void 0) {
+          overrides = {};
+        }
+        var cloned = cloneNode(this);
+        for (var name in overrides) {
+          cloned[name] = overrides[name];
+        }
+        return cloned;
+      };
+      _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {
+        if (!this.raws) {
+          this.raws = {};
+        }
+        var originalValue = this[name];
+        var originalEscaped = this.raws[name];
+        this[name] = originalValue + value;
+        if (originalEscaped || valueEscaped !== value) {
+          this.raws[name] = (originalEscaped || originalValue) + valueEscaped;
+        } else {
+          delete this.raws[name];
+        }
+      };
+      _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {
+        if (!this.raws) {
+          this.raws = {};
+        }
+        this[name] = value;
+        this.raws[name] = valueEscaped;
+      };
+      _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {
+        this[name] = value;
+        if (this.raws) {
+          delete this.raws[name];
+        }
+      };
+      _proto.isAtPosition = function isAtPosition(line, column) {
+        if (this.source && this.source.start && this.source.end) {
+          if (this.source.start.line > line) {
+            return false;
+          }
+          if (this.source.end.line < line) {
+            return false;
+          }
+          if (this.source.start.line === line && this.source.start.column > column) {
+            return false;
+          }
+          if (this.source.end.line === line && this.source.end.column < column) {
+            return false;
+          }
+          return true;
+        }
+        return void 0;
+      };
+      _proto.stringifyProperty = function stringifyProperty(name) {
+        return this.raws && this.raws[name] || this[name];
+      };
+      _proto.valueToString = function valueToString() {
+        return String(this.stringifyProperty("value"));
+      };
+      _proto.toString = function toString() {
+        return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join("");
+      };
+      _createClass(Node2, [{
+        key: "rawSpaceBefore",
+        get: function get() {
+          var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;
+          if (rawSpace === void 0) {
+            rawSpace = this.spaces && this.spaces.before;
+          }
+          return rawSpace || "";
+        },
+        set: function set(raw) {
+          (0, _util.ensureObject)(this, "raws", "spaces");
+          this.raws.spaces.before = raw;
+        }
+      }, {
+        key: "rawSpaceAfter",
+        get: function get() {
+          var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;
+          if (rawSpace === void 0) {
+            rawSpace = this.spaces.after;
+          }
+          return rawSpace || "";
+        },
+        set: function set(raw) {
+          (0, _util.ensureObject)(this, "raws", "spaces");
+          this.raws.spaces.after = raw;
+        }
+      }]);
+      return Node2;
+    }();
+    exports2["default"] = Node;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/types.js
+var require_types4 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/types.js"(exports2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2.UNIVERSAL = exports2.TAG = exports2.STRING = exports2.SELECTOR = exports2.ROOT = exports2.PSEUDO = exports2.NESTING = exports2.ID = exports2.COMMENT = exports2.COMBINATOR = exports2.CLASS = exports2.ATTRIBUTE = void 0;
+    var TAG = "tag";
+    exports2.TAG = TAG;
+    var STRING = "string";
+    exports2.STRING = STRING;
+    var SELECTOR = "selector";
+    exports2.SELECTOR = SELECTOR;
+    var ROOT = "root";
+    exports2.ROOT = ROOT;
+    var PSEUDO = "pseudo";
+    exports2.PSEUDO = PSEUDO;
+    var NESTING = "nesting";
+    exports2.NESTING = NESTING;
+    var ID = "id";
+    exports2.ID = ID;
+    var COMMENT = "comment";
+    exports2.COMMENT = COMMENT;
+    var COMBINATOR = "combinator";
+    exports2.COMBINATOR = COMBINATOR;
+    var CLASS = "class";
+    exports2.CLASS = CLASS;
+    var ATTRIBUTE = "attribute";
+    exports2.ATTRIBUTE = ATTRIBUTE;
+    var UNIVERSAL = "universal";
+    exports2.UNIVERSAL = UNIVERSAL;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/container.js
+var require_container2 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/container.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _node = _interopRequireDefault(require_node6());
+    var types = _interopRequireWildcard(require_types4());
+    function _getRequireWildcardCache(nodeInterop) {
+      if (typeof WeakMap !== "function") return null;
+      var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
+      var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
+      return (_getRequireWildcardCache = function _getRequireWildcardCache2(nodeInterop2) {
+        return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
+      })(nodeInterop);
+    }
+    function _interopRequireWildcard(obj, nodeInterop) {
+      if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+      }
+      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return { "default": obj };
+      }
+      var cache = _getRequireWildcardCache(nodeInterop);
+      if (cache && cache.has(obj)) {
+        return cache.get(obj);
+      }
+      var newObj = {};
+      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+      for (var key in obj) {
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+          if (desc && (desc.get || desc.set)) {
+            Object.defineProperty(newObj, key, desc);
+          } else {
+            newObj[key] = obj[key];
+          }
+        }
+      }
+      newObj["default"] = obj;
+      if (cache) {
+        cache.set(obj, newObj);
+      }
+      return newObj;
+    }
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _createForOfIteratorHelperLoose(o, allowArrayLike) {
+      var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+      if (it) return (it = it.call(o)).next.bind(it);
+      if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+        if (it) o = it;
+        var i = 0;
+        return function() {
+          if (i >= o.length) return { done: true };
+          return { done: false, value: o[i++] };
+        };
+      }
+      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+    }
+    function _unsupportedIterableToArray(o, minLen) {
+      if (!o) return;
+      if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+      var n = Object.prototype.toString.call(o).slice(8, -1);
+      if (n === "Object" && o.constructor) n = o.constructor.name;
+      if (n === "Map" || n === "Set") return Array.from(o);
+      if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+    }
+    function _arrayLikeToArray(arr, len) {
+      if (len == null || len > arr.length) len = arr.length;
+      for (var i = 0, arr2 = new Array(len); i < len; i++) {
+        arr2[i] = arr[i];
+      }
+      return arr2;
+    }
+    function _defineProperties(target, props) {
+      for (var i = 0; i < props.length; i++) {
+        var descriptor = props[i];
+        descriptor.enumerable = descriptor.enumerable || false;
+        descriptor.configurable = true;
+        if ("value" in descriptor) descriptor.writable = true;
+        Object.defineProperty(target, descriptor.key, descriptor);
+      }
+    }
+    function _createClass(Constructor, protoProps, staticProps) {
+      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+      if (staticProps) _defineProperties(Constructor, staticProps);
+      Object.defineProperty(Constructor, "prototype", { writable: false });
+      return Constructor;
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Container = /* @__PURE__ */ function(_Node) {
+      _inheritsLoose(Container2, _Node);
+      function Container2(opts) {
+        var _this;
+        _this = _Node.call(this, opts) || this;
+        if (!_this.nodes) {
+          _this.nodes = [];
+        }
+        return _this;
+      }
+      var _proto = Container2.prototype;
+      _proto.append = function append(selector) {
+        selector.parent = this;
+        this.nodes.push(selector);
+        return this;
+      };
+      _proto.prepend = function prepend(selector) {
+        selector.parent = this;
+        this.nodes.unshift(selector);
+        return this;
+      };
+      _proto.at = function at(index) {
+        return this.nodes[index];
+      };
+      _proto.index = function index(child) {
+        if (typeof child === "number") {
+          return child;
+        }
+        return this.nodes.indexOf(child);
+      };
+      _proto.removeChild = function removeChild(child) {
+        child = this.index(child);
+        this.at(child).parent = void 0;
+        this.nodes.splice(child, 1);
+        var index;
+        for (var id in this.indexes) {
+          index = this.indexes[id];
+          if (index >= child) {
+            this.indexes[id] = index - 1;
+          }
+        }
+        return this;
+      };
+      _proto.removeAll = function removeAll() {
+        for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done; ) {
+          var node = _step.value;
+          node.parent = void 0;
+        }
+        this.nodes = [];
+        return this;
+      };
+      _proto.empty = function empty() {
+        return this.removeAll();
+      };
+      _proto.insertAfter = function insertAfter(oldNode, newNode) {
+        newNode.parent = this;
+        var oldIndex = this.index(oldNode);
+        this.nodes.splice(oldIndex + 1, 0, newNode);
+        newNode.parent = this;
+        var index;
+        for (var id in this.indexes) {
+          index = this.indexes[id];
+          if (oldIndex <= index) {
+            this.indexes[id] = index + 1;
+          }
+        }
+        return this;
+      };
+      _proto.insertBefore = function insertBefore(oldNode, newNode) {
+        newNode.parent = this;
+        var oldIndex = this.index(oldNode);
+        this.nodes.splice(oldIndex, 0, newNode);
+        newNode.parent = this;
+        var index;
+        for (var id in this.indexes) {
+          index = this.indexes[id];
+          if (index <= oldIndex) {
+            this.indexes[id] = index + 1;
+          }
+        }
+        return this;
+      };
+      _proto._findChildAtPosition = function _findChildAtPosition(line, col) {
+        var found = void 0;
+        this.each(function(node) {
+          if (node.atPosition) {
+            var foundChild = node.atPosition(line, col);
+            if (foundChild) {
+              found = foundChild;
+              return false;
+            }
+          } else if (node.isAtPosition(line, col)) {
+            found = node;
+            return false;
+          }
+        });
+        return found;
+      };
+      _proto.atPosition = function atPosition(line, col) {
+        if (this.isAtPosition(line, col)) {
+          return this._findChildAtPosition(line, col) || this;
+        } else {
+          return void 0;
+        }
+      };
+      _proto._inferEndPosition = function _inferEndPosition() {
+        if (this.last && this.last.source && this.last.source.end) {
+          this.source = this.source || {};
+          this.source.end = this.source.end || {};
+          Object.assign(this.source.end, this.last.source.end);
+        }
+      };
+      _proto.each = function each(callback) {
+        if (!this.lastEach) {
+          this.lastEach = 0;
+        }
+        if (!this.indexes) {
+          this.indexes = {};
+        }
+        this.lastEach++;
+        var id = this.lastEach;
+        this.indexes[id] = 0;
+        if (!this.length) {
+          return void 0;
+        }
+        var index, result;
+        while (this.indexes[id] < this.length) {
+          index = this.indexes[id];
+          result = callback(this.at(index), index);
+          if (result === false) {
+            break;
+          }
+          this.indexes[id] += 1;
+        }
+        delete this.indexes[id];
+        if (result === false) {
+          return false;
+        }
+      };
+      _proto.walk = function walk(callback) {
+        return this.each(function(node, i) {
+          var result = callback(node, i);
+          if (result !== false && node.length) {
+            result = node.walk(callback);
+          }
+          if (result === false) {
+            return false;
+          }
+        });
+      };
+      _proto.walkAttributes = function walkAttributes(callback) {
+        var _this2 = this;
+        return this.walk(function(selector) {
+          if (selector.type === types.ATTRIBUTE) {
+            return callback.call(_this2, selector);
+          }
+        });
+      };
+      _proto.walkClasses = function walkClasses(callback) {
+        var _this3 = this;
+        return this.walk(function(selector) {
+          if (selector.type === types.CLASS) {
+            return callback.call(_this3, selector);
+          }
+        });
+      };
+      _proto.walkCombinators = function walkCombinators(callback) {
+        var _this4 = this;
+        return this.walk(function(selector) {
+          if (selector.type === types.COMBINATOR) {
+            return callback.call(_this4, selector);
+          }
+        });
+      };
+      _proto.walkComments = function walkComments(callback) {
+        var _this5 = this;
+        return this.walk(function(selector) {
+          if (selector.type === types.COMMENT) {
+            return callback.call(_this5, selector);
+          }
+        });
+      };
+      _proto.walkIds = function walkIds(callback) {
+        var _this6 = this;
+        return this.walk(function(selector) {
+          if (selector.type === types.ID) {
+            return callback.call(_this6, selector);
+          }
+        });
+      };
+      _proto.walkNesting = function walkNesting(callback) {
+        var _this7 = this;
+        return this.walk(function(selector) {
+          if (selector.type === types.NESTING) {
+            return callback.call(_this7, selector);
+          }
+        });
+      };
+      _proto.walkPseudos = function walkPseudos(callback) {
+        var _this8 = this;
+        return this.walk(function(selector) {
+          if (selector.type === types.PSEUDO) {
+            return callback.call(_this8, selector);
+          }
+        });
+      };
+      _proto.walkTags = function walkTags(callback) {
+        var _this9 = this;
+        return this.walk(function(selector) {
+          if (selector.type === types.TAG) {
+            return callback.call(_this9, selector);
+          }
+        });
+      };
+      _proto.walkUniversals = function walkUniversals(callback) {
+        var _this10 = this;
+        return this.walk(function(selector) {
+          if (selector.type === types.UNIVERSAL) {
+            return callback.call(_this10, selector);
+          }
+        });
+      };
+      _proto.split = function split(callback) {
+        var _this11 = this;
+        var current = [];
+        return this.reduce(function(memo, node, index) {
+          var split2 = callback.call(_this11, node);
+          current.push(node);
+          if (split2) {
+            memo.push(current);
+            current = [];
+          } else if (index === _this11.length - 1) {
+            memo.push(current);
+          }
+          return memo;
+        }, []);
+      };
+      _proto.map = function map(callback) {
+        return this.nodes.map(callback);
+      };
+      _proto.reduce = function reduce(callback, memo) {
+        return this.nodes.reduce(callback, memo);
+      };
+      _proto.every = function every(callback) {
+        return this.nodes.every(callback);
+      };
+      _proto.some = function some(callback) {
+        return this.nodes.some(callback);
+      };
+      _proto.filter = function filter(callback) {
+        return this.nodes.filter(callback);
+      };
+      _proto.sort = function sort(callback) {
+        return this.nodes.sort(callback);
+      };
+      _proto.toString = function toString() {
+        return this.map(String).join("");
+      };
+      _createClass(Container2, [{
+        key: "first",
+        get: function get() {
+          return this.at(0);
+        }
+      }, {
+        key: "last",
+        get: function get() {
+          return this.at(this.length - 1);
+        }
+      }, {
+        key: "length",
+        get: function get() {
+          return this.nodes.length;
+        }
+      }]);
+      return Container2;
+    }(_node["default"]);
+    exports2["default"] = Container;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/root.js
+var require_root2 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/root.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _container = _interopRequireDefault(require_container2());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _defineProperties(target, props) {
+      for (var i = 0; i < props.length; i++) {
+        var descriptor = props[i];
+        descriptor.enumerable = descriptor.enumerable || false;
+        descriptor.configurable = true;
+        if ("value" in descriptor) descriptor.writable = true;
+        Object.defineProperty(target, descriptor.key, descriptor);
+      }
+    }
+    function _createClass(Constructor, protoProps, staticProps) {
+      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+      if (staticProps) _defineProperties(Constructor, staticProps);
+      Object.defineProperty(Constructor, "prototype", { writable: false });
+      return Constructor;
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Root = /* @__PURE__ */ function(_Container) {
+      _inheritsLoose(Root2, _Container);
+      function Root2(opts) {
+        var _this;
+        _this = _Container.call(this, opts) || this;
+        _this.type = _types.ROOT;
+        return _this;
+      }
+      var _proto = Root2.prototype;
+      _proto.toString = function toString() {
+        var str = this.reduce(function(memo, selector) {
+          memo.push(String(selector));
+          return memo;
+        }, []).join(",");
+        return this.trailingComma ? str + "," : str;
+      };
+      _proto.error = function error(message, options) {
+        if (this._error) {
+          return this._error(message, options);
+        } else {
+          return new Error(message);
+        }
+      };
+      _createClass(Root2, [{
+        key: "errorGenerator",
+        set: function set(handler) {
+          this._error = handler;
+        }
+      }]);
+      return Root2;
+    }(_container["default"]);
+    exports2["default"] = Root;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/selector.js
+var require_selector4 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/selector.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _container = _interopRequireDefault(require_container2());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Selector = /* @__PURE__ */ function(_Container) {
+      _inheritsLoose(Selector2, _Container);
+      function Selector2(opts) {
+        var _this;
+        _this = _Container.call(this, opts) || this;
+        _this.type = _types.SELECTOR;
+        return _this;
+      }
+      return Selector2;
+    }(_container["default"]);
+    exports2["default"] = Selector;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/cssesc/cssesc.js
+var require_cssesc = __commonJS({
+  "node_modules/cssesc/cssesc.js"(exports2, module2) {
+    "use strict";
+    var object = {};
+    var hasOwnProperty2 = object.hasOwnProperty;
+    var merge = function merge2(options, defaults) {
+      if (!options) {
+        return defaults;
+      }
+      var result = {};
+      for (var key in defaults) {
+        result[key] = hasOwnProperty2.call(options, key) ? options[key] : defaults[key];
+      }
+      return result;
+    };
+    var regexAnySingleEscape = /[ -,\.\/:-@\[-\^`\{-~]/;
+    var regexSingleEscape = /[ -,\.\/:-@\[\]\^`\{-~]/;
+    var regexExcessiveSpaces = /(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g;
+    var cssesc = function cssesc2(string, options) {
+      options = merge(options, cssesc2.options);
+      if (options.quotes != "single" && options.quotes != "double") {
+        options.quotes = "single";
+      }
+      var quote = options.quotes == "double" ? '"' : "'";
+      var isIdentifier = options.isIdentifier;
+      var firstChar = string.charAt(0);
+      var output = "";
+      var counter = 0;
+      var length = string.length;
+      while (counter < length) {
+        var character = string.charAt(counter++);
+        var codePoint = character.charCodeAt();
+        var value = void 0;
+        if (codePoint < 32 || codePoint > 126) {
+          if (codePoint >= 55296 && codePoint <= 56319 && counter < length) {
+            var extra = string.charCodeAt(counter++);
+            if ((extra & 64512) == 56320) {
+              codePoint = ((codePoint & 1023) << 10) + (extra & 1023) + 65536;
+            } else {
+              counter--;
+            }
+          }
+          value = "\\" + codePoint.toString(16).toUpperCase() + " ";
+        } else {
+          if (options.escapeEverything) {
+            if (regexAnySingleEscape.test(character)) {
+              value = "\\" + character;
+            } else {
+              value = "\\" + codePoint.toString(16).toUpperCase() + " ";
+            }
+          } else if (/[\t\n\f\r\x0B]/.test(character)) {
+            value = "\\" + codePoint.toString(16).toUpperCase() + " ";
+          } else if (character == "\\" || !isIdentifier && (character == '"' && quote == character || character == "'" && quote == character) || isIdentifier && regexSingleEscape.test(character)) {
+            value = "\\" + character;
+          } else {
+            value = character;
+          }
+        }
+        output += value;
+      }
+      if (isIdentifier) {
+        if (/^-[-\d]/.test(output)) {
+          output = "\\-" + output.slice(1);
+        } else if (/\d/.test(firstChar)) {
+          output = "\\3" + firstChar + " " + output.slice(1);
+        }
+      }
+      output = output.replace(regexExcessiveSpaces, function($0, $1, $2) {
+        if ($1 && $1.length % 2) {
+          return $0;
+        }
+        return ($1 || "") + $2;
+      });
+      if (!isIdentifier && options.wrap) {
+        return quote + output + quote;
+      }
+      return output;
+    };
+    cssesc.options = {
+      "escapeEverything": false,
+      "isIdentifier": false,
+      "quotes": "single",
+      "wrap": false
+    };
+    cssesc.version = "3.0.0";
+    module2.exports = cssesc;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/className.js
+var require_className = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/className.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _cssesc = _interopRequireDefault(require_cssesc());
+    var _util = require_util2();
+    var _node = _interopRequireDefault(require_node6());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _defineProperties(target, props) {
+      for (var i = 0; i < props.length; i++) {
+        var descriptor = props[i];
+        descriptor.enumerable = descriptor.enumerable || false;
+        descriptor.configurable = true;
+        if ("value" in descriptor) descriptor.writable = true;
+        Object.defineProperty(target, descriptor.key, descriptor);
+      }
+    }
+    function _createClass(Constructor, protoProps, staticProps) {
+      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+      if (staticProps) _defineProperties(Constructor, staticProps);
+      Object.defineProperty(Constructor, "prototype", { writable: false });
+      return Constructor;
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var ClassName = /* @__PURE__ */ function(_Node) {
+      _inheritsLoose(ClassName2, _Node);
+      function ClassName2(opts) {
+        var _this;
+        _this = _Node.call(this, opts) || this;
+        _this.type = _types.CLASS;
+        _this._constructed = true;
+        return _this;
+      }
+      var _proto = ClassName2.prototype;
+      _proto.valueToString = function valueToString() {
+        return "." + _Node.prototype.valueToString.call(this);
+      };
+      _createClass(ClassName2, [{
+        key: "value",
+        get: function get() {
+          return this._value;
+        },
+        set: function set(v) {
+          if (this._constructed) {
+            var escaped = (0, _cssesc["default"])(v, {
+              isIdentifier: true
+            });
+            if (escaped !== v) {
+              (0, _util.ensureObject)(this, "raws");
+              this.raws.value = escaped;
+            } else if (this.raws) {
+              delete this.raws.value;
+            }
+          }
+          this._value = v;
+        }
+      }]);
+      return ClassName2;
+    }(_node["default"]);
+    exports2["default"] = ClassName;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/comment.js
+var require_comment2 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/comment.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _node = _interopRequireDefault(require_node6());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Comment = /* @__PURE__ */ function(_Node) {
+      _inheritsLoose(Comment2, _Node);
+      function Comment2(opts) {
+        var _this;
+        _this = _Node.call(this, opts) || this;
+        _this.type = _types.COMMENT;
+        return _this;
+      }
+      return Comment2;
+    }(_node["default"]);
+    exports2["default"] = Comment;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/id.js
+var require_id = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/id.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _node = _interopRequireDefault(require_node6());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var ID = /* @__PURE__ */ function(_Node) {
+      _inheritsLoose(ID2, _Node);
+      function ID2(opts) {
+        var _this;
+        _this = _Node.call(this, opts) || this;
+        _this.type = _types.ID;
+        return _this;
+      }
+      var _proto = ID2.prototype;
+      _proto.valueToString = function valueToString() {
+        return "#" + _Node.prototype.valueToString.call(this);
+      };
+      return ID2;
+    }(_node["default"]);
+    exports2["default"] = ID;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/namespace.js
+var require_namespace = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/namespace.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _cssesc = _interopRequireDefault(require_cssesc());
+    var _util = require_util2();
+    var _node = _interopRequireDefault(require_node6());
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _defineProperties(target, props) {
+      for (var i = 0; i < props.length; i++) {
+        var descriptor = props[i];
+        descriptor.enumerable = descriptor.enumerable || false;
+        descriptor.configurable = true;
+        if ("value" in descriptor) descriptor.writable = true;
+        Object.defineProperty(target, descriptor.key, descriptor);
+      }
+    }
+    function _createClass(Constructor, protoProps, staticProps) {
+      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+      if (staticProps) _defineProperties(Constructor, staticProps);
+      Object.defineProperty(Constructor, "prototype", { writable: false });
+      return Constructor;
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Namespace = /* @__PURE__ */ function(_Node) {
+      _inheritsLoose(Namespace2, _Node);
+      function Namespace2() {
+        return _Node.apply(this, arguments) || this;
+      }
+      var _proto = Namespace2.prototype;
+      _proto.qualifiedName = function qualifiedName(value) {
+        if (this.namespace) {
+          return this.namespaceString + "|" + value;
+        } else {
+          return value;
+        }
+      };
+      _proto.valueToString = function valueToString() {
+        return this.qualifiedName(_Node.prototype.valueToString.call(this));
+      };
+      _createClass(Namespace2, [{
+        key: "namespace",
+        get: function get() {
+          return this._namespace;
+        },
+        set: function set(namespace) {
+          if (namespace === true || namespace === "*" || namespace === "&") {
+            this._namespace = namespace;
+            if (this.raws) {
+              delete this.raws.namespace;
+            }
+            return;
+          }
+          var escaped = (0, _cssesc["default"])(namespace, {
+            isIdentifier: true
+          });
+          this._namespace = namespace;
+          if (escaped !== namespace) {
+            (0, _util.ensureObject)(this, "raws");
+            this.raws.namespace = escaped;
+          } else if (this.raws) {
+            delete this.raws.namespace;
+          }
+        }
+      }, {
+        key: "ns",
+        get: function get() {
+          return this._namespace;
+        },
+        set: function set(namespace) {
+          this.namespace = namespace;
+        }
+      }, {
+        key: "namespaceString",
+        get: function get() {
+          if (this.namespace) {
+            var ns = this.stringifyProperty("namespace");
+            if (ns === true) {
+              return "";
+            } else {
+              return ns;
+            }
+          } else {
+            return "";
+          }
+        }
+      }]);
+      return Namespace2;
+    }(_node["default"]);
+    exports2["default"] = Namespace;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/tag.js
+var require_tag = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/tag.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _namespace = _interopRequireDefault(require_namespace());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Tag = /* @__PURE__ */ function(_Namespace) {
+      _inheritsLoose(Tag2, _Namespace);
+      function Tag2(opts) {
+        var _this;
+        _this = _Namespace.call(this, opts) || this;
+        _this.type = _types.TAG;
+        return _this;
+      }
+      return Tag2;
+    }(_namespace["default"]);
+    exports2["default"] = Tag;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/string.js
+var require_string3 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/string.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _node = _interopRequireDefault(require_node6());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var String2 = /* @__PURE__ */ function(_Node) {
+      _inheritsLoose(String3, _Node);
+      function String3(opts) {
+        var _this;
+        _this = _Node.call(this, opts) || this;
+        _this.type = _types.STRING;
+        return _this;
+      }
+      return String3;
+    }(_node["default"]);
+    exports2["default"] = String2;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/pseudo.js
+var require_pseudo3 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/pseudo.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _container = _interopRequireDefault(require_container2());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Pseudo = /* @__PURE__ */ function(_Container) {
+      _inheritsLoose(Pseudo2, _Container);
+      function Pseudo2(opts) {
+        var _this;
+        _this = _Container.call(this, opts) || this;
+        _this.type = _types.PSEUDO;
+        return _this;
+      }
+      var _proto = Pseudo2.prototype;
+      _proto.toString = function toString() {
+        var params = this.length ? "(" + this.map(String).join(",") + ")" : "";
+        return [this.rawSpaceBefore, this.stringifyProperty("value"), params, this.rawSpaceAfter].join("");
+      };
+      return Pseudo2;
+    }(_container["default"]);
+    exports2["default"] = Pseudo;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/util-deprecate/node.js
+var require_node7 = __commonJS({
+  "node_modules/util-deprecate/node.js"(exports2, module2) {
+    module2.exports = require("util").deprecate;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/attribute.js
+var require_attribute = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/attribute.js"(exports2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    exports2.unescapeValue = unescapeValue;
+    var _cssesc = _interopRequireDefault(require_cssesc());
+    var _unesc = _interopRequireDefault(require_unesc());
+    var _namespace = _interopRequireDefault(require_namespace());
+    var _types = require_types4();
+    var _CSSESC_QUOTE_OPTIONS;
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _defineProperties(target, props) {
+      for (var i = 0; i < props.length; i++) {
+        var descriptor = props[i];
+        descriptor.enumerable = descriptor.enumerable || false;
+        descriptor.configurable = true;
+        if ("value" in descriptor) descriptor.writable = true;
+        Object.defineProperty(target, descriptor.key, descriptor);
+      }
+    }
+    function _createClass(Constructor, protoProps, staticProps) {
+      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+      if (staticProps) _defineProperties(Constructor, staticProps);
+      Object.defineProperty(Constructor, "prototype", { writable: false });
+      return Constructor;
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var deprecate = require_node7();
+    var WRAPPED_IN_QUOTES = /^('|")([^]*)\1$/;
+    var warnOfDeprecatedValueAssignment = deprecate(function() {
+    }, "Assigning an attribute a value containing characters that might need to be escaped is deprecated. Call attribute.setValue() instead.");
+    var warnOfDeprecatedQuotedAssignment = deprecate(function() {
+    }, "Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.");
+    var warnOfDeprecatedConstructor = deprecate(function() {
+    }, "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.");
+    function unescapeValue(value) {
+      var deprecatedUsage = false;
+      var quoteMark = null;
+      var unescaped = value;
+      var m = unescaped.match(WRAPPED_IN_QUOTES);
+      if (m) {
+        quoteMark = m[1];
+        unescaped = m[2];
+      }
+      unescaped = (0, _unesc["default"])(unescaped);
+      if (unescaped !== value) {
+        deprecatedUsage = true;
+      }
+      return {
+        deprecatedUsage,
+        unescaped,
+        quoteMark
+      };
+    }
+    function handleDeprecatedContructorOpts(opts) {
+      if (opts.quoteMark !== void 0) {
+        return opts;
+      }
+      if (opts.value === void 0) {
+        return opts;
+      }
+      warnOfDeprecatedConstructor();
+      var _unescapeValue = unescapeValue(opts.value), quoteMark = _unescapeValue.quoteMark, unescaped = _unescapeValue.unescaped;
+      if (!opts.raws) {
+        opts.raws = {};
+      }
+      if (opts.raws.value === void 0) {
+        opts.raws.value = opts.value;
+      }
+      opts.value = unescaped;
+      opts.quoteMark = quoteMark;
+      return opts;
+    }
+    var Attribute = /* @__PURE__ */ function(_Namespace) {
+      _inheritsLoose(Attribute2, _Namespace);
+      function Attribute2(opts) {
+        var _this;
+        if (opts === void 0) {
+          opts = {};
+        }
+        _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;
+        _this.type = _types.ATTRIBUTE;
+        _this.raws = _this.raws || {};
+        Object.defineProperty(_this.raws, "unquoted", {
+          get: deprecate(function() {
+            return _this.value;
+          }, "attr.raws.unquoted is deprecated. Call attr.value instead."),
+          set: deprecate(function() {
+            return _this.value;
+          }, "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.")
+        });
+        _this._constructed = true;
+        return _this;
+      }
+      var _proto = Attribute2.prototype;
+      _proto.getQuotedValue = function getQuotedValue(options) {
+        if (options === void 0) {
+          options = {};
+        }
+        var quoteMark = this._determineQuoteMark(options);
+        var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];
+        var escaped = (0, _cssesc["default"])(this._value, cssescopts);
+        return escaped;
+      };
+      _proto._determineQuoteMark = function _determineQuoteMark(options) {
+        return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);
+      };
+      _proto.setValue = function setValue(value, options) {
+        if (options === void 0) {
+          options = {};
+        }
+        this._value = value;
+        this._quoteMark = this._determineQuoteMark(options);
+        this._syncRawValue();
+      };
+      _proto.smartQuoteMark = function smartQuoteMark(options) {
+        var v = this.value;
+        var numSingleQuotes = v.replace(/[^']/g, "").length;
+        var numDoubleQuotes = v.replace(/[^"]/g, "").length;
+        if (numSingleQuotes + numDoubleQuotes === 0) {
+          var escaped = (0, _cssesc["default"])(v, {
+            isIdentifier: true
+          });
+          if (escaped === v) {
+            return Attribute2.NO_QUOTE;
+          } else {
+            var pref = this.preferredQuoteMark(options);
+            if (pref === Attribute2.NO_QUOTE) {
+              var quote = this.quoteMark || options.quoteMark || Attribute2.DOUBLE_QUOTE;
+              var opts = CSSESC_QUOTE_OPTIONS[quote];
+              var quoteValue = (0, _cssesc["default"])(v, opts);
+              if (quoteValue.length < escaped.length) {
+                return quote;
+              }
+            }
+            return pref;
+          }
+        } else if (numDoubleQuotes === numSingleQuotes) {
+          return this.preferredQuoteMark(options);
+        } else if (numDoubleQuotes < numSingleQuotes) {
+          return Attribute2.DOUBLE_QUOTE;
+        } else {
+          return Attribute2.SINGLE_QUOTE;
+        }
+      };
+      _proto.preferredQuoteMark = function preferredQuoteMark(options) {
+        var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;
+        if (quoteMark === void 0) {
+          quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;
+        }
+        if (quoteMark === void 0) {
+          quoteMark = Attribute2.DOUBLE_QUOTE;
+        }
+        return quoteMark;
+      };
+      _proto._syncRawValue = function _syncRawValue() {
+        var rawValue = (0, _cssesc["default"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);
+        if (rawValue === this._value) {
+          if (this.raws) {
+            delete this.raws.value;
+          }
+        } else {
+          this.raws.value = rawValue;
+        }
+      };
+      _proto._handleEscapes = function _handleEscapes(prop, value) {
+        if (this._constructed) {
+          var escaped = (0, _cssesc["default"])(value, {
+            isIdentifier: true
+          });
+          if (escaped !== value) {
+            this.raws[prop] = escaped;
+          } else {
+            delete this.raws[prop];
+          }
+        }
+      };
+      _proto._spacesFor = function _spacesFor(name) {
+        var attrSpaces = {
+          before: "",
+          after: ""
+        };
+        var spaces = this.spaces[name] || {};
+        var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};
+        return Object.assign(attrSpaces, spaces, rawSpaces);
+      };
+      _proto._stringFor = function _stringFor(name, spaceName, concat) {
+        if (spaceName === void 0) {
+          spaceName = name;
+        }
+        if (concat === void 0) {
+          concat = defaultAttrConcat;
+        }
+        var attrSpaces = this._spacesFor(spaceName);
+        return concat(this.stringifyProperty(name), attrSpaces);
+      };
+      _proto.offsetOf = function offsetOf(name) {
+        var count = 1;
+        var attributeSpaces = this._spacesFor("attribute");
+        count += attributeSpaces.before.length;
+        if (name === "namespace" || name === "ns") {
+          return this.namespace ? count : -1;
+        }
+        if (name === "attributeNS") {
+          return count;
+        }
+        count += this.namespaceString.length;
+        if (this.namespace) {
+          count += 1;
+        }
+        if (name === "attribute") {
+          return count;
+        }
+        count += this.stringifyProperty("attribute").length;
+        count += attributeSpaces.after.length;
+        var operatorSpaces = this._spacesFor("operator");
+        count += operatorSpaces.before.length;
+        var operator = this.stringifyProperty("operator");
+        if (name === "operator") {
+          return operator ? count : -1;
+        }
+        count += operator.length;
+        count += operatorSpaces.after.length;
+        var valueSpaces = this._spacesFor("value");
+        count += valueSpaces.before.length;
+        var value = this.stringifyProperty("value");
+        if (name === "value") {
+          return value ? count : -1;
+        }
+        count += value.length;
+        count += valueSpaces.after.length;
+        var insensitiveSpaces = this._spacesFor("insensitive");
+        count += insensitiveSpaces.before.length;
+        if (name === "insensitive") {
+          return this.insensitive ? count : -1;
+        }
+        return -1;
+      };
+      _proto.toString = function toString() {
+        var _this2 = this;
+        var selector = [this.rawSpaceBefore, "["];
+        selector.push(this._stringFor("qualifiedAttribute", "attribute"));
+        if (this.operator && (this.value || this.value === "")) {
+          selector.push(this._stringFor("operator"));
+          selector.push(this._stringFor("value"));
+          selector.push(this._stringFor("insensitiveFlag", "insensitive", function(attrValue, attrSpaces) {
+            if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {
+              attrSpaces.before = " ";
+            }
+            return defaultAttrConcat(attrValue, attrSpaces);
+          }));
+        }
+        selector.push("]");
+        selector.push(this.rawSpaceAfter);
+        return selector.join("");
+      };
+      _createClass(Attribute2, [{
+        key: "quoted",
+        get: function get() {
+          var qm = this.quoteMark;
+          return qm === "'" || qm === '"';
+        },
+        set: function set(value) {
+          warnOfDeprecatedQuotedAssignment();
+        }
+        /**
+         * returns a single (`'`) or double (`"`) quote character if the value is quoted.
+         * returns `null` if the value is not quoted.
+         * returns `undefined` if the quotation state is unknown (this can happen when
+         * the attribute is constructed without specifying a quote mark.)
+         */
+      }, {
+        key: "quoteMark",
+        get: function get() {
+          return this._quoteMark;
+        },
+        set: function set(quoteMark) {
+          if (!this._constructed) {
+            this._quoteMark = quoteMark;
+            return;
+          }
+          if (this._quoteMark !== quoteMark) {
+            this._quoteMark = quoteMark;
+            this._syncRawValue();
+          }
+        }
+      }, {
+        key: "qualifiedAttribute",
+        get: function get() {
+          return this.qualifiedName(this.raws.attribute || this.attribute);
+        }
+      }, {
+        key: "insensitiveFlag",
+        get: function get() {
+          return this.insensitive ? "i" : "";
+        }
+      }, {
+        key: "value",
+        get: function get() {
+          return this._value;
+        },
+        set: (
+          /**
+           * Before 3.0, the value had to be set to an escaped value including any wrapped
+           * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value
+           * is unescaped during parsing and any quote marks are removed.
+           *
+           * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,
+           * a deprecation warning is raised when the new value contains any characters that would
+           * require escaping (including if it contains wrapped quotes).
+           *
+           * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe
+           * how the new value is quoted.
+           */
+          function set(v) {
+            if (this._constructed) {
+              var _unescapeValue2 = unescapeValue(v), deprecatedUsage = _unescapeValue2.deprecatedUsage, unescaped = _unescapeValue2.unescaped, quoteMark = _unescapeValue2.quoteMark;
+              if (deprecatedUsage) {
+                warnOfDeprecatedValueAssignment();
+              }
+              if (unescaped === this._value && quoteMark === this._quoteMark) {
+                return;
+              }
+              this._value = unescaped;
+              this._quoteMark = quoteMark;
+              this._syncRawValue();
+            } else {
+              this._value = v;
+            }
+          }
+        )
+      }, {
+        key: "insensitive",
+        get: function get() {
+          return this._insensitive;
+        },
+        set: function set(insensitive) {
+          if (!insensitive) {
+            this._insensitive = false;
+            if (this.raws && (this.raws.insensitiveFlag === "I" || this.raws.insensitiveFlag === "i")) {
+              this.raws.insensitiveFlag = void 0;
+            }
+          }
+          this._insensitive = insensitive;
+        }
+      }, {
+        key: "attribute",
+        get: function get() {
+          return this._attribute;
+        },
+        set: function set(name) {
+          this._handleEscapes("attribute", name);
+          this._attribute = name;
+        }
+      }]);
+      return Attribute2;
+    }(_namespace["default"]);
+    exports2["default"] = Attribute;
+    Attribute.NO_QUOTE = null;
+    Attribute.SINGLE_QUOTE = "'";
+    Attribute.DOUBLE_QUOTE = '"';
+    var CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {
+      "'": {
+        quotes: "single",
+        wrap: true
+      },
+      '"': {
+        quotes: "double",
+        wrap: true
+      }
+    }, _CSSESC_QUOTE_OPTIONS[null] = {
+      isIdentifier: true
+    }, _CSSESC_QUOTE_OPTIONS);
+    function defaultAttrConcat(attrValue, attrSpaces) {
+      return "" + attrSpaces.before + attrValue + attrSpaces.after;
+    }
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/universal.js
+var require_universal = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/universal.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _namespace = _interopRequireDefault(require_namespace());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Universal = /* @__PURE__ */ function(_Namespace) {
+      _inheritsLoose(Universal2, _Namespace);
+      function Universal2(opts) {
+        var _this;
+        _this = _Namespace.call(this, opts) || this;
+        _this.type = _types.UNIVERSAL;
+        _this.value = "*";
+        return _this;
+      }
+      return Universal2;
+    }(_namespace["default"]);
+    exports2["default"] = Universal;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/combinator.js
+var require_combinator = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/combinator.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _node = _interopRequireDefault(require_node6());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Combinator = /* @__PURE__ */ function(_Node) {
+      _inheritsLoose(Combinator2, _Node);
+      function Combinator2(opts) {
+        var _this;
+        _this = _Node.call(this, opts) || this;
+        _this.type = _types.COMBINATOR;
+        return _this;
+      }
+      return Combinator2;
+    }(_node["default"]);
+    exports2["default"] = Combinator;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/nesting.js
+var require_nesting = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/nesting.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _node = _interopRequireDefault(require_node6());
+    var _types = require_types4();
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _inheritsLoose(subClass, superClass) {
+      subClass.prototype = Object.create(superClass.prototype);
+      subClass.prototype.constructor = subClass;
+      _setPrototypeOf(subClass, superClass);
+    }
+    function _setPrototypeOf(o, p) {
+      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
+        o2.__proto__ = p2;
+        return o2;
+      };
+      return _setPrototypeOf(o, p);
+    }
+    var Nesting = /* @__PURE__ */ function(_Node) {
+      _inheritsLoose(Nesting2, _Node);
+      function Nesting2(opts) {
+        var _this;
+        _this = _Node.call(this, opts) || this;
+        _this.type = _types.NESTING;
+        _this.value = "&";
+        return _this;
+      }
+      return Nesting2;
+    }(_node["default"]);
+    exports2["default"] = Nesting;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/sortAscending.js
+var require_sortAscending = __commonJS({
+  "node_modules/postcss-selector-parser/dist/sortAscending.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = sortAscending;
+    function sortAscending(list) {
+      return list.sort(function(a, b) {
+        return a - b;
+      });
+    }
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/tokenTypes.js
+var require_tokenTypes = __commonJS({
+  "node_modules/postcss-selector-parser/dist/tokenTypes.js"(exports2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2.word = exports2.tilde = exports2.tab = exports2.str = exports2.space = exports2.slash = exports2.singleQuote = exports2.semicolon = exports2.plus = exports2.pipe = exports2.openSquare = exports2.openParenthesis = exports2.newline = exports2.greaterThan = exports2.feed = exports2.equals = exports2.doubleQuote = exports2.dollar = exports2.cr = exports2.comment = exports2.comma = exports2.combinator = exports2.colon = exports2.closeSquare = exports2.closeParenthesis = exports2.caret = exports2.bang = exports2.backslash = exports2.at = exports2.asterisk = exports2.ampersand = void 0;
+    var ampersand = 38;
+    exports2.ampersand = ampersand;
+    var asterisk = 42;
+    exports2.asterisk = asterisk;
+    var at = 64;
+    exports2.at = at;
+    var comma = 44;
+    exports2.comma = comma;
+    var colon = 58;
+    exports2.colon = colon;
+    var semicolon = 59;
+    exports2.semicolon = semicolon;
+    var openParenthesis = 40;
+    exports2.openParenthesis = openParenthesis;
+    var closeParenthesis = 41;
+    exports2.closeParenthesis = closeParenthesis;
+    var openSquare = 91;
+    exports2.openSquare = openSquare;
+    var closeSquare = 93;
+    exports2.closeSquare = closeSquare;
+    var dollar = 36;
+    exports2.dollar = dollar;
+    var tilde = 126;
+    exports2.tilde = tilde;
+    var caret = 94;
+    exports2.caret = caret;
+    var plus = 43;
+    exports2.plus = plus;
+    var equals = 61;
+    exports2.equals = equals;
+    var pipe = 124;
+    exports2.pipe = pipe;
+    var greaterThan = 62;
+    exports2.greaterThan = greaterThan;
+    var space = 32;
+    exports2.space = space;
+    var singleQuote = 39;
+    exports2.singleQuote = singleQuote;
+    var doubleQuote = 34;
+    exports2.doubleQuote = doubleQuote;
+    var slash = 47;
+    exports2.slash = slash;
+    var bang = 33;
+    exports2.bang = bang;
+    var backslash = 92;
+    exports2.backslash = backslash;
+    var cr = 13;
+    exports2.cr = cr;
+    var feed = 12;
+    exports2.feed = feed;
+    var newline = 10;
+    exports2.newline = newline;
+    var tab = 9;
+    exports2.tab = tab;
+    var str = singleQuote;
+    exports2.str = str;
+    var comment = -1;
+    exports2.comment = comment;
+    var word = -2;
+    exports2.word = word;
+    var combinator = -3;
+    exports2.combinator = combinator;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/tokenize.js
+var require_tokenize2 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/tokenize.js"(exports2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2.FIELDS = void 0;
+    exports2["default"] = tokenize;
+    var t = _interopRequireWildcard(require_tokenTypes());
+    var _unescapable;
+    var _wordDelimiters;
+    function _getRequireWildcardCache(nodeInterop) {
+      if (typeof WeakMap !== "function") return null;
+      var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
+      var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
+      return (_getRequireWildcardCache = function _getRequireWildcardCache2(nodeInterop2) {
+        return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
+      })(nodeInterop);
+    }
+    function _interopRequireWildcard(obj, nodeInterop) {
+      if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+      }
+      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return { "default": obj };
+      }
+      var cache = _getRequireWildcardCache(nodeInterop);
+      if (cache && cache.has(obj)) {
+        return cache.get(obj);
+      }
+      var newObj = {};
+      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+      for (var key in obj) {
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+          if (desc && (desc.get || desc.set)) {
+            Object.defineProperty(newObj, key, desc);
+          } else {
+            newObj[key] = obj[key];
+          }
+        }
+      }
+      newObj["default"] = obj;
+      if (cache) {
+        cache.set(obj, newObj);
+      }
+      return newObj;
+    }
+    var unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);
+    var wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);
+    var hex = {};
+    var hexChars = "0123456789abcdefABCDEF";
+    for (i = 0; i < hexChars.length; i++) {
+      hex[hexChars.charCodeAt(i)] = true;
+    }
+    var i;
+    function consumeWord(css, start) {
+      var next = start;
+      var code;
+      do {
+        code = css.charCodeAt(next);
+        if (wordDelimiters[code]) {
+          return next - 1;
+        } else if (code === t.backslash) {
+          next = consumeEscape(css, next) + 1;
+        } else {
+          next++;
+        }
+      } while (next < css.length);
+      return next - 1;
+    }
+    function consumeEscape(css, start) {
+      var next = start;
+      var code = css.charCodeAt(next + 1);
+      if (unescapable[code]) {
+      } else if (hex[code]) {
+        var hexDigits = 0;
+        do {
+          next++;
+          hexDigits++;
+          code = css.charCodeAt(next + 1);
+        } while (hex[code] && hexDigits < 6);
+        if (hexDigits < 6 && code === t.space) {
+          next++;
+        }
+      } else {
+        next++;
+      }
+      return next;
+    }
+    var FIELDS = {
+      TYPE: 0,
+      START_LINE: 1,
+      START_COL: 2,
+      END_LINE: 3,
+      END_COL: 4,
+      START_POS: 5,
+      END_POS: 6
+    };
+    exports2.FIELDS = FIELDS;
+    function tokenize(input) {
+      var tokens = [];
+      var css = input.css.valueOf();
+      var _css = css, length = _css.length;
+      var offset = -1;
+      var line = 1;
+      var start = 0;
+      var end = 0;
+      var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;
+      function unclosed(what, fix) {
+        if (input.safe) {
+          css += fix;
+          next = css.length - 1;
+        } else {
+          throw input.error("Unclosed " + what, line, start - offset, start);
+        }
+      }
+      while (start < length) {
+        code = css.charCodeAt(start);
+        if (code === t.newline) {
+          offset = start;
+          line += 1;
+        }
+        switch (code) {
+          case t.space:
+          case t.tab:
+          case t.newline:
+          case t.cr:
+          case t.feed:
+            next = start;
+            do {
+              next += 1;
+              code = css.charCodeAt(next);
+              if (code === t.newline) {
+                offset = next;
+                line += 1;
+              }
+            } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);
+            tokenType = t.space;
+            endLine = line;
+            endColumn = next - offset - 1;
+            end = next;
+            break;
+          case t.plus:
+          case t.greaterThan:
+          case t.tilde:
+          case t.pipe:
+            next = start;
+            do {
+              next += 1;
+              code = css.charCodeAt(next);
+            } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);
+            tokenType = t.combinator;
+            endLine = line;
+            endColumn = start - offset;
+            end = next;
+            break;
+          // Consume these characters as single tokens.
+          case t.asterisk:
+          case t.ampersand:
+          case t.bang:
+          case t.comma:
+          case t.equals:
+          case t.dollar:
+          case t.caret:
+          case t.openSquare:
+          case t.closeSquare:
+          case t.colon:
+          case t.semicolon:
+          case t.openParenthesis:
+          case t.closeParenthesis:
+            next = start;
+            tokenType = code;
+            endLine = line;
+            endColumn = start - offset;
+            end = next + 1;
+            break;
+          case t.singleQuote:
+          case t.doubleQuote:
+            quote = code === t.singleQuote ? "'" : '"';
+            next = start;
+            do {
+              escaped = false;
+              next = css.indexOf(quote, next + 1);
+              if (next === -1) {
+                unclosed("quote", quote);
+              }
+              escapePos = next;
+              while (css.charCodeAt(escapePos - 1) === t.backslash) {
+                escapePos -= 1;
+                escaped = !escaped;
+              }
+            } while (escaped);
+            tokenType = t.str;
+            endLine = line;
+            endColumn = start - offset;
+            end = next + 1;
+            break;
+          default:
+            if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {
+              next = css.indexOf("*/", start + 2) + 1;
+              if (next === 0) {
+                unclosed("comment", "*/");
+              }
+              content = css.slice(start, next + 1);
+              lines = content.split("\n");
+              last = lines.length - 1;
+              if (last > 0) {
+                nextLine = line + last;
+                nextOffset = next - lines[last].length;
+              } else {
+                nextLine = line;
+                nextOffset = offset;
+              }
+              tokenType = t.comment;
+              line = nextLine;
+              endLine = nextLine;
+              endColumn = next - nextOffset;
+            } else if (code === t.slash) {
+              next = start;
+              tokenType = code;
+              endLine = line;
+              endColumn = start - offset;
+              end = next + 1;
+            } else {
+              next = consumeWord(css, start);
+              tokenType = t.word;
+              endLine = line;
+              endColumn = next - offset;
+            }
+            end = next + 1;
+            break;
+        }
+        tokens.push([
+          tokenType,
+          // [0] Token type
+          line,
+          // [1] Starting line
+          start - offset,
+          // [2] Starting column
+          endLine,
+          // [3] Ending line
+          endColumn,
+          // [4] Ending column
+          start,
+          // [5] Start position / Source index
+          end
+          // [6] End position
+        ]);
+        if (nextOffset) {
+          offset = nextOffset;
+          nextOffset = null;
+        }
+        start = end;
+      }
+      return tokens;
+    }
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/parser.js
+var require_parser5 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/parser.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _root = _interopRequireDefault(require_root2());
+    var _selector = _interopRequireDefault(require_selector4());
+    var _className = _interopRequireDefault(require_className());
+    var _comment = _interopRequireDefault(require_comment2());
+    var _id = _interopRequireDefault(require_id());
+    var _tag = _interopRequireDefault(require_tag());
+    var _string = _interopRequireDefault(require_string3());
+    var _pseudo = _interopRequireDefault(require_pseudo3());
+    var _attribute = _interopRequireWildcard(require_attribute());
+    var _universal = _interopRequireDefault(require_universal());
+    var _combinator = _interopRequireDefault(require_combinator());
+    var _nesting = _interopRequireDefault(require_nesting());
+    var _sortAscending = _interopRequireDefault(require_sortAscending());
+    var _tokenize = _interopRequireWildcard(require_tokenize2());
+    var tokens = _interopRequireWildcard(require_tokenTypes());
+    var types = _interopRequireWildcard(require_types4());
+    var _util = require_util2();
+    var _WHITESPACE_TOKENS;
+    var _Object$assign;
+    function _getRequireWildcardCache(nodeInterop) {
+      if (typeof WeakMap !== "function") return null;
+      var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
+      var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
+      return (_getRequireWildcardCache = function _getRequireWildcardCache2(nodeInterop2) {
+        return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
+      })(nodeInterop);
+    }
+    function _interopRequireWildcard(obj, nodeInterop) {
+      if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+      }
+      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return { "default": obj };
+      }
+      var cache = _getRequireWildcardCache(nodeInterop);
+      if (cache && cache.has(obj)) {
+        return cache.get(obj);
+      }
+      var newObj = {};
+      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+      for (var key in obj) {
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+          if (desc && (desc.get || desc.set)) {
+            Object.defineProperty(newObj, key, desc);
+          } else {
+            newObj[key] = obj[key];
+          }
+        }
+      }
+      newObj["default"] = obj;
+      if (cache) {
+        cache.set(obj, newObj);
+      }
+      return newObj;
+    }
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    function _defineProperties(target, props) {
+      for (var i = 0; i < props.length; i++) {
+        var descriptor = props[i];
+        descriptor.enumerable = descriptor.enumerable || false;
+        descriptor.configurable = true;
+        if ("value" in descriptor) descriptor.writable = true;
+        Object.defineProperty(target, descriptor.key, descriptor);
+      }
+    }
+    function _createClass(Constructor, protoProps, staticProps) {
+      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+      if (staticProps) _defineProperties(Constructor, staticProps);
+      Object.defineProperty(Constructor, "prototype", { writable: false });
+      return Constructor;
+    }
+    var WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);
+    var WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));
+    function tokenStart(token) {
+      return {
+        line: token[_tokenize.FIELDS.START_LINE],
+        column: token[_tokenize.FIELDS.START_COL]
+      };
+    }
+    function tokenEnd(token) {
+      return {
+        line: token[_tokenize.FIELDS.END_LINE],
+        column: token[_tokenize.FIELDS.END_COL]
+      };
+    }
+    function getSource(startLine, startColumn, endLine, endColumn) {
+      return {
+        start: {
+          line: startLine,
+          column: startColumn
+        },
+        end: {
+          line: endLine,
+          column: endColumn
+        }
+      };
+    }
+    function getTokenSource(token) {
+      return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);
+    }
+    function getTokenSourceSpan(startToken, endToken) {
+      if (!startToken) {
+        return void 0;
+      }
+      return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);
+    }
+    function unescapeProp(node, prop) {
+      var value = node[prop];
+      if (typeof value !== "string") {
+        return;
+      }
+      if (value.indexOf("\\") !== -1) {
+        (0, _util.ensureObject)(node, "raws");
+        node[prop] = (0, _util.unesc)(value);
+        if (node.raws[prop] === void 0) {
+          node.raws[prop] = value;
+        }
+      }
+      return node;
+    }
+    function indexesOf(array, item) {
+      var i = -1;
+      var indexes = [];
+      while ((i = array.indexOf(item, i + 1)) !== -1) {
+        indexes.push(i);
+      }
+      return indexes;
+    }
+    function uniqs() {
+      var list = Array.prototype.concat.apply([], arguments);
+      return list.filter(function(item, i) {
+        return i === list.indexOf(item);
+      });
+    }
+    var Parser = /* @__PURE__ */ function() {
+      function Parser2(rule, options) {
+        if (options === void 0) {
+          options = {};
+        }
+        this.rule = rule;
+        this.options = Object.assign({
+          lossy: false,
+          safe: false
+        }, options);
+        this.position = 0;
+        this.css = typeof this.rule === "string" ? this.rule : this.rule.selector;
+        this.tokens = (0, _tokenize["default"])({
+          css: this.css,
+          error: this._errorGenerator(),
+          safe: this.options.safe
+        });
+        var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);
+        this.root = new _root["default"]({
+          source: rootSource
+        });
+        this.root.errorGenerator = this._errorGenerator();
+        var selector = new _selector["default"]({
+          source: {
+            start: {
+              line: 1,
+              column: 1
+            }
+          },
+          sourceIndex: 0
+        });
+        this.root.append(selector);
+        this.current = selector;
+        this.loop();
+      }
+      var _proto = Parser2.prototype;
+      _proto._errorGenerator = function _errorGenerator() {
+        var _this = this;
+        return function(message, errorOptions) {
+          if (typeof _this.rule === "string") {
+            return new Error(message);
+          }
+          return _this.rule.error(message, errorOptions);
+        };
+      };
+      _proto.attribute = function attribute() {
+        var attr = [];
+        var startingToken = this.currToken;
+        this.position++;
+        while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {
+          attr.push(this.currToken);
+          this.position++;
+        }
+        if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {
+          return this.expected("closing square bracket", this.currToken[_tokenize.FIELDS.START_POS]);
+        }
+        var len = attr.length;
+        var node = {
+          source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),
+          sourceIndex: startingToken[_tokenize.FIELDS.START_POS]
+        };
+        if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {
+          return this.expected("attribute", attr[0][_tokenize.FIELDS.START_POS]);
+        }
+        var pos = 0;
+        var spaceBefore = "";
+        var commentBefore = "";
+        var lastAdded = null;
+        var spaceAfterMeaningfulToken = false;
+        while (pos < len) {
+          var token = attr[pos];
+          var content = this.content(token);
+          var next = attr[pos + 1];
+          switch (token[_tokenize.FIELDS.TYPE]) {
+            case tokens.space:
+              spaceAfterMeaningfulToken = true;
+              if (this.options.lossy) {
+                break;
+              }
+              if (lastAdded) {
+                (0, _util.ensureObject)(node, "spaces", lastAdded);
+                var prevContent = node.spaces[lastAdded].after || "";
+                node.spaces[lastAdded].after = prevContent + content;
+                var existingComment = (0, _util.getProp)(node, "raws", "spaces", lastAdded, "after") || null;
+                if (existingComment) {
+                  node.raws.spaces[lastAdded].after = existingComment + content;
+                }
+              } else {
+                spaceBefore = spaceBefore + content;
+                commentBefore = commentBefore + content;
+              }
+              break;
+            case tokens.asterisk:
+              if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {
+                node.operator = content;
+                lastAdded = "operator";
+              } else if ((!node.namespace || lastAdded === "namespace" && !spaceAfterMeaningfulToken) && next) {
+                if (spaceBefore) {
+                  (0, _util.ensureObject)(node, "spaces", "attribute");
+                  node.spaces.attribute.before = spaceBefore;
+                  spaceBefore = "";
+                }
+                if (commentBefore) {
+                  (0, _util.ensureObject)(node, "raws", "spaces", "attribute");
+                  node.raws.spaces.attribute.before = spaceBefore;
+                  commentBefore = "";
+                }
+                node.namespace = (node.namespace || "") + content;
+                var rawValue = (0, _util.getProp)(node, "raws", "namespace") || null;
+                if (rawValue) {
+                  node.raws.namespace += content;
+                }
+                lastAdded = "namespace";
+              }
+              spaceAfterMeaningfulToken = false;
+              break;
+            case tokens.dollar:
+              if (lastAdded === "value") {
+                var oldRawValue = (0, _util.getProp)(node, "raws", "value");
+                node.value += "$";
+                if (oldRawValue) {
+                  node.raws.value = oldRawValue + "$";
+                }
+                break;
+              }
+            // Falls through
+            case tokens.caret:
+              if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {
+                node.operator = content;
+                lastAdded = "operator";
+              }
+              spaceAfterMeaningfulToken = false;
+              break;
+            case tokens.combinator:
+              if (content === "~" && next[_tokenize.FIELDS.TYPE] === tokens.equals) {
+                node.operator = content;
+                lastAdded = "operator";
+              }
+              if (content !== "|") {
+                spaceAfterMeaningfulToken = false;
+                break;
+              }
+              if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {
+                node.operator = content;
+                lastAdded = "operator";
+              } else if (!node.namespace && !node.attribute) {
+                node.namespace = true;
+              }
+              spaceAfterMeaningfulToken = false;
+              break;
+            case tokens.word:
+              if (next && this.content(next) === "|" && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.
+              !node.operator && !node.namespace) {
+                node.namespace = content;
+                lastAdded = "namespace";
+              } else if (!node.attribute || lastAdded === "attribute" && !spaceAfterMeaningfulToken) {
+                if (spaceBefore) {
+                  (0, _util.ensureObject)(node, "spaces", "attribute");
+                  node.spaces.attribute.before = spaceBefore;
+                  spaceBefore = "";
+                }
+                if (commentBefore) {
+                  (0, _util.ensureObject)(node, "raws", "spaces", "attribute");
+                  node.raws.spaces.attribute.before = commentBefore;
+                  commentBefore = "";
+                }
+                node.attribute = (node.attribute || "") + content;
+                var _rawValue = (0, _util.getProp)(node, "raws", "attribute") || null;
+                if (_rawValue) {
+                  node.raws.attribute += content;
+                }
+                lastAdded = "attribute";
+              } else if (!node.value && node.value !== "" || lastAdded === "value" && !(spaceAfterMeaningfulToken || node.quoteMark)) {
+                var _unescaped = (0, _util.unesc)(content);
+                var _oldRawValue = (0, _util.getProp)(node, "raws", "value") || "";
+                var oldValue = node.value || "";
+                node.value = oldValue + _unescaped;
+                node.quoteMark = null;
+                if (_unescaped !== content || _oldRawValue) {
+                  (0, _util.ensureObject)(node, "raws");
+                  node.raws.value = (_oldRawValue || oldValue) + content;
+                }
+                lastAdded = "value";
+              } else {
+                var insensitive = content === "i" || content === "I";
+                if ((node.value || node.value === "") && (node.quoteMark || spaceAfterMeaningfulToken)) {
+                  node.insensitive = insensitive;
+                  if (!insensitive || content === "I") {
+                    (0, _util.ensureObject)(node, "raws");
+                    node.raws.insensitiveFlag = content;
+                  }
+                  lastAdded = "insensitive";
+                  if (spaceBefore) {
+                    (0, _util.ensureObject)(node, "spaces", "insensitive");
+                    node.spaces.insensitive.before = spaceBefore;
+                    spaceBefore = "";
+                  }
+                  if (commentBefore) {
+                    (0, _util.ensureObject)(node, "raws", "spaces", "insensitive");
+                    node.raws.spaces.insensitive.before = commentBefore;
+                    commentBefore = "";
+                  }
+                } else if (node.value || node.value === "") {
+                  lastAdded = "value";
+                  node.value += content;
+                  if (node.raws.value) {
+                    node.raws.value += content;
+                  }
+                }
+              }
+              spaceAfterMeaningfulToken = false;
+              break;
+            case tokens.str:
+              if (!node.attribute || !node.operator) {
+                return this.error("Expected an attribute followed by an operator preceding the string.", {
+                  index: token[_tokenize.FIELDS.START_POS]
+                });
+              }
+              var _unescapeValue = (0, _attribute.unescapeValue)(content), unescaped = _unescapeValue.unescaped, quoteMark = _unescapeValue.quoteMark;
+              node.value = unescaped;
+              node.quoteMark = quoteMark;
+              lastAdded = "value";
+              (0, _util.ensureObject)(node, "raws");
+              node.raws.value = content;
+              spaceAfterMeaningfulToken = false;
+              break;
+            case tokens.equals:
+              if (!node.attribute) {
+                return this.expected("attribute", token[_tokenize.FIELDS.START_POS], content);
+              }
+              if (node.value) {
+                return this.error('Unexpected "=" found; an operator was already defined.', {
+                  index: token[_tokenize.FIELDS.START_POS]
+                });
+              }
+              node.operator = node.operator ? node.operator + content : content;
+              lastAdded = "operator";
+              spaceAfterMeaningfulToken = false;
+              break;
+            case tokens.comment:
+              if (lastAdded) {
+                if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === "insensitive") {
+                  var lastComment = (0, _util.getProp)(node, "spaces", lastAdded, "after") || "";
+                  var rawLastComment = (0, _util.getProp)(node, "raws", "spaces", lastAdded, "after") || lastComment;
+                  (0, _util.ensureObject)(node, "raws", "spaces", lastAdded);
+                  node.raws.spaces[lastAdded].after = rawLastComment + content;
+                } else {
+                  var lastValue = node[lastAdded] || "";
+                  var rawLastValue = (0, _util.getProp)(node, "raws", lastAdded) || lastValue;
+                  (0, _util.ensureObject)(node, "raws");
+                  node.raws[lastAdded] = rawLastValue + content;
+                }
+              } else {
+                commentBefore = commentBefore + content;
+              }
+              break;
+            default:
+              return this.error('Unexpected "' + content + '" found.', {
+                index: token[_tokenize.FIELDS.START_POS]
+              });
+          }
+          pos++;
+        }
+        unescapeProp(node, "attribute");
+        unescapeProp(node, "namespace");
+        this.newNode(new _attribute["default"](node));
+        this.position++;
+      };
+      _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {
+        if (stopPosition < 0) {
+          stopPosition = this.tokens.length;
+        }
+        var startPosition = this.position;
+        var nodes = [];
+        var space = "";
+        var lastComment = void 0;
+        do {
+          if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {
+            if (!this.options.lossy) {
+              space += this.content();
+            }
+          } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {
+            var spaces = {};
+            if (space) {
+              spaces.before = space;
+              space = "";
+            }
+            lastComment = new _comment["default"]({
+              value: this.content(),
+              source: getTokenSource(this.currToken),
+              sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],
+              spaces
+            });
+            nodes.push(lastComment);
+          }
+        } while (++this.position < stopPosition);
+        if (space) {
+          if (lastComment) {
+            lastComment.spaces.after = space;
+          } else if (!this.options.lossy) {
+            var firstToken = this.tokens[startPosition];
+            var lastToken = this.tokens[this.position - 1];
+            nodes.push(new _string["default"]({
+              value: "",
+              source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),
+              sourceIndex: firstToken[_tokenize.FIELDS.START_POS],
+              spaces: {
+                before: space,
+                after: ""
+              }
+            }));
+          }
+        }
+        return nodes;
+      };
+      _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {
+        var _this2 = this;
+        if (requiredSpace === void 0) {
+          requiredSpace = false;
+        }
+        var space = "";
+        var rawSpace = "";
+        nodes.forEach(function(n) {
+          var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);
+          var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);
+          space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);
+          rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);
+        });
+        if (rawSpace === space) {
+          rawSpace = void 0;
+        }
+        var result = {
+          space,
+          rawSpace
+        };
+        return result;
+      };
+      _proto.isNamedCombinator = function isNamedCombinator(position) {
+        if (position === void 0) {
+          position = this.position;
+        }
+        return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;
+      };
+      _proto.namedCombinator = function namedCombinator() {
+        if (this.isNamedCombinator()) {
+          var nameRaw = this.content(this.tokens[this.position + 1]);
+          var name = (0, _util.unesc)(nameRaw).toLowerCase();
+          var raws = {};
+          if (name !== nameRaw) {
+            raws.value = "/" + nameRaw + "/";
+          }
+          var node = new _combinator["default"]({
+            value: "/" + name + "/",
+            source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),
+            sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],
+            raws
+          });
+          this.position = this.position + 3;
+          return node;
+        } else {
+          this.unexpected();
+        }
+      };
+      _proto.combinator = function combinator() {
+        var _this3 = this;
+        if (this.content() === "|") {
+          return this.namespace();
+        }
+        var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);
+        if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {
+          var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);
+          if (nodes.length > 0) {
+            var last = this.current.last;
+            if (last) {
+              var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes), space = _this$convertWhitespa.space, rawSpace = _this$convertWhitespa.rawSpace;
+              if (rawSpace !== void 0) {
+                last.rawSpaceAfter += rawSpace;
+              }
+              last.spaces.after += space;
+            } else {
+              nodes.forEach(function(n) {
+                return _this3.newNode(n);
+              });
+            }
+          }
+          return;
+        }
+        var firstToken = this.currToken;
+        var spaceOrDescendantSelectorNodes = void 0;
+        if (nextSigTokenPos > this.position) {
+          spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);
+        }
+        var node;
+        if (this.isNamedCombinator()) {
+          node = this.namedCombinator();
+        } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {
+          node = new _combinator["default"]({
+            value: this.content(),
+            source: getTokenSource(this.currToken),
+            sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]
+          });
+          this.position++;
+        } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {
+        } else if (!spaceOrDescendantSelectorNodes) {
+          this.unexpected();
+        }
+        if (node) {
+          if (spaceOrDescendantSelectorNodes) {
+            var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes), _space = _this$convertWhitespa2.space, _rawSpace = _this$convertWhitespa2.rawSpace;
+            node.spaces.before = _space;
+            node.rawSpaceBefore = _rawSpace;
+          }
+        } else {
+          var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true), _space2 = _this$convertWhitespa3.space, _rawSpace2 = _this$convertWhitespa3.rawSpace;
+          if (!_rawSpace2) {
+            _rawSpace2 = _space2;
+          }
+          var spaces = {};
+          var raws = {
+            spaces: {}
+          };
+          if (_space2.endsWith(" ") && _rawSpace2.endsWith(" ")) {
+            spaces.before = _space2.slice(0, _space2.length - 1);
+            raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);
+          } else if (_space2.startsWith(" ") && _rawSpace2.startsWith(" ")) {
+            spaces.after = _space2.slice(1);
+            raws.spaces.after = _rawSpace2.slice(1);
+          } else {
+            raws.value = _rawSpace2;
+          }
+          node = new _combinator["default"]({
+            value: " ",
+            source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),
+            sourceIndex: firstToken[_tokenize.FIELDS.START_POS],
+            spaces,
+            raws
+          });
+        }
+        if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {
+          node.spaces.after = this.optionalSpace(this.content());
+          this.position++;
+        }
+        return this.newNode(node);
+      };
+      _proto.comma = function comma() {
+        if (this.position === this.tokens.length - 1) {
+          this.root.trailingComma = true;
+          this.position++;
+          return;
+        }
+        this.current._inferEndPosition();
+        var selector = new _selector["default"]({
+          source: {
+            start: tokenStart(this.tokens[this.position + 1])
+          },
+          sourceIndex: this.tokens[this.position + 1][_tokenize.FIELDS.START_POS]
+        });
+        this.current.parent.append(selector);
+        this.current = selector;
+        this.position++;
+      };
+      _proto.comment = function comment() {
+        var current = this.currToken;
+        this.newNode(new _comment["default"]({
+          value: this.content(),
+          source: getTokenSource(current),
+          sourceIndex: current[_tokenize.FIELDS.START_POS]
+        }));
+        this.position++;
+      };
+      _proto.error = function error(message, opts) {
+        throw this.root.error(message, opts);
+      };
+      _proto.missingBackslash = function missingBackslash() {
+        return this.error("Expected a backslash preceding the semicolon.", {
+          index: this.currToken[_tokenize.FIELDS.START_POS]
+        });
+      };
+      _proto.missingParenthesis = function missingParenthesis() {
+        return this.expected("opening parenthesis", this.currToken[_tokenize.FIELDS.START_POS]);
+      };
+      _proto.missingSquareBracket = function missingSquareBracket() {
+        return this.expected("opening square bracket", this.currToken[_tokenize.FIELDS.START_POS]);
+      };
+      _proto.unexpected = function unexpected() {
+        return this.error("Unexpected '" + this.content() + "'. Escaping special characters with \\ may help.", this.currToken[_tokenize.FIELDS.START_POS]);
+      };
+      _proto.unexpectedPipe = function unexpectedPipe() {
+        return this.error("Unexpected '|'.", this.currToken[_tokenize.FIELDS.START_POS]);
+      };
+      _proto.namespace = function namespace() {
+        var before = this.prevToken && this.content(this.prevToken) || true;
+        if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {
+          this.position++;
+          return this.word(before);
+        } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {
+          this.position++;
+          return this.universal(before);
+        }
+        this.unexpectedPipe();
+      };
+      _proto.nesting = function nesting() {
+        if (this.nextToken) {
+          var nextContent = this.content(this.nextToken);
+          if (nextContent === "|") {
+            this.position++;
+            return;
+          }
+        }
+        var current = this.currToken;
+        this.newNode(new _nesting["default"]({
+          value: this.content(),
+          source: getTokenSource(current),
+          sourceIndex: current[_tokenize.FIELDS.START_POS]
+        }));
+        this.position++;
+      };
+      _proto.parentheses = function parentheses() {
+        var last = this.current.last;
+        var unbalanced = 1;
+        this.position++;
+        if (last && last.type === types.PSEUDO) {
+          var selector = new _selector["default"]({
+            source: {
+              start: tokenStart(this.tokens[this.position])
+            },
+            sourceIndex: this.tokens[this.position][_tokenize.FIELDS.START_POS]
+          });
+          var cache = this.current;
+          last.append(selector);
+          this.current = selector;
+          while (this.position < this.tokens.length && unbalanced) {
+            if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {
+              unbalanced++;
+            }
+            if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {
+              unbalanced--;
+            }
+            if (unbalanced) {
+              this.parse();
+            } else {
+              this.current.source.end = tokenEnd(this.currToken);
+              this.current.parent.source.end = tokenEnd(this.currToken);
+              this.position++;
+            }
+          }
+          this.current = cache;
+        } else {
+          var parenStart = this.currToken;
+          var parenValue = "(";
+          var parenEnd;
+          while (this.position < this.tokens.length && unbalanced) {
+            if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {
+              unbalanced++;
+            }
+            if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {
+              unbalanced--;
+            }
+            parenEnd = this.currToken;
+            parenValue += this.parseParenthesisToken(this.currToken);
+            this.position++;
+          }
+          if (last) {
+            last.appendToPropertyAndEscape("value", parenValue, parenValue);
+          } else {
+            this.newNode(new _string["default"]({
+              value: parenValue,
+              source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),
+              sourceIndex: parenStart[_tokenize.FIELDS.START_POS]
+            }));
+          }
+        }
+        if (unbalanced) {
+          return this.expected("closing parenthesis", this.currToken[_tokenize.FIELDS.START_POS]);
+        }
+      };
+      _proto.pseudo = function pseudo() {
+        var _this4 = this;
+        var pseudoStr = "";
+        var startingToken = this.currToken;
+        while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {
+          pseudoStr += this.content();
+          this.position++;
+        }
+        if (!this.currToken) {
+          return this.expected(["pseudo-class", "pseudo-element"], this.position - 1);
+        }
+        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {
+          this.splitWord(false, function(first, length) {
+            pseudoStr += first;
+            _this4.newNode(new _pseudo["default"]({
+              value: pseudoStr,
+              source: getTokenSourceSpan(startingToken, _this4.currToken),
+              sourceIndex: startingToken[_tokenize.FIELDS.START_POS]
+            }));
+            if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {
+              _this4.error("Misplaced parenthesis.", {
+                index: _this4.nextToken[_tokenize.FIELDS.START_POS]
+              });
+            }
+          });
+        } else {
+          return this.expected(["pseudo-class", "pseudo-element"], this.currToken[_tokenize.FIELDS.START_POS]);
+        }
+      };
+      _proto.space = function space() {
+        var content = this.content();
+        if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function(node) {
+          return node.type === "comment";
+        })) {
+          this.spaces = this.optionalSpace(content);
+          this.position++;
+        } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {
+          this.current.last.spaces.after = this.optionalSpace(content);
+          this.position++;
+        } else {
+          this.combinator();
+        }
+      };
+      _proto.string = function string() {
+        var current = this.currToken;
+        this.newNode(new _string["default"]({
+          value: this.content(),
+          source: getTokenSource(current),
+          sourceIndex: current[_tokenize.FIELDS.START_POS]
+        }));
+        this.position++;
+      };
+      _proto.universal = function universal(namespace) {
+        var nextToken = this.nextToken;
+        if (nextToken && this.content(nextToken) === "|") {
+          this.position++;
+          return this.namespace();
+        }
+        var current = this.currToken;
+        this.newNode(new _universal["default"]({
+          value: this.content(),
+          source: getTokenSource(current),
+          sourceIndex: current[_tokenize.FIELDS.START_POS]
+        }), namespace);
+        this.position++;
+      };
+      _proto.splitWord = function splitWord(namespace, firstCallback) {
+        var _this5 = this;
+        var nextToken = this.nextToken;
+        var word = this.content();
+        while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {
+          this.position++;
+          var current = this.content();
+          word += current;
+          if (current.lastIndexOf("\\") === current.length - 1) {
+            var next = this.nextToken;
+            if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {
+              word += this.requiredSpace(this.content(next));
+              this.position++;
+            }
+          }
+          nextToken = this.nextToken;
+        }
+        var hasClass = indexesOf(word, ".").filter(function(i) {
+          var escapedDot = word[i - 1] === "\\";
+          var isKeyframesPercent = /^\d+\.\d+%$/.test(word);
+          return !escapedDot && !isKeyframesPercent;
+        });
+        var hasId = indexesOf(word, "#").filter(function(i) {
+          return word[i - 1] !== "\\";
+        });
+        var interpolations = indexesOf(word, "#{");
+        if (interpolations.length) {
+          hasId = hasId.filter(function(hashIndex) {
+            return !~interpolations.indexOf(hashIndex);
+          });
+        }
+        var indices = (0, _sortAscending["default"])(uniqs([0].concat(hasClass, hasId)));
+        indices.forEach(function(ind, i) {
+          var index = indices[i + 1] || word.length;
+          var value = word.slice(ind, index);
+          if (i === 0 && firstCallback) {
+            return firstCallback.call(_this5, value, indices.length);
+          }
+          var node;
+          var current2 = _this5.currToken;
+          var sourceIndex = current2[_tokenize.FIELDS.START_POS] + indices[i];
+          var source = getSource(current2[1], current2[2] + ind, current2[3], current2[2] + (index - 1));
+          if (~hasClass.indexOf(ind)) {
+            var classNameOpts = {
+              value: value.slice(1),
+              source,
+              sourceIndex
+            };
+            node = new _className["default"](unescapeProp(classNameOpts, "value"));
+          } else if (~hasId.indexOf(ind)) {
+            var idOpts = {
+              value: value.slice(1),
+              source,
+              sourceIndex
+            };
+            node = new _id["default"](unescapeProp(idOpts, "value"));
+          } else {
+            var tagOpts = {
+              value,
+              source,
+              sourceIndex
+            };
+            unescapeProp(tagOpts, "value");
+            node = new _tag["default"](tagOpts);
+          }
+          _this5.newNode(node, namespace);
+          namespace = null;
+        });
+        this.position++;
+      };
+      _proto.word = function word(namespace) {
+        var nextToken = this.nextToken;
+        if (nextToken && this.content(nextToken) === "|") {
+          this.position++;
+          return this.namespace();
+        }
+        return this.splitWord(namespace);
+      };
+      _proto.loop = function loop() {
+        while (this.position < this.tokens.length) {
+          this.parse(true);
+        }
+        this.current._inferEndPosition();
+        return this.root;
+      };
+      _proto.parse = function parse(throwOnParenthesis) {
+        switch (this.currToken[_tokenize.FIELDS.TYPE]) {
+          case tokens.space:
+            this.space();
+            break;
+          case tokens.comment:
+            this.comment();
+            break;
+          case tokens.openParenthesis:
+            this.parentheses();
+            break;
+          case tokens.closeParenthesis:
+            if (throwOnParenthesis) {
+              this.missingParenthesis();
+            }
+            break;
+          case tokens.openSquare:
+            this.attribute();
+            break;
+          case tokens.dollar:
+          case tokens.caret:
+          case tokens.equals:
+          case tokens.word:
+            this.word();
+            break;
+          case tokens.colon:
+            this.pseudo();
+            break;
+          case tokens.comma:
+            this.comma();
+            break;
+          case tokens.asterisk:
+            this.universal();
+            break;
+          case tokens.ampersand:
+            this.nesting();
+            break;
+          case tokens.slash:
+          case tokens.combinator:
+            this.combinator();
+            break;
+          case tokens.str:
+            this.string();
+            break;
+          // These cases throw; no break needed.
+          case tokens.closeSquare:
+            this.missingSquareBracket();
+          case tokens.semicolon:
+            this.missingBackslash();
+          default:
+            this.unexpected();
+        }
+      };
+      _proto.expected = function expected(description, index, found) {
+        if (Array.isArray(description)) {
+          var last = description.pop();
+          description = description.join(", ") + " or " + last;
+        }
+        var an = /^[aeiou]/.test(description[0]) ? "an" : "a";
+        if (!found) {
+          return this.error("Expected " + an + " " + description + ".", {
+            index
+          });
+        }
+        return this.error("Expected " + an + " " + description + ', found "' + found + '" instead.', {
+          index
+        });
+      };
+      _proto.requiredSpace = function requiredSpace(space) {
+        return this.options.lossy ? " " : space;
+      };
+      _proto.optionalSpace = function optionalSpace(space) {
+        return this.options.lossy ? "" : space;
+      };
+      _proto.lossySpace = function lossySpace(space, required) {
+        if (this.options.lossy) {
+          return required ? " " : "";
+        } else {
+          return space;
+        }
+      };
+      _proto.parseParenthesisToken = function parseParenthesisToken(token) {
+        var content = this.content(token);
+        if (token[_tokenize.FIELDS.TYPE] === tokens.space) {
+          return this.requiredSpace(content);
+        } else {
+          return content;
+        }
+      };
+      _proto.newNode = function newNode(node, namespace) {
+        if (namespace) {
+          if (/^ +$/.test(namespace)) {
+            if (!this.options.lossy) {
+              this.spaces = (this.spaces || "") + namespace;
+            }
+            namespace = true;
+          }
+          node.namespace = namespace;
+          unescapeProp(node, "namespace");
+        }
+        if (this.spaces) {
+          node.spaces.before = this.spaces;
+          this.spaces = "";
+        }
+        return this.current.append(node);
+      };
+      _proto.content = function content(token) {
+        if (token === void 0) {
+          token = this.currToken;
+        }
+        return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);
+      };
+      _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {
+        if (startPosition === void 0) {
+          startPosition = this.position + 1;
+        }
+        var searchPosition = startPosition;
+        while (searchPosition < this.tokens.length) {
+          if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {
+            searchPosition++;
+            continue;
+          } else {
+            return searchPosition;
+          }
+        }
+        return -1;
+      };
+      _createClass(Parser2, [{
+        key: "currToken",
+        get: function get() {
+          return this.tokens[this.position];
+        }
+      }, {
+        key: "nextToken",
+        get: function get() {
+          return this.tokens[this.position + 1];
+        }
+      }, {
+        key: "prevToken",
+        get: function get() {
+          return this.tokens[this.position - 1];
+        }
+      }]);
+      return Parser2;
+    }();
+    exports2["default"] = Parser;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/processor.js
+var require_processor3 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/processor.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _parser = _interopRequireDefault(require_parser5());
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    var Processor = /* @__PURE__ */ function() {
+      function Processor2(func, options) {
+        this.func = func || function noop() {
+        };
+        this.funcRes = null;
+        this.options = options;
+      }
+      var _proto = Processor2.prototype;
+      _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {
+        if (options === void 0) {
+          options = {};
+        }
+        var merged = Object.assign({}, this.options, options);
+        if (merged.updateSelector === false) {
+          return false;
+        } else {
+          return typeof rule !== "string";
+        }
+      };
+      _proto._isLossy = function _isLossy(options) {
+        if (options === void 0) {
+          options = {};
+        }
+        var merged = Object.assign({}, this.options, options);
+        if (merged.lossless === false) {
+          return true;
+        } else {
+          return false;
+        }
+      };
+      _proto._root = function _root(rule, options) {
+        if (options === void 0) {
+          options = {};
+        }
+        var parser = new _parser["default"](rule, this._parseOptions(options));
+        return parser.root;
+      };
+      _proto._parseOptions = function _parseOptions(options) {
+        return {
+          lossy: this._isLossy(options)
+        };
+      };
+      _proto._run = function _run(rule, options) {
+        var _this = this;
+        if (options === void 0) {
+          options = {};
+        }
+        return new Promise(function(resolve, reject) {
+          try {
+            var root = _this._root(rule, options);
+            Promise.resolve(_this.func(root)).then(function(transform) {
+              var string = void 0;
+              if (_this._shouldUpdateSelector(rule, options)) {
+                string = root.toString();
+                rule.selector = string;
+              }
+              return {
+                transform,
+                root,
+                string
+              };
+            }).then(resolve, reject);
+          } catch (e) {
+            reject(e);
+            return;
+          }
+        });
+      };
+      _proto._runSync = function _runSync(rule, options) {
+        if (options === void 0) {
+          options = {};
+        }
+        var root = this._root(rule, options);
+        var transform = this.func(root);
+        if (transform && typeof transform.then === "function") {
+          throw new Error("Selector processor returned a promise to a synchronous call.");
+        }
+        var string = void 0;
+        if (options.updateSelector && typeof rule !== "string") {
+          string = root.toString();
+          rule.selector = string;
+        }
+        return {
+          transform,
+          root,
+          string
+        };
+      };
+      _proto.ast = function ast(rule, options) {
+        return this._run(rule, options).then(function(result) {
+          return result.root;
+        });
+      };
+      _proto.astSync = function astSync(rule, options) {
+        return this._runSync(rule, options).root;
+      };
+      _proto.transform = function transform(rule, options) {
+        return this._run(rule, options).then(function(result) {
+          return result.transform;
+        });
+      };
+      _proto.transformSync = function transformSync(rule, options) {
+        return this._runSync(rule, options).transform;
+      };
+      _proto.process = function process2(rule, options) {
+        return this._run(rule, options).then(function(result) {
+          return result.string || result.root.toString();
+        });
+      };
+      _proto.processSync = function processSync(rule, options) {
+        var result = this._runSync(rule, options);
+        return result.string || result.root.toString();
+      };
+      return Processor2;
+    }();
+    exports2["default"] = Processor;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/constructors.js
+var require_constructors = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/constructors.js"(exports2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2.universal = exports2.tag = exports2.string = exports2.selector = exports2.root = exports2.pseudo = exports2.nesting = exports2.id = exports2.comment = exports2.combinator = exports2.className = exports2.attribute = void 0;
+    var _attribute = _interopRequireDefault(require_attribute());
+    var _className = _interopRequireDefault(require_className());
+    var _combinator = _interopRequireDefault(require_combinator());
+    var _comment = _interopRequireDefault(require_comment2());
+    var _id = _interopRequireDefault(require_id());
+    var _nesting = _interopRequireDefault(require_nesting());
+    var _pseudo = _interopRequireDefault(require_pseudo3());
+    var _root = _interopRequireDefault(require_root2());
+    var _selector = _interopRequireDefault(require_selector4());
+    var _string = _interopRequireDefault(require_string3());
+    var _tag = _interopRequireDefault(require_tag());
+    var _universal = _interopRequireDefault(require_universal());
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    var attribute = function attribute2(opts) {
+      return new _attribute["default"](opts);
+    };
+    exports2.attribute = attribute;
+    var className = function className2(opts) {
+      return new _className["default"](opts);
+    };
+    exports2.className = className;
+    var combinator = function combinator2(opts) {
+      return new _combinator["default"](opts);
+    };
+    exports2.combinator = combinator;
+    var comment = function comment2(opts) {
+      return new _comment["default"](opts);
+    };
+    exports2.comment = comment;
+    var id = function id2(opts) {
+      return new _id["default"](opts);
+    };
+    exports2.id = id;
+    var nesting = function nesting2(opts) {
+      return new _nesting["default"](opts);
+    };
+    exports2.nesting = nesting;
+    var pseudo = function pseudo2(opts) {
+      return new _pseudo["default"](opts);
+    };
+    exports2.pseudo = pseudo;
+    var root = function root2(opts) {
+      return new _root["default"](opts);
+    };
+    exports2.root = root;
+    var selector = function selector2(opts) {
+      return new _selector["default"](opts);
+    };
+    exports2.selector = selector;
+    var string = function string2(opts) {
+      return new _string["default"](opts);
+    };
+    exports2.string = string;
+    var tag = function tag2(opts) {
+      return new _tag["default"](opts);
+    };
+    exports2.tag = tag;
+    var universal = function universal2(opts) {
+      return new _universal["default"](opts);
+    };
+    exports2.universal = universal;
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/guards.js
+var require_guards = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/guards.js"(exports2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2.isComment = exports2.isCombinator = exports2.isClassName = exports2.isAttribute = void 0;
+    exports2.isContainer = isContainer;
+    exports2.isIdentifier = void 0;
+    exports2.isNamespace = isNamespace;
+    exports2.isNesting = void 0;
+    exports2.isNode = isNode;
+    exports2.isPseudo = void 0;
+    exports2.isPseudoClass = isPseudoClass;
+    exports2.isPseudoElement = isPseudoElement;
+    exports2.isUniversal = exports2.isTag = exports2.isString = exports2.isSelector = exports2.isRoot = void 0;
+    var _types = require_types4();
+    var _IS_TYPE;
+    var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);
+    function isNode(node) {
+      return typeof node === "object" && IS_TYPE[node.type];
+    }
+    function isNodeType(type, node) {
+      return isNode(node) && node.type === type;
+    }
+    var isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);
+    exports2.isAttribute = isAttribute;
+    var isClassName = isNodeType.bind(null, _types.CLASS);
+    exports2.isClassName = isClassName;
+    var isCombinator = isNodeType.bind(null, _types.COMBINATOR);
+    exports2.isCombinator = isCombinator;
+    var isComment = isNodeType.bind(null, _types.COMMENT);
+    exports2.isComment = isComment;
+    var isIdentifier = isNodeType.bind(null, _types.ID);
+    exports2.isIdentifier = isIdentifier;
+    var isNesting = isNodeType.bind(null, _types.NESTING);
+    exports2.isNesting = isNesting;
+    var isPseudo = isNodeType.bind(null, _types.PSEUDO);
+    exports2.isPseudo = isPseudo;
+    var isRoot = isNodeType.bind(null, _types.ROOT);
+    exports2.isRoot = isRoot;
+    var isSelector = isNodeType.bind(null, _types.SELECTOR);
+    exports2.isSelector = isSelector;
+    var isString = isNodeType.bind(null, _types.STRING);
+    exports2.isString = isString;
+    var isTag = isNodeType.bind(null, _types.TAG);
+    exports2.isTag = isTag;
+    var isUniversal = isNodeType.bind(null, _types.UNIVERSAL);
+    exports2.isUniversal = isUniversal;
+    function isPseudoElement(node) {
+      return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value.toLowerCase() === ":before" || node.value.toLowerCase() === ":after" || node.value.toLowerCase() === ":first-letter" || node.value.toLowerCase() === ":first-line");
+    }
+    function isPseudoClass(node) {
+      return isPseudo(node) && !isPseudoElement(node);
+    }
+    function isContainer(node) {
+      return !!(isNode(node) && node.walk);
+    }
+    function isNamespace(node) {
+      return isAttribute(node) || isTag(node);
+    }
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/selectors/index.js
+var require_selectors = __commonJS({
+  "node_modules/postcss-selector-parser/dist/selectors/index.js"(exports2) {
+    "use strict";
+    exports2.__esModule = true;
+    var _types = require_types4();
+    Object.keys(_types).forEach(function(key) {
+      if (key === "default" || key === "__esModule") return;
+      if (key in exports2 && exports2[key] === _types[key]) return;
+      exports2[key] = _types[key];
+    });
+    var _constructors = require_constructors();
+    Object.keys(_constructors).forEach(function(key) {
+      if (key === "default" || key === "__esModule") return;
+      if (key in exports2 && exports2[key] === _constructors[key]) return;
+      exports2[key] = _constructors[key];
+    });
+    var _guards = require_guards();
+    Object.keys(_guards).forEach(function(key) {
+      if (key === "default" || key === "__esModule") return;
+      if (key in exports2 && exports2[key] === _guards[key]) return;
+      exports2[key] = _guards[key];
+    });
+  }
+});
+
+// node_modules/postcss-selector-parser/dist/index.js
+var require_dist2 = __commonJS({
+  "node_modules/postcss-selector-parser/dist/index.js"(exports2, module2) {
+    "use strict";
+    exports2.__esModule = true;
+    exports2["default"] = void 0;
+    var _processor = _interopRequireDefault(require_processor3());
+    var selectors = _interopRequireWildcard(require_selectors());
+    function _getRequireWildcardCache(nodeInterop) {
+      if (typeof WeakMap !== "function") return null;
+      var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
+      var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
+      return (_getRequireWildcardCache = function _getRequireWildcardCache2(nodeInterop2) {
+        return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
+      })(nodeInterop);
+    }
+    function _interopRequireWildcard(obj, nodeInterop) {
+      if (!nodeInterop && obj && obj.__esModule) {
+        return obj;
+      }
+      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
+        return { "default": obj };
+      }
+      var cache = _getRequireWildcardCache(nodeInterop);
+      if (cache && cache.has(obj)) {
+        return cache.get(obj);
+      }
+      var newObj = {};
+      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+      for (var key in obj) {
+        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+          if (desc && (desc.get || desc.set)) {
+            Object.defineProperty(newObj, key, desc);
+          } else {
+            newObj[key] = obj[key];
+          }
+        }
+      }
+      newObj["default"] = obj;
+      if (cache) {
+        cache.set(obj, newObj);
+      }
+      return newObj;
+    }
+    function _interopRequireDefault(obj) {
+      return obj && obj.__esModule ? obj : { "default": obj };
+    }
+    var parser = function parser2(processor) {
+      return new _processor["default"](processor);
+    };
+    Object.assign(parser, selectors);
+    delete parser.__esModule;
+    var _default = parser;
+    exports2["default"] = _default;
+    module2.exports = exports2.default;
+  }
+});
+
+// node_modules/postcss-calc/src/parser.js
+var require_parser6 = __commonJS({
+  "node_modules/postcss-calc/src/parser.js"(exports2) {
+    var parser = function() {
+      function JisonParserError(msg, hash) {
+        Object.defineProperty(this, "name", {
+          enumerable: false,
+          writable: false,
+          value: "JisonParserError"
+        });
+        if (msg == null) msg = "???";
+        Object.defineProperty(this, "message", {
+          enumerable: false,
+          writable: true,
+          value: msg
+        });
+        this.hash = hash;
+        var stacktrace;
+        if (hash && hash.exception instanceof Error) {
+          var ex2 = hash.exception;
+          this.message = ex2.message || msg;
+          stacktrace = ex2.stack;
+        }
+        if (!stacktrace) {
+          if (Error.hasOwnProperty("captureStackTrace")) {
+            Error.captureStackTrace(this, this.constructor);
+          } else {
+            stacktrace = new Error(msg).stack;
+          }
+        }
+        if (stacktrace) {
+          Object.defineProperty(this, "stack", {
+            enumerable: false,
+            writable: false,
+            value: stacktrace
+          });
+        }
+      }
+      if (typeof Object.setPrototypeOf === "function") {
+        Object.setPrototypeOf(JisonParserError.prototype, Error.prototype);
+      } else {
+        JisonParserError.prototype = Object.create(Error.prototype);
+      }
+      JisonParserError.prototype.constructor = JisonParserError;
+      JisonParserError.prototype.name = "JisonParserError";
+      function bp(s2) {
+        var rv = [];
+        var p = s2.pop;
+        var r = s2.rule;
+        for (var i = 0, l = p.length; i < l; i++) {
+          rv.push([
+            p[i],
+            r[i]
+          ]);
+        }
+        return rv;
+      }
+      function bda(s2) {
+        var rv = {};
+        var d = s2.idx;
+        var g = s2.goto;
+        for (var i = 0, l = d.length; i < l; i++) {
+          var j = d[i];
+          rv[j] = g[i];
+        }
+        return rv;
+      }
+      function bt(s2) {
+        var rv = [];
+        var d = s2.len;
+        var y = s2.symbol;
+        var t = s2.type;
+        var a = s2.state;
+        var m = s2.mode;
+        var g = s2.goto;
+        for (var i = 0, l = d.length; i < l; i++) {
+          var n = d[i];
+          var q = {};
+          for (var j = 0; j < n; j++) {
+            var z = y.shift();
+            switch (t.shift()) {
+              case 2:
+                q[z] = [
+                  m.shift(),
+                  g.shift()
+                ];
+                break;
+              case 0:
+                q[z] = a.shift();
+                break;
+              default:
+                q[z] = [
+                  3
+                ];
+            }
+          }
+          rv.push(q);
+        }
+        return rv;
+      }
+      function s(c2, l, a) {
+        a = a || 0;
+        for (var i = 0; i < l; i++) {
+          this.push(c2);
+          c2 += a;
+        }
+      }
+      function c(i, l) {
+        i = this.length - i;
+        for (l += i; i < l; i++) {
+          this.push(this[i]);
+        }
+      }
+      function u(a) {
+        var rv = [];
+        for (var i = 0, l = a.length; i < l; i++) {
+          var e = a[i];
+          if (typeof e === "function") {
+            i++;
+            e.apply(rv, a[i]);
+          } else {
+            rv.push(e);
+          }
+        }
+        return rv;
+      }
+      var parser2 = {
+        // Code Generator Information Report
+        // ---------------------------------
+        //
+        // Options:
+        //
+        //   default action mode: ............. ["classic","merge"]
+        //   test-compile action mode: ........ "parser:*,lexer:*"
+        //   try..catch: ...................... true
+        //   default resolve on conflict: ..... true
+        //   on-demand look-ahead: ............ false
+        //   error recovery token skip maximum: 3
+        //   yyerror in parse actions is: ..... NOT recoverable,
+        //   yyerror in lexer actions and other non-fatal lexer are:
+        //   .................................. NOT recoverable,
+        //   debug grammar/output: ............ false
+        //   has partial LR conflict upgrade:   true
+        //   rudimentary token-stack support:   false
+        //   parser table compression mode: ... 2
+        //   export debug tables: ............. false
+        //   export *all* tables: ............. false
+        //   module type: ..................... commonjs
+        //   parser engine type: .............. lalr
+        //   output main() in the module: ..... true
+        //   has user-specified main(): ....... false
+        //   has user-specified require()/import modules for main():
+        //   .................................. false
+        //   number of expected conflicts: .... 0
+        //
+        //
+        // Parser Analysis flags:
+        //
+        //   no significant actions (parser is a language matcher only):
+        //   .................................. false
+        //   uses yyleng: ..................... false
+        //   uses yylineno: ................... false
+        //   uses yytext: ..................... false
+        //   uses yylloc: ..................... false
+        //   uses ParseError API: ............. false
+        //   uses YYERROR: .................... false
+        //   uses YYRECOVERING: ............... false
+        //   uses YYERROK: .................... false
+        //   uses YYCLEARIN: .................. false
+        //   tracks rule values: .............. true
+        //   assigns rule values: ............. true
+        //   uses location tracking: .......... false
+        //   assigns location: ................ false
+        //   uses yystack: .................... false
+        //   uses yysstack: ................... false
+        //   uses yysp: ....................... true
+        //   uses yyrulelength: ............... false
+        //   uses yyMergeLocationInfo API: .... false
+        //   has error recovery: .............. false
+        //   has error reporting: ............. false
+        //
+        // --------- END OF REPORT -----------
+        trace: function no_op_trace() {
+        },
+        JisonParserError,
+        yy: {},
+        options: {
+          type: "lalr",
+          hasPartialLrUpgradeOnConflict: true,
+          errorRecoveryTokenDiscardCount: 3
+        },
+        symbols_: {
+          "$accept": 0,
+          "$end": 1,
+          "ADD": 6,
+          "ANGLE": 12,
+          "CALC": 3,
+          "CHS": 19,
+          "DIV": 9,
+          "EMS": 17,
+          "EOF": 1,
+          "EXS": 18,
+          "FREQ": 14,
+          "FUNCTION": 10,
+          "LENGTH": 11,
+          "LPAREN": 4,
+          "MUL": 8,
+          "NUMBER": 26,
+          "PERCENTAGE": 25,
+          "REMS": 20,
+          "RES": 15,
+          "RPAREN": 5,
+          "SUB": 7,
+          "TIME": 13,
+          "UNKNOWN_DIMENSION": 16,
+          "VHS": 21,
+          "VMAXS": 24,
+          "VMINS": 23,
+          "VWS": 22,
+          "dimension": 30,
+          "error": 2,
+          "expression": 27,
+          "function": 29,
+          "math_expression": 28,
+          "number": 31
+        },
+        terminals_: {
+          1: "EOF",
+          2: "error",
+          3: "CALC",
+          4: "LPAREN",
+          5: "RPAREN",
+          6: "ADD",
+          7: "SUB",
+          8: "MUL",
+          9: "DIV",
+          10: "FUNCTION",
+          11: "LENGTH",
+          12: "ANGLE",
+          13: "TIME",
+          14: "FREQ",
+          15: "RES",
+          16: "UNKNOWN_DIMENSION",
+          17: "EMS",
+          18: "EXS",
+          19: "CHS",
+          20: "REMS",
+          21: "VHS",
+          22: "VWS",
+          23: "VMINS",
+          24: "VMAXS",
+          25: "PERCENTAGE",
+          26: "NUMBER"
+        },
+        TERROR: 2,
+        EOF: 1,
+        // internals: defined here so the object *structure* doesn't get modified by parse() et al,
+        // thus helping JIT compilers like Chrome V8.
+        originalQuoteName: null,
+        originalParseError: null,
+        cleanupAfterParse: null,
+        constructParseErrorInfo: null,
+        yyMergeLocationInfo: null,
+        __reentrant_call_depth: 0,
+        // INTERNAL USE ONLY
+        __error_infos: [],
+        // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup
+        __error_recovery_infos: [],
+        // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup
+        // APIs which will be set up depending on user action code analysis:
+        //yyRecovering: 0,
+        //yyErrOk: 0,
+        //yyClearIn: 0,
+        // Helper APIs
+        // -----------
+        // Helper function which can be overridden by user code later on: put suitable quotes around
+        // literal IDs in a description string.
+        quoteName: function parser_quoteName(id_str) {
+          return '"' + id_str + '"';
+        },
+        // Return the name of the given symbol (terminal or non-terminal) as a string, when available.
+        //
+        // Return NULL when the symbol is unknown to the parser.
+        getSymbolName: function parser_getSymbolName(symbol) {
+          if (this.terminals_[symbol]) {
+            return this.terminals_[symbol];
+          }
+          var s2 = this.symbols_;
+          for (var key in s2) {
+            if (s2[key] === symbol) {
+              return key;
+            }
+          }
+          return null;
+        },
+        // Return a more-or-less human-readable description of the given symbol, when available,
+        // or the symbol itself, serving as its own 'description' for lack of something better to serve up.
+        //
+        // Return NULL when the symbol is unknown to the parser.
+        describeSymbol: function parser_describeSymbol(symbol) {
+          if (symbol !== this.EOF && this.terminal_descriptions_ && this.terminal_descriptions_[symbol]) {
+            return this.terminal_descriptions_[symbol];
+          } else if (symbol === this.EOF) {
+            return "end of input";
+          }
+          var id = this.getSymbolName(symbol);
+          if (id) {
+            return this.quoteName(id);
+          }
+          return null;
+        },
+        // Produce a (more or less) human-readable list of expected tokens at the point of failure.
+        //
+        // The produced list may contain token or token set descriptions instead of the tokens
+        // themselves to help turning this output into something that easier to read by humans
+        // unless `do_not_describe` parameter is set, in which case a list of the raw, *numeric*,
+        // expected terminals and nonterminals is produced.
+        //
+        // The returned list (array) will not contain any duplicate entries.
+        collect_expected_token_set: function parser_collect_expected_token_set(state, do_not_describe) {
+          var TERROR = this.TERROR;
+          var tokenset = [];
+          var check = {};
+          if (!do_not_describe && this.state_descriptions_ && this.state_descriptions_[state]) {
+            return [
+              this.state_descriptions_[state]
+            ];
+          }
+          for (var p in this.table[state]) {
+            p = +p;
+            if (p !== TERROR) {
+              var d = do_not_describe ? p : this.describeSymbol(p);
+              if (d && !check[d]) {
+                tokenset.push(d);
+                check[d] = true;
+              }
+            }
+          }
+          return tokenset;
+        },
+        productions_: bp({
+          pop: u([
+            27,
+            s,
+            [28, 9],
+            29,
+            s,
+            [30, 17],
+            s,
+            [31, 3]
+          ]),
+          rule: u([
+            2,
+            4,
+            s,
+            [3, 5],
+            s,
+            [1, 19],
+            2,
+            2,
+            c,
+            [3, 3]
+          ])
+        }),
+        performAction: function parser__PerformAction(yystate, yysp, yyvstack) {
+          var yy = this.yy;
+          var yyparser = yy.parser;
+          var yylexer = yy.lexer;
+          switch (yystate) {
+            case 0:
+              this.$ = yyvstack[yysp - 1];
+              break;
+            case 1:
+              this.$ = yyvstack[yysp - 1];
+              return yyvstack[yysp - 1];
+              break;
+            case 2:
+              this.$ = yyvstack[yysp - 1];
+              break;
+            case 3:
+            /*! Production::    math_expression : math_expression ADD math_expression */
+            case 4:
+            /*! Production::    math_expression : math_expression SUB math_expression */
+            case 5:
+            /*! Production::    math_expression : math_expression MUL math_expression */
+            case 6:
+              this.$ = { type: "MathExpression", operator: yyvstack[yysp - 1], left: yyvstack[yysp - 2], right: yyvstack[yysp] };
+              break;
+            case 7:
+              this.$ = { type: "ParenthesizedExpression", content: yyvstack[yysp - 1] };
+              break;
+            case 8:
+            /*! Production::    math_expression : function */
+            case 9:
+            /*! Production::    math_expression : dimension */
+            case 10:
+              this.$ = yyvstack[yysp];
+              break;
+            case 11:
+              this.$ = { type: "Function", value: yyvstack[yysp] };
+              break;
+            case 12:
+              this.$ = { type: "LengthValue", value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
+              break;
+            case 13:
+              this.$ = { type: "AngleValue", value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
+              break;
+            case 14:
+              this.$ = { type: "TimeValue", value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
+              break;
+            case 15:
+              this.$ = { type: "FrequencyValue", value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
+              break;
+            case 16:
+              this.$ = { type: "ResolutionValue", value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
+              break;
+            case 17:
+              this.$ = { type: "UnknownDimension", value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
+              break;
+            case 18:
+              this.$ = { type: "EmValue", value: parseFloat(yyvstack[yysp]), unit: "em" };
+              break;
+            case 19:
+              this.$ = { type: "ExValue", value: parseFloat(yyvstack[yysp]), unit: "ex" };
+              break;
+            case 20:
+              this.$ = { type: "ChValue", value: parseFloat(yyvstack[yysp]), unit: "ch" };
+              break;
+            case 21:
+              this.$ = { type: "RemValue", value: parseFloat(yyvstack[yysp]), unit: "rem" };
+              break;
+            case 22:
+              this.$ = { type: "VhValue", value: parseFloat(yyvstack[yysp]), unit: "vh" };
+              break;
+            case 23:
+              this.$ = { type: "VwValue", value: parseFloat(yyvstack[yysp]), unit: "vw" };
+              break;
+            case 24:
+              this.$ = { type: "VminValue", value: parseFloat(yyvstack[yysp]), unit: "vmin" };
+              break;
+            case 25:
+              this.$ = { type: "VmaxValue", value: parseFloat(yyvstack[yysp]), unit: "vmax" };
+              break;
+            case 26:
+              this.$ = { type: "PercentageValue", value: parseFloat(yyvstack[yysp]), unit: "%" };
+              break;
+            case 27:
+              var prev = yyvstack[yysp];
+              this.$ = prev;
+              break;
+            case 28:
+              var prev = yyvstack[yysp];
+              prev.value *= -1;
+              this.$ = prev;
+              break;
+            case 29:
+            /*! Production::    number : NUMBER */
+            case 30:
+              this.$ = { type: "Number", value: parseFloat(yyvstack[yysp]) };
+              break;
+            case 31:
+              this.$ = { type: "Number", value: parseFloat(yyvstack[yysp]) * -1 };
+              break;
+          }
+        },
+        table: bt({
+          len: u([
+            26,
+            1,
+            5,
+            1,
+            25,
+            s,
+            [0, 19],
+            19,
+            19,
+            0,
+            0,
+            s,
+            [25, 5],
+            5,
+            0,
+            0,
+            18,
+            18,
+            0,
+            0,
+            6,
+            6,
+            0,
+            0,
+            c,
+            [11, 3]
+          ]),
+          symbol: u([
+            3,
+            4,
+            6,
+            7,
+            s,
+            [10, 22, 1],
+            1,
+            1,
+            s,
+            [6, 4, 1],
+            4,
+            c,
+            [33, 21],
+            c,
+            [32, 4],
+            6,
+            7,
+            c,
+            [22, 16],
+            30,
+            c,
+            [19, 19],
+            c,
+            [63, 25],
+            c,
+            [25, 100],
+            s,
+            [5, 5, 1],
+            c,
+            [149, 17],
+            c,
+            [167, 18],
+            30,
+            1,
+            c,
+            [42, 5],
+            c,
+            [6, 6],
+            c,
+            [5, 5]
+          ]),
+          type: u([
+            s,
+            [2, 21],
+            s,
+            [0, 5],
+            1,
+            s,
+            [2, 27],
+            s,
+            [0, 4],
+            c,
+            [22, 19],
+            c,
+            [19, 37],
+            c,
+            [63, 25],
+            c,
+            [25, 103],
+            c,
+            [148, 19],
+            c,
+            [18, 18]
+          ]),
+          state: u([
+            1,
+            2,
+            5,
+            6,
+            7,
+            33,
+            c,
+            [4, 3],
+            34,
+            38,
+            40,
+            c,
+            [6, 3],
+            41,
+            c,
+            [4, 3],
+            42,
+            c,
+            [4, 3],
+            43,
+            c,
+            [4, 3],
+            44,
+            c,
+            [22, 5]
+          ]),
+          mode: u([
+            s,
+            [1, 228],
+            s,
+            [2, 4],
+            c,
+            [6, 8],
+            s,
+            [1, 5]
+          ]),
+          goto: u([
+            3,
+            4,
+            24,
+            25,
+            s,
+            [8, 16, 1],
+            s,
+            [26, 7, 1],
+            c,
+            [27, 21],
+            36,
+            37,
+            c,
+            [18, 15],
+            35,
+            c,
+            [18, 17],
+            39,
+            c,
+            [57, 21],
+            c,
+            [21, 84],
+            45,
+            c,
+            [168, 4],
+            c,
+            [128, 17],
+            c,
+            [17, 17],
+            s,
+            [3, 4],
+            30,
+            31,
+            s,
+            [4, 4],
+            30,
+            31,
+            46,
+            c,
+            [51, 4]
+          ])
+        }),
+        defaultActions: bda({
+          idx: u([
+            s,
+            [5, 19, 1],
+            26,
+            27,
+            34,
+            35,
+            38,
+            39,
+            42,
+            43,
+            45,
+            46
+          ]),
+          goto: u([
+            s,
+            [8, 19, 1],
+            29,
+            1,
+            27,
+            30,
+            28,
+            31,
+            5,
+            6,
+            7,
+            2
+          ])
+        }),
+        parseError: function parseError(str, hash, ExceptionClass) {
+          if (hash.recoverable) {
+            if (typeof this.trace === "function") {
+              this.trace(str);
+            }
+            hash.destroy();
+          } else {
+            if (typeof this.trace === "function") {
+              this.trace(str);
+            }
+            if (!ExceptionClass) {
+              ExceptionClass = this.JisonParserError;
+            }
+            throw new ExceptionClass(str, hash);
+          }
+        },
+        parse: function parse(input) {
+          var self2 = this;
+          var stack = new Array(128);
+          var sstack = new Array(128);
+          var vstack = new Array(128);
+          var table = this.table;
+          var sp = 0;
+          var symbol = 0;
+          var TERROR = this.TERROR;
+          var EOF = this.EOF;
+          var ERROR_RECOVERY_TOKEN_DISCARD_COUNT = this.options.errorRecoveryTokenDiscardCount | 0 || 3;
+          var NO_ACTION = [
+            0,
+            47
+            /* === table.length :: ensures that anyone using this new state will fail dramatically! */
+          ];
+          var lexer2;
+          if (this.__lexer__) {
+            lexer2 = this.__lexer__;
+          } else {
+            lexer2 = this.__lexer__ = Object.create(this.lexer);
+          }
+          var sharedState_yy = {
+            parseError: void 0,
+            quoteName: void 0,
+            lexer: void 0,
+            parser: void 0,
+            pre_parse: void 0,
+            post_parse: void 0,
+            pre_lex: void 0,
+            post_lex: void 0
+            // WARNING: must be written this way for the code expanders to work correctly in both ES5 and ES6 modes!
+          };
+          var ASSERT;
+          if (typeof assert !== "function") {
+            ASSERT = function JisonAssert(cond, msg) {
+              if (!cond) {
+                throw new Error("assertion failed: " + (msg || "***"));
+              }
+            };
+          } else {
+            ASSERT = assert;
+          }
+          this.yyGetSharedState = function yyGetSharedState() {
+            return sharedState_yy;
+          };
+          function shallow_copy_noclobber(dst, src) {
+            for (var k in src) {
+              if (typeof dst[k] === "undefined" && Object.prototype.hasOwnProperty.call(src, k)) {
+                dst[k] = src[k];
+              }
+            }
+          }
+          shallow_copy_noclobber(sharedState_yy, this.yy);
+          sharedState_yy.lexer = lexer2;
+          sharedState_yy.parser = this;
+          if (typeof sharedState_yy.parseError === "function") {
+            this.parseError = function parseErrorAlt(str, hash, ExceptionClass) {
+              if (!ExceptionClass) {
+                ExceptionClass = this.JisonParserError;
+              }
+              return sharedState_yy.parseError.call(this, str, hash, ExceptionClass);
+            };
+          } else {
+            this.parseError = this.originalParseError;
+          }
+          if (typeof sharedState_yy.quoteName === "function") {
+            this.quoteName = function quoteNameAlt(id_str) {
+              return sharedState_yy.quoteName.call(this, id_str);
+            };
+          } else {
+            this.quoteName = this.originalQuoteName;
+          }
+          this.cleanupAfterParse = function parser_cleanupAfterParse(resultValue, invoke_post_methods, do_not_nuke_errorinfos) {
+            var rv;
+            if (invoke_post_methods) {
+              var hash;
+              if (sharedState_yy.post_parse || this.post_parse) {
+                hash = this.constructParseErrorInfo(null, null, null, false);
+              }
+              if (sharedState_yy.post_parse) {
+                rv = sharedState_yy.post_parse.call(this, sharedState_yy, resultValue, hash);
+                if (typeof rv !== "undefined") resultValue = rv;
+              }
+              if (this.post_parse) {
+                rv = this.post_parse.call(this, sharedState_yy, resultValue, hash);
+                if (typeof rv !== "undefined") resultValue = rv;
+              }
+              if (hash && hash.destroy) {
+                hash.destroy();
+              }
+            }
+            if (this.__reentrant_call_depth > 1) return resultValue;
+            if (lexer2.cleanupAfterLex) {
+              lexer2.cleanupAfterLex(do_not_nuke_errorinfos);
+            }
+            if (sharedState_yy) {
+              sharedState_yy.lexer = void 0;
+              sharedState_yy.parser = void 0;
+              if (lexer2.yy === sharedState_yy) {
+                lexer2.yy = void 0;
+              }
+            }
+            sharedState_yy = void 0;
+            this.parseError = this.originalParseError;
+            this.quoteName = this.originalQuoteName;
+            stack.length = 0;
+            sstack.length = 0;
+            vstack.length = 0;
+            sp = 0;
+            if (!do_not_nuke_errorinfos) {
+              for (var i = this.__error_infos.length - 1; i >= 0; i--) {
+                var el = this.__error_infos[i];
+                if (el && typeof el.destroy === "function") {
+                  el.destroy();
+                }
+              }
+              this.__error_infos.length = 0;
+            }
+            return resultValue;
+          };
+          this.constructParseErrorInfo = function parser_constructParseErrorInfo(msg, ex, expected2, recoverable) {
+            var pei = {
+              errStr: msg,
+              exception: ex,
+              text: lexer2.match,
+              value: lexer2.yytext,
+              token: this.describeSymbol(symbol) || symbol,
+              token_id: symbol,
+              line: lexer2.yylineno,
+              expected: expected2,
+              recoverable,
+              state,
+              action,
+              new_state: newState,
+              symbol_stack: stack,
+              state_stack: sstack,
+              value_stack: vstack,
+              stack_pointer: sp,
+              yy: sharedState_yy,
+              lexer: lexer2,
+              parser: this,
+              // and make sure the error info doesn't stay due to potential
+              // ref cycle via userland code manipulations.
+              // These would otherwise all be memory leak opportunities!
+              //
+              // Note that only array and object references are nuked as those
+              // constitute the set of elements which can produce a cyclic ref.
+              // The rest of the members is kept intact as they are harmless.
+              destroy: function destructParseErrorInfo() {
+                var rec = !!this.recoverable;
+                for (var key in this) {
+                  if (this.hasOwnProperty(key) && typeof key === "object") {
+                    this[key] = void 0;
+                  }
+                }
+                this.recoverable = rec;
+              }
+            };
+            this.__error_infos.push(pei);
+            return pei;
+          };
+          function getNonTerminalFromCode(symbol2) {
+            var tokenName = self2.getSymbolName(symbol2);
+            if (!tokenName) {
+              tokenName = symbol2;
+            }
+            return tokenName;
+          }
+          function stdLex() {
+            var token = lexer2.lex();
+            if (typeof token !== "number") {
+              token = self2.symbols_[token] || token;
+            }
+            return token || EOF;
+          }
+          function fastLex() {
+            var token = lexer2.fastLex();
+            if (typeof token !== "number") {
+              token = self2.symbols_[token] || token;
+            }
+            return token || EOF;
+          }
+          var lex = stdLex;
+          var state, action, r, t;
+          var yyval = {
+            $: true,
+            _$: void 0,
+            yy: sharedState_yy
+          };
+          var p;
+          var yyrulelen;
+          var this_production;
+          var newState;
+          var retval = false;
+          try {
+            this.__reentrant_call_depth++;
+            lexer2.setInput(input, sharedState_yy);
+            if (typeof lexer2.canIUse === "function") {
+              var lexerInfo = lexer2.canIUse();
+              if (lexerInfo.fastLex && typeof fastLex === "function") {
+                lex = fastLex;
+              }
+            }
+            vstack[sp] = null;
+            sstack[sp] = 0;
+            stack[sp] = 0;
+            ++sp;
+            if (this.pre_parse) {
+              this.pre_parse.call(this, sharedState_yy);
+            }
+            if (sharedState_yy.pre_parse) {
+              sharedState_yy.pre_parse.call(this, sharedState_yy);
+            }
+            newState = sstack[sp - 1];
+            for (; ; ) {
+              state = newState;
+              if (this.defaultActions[state]) {
+                action = 2;
+                newState = this.defaultActions[state];
+              } else {
+                if (!symbol) {
+                  symbol = lex();
+                }
+                t = table[state] && table[state][symbol] || NO_ACTION;
+                newState = t[1];
+                action = t[0];
+                if (!action) {
+                  var errStr;
+                  var errSymbolDescr = this.describeSymbol(symbol) || symbol;
+                  var expected = this.collect_expected_token_set(state);
+                  if (typeof lexer2.yylineno === "number") {
+                    errStr = "Parse error on line " + (lexer2.yylineno + 1) + ": ";
+                  } else {
+                    errStr = "Parse error: ";
+                  }
+                  if (typeof lexer2.showPosition === "function") {
+                    errStr += "\n" + lexer2.showPosition(79 - 10, 10) + "\n";
+                  }
+                  if (expected.length) {
+                    errStr += "Expecting " + expected.join(", ") + ", got unexpected " + errSymbolDescr;
+                  } else {
+                    errStr += "Unexpected " + errSymbolDescr;
+                  }
+                  p = this.constructParseErrorInfo(errStr, null, expected, false);
+                  r = this.parseError(p.errStr, p, this.JisonParserError);
+                  if (typeof r !== "undefined") {
+                    retval = r;
+                  }
+                  break;
+                }
+              }
+              switch (action) {
+                // catch misc. parse failures:
+                default:
+                  if (action instanceof Array) {
+                    p = this.constructParseErrorInfo("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol, null, null, false);
+                    r = this.parseError(p.errStr, p, this.JisonParserError);
+                    if (typeof r !== "undefined") {
+                      retval = r;
+                    }
+                    break;
+                  }
+                  p = this.constructParseErrorInfo("Parsing halted. No viable error recovery approach available due to internal system failure.", null, null, false);
+                  r = this.parseError(p.errStr, p, this.JisonParserError);
+                  if (typeof r !== "undefined") {
+                    retval = r;
+                  }
+                  break;
+                // shift:
+                case 1:
+                  stack[sp] = symbol;
+                  vstack[sp] = lexer2.yytext;
+                  sstack[sp] = newState;
+                  ++sp;
+                  symbol = 0;
+                  continue;
+                // reduce:
+                case 2:
+                  this_production = this.productions_[newState - 1];
+                  yyrulelen = this_production[1];
+                  r = this.performAction.call(yyval, newState, sp - 1, vstack);
+                  if (typeof r !== "undefined") {
+                    retval = r;
+                    break;
+                  }
+                  sp -= yyrulelen;
+                  var ntsymbol = this_production[0];
+                  stack[sp] = ntsymbol;
+                  vstack[sp] = yyval.$;
+                  newState = table[sstack[sp - 1]][ntsymbol];
+                  sstack[sp] = newState;
+                  ++sp;
+                  continue;
+                // accept:
+                case 3:
+                  if (sp !== -2) {
+                    retval = true;
+                    sp--;
+                    if (typeof vstack[sp] !== "undefined") {
+                      retval = vstack[sp];
+                    }
+                  }
+                  break;
+              }
+              break;
+            }
+          } catch (ex) {
+            if (ex instanceof this.JisonParserError) {
+              throw ex;
+            } else if (lexer2 && typeof lexer2.JisonLexerError === "function" && ex instanceof lexer2.JisonLexerError) {
+              throw ex;
+            }
+            p = this.constructParseErrorInfo("Parsing aborted due to exception.", ex, null, false);
+            retval = false;
+            r = this.parseError(p.errStr, p, this.JisonParserError);
+            if (typeof r !== "undefined") {
+              retval = r;
+            }
+          } finally {
+            retval = this.cleanupAfterParse(retval, true, true);
+            this.__reentrant_call_depth--;
+          }
+          return retval;
+        }
+      };
+      parser2.originalParseError = parser2.parseError;
+      parser2.originalQuoteName = parser2.quoteName;
+      var lexer = function() {
+        function JisonLexerError(msg, hash) {
+          Object.defineProperty(this, "name", {
+            enumerable: false,
+            writable: false,
+            value: "JisonLexerError"
+          });
+          if (msg == null)
+            msg = "???";
+          Object.defineProperty(this, "message", {
+            enumerable: false,
+            writable: true,
+            value: msg
+          });
+          this.hash = hash;
+          var stacktrace;
+          if (hash && hash.exception instanceof Error) {
+            var ex2 = hash.exception;
+            this.message = ex2.message || msg;
+            stacktrace = ex2.stack;
+          }
+          if (!stacktrace) {
+            if (Error.hasOwnProperty("captureStackTrace")) {
+              Error.captureStackTrace(this, this.constructor);
+            } else {
+              stacktrace = new Error(msg).stack;
+            }
+          }
+          if (stacktrace) {
+            Object.defineProperty(this, "stack", {
+              enumerable: false,
+              writable: false,
+              value: stacktrace
+            });
+          }
+        }
+        if (typeof Object.setPrototypeOf === "function") {
+          Object.setPrototypeOf(JisonLexerError.prototype, Error.prototype);
+        } else {
+          JisonLexerError.prototype = Object.create(Error.prototype);
+        }
+        JisonLexerError.prototype.constructor = JisonLexerError;
+        JisonLexerError.prototype.name = "JisonLexerError";
+        var lexer2 = {
+          // Code Generator Information Report
+          // ---------------------------------
+          //
+          // Options:
+          //
+          //   backtracking: .................... false
+          //   location.ranges: ................. false
+          //   location line+column tracking: ... true
+          //
+          //
+          // Forwarded Parser Analysis flags:
+          //
+          //   uses yyleng: ..................... false
+          //   uses yylineno: ................... false
+          //   uses yytext: ..................... false
+          //   uses yylloc: ..................... false
+          //   uses lexer values: ............... true / true
+          //   location tracking: ............... false
+          //   location assignment: ............. false
+          //
+          //
+          // Lexer Analysis flags:
+          //
+          //   uses yyleng: ..................... ???
+          //   uses yylineno: ................... ???
+          //   uses yytext: ..................... ???
+          //   uses yylloc: ..................... ???
+          //   uses ParseError API: ............. ???
+          //   uses yyerror: .................... ???
+          //   uses location tracking & editing:  ???
+          //   uses more() API: ................. ???
+          //   uses unput() API: ................ ???
+          //   uses reject() API: ............... ???
+          //   uses less() API: ................. ???
+          //   uses display APIs pastInput(), upcomingInput(), showPosition():
+          //        ............................. ???
+          //   uses describeYYLLOC() API: ....... ???
+          //
+          // --------- END OF REPORT -----------
+          EOF: 1,
+          ERROR: 2,
+          // JisonLexerError: JisonLexerError,        /// <-- injected by the code generator
+          // options: {},                             /// <-- injected by the code generator
+          // yy: ...,                                 /// <-- injected by setInput()
+          __currentRuleSet__: null,
+          /// INTERNAL USE ONLY: internal rule set cache for the current lexer state  
+          __error_infos: [],
+          /// INTERNAL USE ONLY: the set of lexErrorInfo objects created since the last cleanup  
+          __decompressed: false,
+          /// INTERNAL USE ONLY: mark whether the lexer instance has been 'unfolded' completely and is now ready for use  
+          done: false,
+          /// INTERNAL USE ONLY  
+          _backtrack: false,
+          /// INTERNAL USE ONLY  
+          _input: "",
+          /// INTERNAL USE ONLY  
+          _more: false,
+          /// INTERNAL USE ONLY  
+          _signaled_error_token: false,
+          /// INTERNAL USE ONLY  
+          conditionStack: [],
+          /// INTERNAL USE ONLY; managed via `pushState()`, `popState()`, `topState()` and `stateStackSize()`  
+          match: "",
+          /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction. `match` is identical to `yytext` except that this one still contains the matched input string after `lexer.performAction()` has been invoked, where userland code MAY have changed/replaced the `yytext` value entirely!  
+          matched: "",
+          /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks entire input which has been matched so far  
+          matches: false,
+          /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks RE match result for last (successful) match attempt  
+          yytext: "",
+          /// ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction; this value is transferred to the parser as the 'token value' when the parser consumes the lexer token produced through a call to the `lex()` API.  
+          offset: 0,
+          /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks the 'cursor position' in the input string, i.e. the number of characters matched so far  
+          yyleng: 0,
+          /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: length of matched input for the token under construction (`yytext`)  
+          yylineno: 0,
+          /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: 'line number' at which the token under construction is located  
+          yylloc: null,
+          /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks location info (lines + columns) for the token under construction  
+          /**
+           * INTERNAL USE: construct a suitable error info hash object instance for `parseError`.
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          constructLexErrorInfo: function lexer_constructLexErrorInfo(msg, recoverable, show_input_position) {
+            msg = "" + msg;
+            if (show_input_position == void 0) {
+              show_input_position = !(msg.indexOf("\n") > 0 && msg.indexOf("^") > 0);
+            }
+            if (this.yylloc && show_input_position) {
+              if (typeof this.prettyPrintRange === "function") {
+                var pretty_src = this.prettyPrintRange(this.yylloc);
+                if (!/\n\s*$/.test(msg)) {
+                  msg += "\n";
+                }
+                msg += "\n  Erroneous area:\n" + this.prettyPrintRange(this.yylloc);
+              } else if (typeof this.showPosition === "function") {
+                var pos_str = this.showPosition();
+                if (pos_str) {
+                  if (msg.length && msg[msg.length - 1] !== "\n" && pos_str[0] !== "\n") {
+                    msg += "\n" + pos_str;
+                  } else {
+                    msg += pos_str;
+                  }
+                }
+              }
+            }
+            var pei = {
+              errStr: msg,
+              recoverable: !!recoverable,
+              text: this.match,
+              // This one MAY be empty; userland code should use the `upcomingInput` API to obtain more text which follows the 'lexer cursor position'...  
+              token: null,
+              line: this.yylineno,
+              loc: this.yylloc,
+              yy: this.yy,
+              lexer: this,
+              /**
+               * and make sure the error info doesn't stay due to potential
+               * ref cycle via userland code manipulations.
+               * These would otherwise all be memory leak opportunities!
+               * 
+               * Note that only array and object references are nuked as those
+               * constitute the set of elements which can produce a cyclic ref.
+               * The rest of the members is kept intact as they are harmless.
+               * 
+               * @public
+               * @this {LexErrorInfo}
+               */
+              destroy: function destructLexErrorInfo() {
+                var rec = !!this.recoverable;
+                for (var key in this) {
+                  if (this.hasOwnProperty(key) && typeof key === "object") {
+                    this[key] = void 0;
+                  }
+                }
+                this.recoverable = rec;
+              }
+            };
+            this.__error_infos.push(pei);
+            return pei;
+          },
+          /**
+           * handler which is invoked when a lexer error occurs.
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          parseError: function lexer_parseError(str, hash, ExceptionClass) {
+            if (!ExceptionClass) {
+              ExceptionClass = this.JisonLexerError;
+            }
+            if (this.yy) {
+              if (this.yy.parser && typeof this.yy.parser.parseError === "function") {
+                return this.yy.parser.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;
+              } else if (typeof this.yy.parseError === "function") {
+                return this.yy.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;
+              }
+            }
+            throw new ExceptionClass(str, hash);
+          },
+          /**
+           * method which implements `yyerror(str, ...args)` functionality for use inside lexer actions.
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          yyerror: function yyError(str) {
+            var lineno_msg = "";
+            if (this.yylloc) {
+              lineno_msg = " on line " + (this.yylineno + 1);
+            }
+            var p = this.constructLexErrorInfo(
+              "Lexical error" + lineno_msg + ": " + str,
+              this.options.lexerErrorsAreRecoverable
+            );
+            var args = Array.prototype.slice.call(arguments, 1);
+            if (args.length) {
+              p.extra_error_attributes = args;
+            }
+            return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
+          },
+          /**
+           * final cleanup function for when we have completed lexing the input;
+           * make it an API so that external code can use this one once userland
+           * code has decided it's time to destroy any lingering lexer error
+           * hash object instances and the like: this function helps to clean
+           * up these constructs, which *may* carry cyclic references which would
+           * otherwise prevent the instances from being properly and timely
+           * garbage-collected, i.e. this function helps prevent memory leaks!
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          cleanupAfterLex: function lexer_cleanupAfterLex(do_not_nuke_errorinfos) {
+            this.setInput("", {});
+            if (!do_not_nuke_errorinfos) {
+              for (var i = this.__error_infos.length - 1; i >= 0; i--) {
+                var el = this.__error_infos[i];
+                if (el && typeof el.destroy === "function") {
+                  el.destroy();
+                }
+              }
+              this.__error_infos.length = 0;
+            }
+            return this;
+          },
+          /**
+           * clear the lexer token context; intended for internal use only
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          clear: function lexer_clear() {
+            this.yytext = "";
+            this.yyleng = 0;
+            this.match = "";
+            this.matches = false;
+            this._more = false;
+            this._backtrack = false;
+            var col = this.yylloc ? this.yylloc.last_column : 0;
+            this.yylloc = {
+              first_line: this.yylineno + 1,
+              first_column: col,
+              last_line: this.yylineno + 1,
+              last_column: col,
+              range: [this.offset, this.offset]
+            };
+          },
+          /**
+           * resets the lexer, sets new input
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          setInput: function lexer_setInput(input, yy) {
+            this.yy = yy || this.yy || {};
+            if (!this.__decompressed) {
+              var rules = this.rules;
+              for (var i = 0, len = rules.length; i < len; i++) {
+                var rule_re = rules[i];
+                if (typeof rule_re === "number") {
+                  rules[i] = rules[rule_re];
+                }
+              }
+              var conditions = this.conditions;
+              for (var k in conditions) {
+                var spec = conditions[k];
+                var rule_ids = spec.rules;
+                var len = rule_ids.length;
+                var rule_regexes = new Array(len + 1);
+                var rule_new_ids = new Array(len + 1);
+                for (var i = 0; i < len; i++) {
+                  var idx = rule_ids[i];
+                  var rule_re = rules[idx];
+                  rule_regexes[i + 1] = rule_re;
+                  rule_new_ids[i + 1] = idx;
+                }
+                spec.rules = rule_new_ids;
+                spec.__rule_regexes = rule_regexes;
+                spec.__rule_count = len;
+              }
+              this.__decompressed = true;
+            }
+            this._input = input || "";
+            this.clear();
+            this._signaled_error_token = false;
+            this.done = false;
+            this.yylineno = 0;
+            this.matched = "";
+            this.conditionStack = ["INITIAL"];
+            this.__currentRuleSet__ = null;
+            this.yylloc = {
+              first_line: 1,
+              first_column: 0,
+              last_line: 1,
+              last_column: 0,
+              range: [0, 0]
+            };
+            this.offset = 0;
+            return this;
+          },
+          /**
+           * edit the remaining input via user-specified callback.
+           * This can be used to forward-adjust the input-to-parse, 
+           * e.g. inserting macro expansions and alike in the
+           * input which has yet to be lexed.
+           * The behaviour of this API contrasts the `unput()` et al
+           * APIs as those act on the *consumed* input, while this
+           * one allows one to manipulate the future, without impacting
+           * the current `yyloc` cursor location or any history. 
+           * 
+           * Use this API to help implement C-preprocessor-like
+           * `#include` statements, etc.
+           * 
+           * The provided callback must be synchronous and is
+           * expected to return the edited input (string).
+           *
+           * The `cpsArg` argument value is passed to the callback
+           * as-is.
+           *
+           * `callback` interface: 
+           * `function callback(input, cpsArg)`
+           * 
+           * - `input` will carry the remaining-input-to-lex string
+           *   from the lexer.
+           * - `cpsArg` is `cpsArg` passed into this API.
+           * 
+           * The `this` reference for the callback will be set to
+           * reference this lexer instance so that userland code
+           * in the callback can easily and quickly access any lexer
+           * API. 
+           *
+           * When the callback returns a non-string-type falsey value,
+           * we assume the callback did not edit the input and we
+           * will using the input as-is.
+           *
+           * When the callback returns a non-string-type value, it
+           * is converted to a string for lexing via the `"" + retval`
+           * operation. (See also why: http://2ality.com/2012/03/converting-to-string.html 
+           * -- that way any returned object's `toValue()` and `toString()`
+           * methods will be invoked in a proper/desirable order.)
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          editRemainingInput: function lexer_editRemainingInput(callback, cpsArg) {
+            var rv = callback.call(this, this._input, cpsArg);
+            if (typeof rv !== "string") {
+              if (rv) {
+                this._input = "" + rv;
+              }
+            } else {
+              this._input = rv;
+            }
+            return this;
+          },
+          /**
+           * consumes and returns one char from the input
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          input: function lexer_input() {
+            if (!this._input) {
+              return null;
+            }
+            var ch = this._input[0];
+            this.yytext += ch;
+            this.yyleng++;
+            this.offset++;
+            this.match += ch;
+            this.matched += ch;
+            var slice_len = 1;
+            var lines = false;
+            if (ch === "\n") {
+              lines = true;
+            } else if (ch === "\r") {
+              lines = true;
+              var ch2 = this._input[1];
+              if (ch2 === "\n") {
+                slice_len++;
+                ch += ch2;
+                this.yytext += ch2;
+                this.yyleng++;
+                this.offset++;
+                this.match += ch2;
+                this.matched += ch2;
+                this.yylloc.range[1]++;
+              }
+            }
+            if (lines) {
+              this.yylineno++;
+              this.yylloc.last_line++;
+              this.yylloc.last_column = 0;
+            } else {
+              this.yylloc.last_column++;
+            }
+            this.yylloc.range[1]++;
+            this._input = this._input.slice(slice_len);
+            return ch;
+          },
+          /**
+           * unshifts one char (or an entire string) into the input
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          unput: function lexer_unput(ch) {
+            var len = ch.length;
+            var lines = ch.split(/(?:\r\n?|\n)/g);
+            this._input = ch + this._input;
+            this.yytext = this.yytext.substr(0, this.yytext.length - len);
+            this.yyleng = this.yytext.length;
+            this.offset -= len;
+            this.match = this.match.substr(0, this.match.length - len);
+            this.matched = this.matched.substr(0, this.matched.length - len);
+            if (lines.length > 1) {
+              this.yylineno -= lines.length - 1;
+              this.yylloc.last_line = this.yylineno + 1;
+              var pre = this.match;
+              var pre_lines = pre.split(/(?:\r\n?|\n)/g);
+              if (pre_lines.length === 1) {
+                pre = this.matched;
+                pre_lines = pre.split(/(?:\r\n?|\n)/g);
+              }
+              this.yylloc.last_column = pre_lines[pre_lines.length - 1].length;
+            } else {
+              this.yylloc.last_column -= len;
+            }
+            this.yylloc.range[1] = this.yylloc.range[0] + this.yyleng;
+            this.done = false;
+            return this;
+          },
+          /**
+           * cache matched text and append it on next action
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          more: function lexer_more() {
+            this._more = true;
+            return this;
+          },
+          /**
+           * signal the lexer that this rule fails to match the input, so the
+           * next matching rule (regex) should be tested instead.
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          reject: function lexer_reject() {
+            if (this.options.backtrack_lexer) {
+              this._backtrack = true;
+            } else {
+              var lineno_msg = "";
+              if (this.yylloc) {
+                lineno_msg = " on line " + (this.yylineno + 1);
+              }
+              var p = this.constructLexErrorInfo(
+                "Lexical error" + lineno_msg + ": You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).",
+                false
+              );
+              this._signaled_error_token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
+            }
+            return this;
+          },
+          /**
+           * retain first n characters of the match
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          less: function lexer_less(n) {
+            return this.unput(this.match.slice(n));
+          },
+          /**
+           * return (part of the) already matched input, i.e. for error
+           * messages.
+           * 
+           * Limit the returned string length to `maxSize` (default: 20).
+           * 
+           * Limit the returned string to the `maxLines` number of lines of
+           * input (default: 1).
+           * 
+           * Negative limit values equal *unlimited*.
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          pastInput: function lexer_pastInput(maxSize, maxLines) {
+            var past = this.matched.substring(0, this.matched.length - this.match.length);
+            if (maxSize < 0)
+              maxSize = past.length;
+            else if (!maxSize)
+              maxSize = 20;
+            if (maxLines < 0)
+              maxLines = past.length;
+            else if (!maxLines)
+              maxLines = 1;
+            past = past.substr(-maxSize * 2 - 2);
+            var a = past.replace(/\r\n|\r/g, "\n").split("\n");
+            a = a.slice(-maxLines);
+            past = a.join("\n");
+            if (past.length > maxSize) {
+              past = "..." + past.substr(-maxSize);
+            }
+            return past;
+          },
+          /**
+           * return (part of the) upcoming input, i.e. for error messages.
+           * 
+           * Limit the returned string length to `maxSize` (default: 20).
+           * 
+           * Limit the returned string to the `maxLines` number of lines of input (default: 1).
+           * 
+           * Negative limit values equal *unlimited*.
+           *
+           * > ### NOTE ###
+           * >
+           * > *"upcoming input"* is defined as the whole of the both
+           * > the *currently lexed* input, together with any remaining input
+           * > following that. *"currently lexed"* input is the input 
+           * > already recognized by the lexer but not yet returned with
+           * > the lexer token. This happens when you are invoking this API
+           * > from inside any lexer rule action code block. 
+           * >
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          upcomingInput: function lexer_upcomingInput(maxSize, maxLines) {
+            var next = this.match;
+            if (maxSize < 0)
+              maxSize = next.length + this._input.length;
+            else if (!maxSize)
+              maxSize = 20;
+            if (maxLines < 0)
+              maxLines = maxSize;
+            else if (!maxLines)
+              maxLines = 1;
+            if (next.length < maxSize * 2 + 2) {
+              next += this._input.substring(0, maxSize * 2 + 2);
+            }
+            var a = next.replace(/\r\n|\r/g, "\n").split("\n");
+            a = a.slice(0, maxLines);
+            next = a.join("\n");
+            if (next.length > maxSize) {
+              next = next.substring(0, maxSize) + "...";
+            }
+            return next;
+          },
+          /**
+           * return a string which displays the character position where the
+           * lexing error occurred, i.e. for error messages
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          showPosition: function lexer_showPosition(maxPrefix, maxPostfix) {
+            var pre = this.pastInput(maxPrefix).replace(/\s/g, " ");
+            var c2 = new Array(pre.length + 1).join("-");
+            return pre + this.upcomingInput(maxPostfix).replace(/\s/g, " ") + "\n" + c2 + "^";
+          },
+          /**
+           * return an YYLLOC info object derived off the given context (actual, preceding, following, current).
+           * Use this method when the given `actual` location is not guaranteed to exist (i.e. when
+           * it MAY be NULL) and you MUST have a valid location info object anyway:
+           * then we take the given context of the `preceding` and `following` locations, IFF those are available,
+           * and reconstruct the `actual` location info from those.
+           * If this fails, the heuristic is to take the `current` location, IFF available.
+           * If this fails as well, we assume the sought location is at/around the current lexer position
+           * and then produce that one as a response. DO NOTE that these heuristic/derived location info
+           * values MAY be inaccurate!
+           *
+           * NOTE: `deriveLocationInfo()` ALWAYS produces a location info object *copy* of `actual`, not just
+           * a *reference* hence all input location objects can be assumed to be 'constant' (function has no side-effects).
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          deriveLocationInfo: function lexer_deriveYYLLOC(actual, preceding, following, current) {
+            var loc = {
+              first_line: 1,
+              first_column: 0,
+              last_line: 1,
+              last_column: 0,
+              range: [0, 0]
+            };
+            if (actual) {
+              loc.first_line = actual.first_line | 0;
+              loc.last_line = actual.last_line | 0;
+              loc.first_column = actual.first_column | 0;
+              loc.last_column = actual.last_column | 0;
+              if (actual.range) {
+                loc.range[0] = actual.range[0] | 0;
+                loc.range[1] = actual.range[1] | 0;
+              }
+            }
+            if (loc.first_line <= 0 || loc.last_line < loc.first_line) {
+              if (loc.first_line <= 0 && preceding) {
+                loc.first_line = preceding.last_line | 0;
+                loc.first_column = preceding.last_column | 0;
+                if (preceding.range) {
+                  loc.range[0] = actual.range[1] | 0;
+                }
+              }
+              if ((loc.last_line <= 0 || loc.last_line < loc.first_line) && following) {
+                loc.last_line = following.first_line | 0;
+                loc.last_column = following.first_column | 0;
+                if (following.range) {
+                  loc.range[1] = actual.range[0] | 0;
+                }
+              }
+              if (loc.first_line <= 0 && current && (loc.last_line <= 0 || current.last_line <= loc.last_line)) {
+                loc.first_line = current.first_line | 0;
+                loc.first_column = current.first_column | 0;
+                if (current.range) {
+                  loc.range[0] = current.range[0] | 0;
+                }
+              }
+              if (loc.last_line <= 0 && current && (loc.first_line <= 0 || current.first_line >= loc.first_line)) {
+                loc.last_line = current.last_line | 0;
+                loc.last_column = current.last_column | 0;
+                if (current.range) {
+                  loc.range[1] = current.range[1] | 0;
+                }
+              }
+            }
+            if (loc.last_line <= 0) {
+              if (loc.first_line <= 0) {
+                loc.first_line = this.yylloc.first_line;
+                loc.last_line = this.yylloc.last_line;
+                loc.first_column = this.yylloc.first_column;
+                loc.last_column = this.yylloc.last_column;
+                loc.range[0] = this.yylloc.range[0];
+                loc.range[1] = this.yylloc.range[1];
+              } else {
+                loc.last_line = this.yylloc.last_line;
+                loc.last_column = this.yylloc.last_column;
+                loc.range[1] = this.yylloc.range[1];
+              }
+            }
+            if (loc.first_line <= 0) {
+              loc.first_line = loc.last_line;
+              loc.first_column = 0;
+              loc.range[1] = loc.range[0];
+            }
+            if (loc.first_column < 0) {
+              loc.first_column = 0;
+            }
+            if (loc.last_column < 0) {
+              loc.last_column = loc.first_column > 0 ? loc.first_column : 80;
+            }
+            return loc;
+          },
+          /**
+           * return a string which displays the lines & columns of input which are referenced 
+           * by the given location info range, plus a few lines of context.
+           * 
+           * This function pretty-prints the indicated section of the input, with line numbers 
+           * and everything!
+           * 
+           * This function is very useful to provide highly readable error reports, while
+           * the location range may be specified in various flexible ways:
+           * 
+           * - `loc` is the location info object which references the area which should be
+           *   displayed and 'marked up': these lines & columns of text are marked up by `^`
+           *   characters below each character in the entire input range.
+           * 
+           * - `context_loc` is the *optional* location info object which instructs this
+           *   pretty-printer how much *leading* context should be displayed alongside
+           *   the area referenced by `loc`. This can help provide context for the displayed
+           *   error, etc.
+           * 
+           *   When this location info is not provided, a default context of 3 lines is
+           *   used.
+           * 
+           * - `context_loc2` is another *optional* location info object, which serves
+           *   a similar purpose to `context_loc`: it specifies the amount of *trailing*
+           *   context lines to display in the pretty-print output.
+           * 
+           *   When this location info is not provided, a default context of 1 line only is
+           *   used.
+           * 
+           * Special Notes:
+           * 
+           * - when the `loc`-indicated range is very large (about 5 lines or more), then
+           *   only the first and last few lines of this block are printed while a
+           *   `...continued...` message will be printed between them.
+           * 
+           *   This serves the purpose of not printing a huge amount of text when the `loc`
+           *   range happens to be huge: this way a manageable & readable output results
+           *   for arbitrary large ranges.
+           * 
+           * - this function can display lines of input which whave not yet been lexed.
+           *   `prettyPrintRange()` can access the entire input!
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          prettyPrintRange: function lexer_prettyPrintRange(loc, context_loc, context_loc2) {
+            loc = this.deriveLocationInfo(loc, context_loc, context_loc2);
+            const CONTEXT = 3;
+            const CONTEXT_TAIL = 1;
+            const MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT = 2;
+            var input = this.matched + this._input;
+            var lines = input.split("\n");
+            var l0 = Math.max(1, context_loc ? context_loc.first_line : loc.first_line - CONTEXT);
+            var l1 = Math.max(1, context_loc2 ? context_loc2.last_line : loc.last_line + CONTEXT_TAIL);
+            var lineno_display_width = 1 + Math.log10(l1 | 1) | 0;
+            var ws_prefix = new Array(lineno_display_width).join(" ");
+            var nonempty_line_indexes = [];
+            var rv = lines.slice(l0 - 1, l1 + 1).map(function injectLineNumber(line, index) {
+              var lno = index + l0;
+              var lno_pfx = (ws_prefix + lno).substr(-lineno_display_width);
+              var rv2 = lno_pfx + ": " + line;
+              var errpfx = new Array(lineno_display_width + 1).join("^");
+              var offset = 2 + 1;
+              var len = 0;
+              if (lno === loc.first_line) {
+                offset += loc.first_column;
+                len = Math.max(
+                  2,
+                  (lno === loc.last_line ? loc.last_column : line.length) - loc.first_column + 1
+                );
+              } else if (lno === loc.last_line) {
+                len = Math.max(2, loc.last_column + 1);
+              } else if (lno > loc.first_line && lno < loc.last_line) {
+                len = Math.max(2, line.length + 1);
+              }
+              if (len) {
+                var lead = new Array(offset).join(".");
+                var mark = new Array(len).join("^");
+                rv2 += "\n" + errpfx + lead + mark;
+                if (line.trim().length > 0) {
+                  nonempty_line_indexes.push(index);
+                }
+              }
+              rv2 = rv2.replace(/\t/g, " ");
+              return rv2;
+            });
+            if (nonempty_line_indexes.length > 2 * MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT) {
+              var clip_start = nonempty_line_indexes[MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT - 1] + 1;
+              var clip_end = nonempty_line_indexes[nonempty_line_indexes.length - MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT] - 1;
+              var intermediate_line = new Array(lineno_display_width + 1).join(" ") + "  (...continued...)";
+              intermediate_line += "\n" + new Array(lineno_display_width + 1).join("-") + "  (---------------)";
+              rv.splice(clip_start, clip_end - clip_start + 1, intermediate_line);
+            }
+            return rv.join("\n");
+          },
+          /**
+           * helper function, used to produce a human readable description as a string, given
+           * the input `yylloc` location object.
+           * 
+           * Set `display_range_too` to TRUE to include the string character index position(s)
+           * in the description if the `yylloc.range` is available.
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          describeYYLLOC: function lexer_describe_yylloc(yylloc, display_range_too) {
+            var l1 = yylloc.first_line;
+            var l2 = yylloc.last_line;
+            var c1 = yylloc.first_column;
+            var c2 = yylloc.last_column;
+            var dl = l2 - l1;
+            var dc = c2 - c1;
+            var rv;
+            if (dl === 0) {
+              rv = "line " + l1 + ", ";
+              if (dc <= 1) {
+                rv += "column " + c1;
+              } else {
+                rv += "columns " + c1 + " .. " + c2;
+              }
+            } else {
+              rv = "lines " + l1 + "(column " + c1 + ") .. " + l2 + "(column " + c2 + ")";
+            }
+            if (yylloc.range && display_range_too) {
+              var r1 = yylloc.range[0];
+              var r2 = yylloc.range[1] - 1;
+              if (r2 <= r1) {
+                rv += " {String Offset: " + r1 + "}";
+              } else {
+                rv += " {String Offset range: " + r1 + " .. " + r2 + "}";
+              }
+            }
+            return rv;
+          },
+          /**
+           * test the lexed token: return FALSE when not a match, otherwise return token.
+           * 
+           * `match` is supposed to be an array coming out of a regex match, i.e. `match[0]`
+           * contains the actually matched text string.
+           * 
+           * Also move the input cursor forward and update the match collectors:
+           * 
+           * - `yytext`
+           * - `yyleng`
+           * - `match`
+           * - `matches`
+           * - `yylloc`
+           * - `offset`
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          test_match: function lexer_test_match(match, indexed_rule) {
+            var token, lines, backup, match_str, match_str_len;
+            if (this.options.backtrack_lexer) {
+              backup = {
+                yylineno: this.yylineno,
+                yylloc: {
+                  first_line: this.yylloc.first_line,
+                  last_line: this.yylloc.last_line,
+                  first_column: this.yylloc.first_column,
+                  last_column: this.yylloc.last_column,
+                  range: this.yylloc.range.slice(0)
+                },
+                yytext: this.yytext,
+                match: this.match,
+                matches: this.matches,
+                matched: this.matched,
+                yyleng: this.yyleng,
+                offset: this.offset,
+                _more: this._more,
+                _input: this._input,
+                //_signaled_error_token: this._signaled_error_token,
+                yy: this.yy,
+                conditionStack: this.conditionStack.slice(0),
+                done: this.done
+              };
+            }
+            match_str = match[0];
+            match_str_len = match_str.length;
+            lines = match_str.split(/(?:\r\n?|\n)/g);
+            if (lines.length > 1) {
+              this.yylineno += lines.length - 1;
+              this.yylloc.last_line = this.yylineno + 1;
+              this.yylloc.last_column = lines[lines.length - 1].length;
+            } else {
+              this.yylloc.last_column += match_str_len;
+            }
+            this.yytext += match_str;
+            this.match += match_str;
+            this.matched += match_str;
+            this.matches = match;
+            this.yyleng = this.yytext.length;
+            this.yylloc.range[1] += match_str_len;
+            this.offset += match_str_len;
+            this._more = false;
+            this._backtrack = false;
+            this._input = this._input.slice(match_str_len);
+            token = this.performAction.call(
+              this,
+              this.yy,
+              indexed_rule,
+              this.conditionStack[this.conditionStack.length - 1]
+              /* = YY_START */
+            );
+            if (this.done && this._input) {
+              this.done = false;
+            }
+            if (token) {
+              return token;
+            } else if (this._backtrack) {
+              for (var k in backup) {
+                this[k] = backup[k];
+              }
+              this.__currentRuleSet__ = null;
+              return false;
+            } else if (this._signaled_error_token) {
+              token = this._signaled_error_token;
+              this._signaled_error_token = false;
+              return token;
+            }
+            return false;
+          },
+          /**
+           * return next match in input
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          next: function lexer_next() {
+            if (this.done) {
+              this.clear();
+              return this.EOF;
+            }
+            if (!this._input) {
+              this.done = true;
+            }
+            var token, match, tempMatch, index;
+            if (!this._more) {
+              this.clear();
+            }
+            var spec = this.__currentRuleSet__;
+            if (!spec) {
+              spec = this.__currentRuleSet__ = this._currentRules();
+              if (!spec || !spec.rules) {
+                var lineno_msg = "";
+                if (this.options.trackPosition) {
+                  lineno_msg = " on line " + (this.yylineno + 1);
+                }
+                var p = this.constructLexErrorInfo(
+                  "Internal lexer engine error" + lineno_msg + ': The lex grammar programmer pushed a non-existing condition name "' + this.topState() + '"; this is a fatal error and should be reported to the application programmer team!',
+                  false
+                );
+                return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
+              }
+            }
+            var rule_ids = spec.rules;
+            var regexes = spec.__rule_regexes;
+            var len = spec.__rule_count;
+            for (var i = 1; i <= len; i++) {
+              tempMatch = this._input.match(regexes[i]);
+              if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+                match = tempMatch;
+                index = i;
+                if (this.options.backtrack_lexer) {
+                  token = this.test_match(tempMatch, rule_ids[i]);
+                  if (token !== false) {
+                    return token;
+                  } else if (this._backtrack) {
+                    match = void 0;
+                    continue;
+                  } else {
+                    return false;
+                  }
+                } else if (!this.options.flex) {
+                  break;
+                }
+              }
+            }
+            if (match) {
+              token = this.test_match(match, rule_ids[index]);
+              if (token !== false) {
+                return token;
+              }
+              return false;
+            }
+            if (!this._input) {
+              this.done = true;
+              this.clear();
+              return this.EOF;
+            } else {
+              var lineno_msg = "";
+              if (this.options.trackPosition) {
+                lineno_msg = " on line " + (this.yylineno + 1);
+              }
+              var p = this.constructLexErrorInfo(
+                "Lexical error" + lineno_msg + ": Unrecognized text.",
+                this.options.lexerErrorsAreRecoverable
+              );
+              var pendingInput = this._input;
+              var activeCondition = this.topState();
+              var conditionStackDepth = this.conditionStack.length;
+              token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
+              if (token === this.ERROR) {
+                if (!this.matches && // and make sure the input has been modified/consumed ...
+                pendingInput === this._input && // ...or the lexer state has been modified significantly enough
+                // to merit a non-consuming error handling action right now.
+                activeCondition === this.topState() && conditionStackDepth === this.conditionStack.length) {
+                  this.input();
+                }
+              }
+              return token;
+            }
+          },
+          /**
+           * return next match that has a token
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          lex: function lexer_lex() {
+            var r;
+            if (typeof this.pre_lex === "function") {
+              r = this.pre_lex.call(this, 0);
+            }
+            if (typeof this.options.pre_lex === "function") {
+              r = this.options.pre_lex.call(this, r) || r;
+            }
+            if (this.yy && typeof this.yy.pre_lex === "function") {
+              r = this.yy.pre_lex.call(this, r) || r;
+            }
+            while (!r) {
+              r = this.next();
+            }
+            if (this.yy && typeof this.yy.post_lex === "function") {
+              r = this.yy.post_lex.call(this, r) || r;
+            }
+            if (typeof this.options.post_lex === "function") {
+              r = this.options.post_lex.call(this, r) || r;
+            }
+            if (typeof this.post_lex === "function") {
+              r = this.post_lex.call(this, r) || r;
+            }
+            return r;
+          },
+          /**
+           * return next match that has a token. Identical to the `lex()` API but does not invoke any of the 
+           * `pre_lex()` nor any of the `post_lex()` callbacks.
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          fastLex: function lexer_fastLex() {
+            var r;
+            while (!r) {
+              r = this.next();
+            }
+            return r;
+          },
+          /**
+           * return info about the lexer state that can help a parser or other lexer API user to use the
+           * most efficient means available. This API is provided to aid run-time performance for larger
+           * systems which employ this lexer.
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          canIUse: function lexer_canIUse() {
+            var rv = {
+              fastLex: !(typeof this.pre_lex === "function" || typeof this.options.pre_lex === "function" || this.yy && typeof this.yy.pre_lex === "function" || this.yy && typeof this.yy.post_lex === "function" || typeof this.options.post_lex === "function" || typeof this.post_lex === "function") && typeof this.fastLex === "function"
+            };
+            return rv;
+          },
+          /**
+           * backwards compatible alias for `pushState()`;
+           * the latter is symmetrical with `popState()` and we advise to use
+           * those APIs in any modern lexer code, rather than `begin()`.
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          begin: function lexer_begin(condition) {
+            return this.pushState(condition);
+          },
+          /**
+           * activates a new lexer condition state (pushes the new lexer
+           * condition state onto the condition stack)
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          pushState: function lexer_pushState(condition) {
+            this.conditionStack.push(condition);
+            this.__currentRuleSet__ = null;
+            return this;
+          },
+          /**
+           * pop the previously active lexer condition state off the condition
+           * stack
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          popState: function lexer_popState() {
+            var n = this.conditionStack.length - 1;
+            if (n > 0) {
+              this.__currentRuleSet__ = null;
+              return this.conditionStack.pop();
+            } else {
+              return this.conditionStack[0];
+            }
+          },
+          /**
+           * return the currently active lexer condition state; when an index
+           * argument is provided it produces the N-th previous condition state,
+           * if available
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          topState: function lexer_topState(n) {
+            n = this.conditionStack.length - 1 - Math.abs(n || 0);
+            if (n >= 0) {
+              return this.conditionStack[n];
+            } else {
+              return "INITIAL";
+            }
+          },
+          /**
+           * (internal) determine the lexer rule set which is active for the
+           * currently active lexer condition state
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          _currentRules: function lexer__currentRules() {
+            if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+              return this.conditions[this.conditionStack[this.conditionStack.length - 1]];
+            } else {
+              return this.conditions["INITIAL"];
+            }
+          },
+          /**
+           * return the number of states currently on the stack
+           * 
+           * @public
+           * @this {RegExpLexer}
+           */
+          stateStackSize: function lexer_stateStackSize() {
+            return this.conditionStack.length;
+          },
+          options: {
+            trackPosition: true,
+            caseInsensitive: true
+          },
+          JisonLexerError,
+          performAction: function lexer__performAction(yy, yyrulenumber, YY_START) {
+            var yy_ = this;
+            var YYSTATE = YY_START;
+            switch (yyrulenumber) {
+              case 0:
+                break;
+              default:
+                return this.simpleCaseActionClusters[yyrulenumber];
+            }
+          },
+          simpleCaseActionClusters: {
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (-(webkit|moz)-)?calc\b */
+            1: 3,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       [a-z][a-z0-9-]*\s*\((?:(?:"(?:\\.|[^\"\\])*"|'(?:\\.|[^\'\\])*')|\([^)]*\)|[^\(\)]*)*\) */
+            2: 10,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       \* */
+            3: 8,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       \/ */
+            4: 9,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       \+ */
+            5: 6,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       - */
+            6: 7,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)em\b */
+            7: 17,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)ex\b */
+            8: 18,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)ch\b */
+            9: 19,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)rem\b */
+            10: 20,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)vw\b */
+            11: 22,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)vh\b */
+            12: 21,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)vmin\b */
+            13: 23,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)vmax\b */
+            14: 24,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)cm\b */
+            15: 11,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)mm\b */
+            16: 11,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)Q\b */
+            17: 11,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)in\b */
+            18: 11,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)pt\b */
+            19: 11,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)pc\b */
+            20: 11,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)px\b */
+            21: 11,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)deg\b */
+            22: 12,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)grad\b */
+            23: 12,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)rad\b */
+            24: 12,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)turn\b */
+            25: 12,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)s\b */
+            26: 13,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)ms\b */
+            27: 13,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)Hz\b */
+            28: 14,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)kHz\b */
+            29: 14,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)dpi\b */
+            30: 15,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)dpcm\b */
+            31: 15,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)dppx\b */
+            32: 15,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)% */
+            33: 25,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)\b */
+            34: 26,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)-?([a-zA-Z_]|[\240-\377]|(\\[0-9a-fA-F]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-fA-F]))([a-zA-Z0-9_-]|[\240-\377]|(\\[0-9a-fA-F]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-fA-F]))*\b */
+            35: 16,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       \( */
+            36: 4,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       \) */
+            37: 5,
+            /*! Conditions:: INITIAL */
+            /*! Rule::       $ */
+            38: 1
+          },
+          rules: [
+            /*  0: */
+            /^(?:\s+)/i,
+            /*  1: */
+            /^(?:(-(webkit|moz)-)?calc\b)/i,
+            /*  2: */
+            /^(?:[a-z][\d\-a-z]*\s*\((?:(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')|\([^)]*\)|[^()]*)*\))/i,
+            /*  3: */
+            /^(?:\*)/i,
+            /*  4: */
+            /^(?:\/)/i,
+            /*  5: */
+            /^(?:\+)/i,
+            /*  6: */
+            /^(?:-)/i,
+            /*  7: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)em\b)/i,
+            /*  8: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)ex\b)/i,
+            /*  9: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)ch\b)/i,
+            /* 10: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)rem\b)/i,
+            /* 11: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)vw\b)/i,
+            /* 12: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)vh\b)/i,
+            /* 13: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)vmin\b)/i,
+            /* 14: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)vmax\b)/i,
+            /* 15: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)cm\b)/i,
+            /* 16: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)mm\b)/i,
+            /* 17: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)Q\b)/i,
+            /* 18: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)in\b)/i,
+            /* 19: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)pt\b)/i,
+            /* 20: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)pc\b)/i,
+            /* 21: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)px\b)/i,
+            /* 22: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)deg\b)/i,
+            /* 23: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)grad\b)/i,
+            /* 24: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)rad\b)/i,
+            /* 25: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)turn\b)/i,
+            /* 26: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)s\b)/i,
+            /* 27: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)ms\b)/i,
+            /* 28: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)Hz\b)/i,
+            /* 29: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)kHz\b)/i,
+            /* 30: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dpi\b)/i,
+            /* 31: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dpcm\b)/i,
+            /* 32: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dppx\b)/i,
+            /* 33: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)%)/i,
+            /* 34: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)\b)/i,
+            /* 35: */
+            /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)-?([^\W\d]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))([\w\-]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))*\b)/i,
+            /* 36: */
+            /^(?:\()/i,
+            /* 37: */
+            /^(?:\))/i,
+            /* 38: */
+            /^(?:$)/i
+          ],
+          conditions: {
+            "INITIAL": {
+              rules: [
+                0,
+                1,
+                2,
+                3,
+                4,
+                5,
+                6,
+                7,
+                8,
+                9,
+                10,
+                11,
+                12,
+                13,
+                14,
+                15,
+                16,
+                17,
+                18,
+                19,
+                20,
+                21,
+                22,
+                23,
+                24,
+                25,
+                26,
+                27,
+                28,
+                29,
+                30,
+                31,
+                32,
+                33,
+                34,
+                35,
+                36,
+                37,
+                38
+              ],
+              inclusive: true
+            }
+          }
+        };
+        return lexer2;
+      }();
+      parser2.lexer = lexer;
+      function Parser() {
+        this.yy = {};
+      }
+      Parser.prototype = parser2;
+      parser2.Parser = Parser;
+      return new Parser();
+    }();
+    if (typeof require !== "undefined" && typeof exports2 !== "undefined") {
+      exports2.parser = parser;
+      exports2.Parser = parser.Parser;
+      exports2.parse = function() {
+        return parser.parse.apply(parser, arguments);
+      };
+    }
+  }
+});
+
+// node_modules/postcss-calc/src/lib/convertUnit.js
+var require_convertUnit = __commonJS({
+  "node_modules/postcss-calc/src/lib/convertUnit.js"(exports2, module2) {
+    "use strict";
+    var conversions = {
+      // Absolute length units
+      px: {
+        px: 1,
+        cm: 96 / 2.54,
+        mm: 96 / 25.4,
+        q: 96 / 101.6,
+        in: 96,
+        pt: 96 / 72,
+        pc: 16
+      },
+      cm: {
+        px: 2.54 / 96,
+        cm: 1,
+        mm: 0.1,
+        q: 0.025,
+        in: 2.54,
+        pt: 2.54 / 72,
+        pc: 2.54 / 6
+      },
+      mm: {
+        px: 25.4 / 96,
+        cm: 10,
+        mm: 1,
+        q: 0.25,
+        in: 25.4,
+        pt: 25.4 / 72,
+        pc: 25.4 / 6
+      },
+      q: {
+        px: 101.6 / 96,
+        cm: 40,
+        mm: 4,
+        q: 1,
+        in: 101.6,
+        pt: 101.6 / 72,
+        pc: 101.6 / 6
+      },
+      in: {
+        px: 1 / 96,
+        cm: 1 / 2.54,
+        mm: 1 / 25.4,
+        q: 1 / 101.6,
+        in: 1,
+        pt: 1 / 72,
+        pc: 1 / 6
+      },
+      pt: {
+        px: 0.75,
+        cm: 72 / 2.54,
+        mm: 72 / 25.4,
+        q: 72 / 101.6,
+        in: 72,
+        pt: 1,
+        pc: 12
+      },
+      pc: {
+        px: 0.0625,
+        cm: 6 / 2.54,
+        mm: 6 / 25.4,
+        q: 6 / 101.6,
+        in: 6,
+        pt: 6 / 72,
+        pc: 1
+      },
+      // Angle units
+      deg: {
+        deg: 1,
+        grad: 0.9,
+        rad: 180 / Math.PI,
+        turn: 360
+      },
+      grad: {
+        deg: 400 / 360,
+        grad: 1,
+        rad: 200 / Math.PI,
+        turn: 400
+      },
+      rad: {
+        deg: Math.PI / 180,
+        grad: Math.PI / 200,
+        rad: 1,
+        turn: Math.PI * 2
+      },
+      turn: {
+        deg: 1 / 360,
+        grad: 25e-4,
+        rad: 0.5 / Math.PI,
+        turn: 1
+      },
+      // Duration units
+      s: {
+        s: 1,
+        ms: 1e-3
+      },
+      ms: {
+        s: 1e3,
+        ms: 1
+      },
+      // Frequency units
+      hz: {
+        hz: 1,
+        khz: 1e3
+      },
+      khz: {
+        hz: 1e-3,
+        khz: 1
+      },
+      // Resolution units
+      dpi: {
+        dpi: 1,
+        dpcm: 1 / 2.54,
+        dppx: 1 / 96
+      },
+      dpcm: {
+        dpi: 2.54,
+        dpcm: 1,
+        dppx: 2.54 / 96
+      },
+      dppx: {
+        dpi: 96,
+        dpcm: 96 / 2.54,
+        dppx: 1
+      }
+    };
+    function convertUnit(value, sourceUnit, targetUnit, precision) {
+      const sourceUnitNormalized = sourceUnit.toLowerCase();
+      const targetUnitNormalized = targetUnit.toLowerCase();
+      if (!conversions[targetUnitNormalized]) {
+        throw new Error("Cannot convert to " + targetUnit);
+      }
+      if (!conversions[targetUnitNormalized][sourceUnitNormalized]) {
+        throw new Error("Cannot convert from " + sourceUnit + " to " + targetUnit);
+      }
+      const converted = conversions[targetUnitNormalized][sourceUnitNormalized] * value;
+      if (precision !== false) {
+        precision = Math.pow(10, Math.ceil(precision) || 5);
+        return Math.round(converted * precision) / precision;
+      }
+      return converted;
+    }
+    module2.exports = convertUnit;
+  }
+});
+
+// node_modules/postcss-calc/src/lib/reducer.js
+var require_reducer = __commonJS({
+  "node_modules/postcss-calc/src/lib/reducer.js"(exports2, module2) {
+    "use strict";
+    var convertUnit = require_convertUnit();
+    function isValueType(node) {
+      switch (node.type) {
+        case "LengthValue":
+        case "AngleValue":
+        case "TimeValue":
+        case "FrequencyValue":
+        case "ResolutionValue":
+        case "EmValue":
+        case "ExValue":
+        case "ChValue":
+        case "RemValue":
+        case "VhValue":
+        case "VwValue":
+        case "VminValue":
+        case "VmaxValue":
+        case "PercentageValue":
+        case "Number":
+          return true;
+      }
+      return false;
+    }
+    function flip(operator) {
+      return operator === "+" ? "-" : "+";
+    }
+    function isAddSubOperator(operator) {
+      return operator === "+" || operator === "-";
+    }
+    function collectAddSubItems(preOperator, node, collected, precision) {
+      if (!isAddSubOperator(preOperator)) {
+        throw new Error(`invalid operator ${preOperator}`);
+      }
+      if (isValueType(node)) {
+        const itemIndex = collected.findIndex((x) => x.node.type === node.type);
+        if (itemIndex >= 0) {
+          if (node.value === 0) {
+            return;
+          }
+          const otherValueNode = (
+            /** @type import('../parser').ValueExpression*/
+            collected[itemIndex].node
+          );
+          const { left: reducedNode, right: current } = convertNodesUnits(
+            otherValueNode,
+            node,
+            precision
+          );
+          if (collected[itemIndex].preOperator === "-") {
+            collected[itemIndex].preOperator = "+";
+            reducedNode.value *= -1;
+          }
+          if (preOperator === "+") {
+            reducedNode.value += current.value;
+          } else {
+            reducedNode.value -= current.value;
+          }
+          if (reducedNode.value >= 0) {
+            collected[itemIndex] = { node: reducedNode, preOperator: "+" };
+          } else {
+            reducedNode.value *= -1;
+            collected[itemIndex] = { node: reducedNode, preOperator: "-" };
+          }
+        } else {
+          if (node.value >= 0) {
+            collected.push({ node, preOperator });
+          } else {
+            node.value *= -1;
+            collected.push({ node, preOperator: flip(preOperator) });
+          }
+        }
+      } else if (node.type === "MathExpression") {
+        if (isAddSubOperator(node.operator)) {
+          collectAddSubItems(preOperator, node.left, collected, precision);
+          const collectRightOperator = preOperator === "-" ? flip(node.operator) : node.operator;
+          collectAddSubItems(
+            collectRightOperator,
+            node.right,
+            collected,
+            precision
+          );
+        } else {
+          const reducedNode = reduce(node, precision);
+          if (reducedNode.type !== "MathExpression" || isAddSubOperator(reducedNode.operator)) {
+            collectAddSubItems(preOperator, reducedNode, collected, precision);
+          } else {
+            collected.push({ node: reducedNode, preOperator });
+          }
+        }
+      } else if (node.type === "ParenthesizedExpression") {
+        collectAddSubItems(preOperator, node.content, collected, precision);
+      } else {
+        collected.push({ node, preOperator });
+      }
+    }
+    function reduceAddSubExpression(node, precision) {
+      const collected = [];
+      collectAddSubItems("+", node, collected, precision);
+      const withoutZeroItem = collected.filter(
+        (item) => !(isValueType(item.node) && item.node.value === 0)
+      );
+      const firstNonZeroItem = withoutZeroItem[0];
+      if (!firstNonZeroItem || firstNonZeroItem.preOperator === "-" && !isValueType(firstNonZeroItem.node)) {
+        const firstZeroItem = collected.find(
+          (item) => isValueType(item.node) && item.node.value === 0
+        );
+        if (firstZeroItem) {
+          withoutZeroItem.unshift(firstZeroItem);
+        }
+      }
+      if (withoutZeroItem[0].preOperator === "-" && isValueType(withoutZeroItem[0].node)) {
+        withoutZeroItem[0].node.value *= -1;
+        withoutZeroItem[0].preOperator = "+";
+      }
+      let root = withoutZeroItem[0].node;
+      for (let i = 1; i < withoutZeroItem.length; i++) {
+        root = {
+          type: "MathExpression",
+          operator: withoutZeroItem[i].preOperator,
+          left: root,
+          right: withoutZeroItem[i].node
+        };
+      }
+      return root;
+    }
+    function reduceDivisionExpression(node) {
+      if (!isValueType(node.right)) {
+        return node;
+      }
+      if (node.right.type !== "Number") {
+        throw new Error(`Cannot divide by "${node.right.unit}", number expected`);
+      }
+      return applyNumberDivision(node.left, node.right.value);
+    }
+    function applyNumberDivision(node, divisor) {
+      if (divisor === 0) {
+        throw new Error("Cannot divide by zero");
+      }
+      if (isValueType(node)) {
+        node.value /= divisor;
+        return node;
+      }
+      if (node.type === "MathExpression" && isAddSubOperator(node.operator)) {
+        return {
+          type: "MathExpression",
+          operator: node.operator,
+          left: applyNumberDivision(node.left, divisor),
+          right: applyNumberDivision(node.right, divisor)
+        };
+      }
+      return {
+        type: "MathExpression",
+        operator: "/",
+        left: node,
+        right: {
+          type: "Number",
+          value: divisor
+        }
+      };
+    }
+    function reduceMultiplicationExpression(node) {
+      if (node.right.type === "Number") {
+        return applyNumberMultiplication(node.left, node.right.value);
+      }
+      if (node.left.type === "Number") {
+        return applyNumberMultiplication(node.right, node.left.value);
+      }
+      return node;
+    }
+    function applyNumberMultiplication(node, multiplier) {
+      if (isValueType(node)) {
+        node.value *= multiplier;
+        return node;
+      }
+      if (node.type === "MathExpression" && isAddSubOperator(node.operator)) {
+        return {
+          type: "MathExpression",
+          operator: node.operator,
+          left: applyNumberMultiplication(node.left, multiplier),
+          right: applyNumberMultiplication(node.right, multiplier)
+        };
+      }
+      return {
+        type: "MathExpression",
+        operator: "*",
+        left: node,
+        right: {
+          type: "Number",
+          value: multiplier
+        }
+      };
+    }
+    function convertNodesUnits(left, right, precision) {
+      switch (left.type) {
+        case "LengthValue":
+        case "AngleValue":
+        case "TimeValue":
+        case "FrequencyValue":
+        case "ResolutionValue":
+          if (right.type === left.type && right.unit && left.unit) {
+            const converted = convertUnit(
+              right.value,
+              right.unit,
+              left.unit,
+              precision
+            );
+            right = {
+              type: left.type,
+              value: converted,
+              unit: left.unit
+            };
+          }
+          return { left, right };
+        default:
+          return { left, right };
+      }
+    }
+    function includesNoCssProperties(node) {
+      return node.content.type !== "Function" && (node.content.type !== "MathExpression" || node.content.right.type !== "Function" && node.content.left.type !== "Function");
+    }
+    function reduce(node, precision) {
+      if (node.type === "MathExpression") {
+        if (isAddSubOperator(node.operator)) {
+          return reduceAddSubExpression(node, precision);
+        }
+        node.left = reduce(node.left, precision);
+        node.right = reduce(node.right, precision);
+        switch (node.operator) {
+          case "/":
+            return reduceDivisionExpression(node);
+          case "*":
+            return reduceMultiplicationExpression(node);
+        }
+        return node;
+      }
+      if (node.type === "ParenthesizedExpression") {
+        if (includesNoCssProperties(node)) {
+          return reduce(node.content, precision);
+        }
+      }
+      return node;
+    }
+    module2.exports = reduce;
+  }
+});
+
+// node_modules/postcss-calc/src/lib/stringifier.js
+var require_stringifier3 = __commonJS({
+  "node_modules/postcss-calc/src/lib/stringifier.js"(exports2, module2) {
+    "use strict";
+    var order = {
+      "*": 0,
+      "/": 0,
+      "+": 1,
+      "-": 1
+    };
+    function round(value, prec) {
+      if (prec !== false) {
+        const precision = Math.pow(10, prec);
+        return Math.round(value * precision) / precision;
+      }
+      return value;
+    }
+    function stringify(node, prec) {
+      switch (node.type) {
+        case "MathExpression": {
+          const { left, right, operator: op } = node;
+          let str = "";
+          if (left.type === "MathExpression" && order[op] < order[left.operator]) {
+            str += `(${stringify(left, prec)})`;
+          } else {
+            str += stringify(left, prec);
+          }
+          str += order[op] ? ` ${node.operator} ` : node.operator;
+          if (right.type === "MathExpression" && order[op] < order[right.operator]) {
+            str += `(${stringify(right, prec)})`;
+          } else {
+            str += stringify(right, prec);
+          }
+          return str;
+        }
+        case "Number":
+          return round(node.value, prec).toString();
+        case "Function":
+          return node.value.toString();
+        case "ParenthesizedExpression":
+          return `(${stringify(node.content, prec)})`;
+        default:
+          return round(node.value, prec) + node.unit;
+      }
+    }
+    module2.exports = function(calc, node, originalValue, options, result, item) {
+      let str = stringify(node, options.precision);
+      const shouldPrintCalc = node.type === "MathExpression" || node.type === "Function" || node.type === "ParenthesizedExpression";
+      if (shouldPrintCalc) {
+        if (node.type === "ParenthesizedExpression") {
+          str = `${calc}${str}`;
+        } else {
+          str = `${calc}(${str})`;
+        }
+        if (options.warnWhenCannotResolve) {
+          result.warn("Could not reduce expression: " + originalValue, {
+            plugin: "postcss-calc",
+            node: item
+          });
+        }
+      }
+      return str;
+    };
+  }
+});
+
+// node_modules/postcss-calc/src/lib/transform.js
+var require_transform = __commonJS({
+  "node_modules/postcss-calc/src/lib/transform.js"(exports2, module2) {
+    "use strict";
+    var selectorParser = require_dist2();
+    var valueParser = require_lib();
+    var { parser } = require_parser6();
+    var reducer = require_reducer();
+    var stringifier = require_stringifier3();
+    var MATCH_CALC = /((?:-(moz|webkit)-)?calc)/i;
+    function transformValue(value, options, result, item) {
+      return valueParser(value).walk((node) => {
+        if (node.type !== "function" || !MATCH_CALC.test(node.value)) {
+          return;
+        }
+        const contents = valueParser.stringify(node.nodes);
+        const ast = parser.parse(contents);
+        const reducedAst = reducer(ast, options.precision);
+        node.type = "word";
+        node.value = stringifier(
+          node.value,
+          reducedAst,
+          value,
+          options,
+          result,
+          item
+        );
+        return false;
+      }).toString();
+    }
+    function transformSelector(value, options, result, item) {
+      return selectorParser((selectors) => {
+        selectors.walk((node) => {
+          if (node.type === "attribute" && node.value) {
+            node.setValue(transformValue(node.value, options, result, item));
+          }
+          if (node.type === "tag") {
+            node.value = transformValue(node.value, options, result, item);
+          }
+          return;
+        });
+      }).processSync(value);
+    }
+    module2.exports = (node, property, options, result) => {
+      let value = node[property];
+      try {
+        value = property === "selector" ? transformSelector(node[property], options, result, node) : transformValue(node[property], options, result, node);
+      } catch (error) {
+        if (error instanceof Error) {
+          result.warn(error.message, { node });
+        } else {
+          result.warn("Error", { node });
+        }
+        return;
+      }
+      if (options.preserve && node[property] !== value) {
+        const clone = node.clone();
+        clone[property] = value;
+        node.parent.insertBefore(node, clone);
+      } else {
+        node[property] = value;
+      }
+    };
+  }
+});
+
+// node_modules/postcss-calc/src/index.js
+var require_src9 = __commonJS({
+  "node_modules/postcss-calc/src/index.js"(exports2, module2) {
+    "use strict";
+    var transform = require_transform();
+    function pluginCreator(opts) {
+      const options = Object.assign(
+        {
+          precision: 5,
+          preserve: false,
+          warnWhenCannotResolve: false,
+          mediaQueries: false,
+          selectors: false
+        },
+        opts
+      );
+      return {
+        postcssPlugin: "postcss-calc",
+        OnceExit(css, { result }) {
+          css.walk((node) => {
+            const { type } = node;
+            if (type === "decl") {
+              transform(node, "value", options, result);
+            }
+            if (type === "atrule" && options.mediaQueries) {
+              transform(node, "params", options, result);
+            }
+            if (type === "rule" && options.selectors) {
+              transform(node, "selector", options, result);
+            }
+          });
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/colord/plugins/minify.js
+var require_minify = __commonJS({
+  "node_modules/colord/plugins/minify.js"(exports2, module2) {
+    module2.exports = function(t) {
+      var r = function(t2) {
+        var r2, n2, e, i = t2.toHex(), a = t2.alpha(), h = i.split(""), s = h[1], o = h[2], u = h[3], l = h[4], p = h[5], f = h[6], g = h[7], v = h[8];
+        if (a > 0 && a < 1 && (r2 = parseInt(g + v, 16) / 255, void 0 === (n2 = 2) && (n2 = 0), void 0 === e && (e = Math.pow(10, n2)), Math.round(e * r2) / e + 0 !== a)) return null;
+        if (s === o && u === l && p === f) {
+          if (1 === a) return "#" + s + u + p;
+          if (g === v) return "#" + s + u + p + g;
+        }
+        return i;
+      }, n = function(t2) {
+        return t2 > 0 && t2 < 1 ? t2.toString().replace("0.", ".") : t2;
+      };
+      t.prototype.minify = function(t2) {
+        void 0 === t2 && (t2 = {});
+        var e = this.toRgb(), i = n(e.r), a = n(e.g), h = n(e.b), s = this.toHsl(), o = n(s.h), u = n(s.s), l = n(s.l), p = n(this.alpha()), f = Object.assign({ hex: true, rgb: true, hsl: true }, t2), g = [];
+        if (f.hex && (1 === p || f.alphaHex)) {
+          var v = r(this);
+          v && g.push(v);
+        }
+        if (f.rgb && g.push(1 === p ? "rgb(" + i + "," + a + "," + h + ")" : "rgba(" + i + "," + a + "," + h + "," + p + ")"), f.hsl && g.push(1 === p ? "hsl(" + o + "," + u + "%," + l + "%)" : "hsla(" + o + "," + u + "%," + l + "%," + p + ")"), f.transparent && 0 === i && 0 === a && 0 === h && 0 === p) g.push("transparent");
+        else if (1 === p && f.name && "function" == typeof this.toName) {
+          var c = this.toName();
+          c && g.push(c);
+        }
+        return function(t3) {
+          for (var r2 = t3[0], n2 = 1; n2 < t3.length; n2++) t3[n2].length < r2.length && (r2 = t3[n2]);
+          return r2;
+        }(g);
+      };
+    };
+  }
+});
+
+// node_modules/postcss-colormin/src/minifyColor.js
+var require_minifyColor = __commonJS({
+  "node_modules/postcss-colormin/src/minifyColor.js"(exports2, module2) {
+    "use strict";
+    var { colord, extend } = require_colord();
+    var namesPlugin = require_names();
+    var minifierPlugin = require_minify();
+    extend(
+      /** @type {any[]} */
+      [namesPlugin, minifierPlugin]
+    );
+    module2.exports = function minifyColor(input, options = {}) {
+      const instance = colord(input);
+      if (instance.isValid()) {
+        const minified = instance.minify(options);
+        return minified.length < input.length ? minified : input.toLowerCase();
+      } else {
+        return input;
+      }
+    };
+  }
+});
+
+// node_modules/postcss-colormin/src/index.js
+var require_src10 = __commonJS({
+  "node_modules/postcss-colormin/src/index.js"(exports2, module2) {
+    "use strict";
+    var { dirname } = require("path");
+    var browserslist = require_browserslist();
+    var { isSupported } = require_dist();
+    var valueParser = require_lib();
+    var minifyColor = require_minifyColor();
+    function walk(parent, callback) {
+      parent.nodes.forEach((node, index) => {
+        const bubble = callback(node, index, parent);
+        if (node.type === "function" && bubble !== false) {
+          walk(node, callback);
+        }
+      });
+    }
+    var browsersWithTransparentBug = /* @__PURE__ */ new Set(["ie 8", "ie 9"]);
+    var mathFunctions = /* @__PURE__ */ new Set(["calc", "min", "max", "clamp"]);
+    function isMathFunctionNode(node) {
+      if (node.type !== "function") {
+        return false;
+      }
+      return mathFunctions.has(node.value.toLowerCase());
+    }
+    function transform(value, options) {
+      const parsed = valueParser(value);
+      walk(parsed, (node, index, parent) => {
+        if (node.type === "function") {
+          if (/^(rgb|hsl)a?$/i.test(node.value)) {
+            const { value: originalValue } = node;
+            node.value = minifyColor(valueParser.stringify(node), options);
+            node.type = "word";
+            const next = parent.nodes[index + 1];
+            if (node.value !== originalValue && next && (next.type === "word" || next.type === "function")) {
+              parent.nodes.splice(
+                index + 1,
+                0,
+                /** @type {valueParser.SpaceNode} */
+                {
+                  type: "space",
+                  value: " "
+                }
+              );
+            }
+          } else if (isMathFunctionNode(node)) {
+            return false;
+          }
+        } else if (node.type === "word") {
+          node.value = minifyColor(node.value, options);
+        }
+      });
+      return parsed.toString();
+    }
+    function addPluginDefaults(options, browsers) {
+      const defaults = {
+        // Does the browser support 4 & 8 character hex notation
+        transparent: browsers.some((b) => browsersWithTransparentBug.has(b)) === false,
+        // Does the browser support "transparent" value properly
+        alphaHex: isSupported("css-rrggbbaa", browsers),
+        name: true
+      };
+      return { ...defaults, ...options };
+    }
+    function pluginCreator(config = {}) {
+      return {
+        postcssPlugin: "postcss-colormin",
+        /**
+         * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
+         */
+        prepare(result) {
+          const { stats, env, from, file } = result.opts || {};
+          const browsers = browserslist(config.overrideBrowserslist, {
+            stats: config.stats || stats,
+            path: config.path || dirname(from || file || __filename),
+            env: config.env || env
+          });
+          const cache = /* @__PURE__ */ new Map();
+          const options = addPluginDefaults(config, browsers);
+          return {
+            OnceExit(css) {
+              css.walkDecls((decl) => {
+                if (/^(composes|font|src$|filter|-webkit-tap-highlight-color)/i.test(
+                  decl.prop
+                )) {
+                  return;
+                }
+                const value = decl.value;
+                if (!value) {
+                  return;
+                }
+                const cacheKey = JSON.stringify({ value, options, browsers });
+                if (cache.has(cacheKey)) {
+                  decl.value = cache.get(cacheKey);
+                  return;
+                }
+                const newValue = transform(value, options);
+                decl.value = newValue;
+                cache.set(cacheKey, newValue);
+              });
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-ordered-values/src/lib/joinGridValue.js
+var require_joinGridValue = __commonJS({
+  "node_modules/postcss-ordered-values/src/lib/joinGridValue.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function joinGridVal(grid) {
+      return grid.join(" / ").trim();
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/rules/grid.js
+var require_grid = __commonJS({
+  "node_modules/postcss-ordered-values/src/rules/grid.js"(exports2, module2) {
+    "use strict";
+    var joinGridValue = require_joinGridValue();
+    var normalizeGridAutoFlow = (gridAutoFlow) => {
+      let newValue = { front: "", back: "" };
+      let shouldNormalize = false;
+      gridAutoFlow.walk((node) => {
+        if (node.value === "dense") {
+          shouldNormalize = true;
+          newValue.back = node.value;
+        } else if (["row", "column"].includes(node.value.trim().toLowerCase())) {
+          shouldNormalize = true;
+          newValue.front = node.value;
+        } else {
+          shouldNormalize = false;
+        }
+      });
+      if (shouldNormalize) {
+        return `${newValue.front.trim()} ${newValue.back.trim()}`;
+      }
+      return gridAutoFlow;
+    };
+    var normalizeGridColumnRowGap = (gridGap) => {
+      let newValue = { front: "", back: "" };
+      let shouldNormalize = false;
+      gridGap.walk((node) => {
+        if (node.value === "normal") {
+          shouldNormalize = true;
+          newValue.front = node.value;
+        } else {
+          newValue.back = `${newValue.back} ${node.value}`;
+        }
+      });
+      if (shouldNormalize) {
+        return `${newValue.front.trim()} ${newValue.back.trim()}`;
+      }
+      return gridGap;
+    };
+    var normalizeGridColumnRow = (grid) => {
+      let gridValue = grid.toString().split("/");
+      if (gridValue.length > 1) {
+        return joinGridValue(
+          gridValue.map((gridLine) => {
+            let normalizeValue = {
+              front: "",
+              back: ""
+            };
+            gridLine = gridLine.trim();
+            gridLine.split(" ").forEach((node) => {
+              if (node === "span") {
+                normalizeValue.front = node;
+              } else {
+                normalizeValue.back = `${normalizeValue.back} ${node}`;
+              }
+            });
+            return `${normalizeValue.front.trim()} ${normalizeValue.back.trim()}`;
+          })
+          // returns "2 / span 3"
+        );
+      }
+      return gridValue.map((gridLine) => {
+        let normalizeValue = {
+          front: "",
+          back: ""
+        };
+        gridLine = gridLine.trim();
+        gridLine.split(" ").forEach((node) => {
+          if (node === "span") {
+            normalizeValue.front = node;
+          } else {
+            normalizeValue.back = `${normalizeValue.back} ${node}`;
+          }
+        });
+        return `${normalizeValue.front.trim()} ${normalizeValue.back.trim()}`;
+      });
+    };
+    module2.exports = {
+      normalizeGridAutoFlow,
+      normalizeGridColumnRowGap,
+      normalizeGridColumnRow
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/lib/addSpace.js
+var require_addSpace = __commonJS({
+  "node_modules/postcss-ordered-values/src/lib/addSpace.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function addSpace() {
+      return (
+        /** @type import('postcss-value-parser').SpaceNode */
+        {
+          type: "space",
+          value: " "
+        }
+      );
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/lib/getValue.js
+var require_getValue = __commonJS({
+  "node_modules/postcss-ordered-values/src/lib/getValue.js"(exports2, module2) {
+    "use strict";
+    var { stringify } = require_lib();
+    module2.exports = function getValue(values) {
+      return stringify(flatten(values));
+    };
+    function flatten(values) {
+      const nodes = [];
+      for (const [index, arg] of values.entries()) {
+        arg.forEach((val, idx) => {
+          if (idx === arg.length - 1 && index === values.length - 1 && val.type === "space") {
+            return;
+          }
+          nodes.push(val);
+        });
+        if (index !== values.length - 1) {
+          nodes[nodes.length - 1].type = "div";
+          nodes[nodes.length - 1].value = ",";
+        }
+      }
+      return nodes;
+    }
+  }
+});
+
+// node_modules/postcss-ordered-values/src/rules/animation.js
+var require_animation2 = __commonJS({
+  "node_modules/postcss-ordered-values/src/rules/animation.js"(exports2, module2) {
+    "use strict";
+    var { unit } = require_lib();
+    var { getArguments } = require_src4();
+    var addSpace = require_addSpace();
+    var getValue = require_getValue();
+    var functions = /* @__PURE__ */ new Set(["steps", "cubic-bezier", "frames"]);
+    var keywords = /* @__PURE__ */ new Set([
+      "ease",
+      "ease-in",
+      "ease-in-out",
+      "ease-out",
+      "linear",
+      "step-end",
+      "step-start"
+    ]);
+    var directions = /* @__PURE__ */ new Set([
+      "normal",
+      "reverse",
+      "alternate",
+      "alternate-reverse"
+    ]);
+    var fillModes = /* @__PURE__ */ new Set(["none", "forwards", "backwards", "both"]);
+    var playStates = /* @__PURE__ */ new Set(["running", "paused"]);
+    var timeUnits = /* @__PURE__ */ new Set(["ms", "s"]);
+    var isTimingFunction = (value, type) => {
+      return type === "function" && functions.has(value) || keywords.has(value);
+    };
+    var isDirection = (value) => {
+      return directions.has(value);
+    };
+    var isFillMode = (value) => {
+      return fillModes.has(value);
+    };
+    var isPlayState = (value) => {
+      return playStates.has(value);
+    };
+    var isTime = (value) => {
+      const quantity = unit(value);
+      return quantity && timeUnits.has(quantity.unit);
+    };
+    var isIterationCount = (value) => {
+      const quantity = unit(value);
+      return value === "infinite" || quantity && !quantity.unit;
+    };
+    var stateConditions = [
+      { property: "duration", delegate: isTime },
+      { property: "timingFunction", delegate: isTimingFunction },
+      { property: "delay", delegate: isTime },
+      { property: "iterationCount", delegate: isIterationCount },
+      { property: "direction", delegate: isDirection },
+      { property: "fillMode", delegate: isFillMode },
+      { property: "playState", delegate: isPlayState }
+    ];
+    function normalize(args) {
+      const list = [];
+      for (const arg of args) {
+        const state = {
+          name: [],
+          duration: [],
+          timingFunction: [],
+          delay: [],
+          iterationCount: [],
+          direction: [],
+          fillMode: [],
+          playState: []
+        };
+        arg.forEach((node) => {
+          let { type, value } = node;
+          if (type === "space") {
+            return;
+          }
+          value = value.toLowerCase();
+          const hasMatch = stateConditions.some(({ property, delegate }) => {
+            if (delegate(value, type) && !state[property].length) {
+              state[property] = [node, addSpace()];
+              return true;
+            }
+          });
+          if (!hasMatch) {
+            state.name = [...state.name, node, addSpace()];
+          }
+        });
+        list.push([
+          ...state.name,
+          ...state.duration,
+          ...state.timingFunction,
+          ...state.delay,
+          ...state.iterationCount,
+          ...state.direction,
+          ...state.fillMode,
+          ...state.playState
+        ]);
+      }
+      return list;
+    }
+    module2.exports = function normalizeAnimation(parsed) {
+      const values = normalize(getArguments(parsed));
+      return getValue(values);
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/lib/mathfunctions.js
+var require_mathfunctions = __commonJS({
+  "node_modules/postcss-ordered-values/src/lib/mathfunctions.js"(exports2, module2) {
+    "use strict";
+    module2.exports = /* @__PURE__ */ new Set(["calc", "clamp", "max", "min"]);
+  }
+});
+
+// node_modules/postcss-ordered-values/src/rules/border.js
+var require_border2 = __commonJS({
+  "node_modules/postcss-ordered-values/src/rules/border.js"(exports2, module2) {
+    "use strict";
+    var { unit, stringify } = require_lib();
+    var mathFunctions = require_mathfunctions();
+    var borderWidths = /* @__PURE__ */ new Set(["thin", "medium", "thick"]);
+    var borderStyles = /* @__PURE__ */ new Set([
+      "none",
+      "auto",
+      // only in outline-style
+      "hidden",
+      "dotted",
+      "dashed",
+      "solid",
+      "double",
+      "groove",
+      "ridge",
+      "inset",
+      "outset"
+    ]);
+    module2.exports = function normalizeBorder(border) {
+      const order = { width: "", style: "", color: "" };
+      border.walk((node) => {
+        const { type, value } = node;
+        if (type === "word") {
+          if (borderStyles.has(value.toLowerCase())) {
+            order.style = value;
+            return false;
+          }
+          if (borderWidths.has(value.toLowerCase()) || unit(value.toLowerCase())) {
+            if (order.width !== "") {
+              order.width = `${order.width} ${value}`;
+              return false;
+            }
+            order.width = value;
+            return false;
+          }
+          order.color = value;
+          return false;
+        }
+        if (type === "function") {
+          if (mathFunctions.has(value.toLowerCase())) {
+            order.width = stringify(node);
+          } else {
+            order.color = stringify(node);
+          }
+          return false;
+        }
+      });
+      return `${order.width} ${order.style} ${order.color}`.trim();
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/lib/vendorUnprefixed.js
+var require_vendorUnprefixed = __commonJS({
+  "node_modules/postcss-ordered-values/src/lib/vendorUnprefixed.js"(exports2, module2) {
+    "use strict";
+    function vendorUnprefixed(prop) {
+      return prop.replace(/^-\w+-/, "");
+    }
+    module2.exports = vendorUnprefixed;
+  }
+});
+
+// node_modules/postcss-ordered-values/src/rules/boxShadow.js
+var require_boxShadow = __commonJS({
+  "node_modules/postcss-ordered-values/src/rules/boxShadow.js"(exports2, module2) {
+    "use strict";
+    var { unit } = require_lib();
+    var { getArguments } = require_src4();
+    var addSpace = require_addSpace();
+    var getValue = require_getValue();
+    var mathFunctions = require_mathfunctions();
+    var vendorUnprefixed = require_vendorUnprefixed();
+    module2.exports = function normalizeBoxShadow(parsed) {
+      let args = getArguments(parsed);
+      const normalized = normalize(args);
+      if (normalized === false) {
+        return parsed.toString();
+      }
+      return getValue(normalized);
+    };
+    function normalize(args) {
+      const list = [];
+      let abort = false;
+      for (const arg of args) {
+        let val = [];
+        let state = {
+          inset: [],
+          color: []
+        };
+        arg.forEach((node) => {
+          const { type, value } = node;
+          if (type === "function" && mathFunctions.has(vendorUnprefixed(value.toLowerCase()))) {
+            abort = true;
+            return;
+          }
+          if (type === "space") {
+            return;
+          }
+          if (unit(value)) {
+            val = [...val, node, addSpace()];
+          } else if (value.toLowerCase() === "inset") {
+            state.inset = [...state.inset, node, addSpace()];
+          } else {
+            state.color = [...state.color, node, addSpace()];
+          }
+        });
+        if (abort) {
+          return false;
+        }
+        list.push([...state.inset, ...val, ...state.color]);
+      }
+      return list;
+    }
+  }
+});
+
+// node_modules/postcss-ordered-values/src/rules/flexFlow.js
+var require_flexFlow = __commonJS({
+  "node_modules/postcss-ordered-values/src/rules/flexFlow.js"(exports2, module2) {
+    "use strict";
+    var flexDirection = /* @__PURE__ */ new Set([
+      "row",
+      "row-reverse",
+      "column",
+      "column-reverse"
+    ]);
+    var flexWrap = /* @__PURE__ */ new Set(["nowrap", "wrap", "wrap-reverse"]);
+    module2.exports = function normalizeFlexFlow(flexFlow) {
+      let order = {
+        direction: "",
+        wrap: ""
+      };
+      flexFlow.walk(({ value }) => {
+        if (flexDirection.has(value.toLowerCase())) {
+          order.direction = value;
+          return;
+        }
+        if (flexWrap.has(value.toLowerCase())) {
+          order.wrap = value;
+          return;
+        }
+      });
+      return `${order.direction} ${order.wrap}`.trim();
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/rules/transition.js
+var require_transition2 = __commonJS({
+  "node_modules/postcss-ordered-values/src/rules/transition.js"(exports2, module2) {
+    "use strict";
+    var { unit } = require_lib();
+    var { getArguments } = require_src4();
+    var addSpace = require_addSpace();
+    var getValue = require_getValue();
+    var timingFunctions = /* @__PURE__ */ new Set([
+      "ease",
+      "linear",
+      "ease-in",
+      "ease-out",
+      "ease-in-out",
+      "step-start",
+      "step-end"
+    ]);
+    function normalize(args) {
+      const list = [];
+      for (const arg of args) {
+        let state = {
+          timingFunction: [],
+          property: [],
+          time1: [],
+          time2: []
+        };
+        arg.forEach((node) => {
+          const { type, value } = node;
+          if (type === "space") {
+            return;
+          }
+          if (type === "function" && (/* @__PURE__ */ new Set(["steps", "cubic-bezier"])).has(value.toLowerCase())) {
+            state.timingFunction = [...state.timingFunction, node, addSpace()];
+          } else if (unit(value)) {
+            if (!state.time1.length) {
+              state.time1 = [...state.time1, node, addSpace()];
+            } else {
+              state.time2 = [...state.time2, node, addSpace()];
+            }
+          } else if (timingFunctions.has(value.toLowerCase())) {
+            state.timingFunction = [...state.timingFunction, node, addSpace()];
+          } else {
+            state.property = [...state.property, node, addSpace()];
+          }
+        });
+        list.push([
+          ...state.property,
+          ...state.time1,
+          ...state.timingFunction,
+          ...state.time2
+        ]);
+      }
+      return list;
+    }
+    module2.exports = function normalizeTransition(parsed) {
+      const values = normalize(getArguments(parsed));
+      return getValue(values);
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/rules/listStyleTypes.json
+var require_listStyleTypes = __commonJS({
+  "node_modules/postcss-ordered-values/src/rules/listStyleTypes.json"(exports2, module2) {
+    module2.exports = {
+      "list-style-type": [
+        "afar",
+        "amharic",
+        "amharic-abegede",
+        "arabic-indic",
+        "armenian",
+        "asterisks",
+        "bengali",
+        "binary",
+        "cambodian",
+        "circle",
+        "cjk-decimal",
+        "cjk-earthly-branch",
+        "cjk-heavenly-stem",
+        "cjk-ideographic",
+        "decimal",
+        "decimal-leading-zero",
+        "devanagari",
+        "disc",
+        "disclosure-closed",
+        "disclosure-open",
+        "ethiopic",
+        "ethiopic-abegede",
+        "ethiopic-abegede-am-et",
+        "ethiopic-abegede-gez",
+        "ethiopic-abegede-ti-er",
+        "ethiopic-abegede-ti-et",
+        "ethiopic-halehame",
+        "ethiopic-halehame-aa-er",
+        "ethiopic-halehame-aa-et",
+        "ethiopic-halehame-am",
+        "ethiopic-halehame-am-et",
+        "ethiopic-halehame-gez",
+        "ethiopic-halehame-om-et",
+        "ethiopic-halehame-sid-et",
+        "ethiopic-halehame-so-et",
+        "ethiopic-halehame-ti-er",
+        "ethiopic-halehame-ti-et",
+        "ethiopic-halehame-tig",
+        "ethiopic-numeric",
+        "footnotes",
+        "georgian",
+        "gujarati",
+        "gurmukhi",
+        "hangul",
+        "hangul-consonant",
+        "hebrew",
+        "hiragana",
+        "hiragana-iroha",
+        "japanese-formal",
+        "japanese-informal",
+        "kannada",
+        "katakana",
+        "katakana-iroha",
+        "khmer",
+        "korean-hangul-formal",
+        "korean-hanja-formal",
+        "korean-hanja-informal",
+        "lao",
+        "lower-alpha",
+        "lower-armenian",
+        "lower-greek",
+        "lower-hexadecimal",
+        "lower-latin",
+        "lower-norwegian",
+        "lower-roman",
+        "malayalam",
+        "mongolian",
+        "myanmar",
+        "octal",
+        "oriya",
+        "oromo",
+        "persian",
+        "sidama",
+        "simp-chinese-formal",
+        "simp-chinese-informal",
+        "somali",
+        "square",
+        "string",
+        "symbols",
+        "tamil",
+        "telugu",
+        "thai",
+        "tibetan",
+        "tigre",
+        "tigrinya-er",
+        "tigrinya-er-abegede",
+        "tigrinya-et",
+        "tigrinya-et-abegede",
+        "trad-chinese-formal",
+        "trad-chinese-informal",
+        "upper-alpha",
+        "upper-armenian",
+        "upper-greek",
+        "upper-hexadecimal",
+        "upper-latin",
+        "upper-norwegian",
+        "upper-roman",
+        "urdu"
+      ]
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/rules/listStyle.js
+var require_listStyle = __commonJS({
+  "node_modules/postcss-ordered-values/src/rules/listStyle.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var listStyleTypes = require_listStyleTypes();
+    var definedTypes = new Set(listStyleTypes["list-style-type"]);
+    var definedPosition = /* @__PURE__ */ new Set(["inside", "outside"]);
+    module2.exports = function listStyleNormalizer(listStyle) {
+      const order = { type: "", position: "", image: "" };
+      listStyle.walk((decl) => {
+        if (decl.type === "word") {
+          if (definedTypes.has(decl.value)) {
+            order.type = `${order.type} ${decl.value}`;
+          } else if (definedPosition.has(decl.value)) {
+            order.position = `${order.position} ${decl.value}`;
+          } else if (decl.value === "none") {
+            if (order.type.split(" ").filter((e) => e !== "" && e !== " ").includes("none")) {
+              order.image = `${order.image} ${decl.value}`;
+            } else {
+              order.type = `${order.type} ${decl.value}`;
+            }
+          } else {
+            order.type = `${order.type} ${decl.value}`;
+          }
+        }
+        if (decl.type === "function") {
+          order.image = `${order.image} ${valueParser.stringify(decl)}`;
+        }
+      });
+      return `${order.type.trim()} ${order.position.trim()} ${order.image.trim()}`.trim();
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/rules/columns.js
+var require_columns = __commonJS({
+  "node_modules/postcss-ordered-values/src/rules/columns.js"(exports2, module2) {
+    "use strict";
+    var { unit } = require_lib();
+    function hasUnit(value) {
+      const parsedVal = unit(value);
+      return parsedVal && parsedVal.unit !== "";
+    }
+    module2.exports = (columns) => {
+      const widths = [];
+      const other = [];
+      columns.walk((node) => {
+        const { type, value } = node;
+        if (type === "word") {
+          if (hasUnit(value)) {
+            widths.push(value);
+          } else {
+            other.push(value);
+          }
+        }
+      });
+      if (other.length === 1 && widths.length === 1) {
+        return `${widths[0].trimStart()} ${other[0].trimStart()}`;
+      }
+      return columns;
+    };
+  }
+});
+
+// node_modules/postcss-ordered-values/src/index.js
+var require_src11 = __commonJS({
+  "node_modules/postcss-ordered-values/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var {
+      normalizeGridAutoFlow,
+      normalizeGridColumnRowGap,
+      normalizeGridColumnRow
+    } = require_grid();
+    var animation = require_animation2();
+    var border = require_border2();
+    var boxShadow = require_boxShadow();
+    var flexFlow = require_flexFlow();
+    var transition = require_transition2();
+    var listStyle = require_listStyle();
+    var column = require_columns();
+    var vendorUnprefixed = require_vendorUnprefixed();
+    var borderRules = [
+      ["border", border],
+      ["border-block", border],
+      ["border-inline", border],
+      ["border-block-end", border],
+      ["border-block-start", border],
+      ["border-inline-end", border],
+      ["border-inline-start", border],
+      ["border-top", border],
+      ["border-right", border],
+      ["border-bottom", border],
+      ["border-left", border]
+    ];
+    var grid = [
+      ["grid-auto-flow", normalizeGridAutoFlow],
+      ["grid-column-gap", normalizeGridColumnRowGap],
+      // normal | <length-percentage>
+      ["grid-row-gap", normalizeGridColumnRowGap],
+      // normal | <length-percentage>
+      ["grid-column", normalizeGridColumnRow],
+      // <grid-line>+
+      ["grid-row", normalizeGridColumnRow],
+      // <grid-line>+
+      ["grid-row-start", normalizeGridColumnRow],
+      // <grid-line>
+      ["grid-row-end", normalizeGridColumnRow],
+      // <grid-line>
+      ["grid-column-start", normalizeGridColumnRow],
+      // <grid-line>
+      ["grid-column-end", normalizeGridColumnRow]
+      // <grid-line>
+    ];
+    var columnRules = [
+      ["column-rule", border],
+      ["columns", column]
+    ];
+    var rules = new Map([
+      ["animation", animation],
+      ["outline", border],
+      ["box-shadow", boxShadow],
+      ["flex-flow", flexFlow],
+      ["list-style", listStyle],
+      ["transition", transition],
+      ...borderRules,
+      ...grid,
+      ...columnRules
+    ]);
+    var variableFunctions = /* @__PURE__ */ new Set(["var", "env", "constant"]);
+    function isVariableFunctionNode(node) {
+      if (node.type !== "function") {
+        return false;
+      }
+      return variableFunctions.has(node.value.toLowerCase());
+    }
+    function shouldAbort(parsed) {
+      let abort = false;
+      parsed.walk((node) => {
+        if (node.type === "comment" || isVariableFunctionNode(node) || node.type === "word" && node.value.includes(`___CSS_LOADER_IMPORT___`)) {
+          abort = true;
+          return false;
+        }
+      });
+      return abort;
+    }
+    function getValue(decl) {
+      let { value, raws } = decl;
+      if (raws && raws.value && raws.value.raw) {
+        value = raws.value.raw;
+      }
+      return value;
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-ordered-values",
+        prepare() {
+          const cache = /* @__PURE__ */ new Map();
+          return {
+            OnceExit(css) {
+              css.walkDecls((decl) => {
+                const lowerCasedProp = decl.prop.toLowerCase();
+                const normalizedProp = vendorUnprefixed(lowerCasedProp);
+                const processor = rules.get(normalizedProp);
+                if (!processor) {
+                  return;
+                }
+                const value = getValue(decl);
+                if (cache.has(value)) {
+                  decl.value = cache.get(value);
+                  return;
+                }
+                const parsed = valueParser(value);
+                if (parsed.nodes.length < 2 || shouldAbort(parsed)) {
+                  cache.set(value, value);
+                  return;
+                }
+                const result = processor(parsed);
+                decl.value = result.toString();
+                cache.set(value, result.toString());
+              });
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-minify-selectors/src/lib/canUnquote.js
+var require_canUnquote = __commonJS({
+  "node_modules/postcss-minify-selectors/src/lib/canUnquote.js"(exports2, module2) {
+    "use strict";
+    var escapes = /\\([0-9A-Fa-f]{1,6})[ \t\n\f\r]?/g;
+    var range = (
+      // eslint-disable-next-line no-control-regex
+      /[\u0000-\u002c\u002e\u002f\u003A-\u0040\u005B-\u005E\u0060\u007B-\u009f]/
+    );
+    module2.exports = function canUnquote(value) {
+      if (value === "-" || value === "") {
+        return false;
+      }
+      value = value.replace(escapes, "a").replace(/\\./g, "a");
+      return !(range.test(value) || /^(?:-?\d|--)/.test(value));
+    };
+  }
+});
+
+// node_modules/postcss-minify-selectors/src/index.js
+var require_src12 = __commonJS({
+  "node_modules/postcss-minify-selectors/src/index.js"(exports2, module2) {
+    "use strict";
+    var parser = require_dist2();
+    var canUnquote = require_canUnquote();
+    var pseudoElements = /* @__PURE__ */ new Set([
+      "::before",
+      "::after",
+      "::first-letter",
+      "::first-line"
+    ]);
+    function attribute(selector) {
+      if (selector.value) {
+        if (selector.raws.value) {
+          selector.raws.value = selector.raws.value.replace(/\\\n/g, "").trim();
+        }
+        if (canUnquote(selector.value)) {
+          selector.quoteMark = null;
+        }
+        if (selector.operator) {
+          selector.operator = /** @type {parser.AttributeOperator} */
+          selector.operator.trim();
+        }
+      }
+      selector.rawSpaceBefore = "";
+      selector.rawSpaceAfter = "";
+      selector.spaces.attribute = { before: "", after: "" };
+      selector.spaces.operator = { before: "", after: "" };
+      selector.spaces.value = {
+        before: "",
+        after: selector.insensitive ? " " : ""
+      };
+      if (selector.raws.spaces) {
+        selector.raws.spaces.attribute = {
+          before: "",
+          after: ""
+        };
+        selector.raws.spaces.operator = {
+          before: "",
+          after: ""
+        };
+        selector.raws.spaces.value = {
+          before: "",
+          after: selector.insensitive ? " " : ""
+        };
+        if (selector.insensitive) {
+          selector.raws.spaces.insensitive = {
+            before: "",
+            after: ""
+          };
+        }
+      }
+      selector.attribute = selector.attribute.trim();
+    }
+    function combinator(selector) {
+      const value = selector.value.trim();
+      selector.spaces.before = "";
+      selector.spaces.after = "";
+      selector.rawSpaceBefore = "";
+      selector.rawSpaceAfter = "";
+      selector.value = value.length ? value : " ";
+    }
+    var pseudoReplacements = /* @__PURE__ */ new Map([
+      [":nth-child", ":first-child"],
+      [":nth-of-type", ":first-of-type"],
+      [":nth-last-child", ":last-child"],
+      [":nth-last-of-type", ":last-of-type"]
+    ]);
+    function pseudo(selector) {
+      const value = selector.value.toLowerCase();
+      if (selector.nodes.length === 1 && pseudoReplacements.has(value)) {
+        const first = selector.at(0);
+        const one = first.at(0);
+        if (first.length === 1) {
+          if (one.value === "1") {
+            selector.replaceWith(
+              parser.pseudo({
+                value: (
+                  /** @type {string} */
+                  pseudoReplacements.get(value)
+                )
+              })
+            );
+          }
+          if (one.value && one.value.toLowerCase() === "even") {
+            one.value = "2n";
+          }
+        }
+        if (first.length === 3) {
+          const two = first.at(1);
+          const three = first.at(2);
+          if (one.value && one.value.toLowerCase() === "2n" && two.value === "+" && three.value === "1") {
+            one.value = "odd";
+            two.remove();
+            three.remove();
+          }
+        }
+        return;
+      }
+      selector.walk((child) => {
+        if (child.type === "selector" && child.parent) {
+          const uniques = /* @__PURE__ */ new Set();
+          child.parent.each((sibling) => {
+            const siblingStr = String(sibling);
+            if (!uniques.has(siblingStr)) {
+              uniques.add(siblingStr);
+            } else {
+              sibling.remove();
+            }
+          });
+        }
+      });
+      if (pseudoElements.has(value)) {
+        selector.value = selector.value.slice(1);
+      }
+    }
+    var tagReplacements = /* @__PURE__ */ new Map([
+      ["from", "0%"],
+      ["100%", "to"]
+    ]);
+    function tag(selector) {
+      const value = selector.value.toLowerCase();
+      const isSimple = selector.parent && selector.parent.nodes.length === 1;
+      if (!isSimple) {
+        return;
+      }
+      if (tagReplacements.has(value)) {
+        selector.value = /** @type {string} */
+        tagReplacements.get(value);
+      }
+    }
+    function universal(selector) {
+      const next = selector.next();
+      if (next && next.type !== "combinator") {
+        selector.remove();
+      }
+    }
+    var reducers = /* @__PURE__ */ new Map(
+      /** @type {[string, ((selector: parser.Node) => void)][]}*/
+      [
+        ["attribute", attribute],
+        ["combinator", combinator],
+        ["pseudo", pseudo],
+        ["tag", tag],
+        ["universal", universal]
+      ]
+    );
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-minify-selectors",
+        OnceExit(css) {
+          const cache = /* @__PURE__ */ new Map();
+          const processor = parser((selectors) => {
+            const uniqueSelectors = /* @__PURE__ */ new Set();
+            selectors.walk((sel) => {
+              sel.spaces.before = sel.spaces.after = "";
+              const reducer = reducers.get(sel.type);
+              if (reducer !== void 0) {
+                reducer(sel);
+                return;
+              }
+              const toString = String(sel);
+              if (sel.type === "selector" && sel.parent && sel.parent.type !== "pseudo") {
+                if (!uniqueSelectors.has(toString)) {
+                  uniqueSelectors.add(toString);
+                } else {
+                  sel.remove();
+                }
+              }
+            });
+            selectors.nodes.sort();
+          });
+          css.walkRules((rule) => {
+            const selector = rule.raws.selector && rule.raws.selector.value === rule.selector ? rule.raws.selector.raw : rule.selector;
+            if (selector[selector.length - 1] === ":") {
+              return;
+            }
+            if (cache.has(selector)) {
+              rule.selector = cache.get(selector);
+              return;
+            }
+            const optimizedSelector = processor.processSync(selector);
+            rule.selector = optimizedSelector;
+            cache.set(selector, optimizedSelector);
+          });
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-minify-params/src/index.js
+var require_src13 = __commonJS({
+  "node_modules/postcss-minify-params/src/index.js"(exports2, module2) {
+    "use strict";
+    var { dirname } = require("path");
+    var browserslist = require_browserslist();
+    var valueParser = require_lib();
+    var { getArguments } = require_src4();
+    function gcd(a, b) {
+      return b ? gcd(b, a % b) : a;
+    }
+    function aspectRatio(a, b) {
+      const divisor = gcd(a, b);
+      return [a / divisor, b / divisor];
+    }
+    function split(args) {
+      return args.map((arg) => valueParser.stringify(arg)).join("");
+    }
+    function removeNode(node) {
+      node.value = "";
+      node.type = "word";
+    }
+    function sortAndDedupe(items) {
+      const a = [...new Set(items)];
+      a.sort();
+      return a.join();
+    }
+    function transform(legacy, rule) {
+      const ruleName = rule.name.toLowerCase();
+      if (!rule.params || !["media", "supports"].includes(ruleName)) {
+        return;
+      }
+      const params = valueParser(rule.params);
+      params.walk((node, index) => {
+        if (node.type === "div") {
+          node.before = node.after = "";
+        } else if (node.type === "function") {
+          node.before = "";
+          if (node.nodes[0] && node.nodes[0].type === "word" && node.nodes[0].value.startsWith("--") && node.nodes[2] === void 0) {
+            node.after = " ";
+          } else {
+            node.after = "";
+          }
+          if (node.nodes[4] && node.nodes[0].value.toLowerCase().indexOf("-aspect-ratio") === 3) {
+            const [a, b] = aspectRatio(
+              Number(node.nodes[2].value),
+              Number(node.nodes[4].value)
+            );
+            node.nodes[2].value = a.toString();
+            node.nodes[4].value = b.toString();
+          }
+        } else if (node.type === "space") {
+          node.value = " ";
+        } else {
+          const prevWord = params.nodes[index - 2];
+          if (node.value.toLowerCase() === "all" && rule.name.toLowerCase() === "media" && !prevWord) {
+            const nextWord = params.nodes[index + 2];
+            if (!legacy || nextWord) {
+              removeNode(node);
+            }
+            if (nextWord && nextWord.value.toLowerCase() === "and") {
+              const nextSpace = params.nodes[index + 1];
+              const secondSpace = params.nodes[index + 3];
+              removeNode(nextWord);
+              removeNode(nextSpace);
+              removeNode(secondSpace);
+            }
+          }
+        }
+      }, true);
+      rule.params = sortAndDedupe(getArguments(params).map(split));
+      if (!rule.params.length) {
+        rule.raws.afterName = "";
+      }
+    }
+    var allBugBrowers = /* @__PURE__ */ new Set(["ie 10", "ie 11"]);
+    function pluginCreator(options = {}) {
+      return {
+        postcssPlugin: "postcss-minify-params",
+        /**
+         * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
+         */
+        prepare(result) {
+          const { stats, env, from, file } = result.opts || {};
+          const browsers = browserslist(options.overrideBrowserslist, {
+            stats: options.stats || stats,
+            path: options.path || dirname(from || file || __filename),
+            env: options.env || env
+          });
+          const hasAllBug = browsers.some((browser) => allBugBrowers.has(browser));
+          return {
+            OnceExit(css) {
+              css.walkAtRules((rule) => transform(hasAllBug, rule));
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-normalize-charset/src/index.js
+var require_src14 = __commonJS({
+  "node_modules/postcss-normalize-charset/src/index.js"(exports2, module2) {
+    "use strict";
+    var charset = "charset";
+    var nonAscii = /[^\x00-\x7F]/;
+    function pluginCreator(opts = {}) {
+      return {
+        postcssPlugin: "postcss-normalize-" + charset,
+        OnceExit(css, { AtRule }) {
+          let charsetRule;
+          let nonAsciiNode;
+          css.walk((node) => {
+            if (node.type === "atrule" && node.name === charset) {
+              if (!charsetRule) {
+                charsetRule = node;
+              }
+              node.remove();
+            } else if (!nonAsciiNode && node.parent === css && nonAscii.test(node.toString())) {
+              nonAsciiNode = node;
+            }
+          });
+          if (nonAsciiNode) {
+            if (!charsetRule && opts.add !== false) {
+              charsetRule = new AtRule({
+                name: charset,
+                params: '"utf-8"'
+              });
+            }
+            if (charsetRule) {
+              charsetRule.source = nonAsciiNode.source;
+              css.prepend(charsetRule);
+            }
+          }
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-minify-font-values/src/lib/minify-weight.js
+var require_minify_weight = __commonJS({
+  "node_modules/postcss-minify-font-values/src/lib/minify-weight.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function(value) {
+      const lowerCasedValue = value.toLowerCase();
+      return lowerCasedValue === "normal" ? "400" : lowerCasedValue === "bold" ? "700" : value;
+    };
+  }
+});
+
+// node_modules/postcss-minify-font-values/src/lib/minify-family.js
+var require_minify_family = __commonJS({
+  "node_modules/postcss-minify-font-values/src/lib/minify-family.js"(exports2, module2) {
+    "use strict";
+    var { stringify } = require_lib();
+    function uniqueFontFamilies(list) {
+      return list.filter((item, i) => {
+        if (item.toLowerCase() === "monospace") {
+          return true;
+        }
+        return i === list.indexOf(item);
+      });
+    }
+    var globalKeywords = ["inherit", "initial", "unset"];
+    var genericFontFamilykeywords = /* @__PURE__ */ new Set([
+      "sans-serif",
+      "serif",
+      "fantasy",
+      "cursive",
+      "monospace",
+      "system-ui"
+    ]);
+    function makeArray(value, length) {
+      let array = [];
+      while (length--) {
+        array[length] = value;
+      }
+      return array;
+    }
+    var regexSimpleEscapeCharacters = /[ !"#$%&'()*+,.\/;<=>?@\[\\\]^`{|}~]/;
+    function escape(string, escapeForString) {
+      let counter = 0;
+      let character;
+      let charCode;
+      let value;
+      let output = "";
+      while (counter < string.length) {
+        character = string.charAt(counter++);
+        charCode = character.charCodeAt(0);
+        if (!escapeForString && /[\t\n\v\f:]/.test(character)) {
+          value = "\\" + charCode.toString(16) + " ";
+        } else if (!escapeForString && regexSimpleEscapeCharacters.test(character)) {
+          value = "\\" + character;
+        } else {
+          value = character;
+        }
+        output += value;
+      }
+      if (!escapeForString) {
+        if (/^-[-\d]/.test(output)) {
+          output = "\\-" + output.slice(1);
+        }
+        const firstChar = string.charAt(0);
+        if (/\d/.test(firstChar)) {
+          output = "\\3" + firstChar + " " + output.slice(1);
+        }
+      }
+      return output;
+    }
+    var regexKeyword = new RegExp(
+      [...genericFontFamilykeywords].concat(globalKeywords).join("|"),
+      "i"
+    );
+    var regexInvalidIdentifier = /^(-?\d|--)/;
+    var regexSpaceAtStart = /^\x20/;
+    var regexWhitespace = /[\t\n\f\r\x20]/g;
+    var regexIdentifierCharacter = /^[a-zA-Z\d\xa0-\uffff_-]+$/;
+    var regexConsecutiveSpaces = /(\\(?:[a-fA-F0-9]{1,6}\x20|\x20))?(\x20{2,})/g;
+    var regexTrailingEscape = /\\[a-fA-F0-9]{0,6}\x20$/;
+    var regexTrailingSpace = /\x20$/;
+    function escapeIdentifierSequence(string) {
+      let identifiers = string.split(regexWhitespace);
+      let index = 0;
+      let result = [];
+      let escapeResult;
+      while (index < identifiers.length) {
+        let subString = identifiers[index++];
+        if (subString === "") {
+          result.push(subString);
+          continue;
+        }
+        escapeResult = escape(subString, false);
+        if (regexIdentifierCharacter.test(subString)) {
+          if (regexInvalidIdentifier.test(subString)) {
+            if (index === 1) {
+              result.push(escapeResult);
+            } else {
+              result[index - 2] += "\\";
+              result.push(escape(subString, true));
+            }
+          } else {
+            result.push(escapeResult);
+          }
+        } else {
+          result.push(escapeResult);
+        }
+      }
+      result = result.join(" ").replace(regexConsecutiveSpaces, ($0, $1, $2) => {
+        const spaceCount = $2.length;
+        const escapesNeeded = Math.floor(spaceCount / 2);
+        const array = makeArray("\\ ", escapesNeeded);
+        if (spaceCount % 2) {
+          array[escapesNeeded - 1] += "\\ ";
+        }
+        return ($1 || "") + " " + array.join(" ");
+      });
+      if (regexTrailingSpace.test(result) && !regexTrailingEscape.test(result)) {
+        result = result.replace(regexTrailingSpace, "\\ ");
+      }
+      if (regexSpaceAtStart.test(result)) {
+        result = "\\ " + result.slice(1);
+      }
+      return result;
+    }
+    module2.exports = function(nodes, opts) {
+      const family = [];
+      let last = null;
+      let i, max;
+      nodes.forEach((node, index, arr) => {
+        if (node.type === "string" || node.type === "function") {
+          family.push(node);
+        } else if (node.type === "word") {
+          if (!last) {
+            last = /** @type {import('postcss-value-parser').WordNode} */
+            {
+              type: "word",
+              value: ""
+            };
+            family.push(last);
+          }
+          last.value += node.value;
+        } else if (node.type === "space") {
+          if (last && index !== arr.length - 1) {
+            last.value += " ";
+          }
+        } else {
+          last = null;
+        }
+      });
+      let normalizedFamilies = family.map((node) => {
+        if (node.type === "string") {
+          const isKeyword = regexKeyword.test(node.value);
+          if (!opts.removeQuotes || isKeyword || /[0-9]/.test(node.value.slice(0, 1))) {
+            return stringify(node);
+          }
+          let escaped = escapeIdentifierSequence(node.value);
+          if (escaped.length < node.value.length + 2) {
+            return escaped;
+          }
+        }
+        return stringify(node);
+      });
+      if (opts.removeAfterKeyword) {
+        for (i = 0, max = normalizedFamilies.length; i < max; i += 1) {
+          if (genericFontFamilykeywords.has(normalizedFamilies[i].toLowerCase())) {
+            normalizedFamilies = normalizedFamilies.slice(0, i + 1);
+            break;
+          }
+        }
+      }
+      if (opts.removeDuplicates) {
+        normalizedFamilies = uniqueFontFamilies(normalizedFamilies);
+      }
+      return [
+        /** @type {import('postcss-value-parser').WordNode} */
+        {
+          type: "word",
+          value: normalizedFamilies.join()
+        }
+      ];
+    };
+  }
+});
+
+// node_modules/postcss-minify-font-values/src/lib/keywords.js
+var require_keywords = __commonJS({
+  "node_modules/postcss-minify-font-values/src/lib/keywords.js"(exports2, module2) {
+    "use strict";
+    module2.exports = {
+      style: /* @__PURE__ */ new Set(["italic", "oblique"]),
+      variant: /* @__PURE__ */ new Set(["small-caps"]),
+      weight: /* @__PURE__ */ new Set([
+        "100",
+        "200",
+        "300",
+        "400",
+        "500",
+        "600",
+        "700",
+        "800",
+        "900",
+        "bold",
+        "lighter",
+        "bolder"
+      ]),
+      stretch: /* @__PURE__ */ new Set([
+        "ultra-condensed",
+        "extra-condensed",
+        "condensed",
+        "semi-condensed",
+        "semi-expanded",
+        "expanded",
+        "extra-expanded",
+        "ultra-expanded"
+      ]),
+      size: /* @__PURE__ */ new Set([
+        "xx-small",
+        "x-small",
+        "small",
+        "medium",
+        "large",
+        "x-large",
+        "xx-large",
+        "larger",
+        "smaller"
+      ])
+    };
+  }
+});
+
+// node_modules/postcss-minify-font-values/src/lib/minify-font.js
+var require_minify_font = __commonJS({
+  "node_modules/postcss-minify-font-values/src/lib/minify-font.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var keywords = require_keywords();
+    var minifyFamily = require_minify_family();
+    var minifyWeight = require_minify_weight();
+    function normalizeNodes(nodes, toBeSpliced) {
+      for (const index of toBeSpliced) {
+        nodes.splice(
+          index,
+          0,
+          /** @type {import('postcss-value-parser').SpaceNode} */
+          {
+            type: "space",
+            value: " "
+          }
+        );
+      }
+    }
+    module2.exports = function(unminified, opts) {
+      const tree = valueParser(unminified);
+      const nodes = tree.nodes;
+      let familyStart = NaN;
+      let hasSize = false;
+      const toBeSpliced = /* @__PURE__ */ new Set();
+      for (const [i, node] of nodes.entries()) {
+        if (node.type === "string" && i > 0 && nodes[i - 1].type !== "space") {
+          toBeSpliced.add(i);
+        }
+        if (node.type === "word") {
+          if (hasSize) {
+            continue;
+          }
+          const value = node.value.toLowerCase();
+          if (value === "normal" || value === "inherit" || value === "initial" || value === "unset") {
+            familyStart = i;
+          } else if (keywords.style.has(value) || valueParser.unit(value)) {
+            familyStart = i;
+          } else if (keywords.variant.has(value)) {
+            familyStart = i;
+          } else if (keywords.weight.has(value)) {
+            node.value = minifyWeight(value);
+            familyStart = i;
+          } else if (keywords.stretch.has(value)) {
+            familyStart = i;
+          } else if (keywords.size.has(value) || valueParser.unit(value)) {
+            familyStart = i;
+            hasSize = true;
+          }
+        } else if (node.type === "function" && nodes[i + 1] && nodes[i + 1].type === "space") {
+          familyStart = i;
+        } else if (node.type === "div" && node.value === "/") {
+          familyStart = i + 1;
+          break;
+        }
+      }
+      normalizeNodes(nodes, toBeSpliced);
+      familyStart += 2;
+      const family = minifyFamily(nodes.slice(familyStart), opts);
+      tree.nodes = nodes.slice(0, familyStart).concat(family);
+      return tree.toString();
+    };
+  }
+});
+
+// node_modules/postcss-minify-font-values/src/index.js
+var require_src15 = __commonJS({
+  "node_modules/postcss-minify-font-values/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var minifyWeight = require_minify_weight();
+    var minifyFamily = require_minify_family();
+    var minifyFont = require_minify_font();
+    function hasVariableFunction(value) {
+      const lowerCasedValue = value.toLowerCase();
+      return lowerCasedValue.includes("var(") || lowerCasedValue.includes("env(");
+    }
+    function transform(prop, value, opts) {
+      let lowerCasedProp = prop.toLowerCase();
+      let variableType = "";
+      if (typeof opts.removeQuotes === "function") {
+        variableType = opts.removeQuotes(prop);
+        opts.removeQuotes = true;
+      }
+      if ((lowerCasedProp === "font-weight" || variableType === "font-weight") && !hasVariableFunction(value)) {
+        return minifyWeight(value);
+      } else if ((lowerCasedProp === "font-family" || variableType === "font-family") && !hasVariableFunction(value)) {
+        const tree = valueParser(value);
+        tree.nodes = minifyFamily(tree.nodes, opts);
+        return tree.toString();
+      } else if (lowerCasedProp === "font" || variableType === "font") {
+        return minifyFont(value, opts);
+      }
+      return value;
+    }
+    function pluginCreator(opts) {
+      opts = Object.assign(
+        {},
+        {
+          removeAfterKeyword: false,
+          removeDuplicates: true,
+          removeQuotes: true
+        },
+        opts
+      );
+      return {
+        postcssPlugin: "postcss-minify-font-values",
+        prepare() {
+          const cache = /* @__PURE__ */ new Map();
+          return {
+            OnceExit(css) {
+              css.walkDecls(/font/i, (decl) => {
+                const value = decl.value;
+                if (!value) {
+                  return;
+                }
+                const prop = decl.prop;
+                const cacheKey = `${prop}|${value}`;
+                if (cache.has(cacheKey)) {
+                  decl.value = cache.get(cacheKey);
+                  return;
+                }
+                const newValue = transform(prop, value, opts);
+                decl.value = newValue;
+                cache.set(cacheKey, newValue);
+              });
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-normalize-url/src/normalize.js
+var require_normalize = __commonJS({
+  "node_modules/postcss-normalize-url/src/normalize.js"(exports2, module2) {
+    "use strict";
+    var DATA_URL_DEFAULT_MIME_TYPE = "text/plain";
+    var DATA_URL_DEFAULT_CHARSET = "us-ascii";
+    var supportedProtocols = /* @__PURE__ */ new Set(["https:", "http:", "file:"]);
+    function hasCustomProtocol(urlString) {
+      try {
+        const { protocol } = new URL(urlString);
+        return protocol.endsWith(":") && !supportedProtocols.has(protocol);
+      } catch {
+        return false;
+      }
+    }
+    function normalizeDataURL(urlString) {
+      const match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(
+        urlString
+      );
+      if (!match) {
+        throw new Error(`Invalid URL: ${urlString}`);
+      }
+      let { type, data, hash } = (
+        /** @type {{type: string, data: string, hash: string}} */
+        match.groups
+      );
+      const mediaType = type.split(";");
+      let isBase64 = false;
+      if (mediaType[mediaType.length - 1] === "base64") {
+        mediaType.pop();
+        isBase64 = true;
+      }
+      const mimeType = mediaType.shift()?.toLowerCase() ?? "";
+      const attributes = mediaType.map(
+        /** @type {(string: string) => string} */
+        (attribute) => {
+          let [key, value = ""] = attribute.split("=").map(
+            /** @type {(string: string) => string} */
+            (string) => string.trim()
+          );
+          if (key === "charset") {
+            value = value.toLowerCase();
+            if (value === DATA_URL_DEFAULT_CHARSET) {
+              return "";
+            }
+          }
+          return `${key}${value ? `=${value}` : ""}`;
+        }
+      ).filter(Boolean);
+      const normalizedMediaType = [...attributes];
+      if (isBase64) {
+        normalizedMediaType.push("base64");
+      }
+      if (normalizedMediaType.length > 0 || mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE) {
+        normalizedMediaType.unshift(mimeType);
+      }
+      return `data:${normalizedMediaType.join(";")},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ""}`;
+    }
+    function normalizeUrl(urlString) {
+      urlString = urlString.trim();
+      if (/^data:/i.test(urlString)) {
+        return normalizeDataURL(urlString);
+      }
+      if (hasCustomProtocol(urlString)) {
+        return urlString;
+      }
+      const hasRelativeProtocol = urlString.startsWith("//");
+      const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString);
+      if (!isRelativeUrl) {
+        urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, "http:");
+      }
+      const urlObject = new URL(urlString);
+      if (urlObject.pathname) {
+        urlObject.pathname = urlObject.pathname.replace(
+          /(?<!\b[a-z][a-z\d+\-.]{1,50}:)\/{2,}/g,
+          "/"
+        );
+      }
+      if (urlObject.pathname) {
+        try {
+          urlObject.pathname = decodeURI(urlObject.pathname);
+        } catch {
+        }
+      }
+      if (urlObject.hostname) {
+        urlObject.hostname = urlObject.hostname.replace(/\.$/, "");
+      }
+      urlObject.pathname = urlObject.pathname.replace(/\/$/, "");
+      urlString = urlObject.toString();
+      if (urlObject.pathname === "/" && urlObject.hash === "") {
+        urlString = urlString.replace(/\/$/, "");
+      }
+      if (hasRelativeProtocol) {
+        urlString = urlString.replace(/^http:\/\//, "//");
+      }
+      return urlString;
+    }
+    module2.exports = normalizeUrl;
+  }
+});
+
+// node_modules/postcss-normalize-url/src/index.js
+var require_src16 = __commonJS({
+  "node_modules/postcss-normalize-url/src/index.js"(exports2, module2) {
+    "use strict";
+    var path = require("path");
+    var valueParser = require_lib();
+    var normalize = require_normalize();
+    var multiline = /\\[\r\n]/;
+    var escapeChars = /([\s\(\)"'])/g;
+    var ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\d+\-.]*?:/;
+    var WINDOWS_PATH_REGEX = /^[a-zA-Z]:\\/;
+    function isAbsolute(url) {
+      if (WINDOWS_PATH_REGEX.test(url)) {
+        return false;
+      }
+      return ABSOLUTE_URL_REGEX.test(url);
+    }
+    function convert(url) {
+      if (isAbsolute(url) || url.startsWith("//")) {
+        let normalizedURL;
+        try {
+          normalizedURL = normalize(url);
+        } catch (e) {
+          normalizedURL = url;
+        }
+        return normalizedURL;
+      }
+      return path.normalize(url).replace(new RegExp("\\" + path.sep, "g"), "/");
+    }
+    function transformNamespace(rule) {
+      rule.params = valueParser(rule.params).walk((node) => {
+        if (node.type === "function" && node.value.toLowerCase() === "url" && node.nodes.length) {
+          node.type = "string";
+          node.quote = node.nodes[0].type === "string" ? node.nodes[0].quote : '"';
+          node.value = node.nodes[0].value;
+        }
+        if (node.type === "string") {
+          node.value = node.value.trim();
+        }
+        return false;
+      }).toString();
+    }
+    function transformDecl(decl) {
+      decl.value = valueParser(decl.value).walk((node) => {
+        if (node.type !== "function" || node.value.toLowerCase() !== "url") {
+          return false;
+        }
+        node.before = node.after = "";
+        if (!node.nodes.length) {
+          return false;
+        }
+        let url = node.nodes[0];
+        let escaped;
+        url.value = url.value.trim().replace(multiline, "");
+        if (url.value.length === 0) {
+          url.quote = "";
+          return false;
+        }
+        if (/^data:(.*)?,/i.test(url.value)) {
+          return false;
+        }
+        if (!/^.+-extension:\//i.test(url.value)) {
+          url.value = convert(url.value);
+        }
+        if (escapeChars.test(url.value) && url.type === "string") {
+          escaped = url.value.replace(escapeChars, "\\$1");
+          if (escaped.length < url.value.length + 2) {
+            url.value = escaped;
+            url.type = "word";
+          }
+        } else {
+          url.type = "word";
+        }
+        return false;
+      }).toString();
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-normalize-url",
+        OnceExit(css) {
+          css.walk((node) => {
+            if (node.type === "decl") {
+              return transformDecl(node);
+            } else if (node.type === "atrule" && node.name.toLowerCase() === "namespace") {
+              return transformNamespace(node);
+            }
+          });
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/stylehacks/src/exists.js
+var require_exists = __commonJS({
+  "node_modules/stylehacks/src/exists.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function exists(selector, index, value) {
+      const node = selector.at(index);
+      return node && node.value && node.value.toLowerCase() === value;
+    };
+  }
+});
+
+// node_modules/stylehacks/src/isMixin.js
+var require_isMixin = __commonJS({
+  "node_modules/stylehacks/src/isMixin.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function isMixin(node) {
+      const { selector } = node;
+      if (!selector || selector[selector.length - 1] === ":") {
+        return true;
+      }
+      return false;
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugin.js
+var require_plugin = __commonJS({
+  "node_modules/stylehacks/src/plugin.js"(exports2, module2) {
+    "use strict";
+    module2.exports = class BasePlugin {
+      /**
+       * @param {string[]} targets
+       * @param {string[]} nodeTypes
+       * @param {import('postcss').Result=} result
+       */
+      constructor(targets, nodeTypes, result) {
+        this.nodes = [];
+        this.targets = new Set(targets);
+        this.nodeTypes = new Set(nodeTypes);
+        this.result = result;
+      }
+      /**
+       * @param {import('postcss').Node} node
+       * @param {{identifier: string, hack: string}} metadata
+       * @return {void}
+       */
+      push(node, metadata) {
+        node._stylehacks = Object.assign(
+          {},
+          metadata,
+          {
+            message: `Bad ${metadata.identifier}: ${metadata.hack}`,
+            browsers: this.targets
+          }
+        );
+        this.nodes.push(
+          /** @type {NodeWithInfo} */
+          node
+        );
+      }
+      /**
+       * @param {import('postcss').Node} node
+       * @return {boolean}
+       */
+      any(node) {
+        if (this.nodeTypes.has(node.type)) {
+          this.detect(node);
+          return (
+            /** @type {NodeWithInfo} */
+            node._stylehacks !== void 0
+          );
+        }
+        return false;
+      }
+      /**
+       * @param {import('postcss').Node} node
+       * @return {void}
+       */
+      detectAndResolve(node) {
+        this.nodes = [];
+        this.detect(node);
+        return this.resolve();
+      }
+      /**
+       * @param {import('postcss').Node} node
+       * @return {void}
+       */
+      detectAndWarn(node) {
+        this.nodes = [];
+        this.detect(node);
+        return this.warn();
+      }
+      /** @param {import('postcss').Node} node */
+      // eslint-disable-next-line no-unused-vars
+      detect(node) {
+        throw new Error("You need to implement this method in a subclass.");
+      }
+      /** @return {void} */
+      resolve() {
+        return this.nodes.forEach((node) => node.remove());
+      }
+      warn() {
+        return this.nodes.forEach((node) => {
+          const { message, browsers, identifier, hack } = node._stylehacks;
+          return node.warn(
+            /** @type {import('postcss').Result} */
+            this.result,
+            message + JSON.stringify({ browsers, identifier, hack })
+          );
+        });
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/dictionary/browsers.js
+var require_browsers4 = __commonJS({
+  "node_modules/stylehacks/src/dictionary/browsers.js"(exports2, module2) {
+    "use strict";
+    var FF_2 = "firefox 2";
+    var IE_5_5 = "ie 5.5";
+    var IE_6 = "ie 6";
+    var IE_7 = "ie 7";
+    var IE_8 = "ie 8";
+    var OP_9 = "opera 9";
+    module2.exports = { FF_2, IE_5_5, IE_6, IE_7, IE_8, OP_9 };
+  }
+});
+
+// node_modules/stylehacks/src/dictionary/identifiers.js
+var require_identifiers = __commonJS({
+  "node_modules/stylehacks/src/dictionary/identifiers.js"(exports2, module2) {
+    "use strict";
+    var MEDIA_QUERY = "media query";
+    var PROPERTY = "property";
+    var SELECTOR = "selector";
+    var VALUE = "value";
+    module2.exports = { MEDIA_QUERY, PROPERTY, SELECTOR, VALUE };
+  }
+});
+
+// node_modules/stylehacks/src/dictionary/postcss.js
+var require_postcss2 = __commonJS({
+  "node_modules/stylehacks/src/dictionary/postcss.js"(exports2, module2) {
+    "use strict";
+    var ATRULE = "atrule";
+    var DECL = "decl";
+    var RULE = "rule";
+    module2.exports = { ATRULE, DECL, RULE };
+  }
+});
+
+// node_modules/stylehacks/src/dictionary/tags.js
+var require_tags = __commonJS({
+  "node_modules/stylehacks/src/dictionary/tags.js"(exports2, module2) {
+    "use strict";
+    var BODY = "body";
+    var HTML = "html";
+    module2.exports = { BODY, HTML };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/bodyEmpty.js
+var require_bodyEmpty = __commonJS({
+  "node_modules/stylehacks/src/plugins/bodyEmpty.js"(exports2, module2) {
+    "use strict";
+    var parser = require_dist2();
+    var exists = require_exists();
+    var isMixin = require_isMixin();
+    var BasePlugin = require_plugin();
+    var { FF_2 } = require_browsers4();
+    var { SELECTOR } = require_identifiers();
+    var { RULE } = require_postcss2();
+    var { BODY } = require_tags();
+    module2.exports = class BodyEmpty extends BasePlugin {
+      /** @param {import('postcss').Result} result */
+      constructor(result) {
+        super([FF_2], [RULE], result);
+      }
+      /**
+       * @param {import('postcss').Rule} rule
+       * @return {void}
+       */
+      detect(rule) {
+        if (isMixin(rule)) {
+          return;
+        }
+        parser(this.analyse(rule)).processSync(rule.selector);
+      }
+      /**
+       * @param {import('postcss').Rule} rule
+       * @return {parser.SyncProcessor<void>}
+       */
+      analyse(rule) {
+        return (selectors) => {
+          selectors.each((selector) => {
+            if (exists(selector, 0, BODY) && exists(selector, 1, ":empty") && exists(selector, 2, " ") && selector.at(3)) {
+              this.push(rule, {
+                identifier: SELECTOR,
+                hack: selector.toString()
+              });
+            }
+          });
+        };
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/htmlCombinatorCommentBody.js
+var require_htmlCombinatorCommentBody = __commonJS({
+  "node_modules/stylehacks/src/plugins/htmlCombinatorCommentBody.js"(exports2, module2) {
+    "use strict";
+    var parser = require_dist2();
+    var exists = require_exists();
+    var isMixin = require_isMixin();
+    var BasePlugin = require_plugin();
+    var { IE_5_5, IE_6, IE_7 } = require_browsers4();
+    var { SELECTOR } = require_identifiers();
+    var { RULE } = require_postcss2();
+    var { BODY, HTML } = require_tags();
+    module2.exports = class HtmlCombinatorCommentBody extends BasePlugin {
+      /** @param {import('postcss').Result} result */
+      constructor(result) {
+        super([IE_5_5, IE_6, IE_7], [RULE], result);
+      }
+      /**
+       * @param {import('postcss').Rule} rule
+       * @return {void}
+       */
+      detect(rule) {
+        if (isMixin(rule)) {
+          return;
+        }
+        if (rule.raws.selector && rule.raws.selector.raw) {
+          parser(this.analyse(rule)).processSync(rule.raws.selector.raw);
+        }
+      }
+      /** @param {import('postcss').Rule} rule
+       *  @return {parser.SyncProcessor<void>}
+       */
+      analyse(rule) {
+        return (selectors) => {
+          selectors.each((selector) => {
+            if (exists(selector, 0, HTML) && (exists(selector, 1, ">") || exists(selector, 1, "~")) && selector.at(2) && selector.at(2).type === "comment" && exists(selector, 3, " ") && exists(selector, 4, BODY) && exists(selector, 5, " ") && selector.at(6)) {
+              this.push(rule, {
+                identifier: SELECTOR,
+                hack: selector.toString()
+              });
+            }
+          });
+        };
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/htmlFirstChild.js
+var require_htmlFirstChild = __commonJS({
+  "node_modules/stylehacks/src/plugins/htmlFirstChild.js"(exports2, module2) {
+    "use strict";
+    var parser = require_dist2();
+    var exists = require_exists();
+    var isMixin = require_isMixin();
+    var BasePlugin = require_plugin();
+    var { OP_9 } = require_browsers4();
+    var { SELECTOR } = require_identifiers();
+    var { RULE } = require_postcss2();
+    var { HTML } = require_tags();
+    module2.exports = class HtmlFirstChild extends BasePlugin {
+      /** @param {import('postcss').Result} result */
+      constructor(result) {
+        super([OP_9], [RULE], result);
+      }
+      /**
+       * @param {import('postcss').Rule} rule
+       * @return {void}
+       */
+      detect(rule) {
+        if (isMixin(rule)) {
+          return;
+        }
+        parser(this.analyse(rule)).processSync(rule.selector);
+      }
+      /**
+       * @param {import('postcss').Rule} rule
+       * @return {parser.SyncProcessor<void>}
+       */
+      analyse(rule) {
+        return (selectors) => {
+          selectors.each((selector) => {
+            if (exists(selector, 0, HTML) && exists(selector, 1, ":first-child") && exists(selector, 2, " ") && selector.at(3)) {
+              this.push(rule, {
+                identifier: SELECTOR,
+                hack: selector.toString()
+              });
+            }
+          });
+        };
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/important.js
+var require_important = __commonJS({
+  "node_modules/stylehacks/src/plugins/important.js"(exports2, module2) {
+    "use strict";
+    var BasePlugin = require_plugin();
+    var { IE_5_5, IE_6, IE_7 } = require_browsers4();
+    var { DECL } = require_postcss2();
+    module2.exports = class Important extends BasePlugin {
+      /** @param {import('postcss').Result=} result */
+      constructor(result) {
+        super([IE_5_5, IE_6, IE_7], [DECL], result);
+      }
+      /**
+       * @param {import('postcss').Declaration} decl
+       * @return {void}
+       */
+      detect(decl) {
+        const match = decl.value.match(/!\w/);
+        if (match && match.index) {
+          const hack = decl.value.substr(match.index, decl.value.length - 1);
+          this.push(decl, {
+            identifier: "!important",
+            hack
+          });
+        }
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/leadingStar.js
+var require_leadingStar = __commonJS({
+  "node_modules/stylehacks/src/plugins/leadingStar.js"(exports2, module2) {
+    "use strict";
+    var BasePlugin = require_plugin();
+    var { IE_5_5, IE_6, IE_7 } = require_browsers4();
+    var { PROPERTY } = require_identifiers();
+    var { ATRULE, DECL } = require_postcss2();
+    var hacks = "!_$_&_*_)_=_%_+_,_._/_`_]_#_~_?_:_|".split("_");
+    module2.exports = class LeadingStar extends BasePlugin {
+      /** @param {import('postcss').Result=} result */
+      constructor(result) {
+        super([IE_5_5, IE_6, IE_7], [ATRULE, DECL], result);
+      }
+      /**
+       * @param {import('postcss').Declaration | import('postcss').AtRule} node
+       * @return {void}
+       */
+      detect(node) {
+        if (node.type === DECL) {
+          hacks.forEach((hack) => {
+            if (!node.prop.indexOf(hack)) {
+              this.push(node, {
+                identifier: PROPERTY,
+                hack: node.prop
+              });
+            }
+          });
+          const { before } = node.raws;
+          if (!before) {
+            return;
+          }
+          hacks.forEach((hack) => {
+            if (before.includes(hack)) {
+              this.push(node, {
+                identifier: PROPERTY,
+                hack: `${before.trim()}${node.prop}`
+              });
+            }
+          });
+        } else {
+          const { name } = node;
+          const len = name.length - 1;
+          if (name.lastIndexOf(":") === len) {
+            this.push(node, {
+              identifier: PROPERTY,
+              hack: `@${name.substr(0, len)}`
+            });
+          }
+        }
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/leadingUnderscore.js
+var require_leadingUnderscore = __commonJS({
+  "node_modules/stylehacks/src/plugins/leadingUnderscore.js"(exports2, module2) {
+    "use strict";
+    var BasePlugin = require_plugin();
+    var { IE_6 } = require_browsers4();
+    var { PROPERTY } = require_identifiers();
+    var { DECL } = require_postcss2();
+    function vendorPrefix(prop) {
+      let match = prop.match(/^(-\w+-)/);
+      if (match) {
+        return match[0];
+      }
+      return "";
+    }
+    module2.exports = class LeadingUnderscore extends BasePlugin {
+      /** @param {import('postcss').Result=} result */
+      constructor(result) {
+        super([IE_6], [DECL], result);
+      }
+      /**
+       * @param {import('postcss').Declaration} decl
+       * @return {void}
+       */
+      detect(decl) {
+        const { before } = decl.raws;
+        if (before && before.includes("_")) {
+          this.push(decl, {
+            identifier: PROPERTY,
+            hack: `${before.trim()}${decl.prop}`
+          });
+        }
+        if (decl.prop[0] === "-" && decl.prop[1] !== "-" && vendorPrefix(decl.prop) === "") {
+          this.push(decl, {
+            identifier: PROPERTY,
+            hack: decl.prop
+          });
+        }
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/mediaSlash0.js
+var require_mediaSlash0 = __commonJS({
+  "node_modules/stylehacks/src/plugins/mediaSlash0.js"(exports2, module2) {
+    "use strict";
+    var BasePlugin = require_plugin();
+    var { IE_8 } = require_browsers4();
+    var { MEDIA_QUERY } = require_identifiers();
+    var { ATRULE } = require_postcss2();
+    module2.exports = class MediaSlash0 extends BasePlugin {
+      /** @param {import('postcss').Result} result */
+      constructor(result) {
+        super([IE_8], [ATRULE], result);
+      }
+      /**
+       * @param {import('postcss').AtRule} rule
+       * @return {void}
+       */
+      detect(rule) {
+        const params = rule.params.trim();
+        if (params.toLowerCase() === "\\0screen") {
+          this.push(rule, {
+            identifier: MEDIA_QUERY,
+            hack: params
+          });
+        }
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/mediaSlash0Slash9.js
+var require_mediaSlash0Slash9 = __commonJS({
+  "node_modules/stylehacks/src/plugins/mediaSlash0Slash9.js"(exports2, module2) {
+    "use strict";
+    var BasePlugin = require_plugin();
+    var { IE_5_5, IE_6, IE_7, IE_8 } = require_browsers4();
+    var { MEDIA_QUERY } = require_identifiers();
+    var { ATRULE } = require_postcss2();
+    module2.exports = class MediaSlash0Slash9 extends BasePlugin {
+      /** @param {import('postcss').Result} result */
+      constructor(result) {
+        super([IE_5_5, IE_6, IE_7, IE_8], [ATRULE], result);
+      }
+      /**
+       * @param {import('postcss').AtRule} rule
+       * @return {void}
+       */
+      detect(rule) {
+        const params = rule.params.trim();
+        if (params.toLowerCase() === "\\0screen\\,screen\\9") {
+          this.push(rule, {
+            identifier: MEDIA_QUERY,
+            hack: params
+          });
+        }
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/mediaSlash9.js
+var require_mediaSlash9 = __commonJS({
+  "node_modules/stylehacks/src/plugins/mediaSlash9.js"(exports2, module2) {
+    "use strict";
+    var BasePlugin = require_plugin();
+    var { IE_5_5, IE_6, IE_7 } = require_browsers4();
+    var { MEDIA_QUERY } = require_identifiers();
+    var { ATRULE } = require_postcss2();
+    module2.exports = class MediaSlash9 extends BasePlugin {
+      /** @param {import('postcss').Result} result */
+      constructor(result) {
+        super([IE_5_5, IE_6, IE_7], [ATRULE], result);
+      }
+      /**
+       * @param {import('postcss').AtRule} rule
+       * @return {void}
+       */
+      detect(rule) {
+        const params = rule.params.trim();
+        if (params.toLowerCase() === "screen\\9") {
+          this.push(rule, {
+            identifier: MEDIA_QUERY,
+            hack: params
+          });
+        }
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/slash9.js
+var require_slash9 = __commonJS({
+  "node_modules/stylehacks/src/plugins/slash9.js"(exports2, module2) {
+    "use strict";
+    var BasePlugin = require_plugin();
+    var { IE_6, IE_7, IE_8 } = require_browsers4();
+    var { VALUE } = require_identifiers();
+    var { DECL } = require_postcss2();
+    module2.exports = class Slash9 extends BasePlugin {
+      /** @param {import('postcss').Result=} result */
+      constructor(result) {
+        super([IE_6, IE_7, IE_8], [DECL], result);
+      }
+      /**
+       * @param {import('postcss').Declaration} decl
+       * @return {void}
+       */
+      detect(decl) {
+        let v = decl.value;
+        if (v && v.length > 2 && v.indexOf("\\9") === v.length - 2) {
+          this.push(decl, {
+            identifier: VALUE,
+            hack: v
+          });
+        }
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/starHtml.js
+var require_starHtml = __commonJS({
+  "node_modules/stylehacks/src/plugins/starHtml.js"(exports2, module2) {
+    "use strict";
+    var parser = require_dist2();
+    var exists = require_exists();
+    var isMixin = require_isMixin();
+    var BasePlugin = require_plugin();
+    var { IE_5_5, IE_6 } = require_browsers4();
+    var { SELECTOR } = require_identifiers();
+    var { RULE } = require_postcss2();
+    var { HTML } = require_tags();
+    module2.exports = class StarHtml extends BasePlugin {
+      /** @param {import('postcss').Result=} result */
+      constructor(result) {
+        super([IE_5_5, IE_6], [RULE], result);
+      }
+      /**
+       * @param {import('postcss').Rule} rule
+       * @return {void}
+       */
+      detect(rule) {
+        if (isMixin(rule)) {
+          return;
+        }
+        parser(this.analyse(rule)).processSync(rule.selector);
+      }
+      /**
+       * @param {import('postcss').Rule} rule
+       * @return {parser.SyncProcessor<void>}
+       */
+      analyse(rule) {
+        return (selectors) => {
+          selectors.each((selector) => {
+            if (exists(selector, 0, "*") && exists(selector, 1, " ") && exists(selector, 2, HTML) && exists(selector, 3, " ") && selector.at(4)) {
+              this.push(rule, {
+                identifier: SELECTOR,
+                hack: selector.toString()
+              });
+            }
+          });
+        };
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/trailingSlashComma.js
+var require_trailingSlashComma = __commonJS({
+  "node_modules/stylehacks/src/plugins/trailingSlashComma.js"(exports2, module2) {
+    "use strict";
+    var BasePlugin = require_plugin();
+    var isMixin = require_isMixin();
+    var { IE_5_5, IE_6, IE_7 } = require_browsers4();
+    var { SELECTOR } = require_identifiers();
+    var { RULE } = require_postcss2();
+    module2.exports = class TrailingSlashComma extends BasePlugin {
+      /** @param {import('postcss').Result=} result */
+      constructor(result) {
+        super([IE_5_5, IE_6, IE_7], [RULE], result);
+      }
+      /**
+       * @param {import('postcss').Rule} rule
+       * @return {void}
+       */
+      detect(rule) {
+        if (isMixin(rule)) {
+          return;
+        }
+        const { selector } = rule;
+        const trim = selector.trim();
+        if (trim.lastIndexOf(",") === selector.length - 1 || trim.lastIndexOf("\\") === selector.length - 1) {
+          this.push(rule, {
+            identifier: SELECTOR,
+            hack: selector
+          });
+        }
+      }
+    };
+  }
+});
+
+// node_modules/stylehacks/src/plugins/index.js
+var require_plugins2 = __commonJS({
+  "node_modules/stylehacks/src/plugins/index.js"(exports2, module2) {
+    "use strict";
+    var bodyEmpty = require_bodyEmpty();
+    var htmlCombinatorCommentBody = require_htmlCombinatorCommentBody();
+    var htmlFirstChild = require_htmlFirstChild();
+    var important = require_important();
+    var leadingStar = require_leadingStar();
+    var leadingUnderscore = require_leadingUnderscore();
+    var mediaSlash0 = require_mediaSlash0();
+    var mediaSlash0Slash9 = require_mediaSlash0Slash9();
+    var mediaSlash9 = require_mediaSlash9();
+    var slash9 = require_slash9();
+    var starHtml = require_starHtml();
+    var trailingSlashComma = require_trailingSlashComma();
+    module2.exports = [
+      bodyEmpty,
+      htmlCombinatorCommentBody,
+      htmlFirstChild,
+      important,
+      leadingStar,
+      leadingUnderscore,
+      mediaSlash0,
+      mediaSlash0Slash9,
+      mediaSlash9,
+      slash9,
+      starHtml,
+      trailingSlashComma
+    ];
+  }
+});
+
+// node_modules/stylehacks/src/index.js
+var require_src17 = __commonJS({
+  "node_modules/stylehacks/src/index.js"(exports2, module2) {
+    "use strict";
+    var { dirname } = require("path");
+    var browserslist = require_browserslist();
+    var plugins = require_plugins2();
+    function pluginCreator(opts = {}) {
+      return {
+        postcssPlugin: "stylehacks",
+        /**
+         * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
+         */
+        prepare(result) {
+          const { stats, env, from, file } = result.opts || {};
+          const browsers = browserslist(opts.overrideBrowserslist, {
+            stats: opts.stats || stats,
+            path: opts.path || dirname(from || file || __filename),
+            env: opts.env || env
+          });
+          return {
+            OnceExit(css) {
+              const processors = [];
+              for (const Plugin of plugins) {
+                const hack = new Plugin(result);
+                if (!browsers.some((browser) => hack.targets.has(browser))) {
+                  processors.push(hack);
+                }
+              }
+              css.walk((node) => {
+                processors.forEach((proc) => {
+                  if (!proc.nodeTypes.has(node.type)) {
+                    return;
+                  }
+                  if (opts.lint) {
+                    return proc.detectAndWarn(node);
+                  }
+                  return proc.detectAndResolve(node);
+                });
+              });
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.detect = (node) => {
+      return plugins.some((Plugin) => {
+        const hack = new Plugin();
+        return hack.any(node);
+      });
+    };
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/insertCloned.js
+var require_insertCloned = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/insertCloned.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function insertCloned(rule, decl, props) {
+      const newNode = Object.assign(decl.clone(), props);
+      rule.insertAfter(decl, newNode);
+      return newNode;
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/parseTrbl.js
+var require_parseTrbl = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/parseTrbl.js"(exports2, module2) {
+    "use strict";
+    var { list } = require_postcss();
+    module2.exports = (v) => {
+      const s = typeof v === "string" ? list.space(v) : v;
+      return [
+        s[0],
+        // top
+        s[1] || s[0],
+        // right
+        s[2] || s[0],
+        // bottom
+        s[3] || s[1] || s[0]
+        // left
+      ];
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/hasAllProps.js
+var require_hasAllProps = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/hasAllProps.js"(exports2, module2) {
+    "use strict";
+    module2.exports = (rule, ...props) => {
+      return props.every(
+        (p) => rule.some((node) => node.prop && node.prop.toLowerCase().includes(p))
+      );
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/getDecls.js
+var require_getDecls = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/getDecls.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function getDecls(rule, properties) {
+      return (
+        /** @type {import('postcss').Declaration[]} */
+        rule.nodes.filter(
+          (node) => node.type === "decl" && properties.includes(node.prop.toLowerCase())
+        )
+      );
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/getLastNode.js
+var require_getLastNode = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/getLastNode.js"(exports2, module2) {
+    "use strict";
+    module2.exports = (rule, prop) => {
+      return (
+        /** @type {import('postcss').Declaration} */
+        rule.filter((n) => n.type === "decl" && n.prop.toLowerCase() === prop).pop()
+      );
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/getRules.js
+var require_getRules = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/getRules.js"(exports2, module2) {
+    "use strict";
+    var getLastNode = require_getLastNode();
+    module2.exports = function getRules(props, properties) {
+      return properties.map((property) => {
+        return getLastNode(props, property);
+      }).filter(Boolean);
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/getValue.js
+var require_getValue2 = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/getValue.js"(exports2, module2) {
+    "use strict";
+    module2.exports = function getValue({ value }) {
+      return value;
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/mergeRules.js
+var require_mergeRules = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/mergeRules.js"(exports2, module2) {
+    "use strict";
+    var hasAllProps = require_hasAllProps();
+    var getDecls = require_getDecls();
+    var getRules = require_getRules();
+    function isConflictingProp(propA, propB) {
+      if (!propB.prop || propB.important !== propA.important || propA.prop === propB.prop) {
+        return false;
+      }
+      const partsA = propA.prop.split("-");
+      const partsB = propB.prop.split("-");
+      if (partsA[0] !== partsB[0]) {
+        return false;
+      }
+      const partsASet = new Set(partsA);
+      return partsB.every((partB) => partsASet.has(partB));
+    }
+    function hasConflicts(match, nodes) {
+      const firstNode = Math.min(...match.map((n) => nodes.indexOf(n)));
+      const lastNode = Math.max(...match.map((n) => nodes.indexOf(n)));
+      const between = nodes.slice(firstNode + 1, lastNode);
+      return match.some((a) => between.some((b) => isConflictingProp(a, b)));
+    }
+    module2.exports = function mergeRules(rule, properties, callback) {
+      let decls = getDecls(rule, properties);
+      while (decls.length) {
+        const last = decls[decls.length - 1];
+        const props = decls.filter((node) => node.important === last.important);
+        const rules = getRules(props, properties);
+        if (hasAllProps(rules, ...properties) && !hasConflicts(
+          rules,
+          /** @type import('postcss').Declaration[]*/
+          rule.nodes
+        )) {
+          if (callback(rules, last, props)) {
+            decls = decls.filter((node) => !rules.includes(node));
+          }
+        }
+        decls = decls.filter((node) => node !== last);
+      }
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/minifyTrbl.js
+var require_minifyTrbl = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/minifyTrbl.js"(exports2, module2) {
+    "use strict";
+    var parseTrbl = require_parseTrbl();
+    module2.exports = (v) => {
+      const value = parseTrbl(v);
+      if (value[3] === value[1]) {
+        value.pop();
+        if (value[2] === value[0]) {
+          value.pop();
+          if (value[0] === value[1]) {
+            value.pop();
+          }
+        }
+      }
+      return value.join(" ");
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/colornames.js
+var require_colornames = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/colornames.js"(exports2, module2) {
+    "use strict";
+    module2.exports = /* @__PURE__ */ new Set([
+      "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"
+    ]);
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/validateWsc.js
+var require_validateWsc = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/validateWsc.js"(exports2, module2) {
+    "use strict";
+    var colors = require_colornames();
+    var widths = /* @__PURE__ */ new Set(["thin", "medium", "thick"]);
+    var styles = /* @__PURE__ */ new Set([
+      "none",
+      "hidden",
+      "dotted",
+      "dashed",
+      "solid",
+      "double",
+      "groove",
+      "ridge",
+      "inset",
+      "outset"
+    ]);
+    function isStyle(value) {
+      return value !== void 0 && styles.has(value.toLowerCase());
+    }
+    function isWidth(value) {
+      return value && widths.has(value.toLowerCase()) || /^(\d+(\.\d+)?|\.\d+)(\w+)?$/.test(value);
+    }
+    function isColor(value) {
+      if (!value) {
+        return false;
+      }
+      value = value.toLowerCase();
+      if (/rgba?\(/.test(value)) {
+        return true;
+      }
+      if (/hsla?\(/.test(value)) {
+        return true;
+      }
+      if (/#([0-9a-z]{6}|[0-9a-z]{3})/.test(value)) {
+        return true;
+      }
+      if (value === "transparent") {
+        return true;
+      }
+      if (value === "currentcolor") {
+        return true;
+      }
+      return colors.has(value);
+    }
+    function isValidWsc(wscs) {
+      const validWidth = isWidth(wscs[0]);
+      const validStyle = isStyle(wscs[1]);
+      const validColor = isColor(wscs[2]);
+      return validWidth && validStyle || validWidth && validColor || validStyle && validColor;
+    }
+    module2.exports = { isStyle, isWidth, isColor, isValidWsc };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/parseWsc.js
+var require_parseWsc = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/parseWsc.js"(exports2, module2) {
+    "use strict";
+    var { list } = require_postcss();
+    var { isWidth, isStyle, isColor } = require_validateWsc();
+    var none = /^\s*(none|medium)(\s+none(\s+(none|currentcolor))?)?\s*$/i;
+    var varRE = /--(\w|-|[^\x00-\x7F])+/g;
+    var toLower = (v) => {
+      let match;
+      let lastIndex = 0;
+      let result = "";
+      varRE.lastIndex = 0;
+      while ((match = varRE.exec(v)) !== null) {
+        if (match.index > lastIndex) {
+          result += v.substring(lastIndex, match.index).toLowerCase();
+        }
+        result += match[0];
+        lastIndex = match.index + match[0].length;
+      }
+      if (lastIndex < v.length) {
+        result += v.substring(lastIndex).toLowerCase();
+      }
+      if (result === "") {
+        return v;
+      }
+      return result;
+    };
+    module2.exports = function parseWsc(value) {
+      if (none.test(value)) {
+        return ["medium", "none", "currentcolor"];
+      }
+      let width, style, color;
+      const values = list.space(value);
+      if (values.length > 1 && isStyle(values[1]) && values[0].toLowerCase() === "none") {
+        values.unshift();
+        width = "0";
+      }
+      const unknown = [];
+      values.forEach((v) => {
+        if (isStyle(v)) {
+          style = toLower(v);
+        } else if (isWidth(v)) {
+          width = toLower(v);
+        } else if (isColor(v)) {
+          color = toLower(v);
+        } else {
+          unknown.push(v);
+        }
+      });
+      if (unknown.length) {
+        if (!width && style && color) {
+          width = unknown.pop();
+        }
+        if (width && !style && color) {
+          style = unknown.pop();
+        }
+        if (width && style && !color) {
+          color = unknown.pop();
+        }
+      }
+      return (
+        /** @type {[string, string, string]} */
+        [width, style, color]
+      );
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/minifyWsc.js
+var require_minifyWsc = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/minifyWsc.js"(exports2, module2) {
+    "use strict";
+    var parseWsc = require_parseWsc();
+    var minifyTrbl = require_minifyTrbl();
+    var { isValidWsc } = require_validateWsc();
+    var defaults = ["medium", "none", "currentcolor"];
+    module2.exports = (v) => {
+      const values = parseWsc(v);
+      if (!isValidWsc(values)) {
+        return minifyTrbl(v);
+      }
+      const value = [...values, ""].reduceRight((prev, cur, i, arr) => {
+        if (cur === void 0 || cur.toLowerCase() === defaults[i] && (!i || (arr[i - 1] || "").toLowerCase() !== cur.toLowerCase())) {
+          return prev;
+        }
+        return cur + " " + prev;
+      }).trim();
+      return minifyTrbl(value || "none");
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/isCustomProp.js
+var require_isCustomProp = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/isCustomProp.js"(exports2, module2) {
+    "use strict";
+    module2.exports = (node) => node.value.search(/var\s*\(\s*--/i) !== -1;
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/canMerge.js
+var require_canMerge = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/canMerge.js"(exports2, module2) {
+    "use strict";
+    var isCustomProp = require_isCustomProp();
+    var important = (node) => node.important;
+    var unimportant = (node) => !node.important;
+    var cssWideKeywords = ["inherit", "initial", "unset", "revert"];
+    module2.exports = (props, includeCustomProps = true) => {
+      const uniqueProps = new Set(props.map((node) => node.value.toLowerCase()));
+      if (uniqueProps.size > 1) {
+        for (const unmergeable of cssWideKeywords) {
+          if (uniqueProps.has(unmergeable)) {
+            return false;
+          }
+        }
+      }
+      if (includeCustomProps && props.some(isCustomProp) && !props.every(isCustomProp)) {
+        return false;
+      }
+      return props.every(unimportant) || props.every(important);
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/trbl.js
+var require_trbl = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/trbl.js"(exports2, module2) {
+    "use strict";
+    module2.exports = ["top", "right", "bottom", "left"];
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/canExplode.js
+var require_canExplode = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/canExplode.js"(exports2, module2) {
+    "use strict";
+    var isCustomProp = require_isCustomProp();
+    var globalKeywords = /* @__PURE__ */ new Set(["inherit", "initial", "unset", "revert"]);
+    module2.exports = (prop, includeCustomProps = true) => {
+      if (!prop.value || includeCustomProps && isCustomProp(prop) || prop.value && globalKeywords.has(prop.value.toLowerCase())) {
+        return false;
+      }
+      return true;
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/decl/borders.js
+var require_borders = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/decl/borders.js"(exports2, module2) {
+    "use strict";
+    var { list } = require_postcss();
+    var stylehacks = require_src17();
+    var insertCloned = require_insertCloned();
+    var parseTrbl = require_parseTrbl();
+    var hasAllProps = require_hasAllProps();
+    var getDecls = require_getDecls();
+    var getRules = require_getRules();
+    var getValue = require_getValue2();
+    var mergeRules = require_mergeRules();
+    var minifyTrbl = require_minifyTrbl();
+    var minifyWsc = require_minifyWsc();
+    var canMerge = require_canMerge();
+    var trbl = require_trbl();
+    var isCustomProp = require_isCustomProp();
+    var canExplode = require_canExplode();
+    var getLastNode = require_getLastNode();
+    var parseWsc = require_parseWsc();
+    var { isValidWsc } = require_validateWsc();
+    var wsc = ["width", "style", "color"];
+    var defaults = ["medium", "none", "currentcolor"];
+    var colorMightRequireFallback = /(hsla|rgba|color|hwb|lab|lch|oklab|oklch)\(/i;
+    function borderProperty(...parts) {
+      return `border-${parts.join("-")}`;
+    }
+    function mapBorderProperty(value) {
+      return borderProperty(value);
+    }
+    var directions = trbl.map(mapBorderProperty);
+    var properties = wsc.map(mapBorderProperty);
+    var directionalProperties = directions.reduce(
+      (prev, curr) => prev.concat(wsc.map((prop) => `${curr}-${prop}`)),
+      /** @type {string[]} */
+      []
+    );
+    var precedence = [
+      ["border"],
+      directions.concat(properties),
+      directionalProperties
+    ];
+    var allProperties = precedence.reduce((a, b) => a.concat(b));
+    function getLevel(prop) {
+      for (let i = 0; i < precedence.length; i++) {
+        if (precedence[i].includes(prop.toLowerCase())) {
+          return i;
+        }
+      }
+    }
+    var isValueCustomProp = (value) => value !== void 0 && value.search(/var\s*\(\s*--/i) !== -1;
+    function canMergeValues(values) {
+      return !values.some(isValueCustomProp);
+    }
+    function getColorValue(decl) {
+      if (decl.prop.substr(-5) === "color") {
+        return decl.value;
+      }
+      return parseWsc(decl.value)[2] || defaults[2];
+    }
+    function diffingProps(values, nextValues) {
+      return wsc.reduce(
+        (prev, curr, i) => {
+          if (values[i] === nextValues[i]) {
+            return prev;
+          }
+          return [...prev, curr];
+        },
+        /** @type {string[]} */
+        []
+      );
+    }
+    function mergeRedundant({ values, nextValues, decl, nextDecl, index }) {
+      if (!canMerge([decl, nextDecl])) {
+        return;
+      }
+      if (stylehacks.detect(decl) || stylehacks.detect(nextDecl)) {
+        return;
+      }
+      const diff = diffingProps(values, nextValues);
+      if (diff.length !== 1) {
+        return;
+      }
+      const prop = (
+        /** @type {string} */
+        diff.pop()
+      );
+      const position = wsc.indexOf(prop);
+      const prop1 = `${nextDecl.prop}-${prop}`;
+      const prop2 = `border-${prop}`;
+      let props = parseTrbl(values[position]);
+      props[index] = nextValues[position];
+      const borderValue2 = values.filter((e, i) => i !== position).join(" ");
+      const propValue2 = minifyTrbl(props);
+      const origLength = (minifyWsc(decl.value) + nextDecl.prop + nextDecl.value).length;
+      const newLength1 = decl.value.length + prop1.length + minifyWsc(nextValues[position]).length;
+      const newLength2 = borderValue2.length + prop2.length + propValue2.length;
+      if (newLength1 < newLength2 && newLength1 < origLength) {
+        nextDecl.prop = prop1;
+        nextDecl.value = nextValues[position];
+      }
+      if (newLength2 < newLength1 && newLength2 < origLength) {
+        decl.value = borderValue2;
+        nextDecl.prop = prop2;
+        nextDecl.value = propValue2;
+      }
+    }
+    function isCloseEnough(mapped) {
+      return mapped[0] === mapped[1] && mapped[1] === mapped[2] || mapped[1] === mapped[2] && mapped[2] === mapped[3] || mapped[2] === mapped[3] && mapped[3] === mapped[0] || mapped[3] === mapped[0] && mapped[0] === mapped[1];
+    }
+    function getDistinctShorthands(mapped) {
+      return [...new Set(mapped)];
+    }
+    function explode(rule) {
+      rule.walkDecls(/^border/i, (decl) => {
+        if (!canExplode(decl, false)) {
+          return;
+        }
+        if (stylehacks.detect(decl)) {
+          return;
+        }
+        const prop = decl.prop.toLowerCase();
+        if (prop === "border") {
+          if (isValidWsc(parseWsc(decl.value))) {
+            directions.forEach((direction) => {
+              insertCloned(
+                /** @type {import('postcss').Rule} */
+                decl.parent,
+                decl,
+                { prop: direction }
+              );
+            });
+            decl.remove();
+          }
+        }
+        if (directions.some((direction) => prop === direction)) {
+          let values = parseWsc(decl.value);
+          if (isValidWsc(values)) {
+            wsc.forEach((d, i) => {
+              insertCloned(
+                /** @type {import('postcss').Rule} */
+                decl.parent,
+                decl,
+                {
+                  prop: `${prop}-${d}`,
+                  value: values[i] || defaults[i]
+                }
+              );
+            });
+            decl.remove();
+          }
+        }
+        wsc.some((style) => {
+          if (prop !== borderProperty(style)) {
+            return false;
+          }
+          if (isCustomProp(decl)) {
+            decl.prop = decl.prop.toLowerCase();
+            return false;
+          }
+          parseTrbl(decl.value).forEach((value, i) => {
+            insertCloned(
+              /** @type {import('postcss').Rule} */
+              decl.parent,
+              decl,
+              {
+                prop: borderProperty(trbl[i], style),
+                value
+              }
+            );
+          });
+          return decl.remove();
+        });
+      });
+    }
+    function merge(rule) {
+      trbl.forEach((direction) => {
+        const prop = borderProperty(direction);
+        mergeRules(
+          rule,
+          wsc.map((style) => borderProperty(direction, style)),
+          (rules, lastNode) => {
+            if (canMerge(rules, false) && !rules.some(stylehacks.detect)) {
+              insertCloned(
+                /** @type {import('postcss').Rule} */
+                lastNode.parent,
+                lastNode,
+                {
+                  prop,
+                  value: rules.map(getValue).join(" ")
+                }
+              );
+              for (const node of rules) {
+                node.remove();
+              }
+              return true;
+            }
+            return false;
+          }
+        );
+      });
+      wsc.forEach((style) => {
+        const prop = borderProperty(style);
+        mergeRules(
+          rule,
+          trbl.map((direction) => borderProperty(direction, style)),
+          (rules, lastNode) => {
+            if (canMerge(rules) && !rules.some(stylehacks.detect)) {
+              insertCloned(
+                /** @type {import('postcss').Rule} */
+                lastNode.parent,
+                lastNode,
+                {
+                  prop,
+                  value: minifyTrbl(rules.map(getValue).join(" "))
+                }
+              );
+              for (const node of rules) {
+                node.remove();
+              }
+              return true;
+            }
+            return false;
+          }
+        );
+      });
+      mergeRules(rule, directions, (rules, lastNode) => {
+        if (rules.some(stylehacks.detect)) {
+          return false;
+        }
+        const values = rules.map(({ value }) => value);
+        if (!canMergeValues(values)) {
+          return false;
+        }
+        const parsed = values.map((value) => parseWsc(value));
+        if (!parsed.every(isValidWsc)) {
+          return false;
+        }
+        wsc.forEach((d, i) => {
+          const value = parsed.map((v) => v[i] || defaults[i]);
+          if (canMergeValues(value)) {
+            insertCloned(
+              /** @type {import('postcss').Rule} */
+              lastNode.parent,
+              lastNode,
+              {
+                prop: borderProperty(d),
+                value: minifyTrbl(
+                  /** @type {[string, string, string, string]} */
+                  value
+                )
+              }
+            );
+          } else {
+            insertCloned(
+              /** @type {import('postcss').Rule} */
+              lastNode.parent,
+              lastNode
+            );
+          }
+        });
+        for (const node of rules) {
+          node.remove();
+        }
+        return true;
+      });
+      mergeRules(rule, properties, (rules, lastNode) => {
+        if (rules.some(stylehacks.detect)) {
+          return false;
+        }
+        const values = rules.map((node) => parseTrbl(node.value));
+        const mapped = [0, 1, 2, 3].map(
+          (i) => [values[0][i], values[1][i], values[2][i]].join(" ")
+        );
+        if (!canMergeValues(mapped)) {
+          return false;
+        }
+        const [width, style, color] = rules;
+        const reduced = getDistinctShorthands(mapped);
+        if (isCloseEnough(mapped) && canMerge(rules, false)) {
+          const first = mapped.indexOf(reduced[0]) !== mapped.lastIndexOf(reduced[0]);
+          const border = insertCloned(
+            /** @type {import('postcss').Rule} */
+            lastNode.parent,
+            lastNode,
+            {
+              prop: "border",
+              value: first ? reduced[0] : reduced[1]
+            }
+          );
+          if (reduced[1]) {
+            const value = first ? reduced[1] : reduced[0];
+            const prop = borderProperty(trbl[mapped.indexOf(value)]);
+            rule.insertAfter(
+              border,
+              Object.assign(lastNode.clone(), {
+                prop,
+                value
+              })
+            );
+          }
+          for (const node of rules) {
+            node.remove();
+          }
+          return true;
+        } else if (reduced.length === 1) {
+          rule.insertBefore(
+            color,
+            Object.assign(lastNode.clone(), {
+              prop: "border",
+              value: [width, style].map(getValue).join(" ")
+            })
+          );
+          rules.filter((node) => node.prop.toLowerCase() !== properties[2]).forEach((node) => node.remove());
+          return true;
+        }
+        return false;
+      });
+      mergeRules(rule, properties, (rules, lastNode) => {
+        if (rules.some(stylehacks.detect)) {
+          return false;
+        }
+        const values = rules.map((node) => parseTrbl(node.value));
+        const mapped = [0, 1, 2, 3].map(
+          (i) => [values[0][i], values[1][i], values[2][i]].join(" ")
+        );
+        const reduced = getDistinctShorthands(mapped);
+        const none = "medium none currentcolor";
+        if (reduced.length > 1 && reduced.length < 4 && reduced.includes(none)) {
+          const filtered = mapped.filter((p) => p !== none);
+          const mostCommon = reduced.sort(
+            (a, b) => mapped.filter((v) => v === b).length - mapped.filter((v) => v === a).length
+          )[0];
+          const borderValue = reduced.length === 2 ? filtered[0] : mostCommon;
+          rule.insertBefore(
+            lastNode,
+            Object.assign(lastNode.clone(), {
+              prop: "border",
+              value: borderValue
+            })
+          );
+          directions.forEach((dir, i) => {
+            if (mapped[i] !== borderValue) {
+              rule.insertBefore(
+                lastNode,
+                Object.assign(lastNode.clone(), {
+                  prop: dir,
+                  value: mapped[i]
+                })
+              );
+            }
+          });
+          for (const node of rules) {
+            node.remove();
+          }
+          return true;
+        }
+        return false;
+      });
+      mergeRules(rule, directions, (rules, lastNode) => {
+        if (rules.some(stylehacks.detect)) {
+          return false;
+        }
+        const values = rules.map((node) => {
+          const wscValue = parseWsc(node.value);
+          if (!isValidWsc(wscValue)) {
+            return node.value;
+          }
+          return wscValue.map((value, i) => value || defaults[i]).join(" ");
+        });
+        const reduced = getDistinctShorthands(values);
+        if (isCloseEnough(values)) {
+          const first = values.indexOf(reduced[0]) !== values.lastIndexOf(reduced[0]);
+          rule.insertBefore(
+            lastNode,
+            Object.assign(lastNode.clone(), {
+              prop: "border",
+              value: minifyWsc(first ? values[0] : values[1])
+            })
+          );
+          if (reduced[1]) {
+            const value = first ? reduced[1] : reduced[0];
+            const prop = directions[values.indexOf(value)];
+            rule.insertBefore(
+              lastNode,
+              Object.assign(lastNode.clone(), {
+                prop,
+                value: minifyWsc(value)
+              })
+            );
+          }
+          for (const node of rules) {
+            node.remove();
+          }
+          return true;
+        }
+        return false;
+      });
+      directions.forEach((direction) => {
+        wsc.forEach((style, i) => {
+          const prop = `${direction}-${style}`;
+          mergeRules(rule, [direction, prop], (rules, lastNode) => {
+            if (lastNode.prop !== direction) {
+              return false;
+            }
+            const values = parseWsc(lastNode.value);
+            if (!isValidWsc(values)) {
+              return false;
+            }
+            const wscProp = rules.filter((r) => r !== lastNode)[0];
+            if (!isValueCustomProp(values[i]) || isCustomProp(wscProp)) {
+              return false;
+            }
+            const wscValue = values[i];
+            values[i] = wscProp.value;
+            if (canMerge(rules, false) && !rules.some(stylehacks.detect)) {
+              insertCloned(
+                /** @type {import('postcss').Rule} */
+                lastNode.parent,
+                lastNode,
+                {
+                  prop,
+                  value: wscValue
+                }
+              );
+              lastNode.value = minifyWsc(
+                /** @type {any} */
+                values
+              );
+              wscProp.remove();
+              return true;
+            }
+            return false;
+          });
+        });
+      });
+      wsc.forEach((style, i) => {
+        const prop = borderProperty(style);
+        mergeRules(rule, ["border", prop], (rules, lastNode) => {
+          if (lastNode.prop !== "border") {
+            return false;
+          }
+          const values = parseWsc(lastNode.value);
+          if (!isValidWsc(values)) {
+            return false;
+          }
+          const wscProp = rules.filter((r) => r !== lastNode)[0];
+          if (!isValueCustomProp(values[i]) || isCustomProp(wscProp)) {
+            return false;
+          }
+          const wscValue = values[i];
+          values[i] = wscProp.value;
+          if (canMerge(rules, false) && !rules.some(stylehacks.detect)) {
+            insertCloned(
+              /** @type {import('postcss').Rule} */
+              lastNode.parent,
+              lastNode,
+              {
+                prop,
+                value: wscValue
+              }
+            );
+            lastNode.value = minifyWsc(
+              /** @type {any} */
+              values
+            );
+            wscProp.remove();
+            return true;
+          }
+          return false;
+        });
+      });
+      let decls = getDecls(rule, directions);
+      while (decls.length) {
+        const lastNode = decls[decls.length - 1];
+        wsc.forEach((d, i) => {
+          const names = directions.filter((name) => name !== lastNode.prop).map((name) => `${name}-${d}`);
+          let nodes = rule.nodes.slice(0, rule.nodes.indexOf(lastNode));
+          const border = getLastNode(nodes, "border");
+          if (border) {
+            nodes = nodes.slice(nodes.indexOf(border));
+          }
+          const props = nodes.filter(
+            (node) => node.type === "decl" && names.includes(node.prop) && node.important === lastNode.important
+          );
+          const rules = getRules(
+            /** @type {import('postcss').Declaration[]} */
+            props,
+            names
+          );
+          if (hasAllProps(rules, ...names) && !rules.some(stylehacks.detect)) {
+            const values = rules.map((node) => node ? node.value : null);
+            const filteredValues = values.filter(Boolean);
+            const lastNodeValue = list.space(lastNode.value)[i];
+            values[directions.indexOf(lastNode.prop)] = lastNodeValue;
+            let value = minifyTrbl(values.join(" "));
+            if (filteredValues[0] === filteredValues[1] && filteredValues[1] === filteredValues[2]) {
+              value = /** @type {string} */
+              filteredValues[0];
+            }
+            let refNode = props[props.length - 1];
+            if (value === lastNodeValue) {
+              refNode = lastNode;
+              let valueArray = list.space(lastNode.value);
+              valueArray.splice(i, 1);
+              lastNode.value = valueArray.join(" ");
+            }
+            insertCloned(
+              /** @type {import('postcss').Rule} */
+              refNode.parent,
+              /** @type {import('postcss').Declaration} */
+              refNode,
+              {
+                prop: borderProperty(d),
+                value
+              }
+            );
+            decls = decls.filter((node) => !rules.includes(node));
+            for (const node of rules) {
+              node.remove();
+            }
+          }
+        });
+        decls = decls.filter((node) => node !== lastNode);
+      }
+      rule.walkDecls("border", (decl) => {
+        const nextDecl = decl.next();
+        if (!nextDecl || nextDecl.type !== "decl") {
+          return false;
+        }
+        const index = directions.indexOf(nextDecl.prop);
+        if (index === -1) {
+          return;
+        }
+        const values = parseWsc(decl.value);
+        const nextValues = parseWsc(nextDecl.value);
+        if (!isValidWsc(values) || !isValidWsc(nextValues)) {
+          return;
+        }
+        const config = {
+          values,
+          nextValues,
+          decl,
+          nextDecl,
+          index
+        };
+        return mergeRedundant(config);
+      });
+      rule.walkDecls(/^border($|-(top|right|bottom|left)$)/i, (decl) => {
+        let values = parseWsc(decl.value);
+        if (!isValidWsc(values)) {
+          return;
+        }
+        const position = directions.indexOf(decl.prop);
+        let dirs = [...directions];
+        dirs.splice(position, 1);
+        wsc.forEach((d, i) => {
+          const props = dirs.map((dir) => `${dir}-${d}`);
+          mergeRules(rule, [decl.prop, ...props], (rules) => {
+            if (!rules.includes(decl)) {
+              return false;
+            }
+            const longhands = rules.filter((p) => p !== decl);
+            if (longhands[0].value.toLowerCase() === longhands[1].value.toLowerCase() && longhands[1].value.toLowerCase() === longhands[2].value.toLowerCase() && values[i] !== void 0 && longhands[0].value.toLowerCase() === values[i].toLowerCase()) {
+              for (const node of longhands) {
+                node.remove();
+              }
+              insertCloned(
+                /** @type {import('postcss').Rule} */
+                decl.parent,
+                decl,
+                {
+                  prop: borderProperty(d),
+                  value: values[i]
+                }
+              );
+              values[i] = null;
+            }
+            return false;
+          });
+          const newValue = values.join(" ");
+          if (newValue) {
+            decl.value = newValue;
+          } else {
+            decl.remove();
+          }
+        });
+      });
+      rule.walkDecls(/^border($|-(top|right|bottom|left)$)/i, (decl) => {
+        decl.value = minifyWsc(decl.value);
+      });
+      rule.walkDecls(/^border-spacing$/i, (decl) => {
+        const value = list.space(decl.value);
+        if (value.length > 1 && value[0] === value[1]) {
+          decl.value = value.slice(1).join(" ");
+        }
+      });
+      decls = getDecls(rule, allProperties);
+      while (decls.length) {
+        const lastNode = decls[decls.length - 1];
+        const lastPart = lastNode.prop.split("-").pop();
+        const lesser = decls.filter(
+          (node) => !stylehacks.detect(lastNode) && !stylehacks.detect(node) && !isCustomProp(lastNode) && node !== lastNode && node.important === lastNode.important && /** @type {number} */
+          getLevel(node.prop) > /** @type {number} */
+          getLevel(lastNode.prop) && (node.prop.toLowerCase().includes(lastNode.prop) || node.prop.toLowerCase().endsWith(
+            /** @type {string} */
+            lastPart
+          ))
+        );
+        for (const node of lesser) {
+          node.remove();
+        }
+        decls = decls.filter((node) => !lesser.includes(node));
+        let duplicates = decls.filter(
+          (node) => !stylehacks.detect(lastNode) && !stylehacks.detect(node) && node !== lastNode && node.important === lastNode.important && node.prop === lastNode.prop && !(!isCustomProp(node) && isCustomProp(lastNode))
+        );
+        if (duplicates.length) {
+          if (colorMightRequireFallback.test(getColorValue(lastNode))) {
+            const preserve = duplicates.filter(
+              (node) => !colorMightRequireFallback.test(getColorValue(node))
+            ).pop();
+            duplicates = duplicates.filter((node) => node !== preserve);
+          }
+          for (const node of duplicates) {
+            node.remove();
+          }
+        }
+        decls = decls.filter(
+          (node) => node !== lastNode && !duplicates.includes(node)
+        );
+      }
+    }
+    module2.exports = {
+      explode,
+      merge
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/decl/columns.js
+var require_columns2 = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/decl/columns.js"(exports2, module2) {
+    "use strict";
+    var { list } = require_postcss();
+    var { unit } = require_lib();
+    var stylehacks = require_src17();
+    var canMerge = require_canMerge();
+    var getDecls = require_getDecls();
+    var getValue = require_getValue2();
+    var mergeRules = require_mergeRules();
+    var insertCloned = require_insertCloned();
+    var isCustomProp = require_isCustomProp();
+    var canExplode = require_canExplode();
+    var properties = ["column-width", "column-count"];
+    var auto = "auto";
+    var inherit = "inherit";
+    function normalize(values) {
+      if (values[0].toLowerCase() === auto) {
+        return values[1];
+      }
+      if (values[1].toLowerCase() === auto) {
+        return values[0];
+      }
+      if (values[0].toLowerCase() === inherit && values[1].toLowerCase() === inherit) {
+        return inherit;
+      }
+      return values.join(" ");
+    }
+    function explode(rule) {
+      rule.walkDecls(/^columns$/i, (decl) => {
+        if (!canExplode(decl)) {
+          return;
+        }
+        if (stylehacks.detect(decl)) {
+          return;
+        }
+        let values = list.space(decl.value);
+        if (values.length === 1) {
+          values.push(auto);
+        }
+        values.forEach((value, i) => {
+          let prop = properties[1];
+          const dimension = unit(value);
+          if (value.toLowerCase() === auto) {
+            prop = properties[i];
+          } else if (dimension && dimension.unit !== "") {
+            prop = properties[0];
+          }
+          insertCloned(
+            /** @type {import('postcss').Rule} */
+            decl.parent,
+            decl,
+            {
+              prop,
+              value
+            }
+          );
+        });
+        decl.remove();
+      });
+    }
+    function cleanup(rule) {
+      let decls = getDecls(rule, ["columns"].concat(properties));
+      while (decls.length) {
+        const lastNode = decls[decls.length - 1];
+        const lesser = decls.filter(
+          (node) => !stylehacks.detect(lastNode) && !stylehacks.detect(node) && node !== lastNode && node.important === lastNode.important && lastNode.prop === "columns" && node.prop !== lastNode.prop
+        );
+        for (const node of lesser) {
+          node.remove();
+        }
+        decls = decls.filter((node) => !lesser.includes(node));
+        let duplicates = decls.filter(
+          (node) => !stylehacks.detect(lastNode) && !stylehacks.detect(node) && node !== lastNode && node.important === lastNode.important && node.prop === lastNode.prop && !(!isCustomProp(node) && isCustomProp(lastNode))
+        );
+        for (const node of duplicates) {
+          node.remove();
+        }
+        decls = decls.filter(
+          (node) => node !== lastNode && !duplicates.includes(node)
+        );
+      }
+    }
+    function merge(rule) {
+      mergeRules(rule, properties, (rules, lastNode) => {
+        if (canMerge(rules) && !rules.some(stylehacks.detect)) {
+          insertCloned(
+            /** @type {import('postcss').Rule} */
+            lastNode.parent,
+            lastNode,
+            {
+              prop: "columns",
+              value: normalize(
+                /** @type [string, string] */
+                rules.map(getValue)
+              )
+            }
+          );
+          for (const node of rules) {
+            node.remove();
+          }
+          return true;
+        }
+        return false;
+      });
+      cleanup(rule);
+    }
+    module2.exports = {
+      explode,
+      merge
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/mergeValues.js
+var require_mergeValues = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/mergeValues.js"(exports2, module2) {
+    "use strict";
+    var getValue = require_getValue2();
+    module2.exports = (...rules) => rules.map(getValue).join(" ");
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/decl/boxBase.js
+var require_boxBase = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/decl/boxBase.js"(exports2, module2) {
+    "use strict";
+    var stylehacks = require_src17();
+    var canMerge = require_canMerge();
+    var getDecls = require_getDecls();
+    var minifyTrbl = require_minifyTrbl();
+    var parseTrbl = require_parseTrbl();
+    var insertCloned = require_insertCloned();
+    var mergeRules = require_mergeRules();
+    var mergeValues = require_mergeValues();
+    var trbl = require_trbl();
+    var isCustomProp = require_isCustomProp();
+    var canExplode = require_canExplode();
+    module2.exports = (prop) => {
+      const properties = trbl.map((direction) => `${prop}-${direction}`);
+      const cleanup = (rule) => {
+        let decls = getDecls(rule, [prop].concat(properties));
+        while (decls.length) {
+          const lastNode = decls[decls.length - 1];
+          const lesser = decls.filter(
+            (node) => !stylehacks.detect(lastNode) && !stylehacks.detect(node) && node !== lastNode && node.important === lastNode.important && lastNode.prop === prop && node.prop !== lastNode.prop
+          );
+          for (const node of lesser) {
+            node.remove();
+          }
+          decls = decls.filter((node) => !lesser.includes(node));
+          let duplicates = decls.filter(
+            (node) => !stylehacks.detect(lastNode) && !stylehacks.detect(node) && node !== lastNode && node.important === lastNode.important && node.prop === lastNode.prop && !(!isCustomProp(node) && isCustomProp(lastNode))
+          );
+          for (const node of duplicates) {
+            node.remove();
+          }
+          decls = decls.filter(
+            (node) => node !== lastNode && !duplicates.includes(node)
+          );
+        }
+      };
+      const processor = {
+        /** @type {(rule: import('postcss').Rule) => void} */
+        explode: (rule) => {
+          rule.walkDecls(new RegExp("^" + prop + "$", "i"), (decl) => {
+            if (!canExplode(decl)) {
+              return;
+            }
+            if (stylehacks.detect(decl)) {
+              return;
+            }
+            const values = parseTrbl(decl.value);
+            trbl.forEach((direction, index) => {
+              insertCloned(
+                /** @type {import('postcss').Rule} */
+                decl.parent,
+                decl,
+                {
+                  prop: properties[index],
+                  value: values[index]
+                }
+              );
+            });
+            decl.remove();
+          });
+        },
+        /** @type {(rule: import('postcss').Rule) => void} */
+        merge: (rule) => {
+          mergeRules(rule, properties, (rules, lastNode) => {
+            if (canMerge(rules) && !rules.some(stylehacks.detect)) {
+              insertCloned(
+                /** @type {import('postcss').Rule} */
+                lastNode.parent,
+                lastNode,
+                {
+                  prop,
+                  value: minifyTrbl(mergeValues(...rules))
+                }
+              );
+              for (const node of rules) {
+                node.remove();
+              }
+              return true;
+            }
+            return false;
+          });
+          cleanup(rule);
+        }
+      };
+      return processor;
+    };
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/decl/margin.js
+var require_margin = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/decl/margin.js"(exports2, module2) {
+    "use strict";
+    var base = require_boxBase();
+    module2.exports = base("margin");
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/decl/padding.js
+var require_padding = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/decl/padding.js"(exports2, module2) {
+    "use strict";
+    var base = require_boxBase();
+    module2.exports = base("padding");
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/lib/decl/index.js
+var require_decl = __commonJS({
+  "node_modules/postcss-merge-longhand/src/lib/decl/index.js"(exports2, module2) {
+    "use strict";
+    var borders = require_borders();
+    var columns = require_columns2();
+    var margin = require_margin();
+    var padding = require_padding();
+    module2.exports = [borders, columns, margin, padding];
+  }
+});
+
+// node_modules/postcss-merge-longhand/src/index.js
+var require_src18 = __commonJS({
+  "node_modules/postcss-merge-longhand/src/index.js"(exports2, module2) {
+    "use strict";
+    var processors = require_decl();
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-merge-longhand",
+        OnceExit(css) {
+          css.walkRules((rule) => {
+            processors.forEach((p) => {
+              p.explode(rule);
+              p.merge(rule);
+            });
+          });
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-discard-duplicates/src/index.js
+var require_src19 = __commonJS({
+  "node_modules/postcss-discard-duplicates/src/index.js"(exports2, module2) {
+    "use strict";
+    function trimValue(value) {
+      return value ? value.trim() : value;
+    }
+    function empty(node) {
+      return !node.nodes.filter((child) => child.type !== "comment").length;
+    }
+    function equals(nodeA, nodeB) {
+      const a = (
+        /** @type {any} */
+        nodeA
+      );
+      const b = (
+        /** @type {any} */
+        nodeB
+      );
+      if (a.type !== b.type) {
+        return false;
+      }
+      if (a.important !== b.important) {
+        return false;
+      }
+      if (a.raws && !b.raws || !a.raws && b.raws) {
+        return false;
+      }
+      switch (a.type) {
+        case "rule":
+          if (a.selector !== b.selector) {
+            return false;
+          }
+          break;
+        case "atrule":
+          if (a.name !== b.name || a.params !== b.params) {
+            return false;
+          }
+          if (a.raws && trimValue(a.raws.before) !== trimValue(b.raws.before)) {
+            return false;
+          }
+          if (a.raws && trimValue(a.raws.afterName) !== trimValue(b.raws.afterName)) {
+            return false;
+          }
+          break;
+        case "decl":
+          if (a.prop !== b.prop || a.value !== b.value) {
+            return false;
+          }
+          if (a.raws && trimValue(a.raws.before) !== trimValue(b.raws.before)) {
+            return false;
+          }
+          break;
+      }
+      if (a.nodes && b.nodes) {
+        if (a.nodes.length !== b.nodes.length) {
+          return false;
+        }
+        for (let i = 0; i < a.nodes.length; i++) {
+          if (!equals(a.nodes[i], b.nodes[i])) {
+            return false;
+          }
+        }
+      }
+      return true;
+    }
+    function dedupeRule(last, nodes) {
+      let index = nodes.indexOf(last) - 1;
+      while (index >= 0) {
+        const node = nodes[index--];
+        if (node && node.type === "rule" && node.selector === last.selector) {
+          last.each((child) => {
+            if (child.type === "decl") {
+              dedupeNode(child, node.nodes);
+            }
+          });
+          if (empty(node)) {
+            node.remove();
+          }
+        }
+      }
+    }
+    function dedupeNode(last, nodes) {
+      let index = nodes.includes(last) ? nodes.indexOf(last) - 1 : nodes.length - 1;
+      while (index >= 0) {
+        const node = nodes[index--];
+        if (node && equals(node, last)) {
+          node.remove();
+        }
+      }
+    }
+    function dedupe(root) {
+      const { nodes } = (
+        /** @type {import('postcss').Container<import('postcss').ChildNode>} */
+        root
+      );
+      if (!nodes) {
+        return;
+      }
+      let index = nodes.length - 1;
+      while (index >= 0) {
+        let last = nodes[index--];
+        if (!last || !last.parent) {
+          continue;
+        }
+        dedupe(last);
+        if (last.type === "rule") {
+          dedupeRule(last, nodes);
+        } else if (last.type === "atrule" || last.type === "decl") {
+          dedupeNode(last, nodes);
+        }
+      }
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-discard-duplicates",
+        OnceExit(css) {
+          dedupe(css);
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-discard-overridden/src/index.js
+var require_src20 = __commonJS({
+  "node_modules/postcss-discard-overridden/src/index.js"(exports2, module2) {
+    "use strict";
+    var OVERRIDABLE_RULES = /* @__PURE__ */ new Set(["keyframes", "counter-style"]);
+    var SCOPE_RULES = /* @__PURE__ */ new Set(["media", "supports"]);
+    function vendorUnprefixed(prop) {
+      return prop.replace(/^-\w+-/, "");
+    }
+    function isOverridable(name) {
+      return OVERRIDABLE_RULES.has(vendorUnprefixed(name.toLowerCase()));
+    }
+    function isScope(name) {
+      return SCOPE_RULES.has(vendorUnprefixed(name.toLowerCase()));
+    }
+    function getScope(node) {
+      let current = node.parent;
+      const chain = [node.name.toLowerCase(), node.params];
+      while (current) {
+        if (current.type === "atrule" && isScope(
+          /** @type import('postcss').AtRule */
+          current.name
+        )) {
+          chain.unshift(
+            /** @type import('postcss').AtRule */
+            current.name + " " + /** @type import('postcss').AtRule */
+            current.params
+          );
+        }
+        current = current.parent;
+      }
+      return chain.join("|");
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-discard-overridden",
+        prepare() {
+          const cache = /* @__PURE__ */ new Map();
+          const rules = [];
+          return {
+            OnceExit(css) {
+              css.walkAtRules((node) => {
+                if (isOverridable(node.name)) {
+                  const scope = getScope(node);
+                  cache.set(scope, node);
+                  rules.push({
+                    node,
+                    scope
+                  });
+                }
+              });
+              rules.forEach((rule) => {
+                if (cache.get(rule.scope) !== rule.node) {
+                  rule.node.remove();
+                }
+              });
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-normalize-repeat-style/src/lib/map.js
+var require_map = __commonJS({
+  "node_modules/postcss-normalize-repeat-style/src/lib/map.js"(exports2, module2) {
+    "use strict";
+    module2.exports = /* @__PURE__ */ new Map([
+      [["repeat", "no-repeat"].toString(), "repeat-x"],
+      [["no-repeat", "repeat"].toString(), "repeat-y"],
+      [["repeat", "repeat"].toString(), "repeat"],
+      [["space", "space"].toString(), "space"],
+      [["round", "round"].toString(), "round"],
+      [["no-repeat", "no-repeat"].toString(), "no-repeat"]
+    ]);
+  }
+});
+
+// node_modules/postcss-normalize-repeat-style/src/index.js
+var require_src21 = __commonJS({
+  "node_modules/postcss-normalize-repeat-style/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var mappings = require_map();
+    function evenValues(item, index) {
+      return index % 2 === 0;
+    }
+    var repeatKeywords = new Set(mappings.values());
+    function isCommaNode(node) {
+      return node.type === "div" && node.value === ",";
+    }
+    var variableFunctions = /* @__PURE__ */ new Set(["var", "env", "constant"]);
+    function isVariableFunctionNode(node) {
+      if (node.type !== "function") {
+        return false;
+      }
+      return variableFunctions.has(node.value.toLowerCase());
+    }
+    function transform(value) {
+      const parsed = valueParser(value);
+      if (parsed.nodes.length === 1) {
+        return value;
+      }
+      const ranges = [];
+      let rangeIndex = 0;
+      let shouldContinue = true;
+      parsed.nodes.forEach((node, index) => {
+        if (isCommaNode(node)) {
+          rangeIndex += 1;
+          shouldContinue = true;
+          return;
+        }
+        if (!shouldContinue) {
+          return;
+        }
+        if (node.type === "div" && node.value === "/") {
+          shouldContinue = false;
+          return;
+        }
+        if (!ranges[rangeIndex]) {
+          ranges[rangeIndex] = {
+            start: null,
+            end: null
+          };
+        }
+        if (isVariableFunctionNode(node)) {
+          shouldContinue = false;
+          ranges[rangeIndex].start = null;
+          ranges[rangeIndex].end = null;
+          return;
+        }
+        const isRepeatKeyword = node.type === "word" && repeatKeywords.has(node.value.toLowerCase());
+        if (ranges[rangeIndex].start === null && isRepeatKeyword) {
+          ranges[rangeIndex].start = index;
+          ranges[rangeIndex].end = index;
+          return;
+        }
+        if (ranges[rangeIndex].start !== null) {
+          if (node.type === "space") {
+            return;
+          } else if (isRepeatKeyword) {
+            ranges[rangeIndex].end = index;
+            return;
+          }
+          return;
+        }
+      });
+      ranges.forEach((range) => {
+        if (range.start === null) {
+          return;
+        }
+        const nodes = parsed.nodes.slice(
+          range.start,
+          /** @type {number} */
+          range.end + 1
+        );
+        if (nodes.length !== 3) {
+          return;
+        }
+        const key = nodes.filter(evenValues).map((n) => n.value.toLowerCase()).toString();
+        const match = mappings.get(key);
+        if (match) {
+          nodes[0].value = match;
+          nodes[1].value = nodes[2].value = "";
+        }
+      });
+      return parsed.toString();
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-normalize-repeat-style",
+        prepare() {
+          const cache = /* @__PURE__ */ new Map();
+          return {
+            OnceExit(css) {
+              css.walkDecls(
+                /^(background(-repeat)?|(-\w+-)?mask-repeat)$/i,
+                (decl) => {
+                  const value = decl.value;
+                  if (!value) {
+                    return;
+                  }
+                  if (cache.has(value)) {
+                    decl.value = cache.get(value);
+                    return;
+                  }
+                  const result = transform(value);
+                  decl.value = result;
+                  cache.set(value, result);
+                }
+              );
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-merge-rules/src/lib/ensureCompatibility.js
+var require_ensureCompatibility = __commonJS({
+  "node_modules/postcss-merge-rules/src/lib/ensureCompatibility.js"(exports2, module2) {
+    "use strict";
+    var { isSupported } = require_dist();
+    var selectorParser = require_dist2();
+    var simpleSelectorRe = /^#?[-._a-z0-9 ]+$/i;
+    var cssSel2 = "css-sel2";
+    var cssSel3 = "css-sel3";
+    var cssGencontent = "css-gencontent";
+    var cssFirstLetter = "css-first-letter";
+    var cssFirstLine = "css-first-line";
+    var cssInOutOfRange = "css-in-out-of-range";
+    var formValidation = "form-validation";
+    var vendorPrefix = /-(ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)-/;
+    var level2Sel = /* @__PURE__ */ new Set(["=", "~=", "|="]);
+    var level3Sel = /* @__PURE__ */ new Set(["^=", "$=", "*="]);
+    function filterPrefixes(selector) {
+      return selector.match(vendorPrefix);
+    }
+    var findMsInputPlaceholder = (selector) => ~selector.search(/-ms-input-placeholder/i);
+    function sameVendor(selectorsA, selectorsB) {
+      let same = (selectors) => selectors.map(filterPrefixes).join();
+      let findMsVendor = (selectors) => selectors.find(findMsInputPlaceholder);
+      return same(selectorsA) === same(selectorsB) && !(findMsVendor(selectorsA) && findMsVendor(selectorsB));
+    }
+    function noVendor(selector) {
+      return !vendorPrefix.test(selector);
+    }
+    var pseudoElements = {
+      ":active": cssSel2,
+      ":after": cssGencontent,
+      ":any-link": "css-any-link",
+      ":before": cssGencontent,
+      ":checked": cssSel3,
+      ":default": "css-default-pseudo",
+      ":dir": "css-dir-pseudo",
+      ":disabled": cssSel3,
+      ":empty": cssSel3,
+      ":enabled": cssSel3,
+      ":first-child": cssSel2,
+      ":first-letter": cssFirstLetter,
+      ":first-line": cssFirstLine,
+      ":first-of-type": cssSel3,
+      ":focus": cssSel2,
+      ":focus-within": "css-focus-within",
+      ":focus-visible": "css-focus-visible",
+      ":has": "css-has",
+      ":hover": cssSel2,
+      ":in-range": cssInOutOfRange,
+      ":indeterminate": "css-indeterminate-pseudo",
+      ":invalid": formValidation,
+      ":is": "css-matches-pseudo",
+      ":lang": cssSel2,
+      ":last-child": cssSel3,
+      ":last-of-type": cssSel3,
+      ":link": cssSel2,
+      ":matches": "css-matches-pseudo",
+      ":not": cssSel3,
+      ":nth-child": cssSel3,
+      ":nth-last-child": cssSel3,
+      ":nth-last-of-type": cssSel3,
+      ":nth-of-type": cssSel3,
+      ":only-child": cssSel3,
+      ":only-of-type": cssSel3,
+      ":optional": "css-optional-pseudo",
+      ":out-of-range": cssInOutOfRange,
+      ":placeholder-shown": "css-placeholder-shown",
+      ":required": formValidation,
+      ":root": cssSel3,
+      ":target": cssSel3,
+      "::after": cssGencontent,
+      "::backdrop": "dialog",
+      "::before": cssGencontent,
+      "::first-letter": cssFirstLetter,
+      "::first-line": cssFirstLine,
+      "::marker": "css-marker-pseudo",
+      "::placeholder": "css-placeholder",
+      "::selection": "css-selection",
+      ":valid": formValidation,
+      ":visited": cssSel2
+    };
+    function isCssMixin(selector) {
+      return selector[selector.length - 1] === ":";
+    }
+    function isHostPseudoClass(selector) {
+      return selector.includes(":host");
+    }
+    var isSupportedCache = /* @__PURE__ */ new Map();
+    function isSupportedCached(feature, browsers) {
+      const key = JSON.stringify({ feature, browsers });
+      let result = isSupportedCache.get(key);
+      if (!result) {
+        result = isSupported(
+          feature,
+          /** @type {string[]} */
+          browsers
+        );
+        isSupportedCache.set(key, result);
+      }
+      return result;
+    }
+    function ensureCompatibility(selectors, browsers, compatibilityCache) {
+      if (selectors.some(isCssMixin)) {
+        return false;
+      }
+      if (selectors.some(isHostPseudoClass)) {
+        return false;
+      }
+      return selectors.every((selector) => {
+        if (simpleSelectorRe.test(selector)) {
+          return true;
+        }
+        if (compatibilityCache && compatibilityCache.has(selector)) {
+          return compatibilityCache.get(selector);
+        }
+        let compatible = true;
+        selectorParser((ast) => {
+          ast.walk((node) => {
+            const { type, value } = node;
+            if (type === "pseudo") {
+              const entry = pseudoElements[
+                /** @type {keyof pseudoElements} */
+                value
+              ];
+              if (!entry && noVendor(value)) {
+                compatible = false;
+              }
+              if (entry && compatible) {
+                compatible = isSupportedCached(entry, browsers);
+              }
+            }
+            if (type === "combinator") {
+              if (value.includes("~")) {
+                compatible = isSupportedCached(cssSel3, browsers);
+              }
+              if (value.includes(">") || value.includes("+")) {
+                compatible = isSupportedCached(cssSel2, browsers);
+              }
+            }
+            if (type === "attribute" && node.attribute) {
+              if (!node.operator) {
+                compatible = isSupportedCached(cssSel2, browsers);
+              }
+              if (value) {
+                if (level2Sel.has(
+                  /** @type {string} */
+                  node.operator
+                )) {
+                  compatible = isSupportedCached(cssSel2, browsers);
+                }
+                if (level3Sel.has(
+                  /** @type {string} */
+                  node.operator
+                )) {
+                  compatible = isSupportedCached(cssSel3, browsers);
+                }
+              }
+              if (node.insensitive) {
+                compatible = isSupportedCached("css-case-insensitive", browsers);
+              }
+            }
+            if (!compatible) {
+              return false;
+            }
+          });
+        }).processSync(selector);
+        if (compatibilityCache) {
+          compatibilityCache.set(selector, compatible);
+        }
+        return compatible;
+      });
+    }
+    module2.exports = { sameVendor, noVendor, pseudoElements, ensureCompatibility };
+  }
+});
+
+// node_modules/postcss-merge-rules/src/index.js
+var require_src22 = __commonJS({
+  "node_modules/postcss-merge-rules/src/index.js"(exports2, module2) {
+    "use strict";
+    var { dirname } = require("path");
+    var browserslist = require_browserslist();
+    var { sameParent } = require_src4();
+    var {
+      ensureCompatibility,
+      sameVendor,
+      noVendor
+    } = require_ensureCompatibility();
+    function declarationIsEqual(a, b) {
+      return a.important === b.important && a.prop === b.prop && a.value === b.value;
+    }
+    function indexOfDeclaration(array, decl) {
+      return array.findIndex((d) => declarationIsEqual(d, decl));
+    }
+    function intersect(a, b, not) {
+      return a.filter((c) => {
+        const index = indexOfDeclaration(b, c) !== -1;
+        return not ? !index : index;
+      });
+    }
+    function sameDeclarationsAndOrder(a, b) {
+      if (a.length !== b.length) {
+        return false;
+      }
+      return a.every((d, index) => declarationIsEqual(d, b[index]));
+    }
+    function canMerge(ruleA, ruleB, browsers, compatibilityCache) {
+      const a = ruleA.selectors;
+      const b = ruleB.selectors;
+      const selectors = a.concat(b);
+      if (!ensureCompatibility(selectors, browsers, compatibilityCache)) {
+        return false;
+      }
+      const parent = sameParent(
+        /** @type {any} */
+        ruleA,
+        /** @type {any} */
+        ruleB
+      );
+      if (parent && ruleA.parent && ruleA.parent.type === "atrule" && /** @type {import('postcss').AtRule} */
+      ruleA.parent.name.includes(
+        "keyframes"
+      )) {
+        return false;
+      }
+      if (ruleA.some(isRuleOrAtRule) || ruleB.some(isRuleOrAtRule)) {
+        return false;
+      }
+      return parent && (selectors.every(noVendor) || sameVendor(a, b));
+    }
+    function isRuleOrAtRule(node) {
+      return node.type === "rule" || node.type === "atrule";
+    }
+    function isDeclaration(node) {
+      return node.type === "decl";
+    }
+    function getDecls(rule) {
+      return rule.nodes.filter(isDeclaration);
+    }
+    var joinSelectors = (...rules) => rules.map((s) => s.selector).join();
+    function ruleLength(...rules) {
+      return rules.map((r) => r.nodes.length ? String(r) : "").join("").length;
+    }
+    function splitProp(prop) {
+      const parts = prop.split("-");
+      if (prop[0] !== "-") {
+        return {
+          prefix: "",
+          base: parts[0],
+          rest: parts.slice(1)
+        };
+      }
+      if (prop[1] === "-") {
+        return {
+          prefix: null,
+          base: null,
+          rest: [prop]
+        };
+      }
+      return {
+        prefix: parts[1],
+        base: parts[2],
+        rest: parts.slice(3)
+      };
+    }
+    function isConflictingProp(propA, propB) {
+      if (propA === propB) {
+        return true;
+      }
+      const a = splitProp(propA);
+      const b = splitProp(propB);
+      if (!a.base && !b.base) {
+        return true;
+      }
+      if (a.base !== b.base && a.base !== "place" && b.base !== "place") {
+        return false;
+      }
+      if (a.rest.length !== b.rest.length) {
+        return true;
+      }
+      if (a.base === "border") {
+        const allRestProps = /* @__PURE__ */ new Set([...a.rest, ...b.rest]);
+        if (allRestProps.has("image") || allRestProps.has("width") || allRestProps.has("color") || allRestProps.has("style")) {
+          return true;
+        }
+      }
+      return a.rest.every((s, index) => b.rest[index] === s);
+    }
+    function mergeParents(first, second) {
+      if (!first.parent || !second.parent) {
+        return false;
+      }
+      if (first.parent === second.parent) {
+        return false;
+      }
+      second.remove();
+      first.parent.append(second);
+      return true;
+    }
+    function partialMerge(first, second) {
+      let intersection = intersect(getDecls(first), getDecls(second));
+      if (intersection.length === 0) {
+        return second;
+      }
+      let nextRule = second.next();
+      if (!nextRule) {
+        const parentSibling = (
+          /** @type {import('postcss').Container<import('postcss').ChildNode>} */
+          second.parent.next()
+        );
+        nextRule = parentSibling && parentSibling.nodes && parentSibling.nodes[0];
+      }
+      if (nextRule && nextRule.type === "rule" && canMerge(second, nextRule)) {
+        let nextIntersection = intersect(getDecls(second), getDecls(nextRule));
+        if (nextIntersection.length > intersection.length) {
+          mergeParents(second, nextRule);
+          first = second;
+          second = nextRule;
+          intersection = nextIntersection;
+        }
+      }
+      const firstDecls = getDecls(first);
+      intersection = intersection.filter((decl, intersectIndex) => {
+        const indexOfDecl = indexOfDeclaration(firstDecls, decl);
+        const nextConflictInFirst = firstDecls.slice(indexOfDecl + 1).filter((d) => isConflictingProp(d.prop, decl.prop));
+        if (nextConflictInFirst.length === 0) {
+          return true;
+        }
+        const nextConflictInIntersection = intersection.slice(intersectIndex + 1).filter((d) => isConflictingProp(d.prop, decl.prop));
+        if (nextConflictInFirst.length !== nextConflictInIntersection.length) {
+          return false;
+        }
+        return nextConflictInFirst.every(
+          (d, index) => declarationIsEqual(d, nextConflictInIntersection[index])
+        );
+      });
+      const secondDecls = getDecls(second);
+      intersection = intersection.filter((decl) => {
+        const nextConflictIndex = secondDecls.findIndex(
+          (d) => isConflictingProp(d.prop, decl.prop)
+        );
+        if (nextConflictIndex === -1) {
+          return false;
+        }
+        if (!declarationIsEqual(secondDecls[nextConflictIndex], decl)) {
+          return false;
+        }
+        if (decl.prop.toLowerCase() !== "direction" && decl.prop.toLowerCase() !== "unicode-bidi" && secondDecls.some(
+          (declaration) => declaration.prop.toLowerCase() === "all"
+        )) {
+          return false;
+        }
+        secondDecls.splice(nextConflictIndex, 1);
+        return true;
+      });
+      if (intersection.length === 0) {
+        return second;
+      }
+      const receivingBlock = second.clone();
+      receivingBlock.selector = joinSelectors(first, second);
+      receivingBlock.nodes = [];
+      second.parent.insertBefore(second, receivingBlock);
+      const firstClone = first.clone();
+      const secondClone = second.clone();
+      function moveDecl(callback) {
+        return (decl) => {
+          if (indexOfDeclaration(intersection, decl) !== -1) {
+            callback.call(this, decl);
+          }
+        };
+      }
+      firstClone.walkDecls(
+        moveDecl((decl) => {
+          decl.remove();
+          receivingBlock.append(decl);
+        })
+      );
+      secondClone.walkDecls(moveDecl((decl) => decl.remove()));
+      const merged = ruleLength(firstClone, receivingBlock, secondClone);
+      const original = ruleLength(first, second);
+      if (merged < original) {
+        first.replaceWith(firstClone);
+        second.replaceWith(secondClone);
+        [firstClone, receivingBlock, secondClone].forEach((r) => {
+          if (r.nodes.length === 0) {
+            r.remove();
+          }
+        });
+        if (!secondClone.parent) {
+          return receivingBlock;
+        }
+        return secondClone;
+      } else {
+        receivingBlock.remove();
+        return second;
+      }
+    }
+    function selectorMerger(browsers, compatibilityCache) {
+      let cache = null;
+      return function(rule) {
+        if (!cache || !canMerge(rule, cache, browsers, compatibilityCache)) {
+          cache = rule;
+          return;
+        }
+        if (cache === rule) {
+          cache = rule;
+          return;
+        }
+        mergeParents(cache, rule);
+        if (sameDeclarationsAndOrder(getDecls(rule), getDecls(cache))) {
+          rule.selector = joinSelectors(cache, rule);
+          cache.remove();
+          cache = rule;
+          return;
+        }
+        if (cache.selector === rule.selector) {
+          const cached = getDecls(cache);
+          rule.walk((node) => {
+            if (node.type === "decl" && indexOfDeclaration(cached, node) !== -1) {
+              node.remove();
+              return;
+            }
+            cache.append(node);
+          });
+          rule.remove();
+          return;
+        }
+        cache = partialMerge(cache, rule);
+      };
+    }
+    function pluginCreator(opts = {}) {
+      return {
+        postcssPlugin: "postcss-merge-rules",
+        /**
+         * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
+         */
+        prepare(result) {
+          const { stats, env, from, file } = result.opts || {};
+          const browsers = browserslist(opts.overrideBrowserslist, {
+            stats: opts.stats || stats,
+            path: opts.path || dirname(from || file || __filename),
+            env: opts.env || env
+          });
+          const compatibilityCache = /* @__PURE__ */ new Map();
+          return {
+            OnceExit(css) {
+              css.walkRules(selectorMerger(browsers, compatibilityCache));
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-discard-empty/src/index.js
+var require_src23 = __commonJS({
+  "node_modules/postcss-discard-empty/src/index.js"(exports2, module2) {
+    "use strict";
+    var plugin = "postcss-discard-empty";
+    function discardAndReport(css, result) {
+      function discardEmpty(node) {
+        const { type } = node;
+        const sub = (
+          /** @type {any} */
+          node.nodes
+        );
+        if (sub) {
+          node.each(discardEmpty);
+        }
+        if (type === "decl" && !node.value && !node.prop.startsWith("--") || type === "rule" && !node.selector || sub && !sub.length && !(type === "atrule" && node.name === "layer") || type === "atrule" && (!sub && !node.params || !node.params && !/** @type {import('postcss').ChildNode[]}*/
+        sub.length)) {
+          node.remove();
+          result.messages.push({
+            type: "removal",
+            plugin,
+            node
+          });
+        }
+      }
+      css.each(discardEmpty);
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: plugin,
+        OnceExit(css, { result }) {
+          discardAndReport(css, result);
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-unique-selectors/src/index.js
+var require_src24 = __commonJS({
+  "node_modules/postcss-unique-selectors/src/index.js"(exports2, module2) {
+    "use strict";
+    var selectorParser = require_dist2();
+    function parseSelectors(selectors, callback) {
+      return selectorParser(callback).processSync(selectors);
+    }
+    function unique(rule) {
+      const selector = [...new Set(rule.selectors)];
+      selector.sort();
+      return selector.join();
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-unique-selectors",
+        OnceExit(css) {
+          css.walkRules((nodes) => {
+            let comments = [];
+            const removeAndSaveComments = (selNode) => {
+              selNode.walk((sel) => {
+                if (sel.type === "comment") {
+                  comments.push(sel.value);
+                  sel.remove();
+                  return;
+                } else {
+                  return;
+                }
+              });
+            };
+            if (nodes.raws.selector && nodes.raws.selector.raw) {
+              parseSelectors(nodes.raws.selector.raw, removeAndSaveComments);
+              nodes.raws.selector.raw = unique(nodes);
+            }
+            nodes.selector = parseSelectors(nodes.selector, removeAndSaveComments);
+            nodes.selector = unique(nodes);
+            nodes.selectors = nodes.selectors.concat(comments);
+          });
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-normalize-string/src/index.js
+var require_src25 = __commonJS({
+  "node_modules/postcss-normalize-string/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var SINGLE_QUOTE = "'".charCodeAt(0);
+    var DOUBLE_QUOTE = '"'.charCodeAt(0);
+    var BACKSLASH = "\\".charCodeAt(0);
+    var NEWLINE = "\n".charCodeAt(0);
+    var SPACE = " ".charCodeAt(0);
+    var FEED = "\f".charCodeAt(0);
+    var TAB = "	".charCodeAt(0);
+    var CR = "\r".charCodeAt(0);
+    var WORD_END = /[ \n\t\r\f'"\\]/g;
+    var C_STRING = "string";
+    var C_ESCAPED_SINGLE_QUOTE = "escapedSingleQuote";
+    var C_ESCAPED_DOUBLE_QUOTE = "escapedDoubleQuote";
+    var C_SINGLE_QUOTE = "singleQuote";
+    var C_DOUBLE_QUOTE = "doubleQuote";
+    var C_NEWLINE = "newline";
+    var C_SINGLE = "single";
+    var L_SINGLE_QUOTE = `'`;
+    var L_DOUBLE_QUOTE = `"`;
+    var L_NEWLINE = `\\
+`;
+    var T_ESCAPED_SINGLE_QUOTE = { type: C_ESCAPED_SINGLE_QUOTE, value: `\\'` };
+    var T_ESCAPED_DOUBLE_QUOTE = { type: C_ESCAPED_DOUBLE_QUOTE, value: `\\"` };
+    var T_SINGLE_QUOTE = { type: C_SINGLE_QUOTE, value: L_SINGLE_QUOTE };
+    var T_DOUBLE_QUOTE = { type: C_DOUBLE_QUOTE, value: L_DOUBLE_QUOTE };
+    var T_NEWLINE = { type: C_NEWLINE, value: L_NEWLINE };
+    function stringify(ast) {
+      return ast.nodes.reduce((str, { value }) => {
+        if (value === L_NEWLINE) {
+          return str;
+        }
+        return str + value;
+      }, "");
+    }
+    function parse(str) {
+      let code, next, value;
+      let pos = 0;
+      let len = str.length;
+      const ast = {
+        nodes: [],
+        types: {
+          escapedSingleQuote: 0,
+          escapedDoubleQuote: 0,
+          singleQuote: 0,
+          doubleQuote: 0
+        },
+        quotes: false
+      };
+      while (pos < len) {
+        code = str.charCodeAt(pos);
+        switch (code) {
+          case SPACE:
+          case TAB:
+          case CR:
+          case FEED:
+            next = pos;
+            do {
+              next += 1;
+              code = str.charCodeAt(next);
+            } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);
+            ast.nodes.push({
+              type: "space",
+              value: str.slice(pos, next)
+            });
+            pos = next - 1;
+            break;
+          case SINGLE_QUOTE:
+            ast.nodes.push(T_SINGLE_QUOTE);
+            ast.types[C_SINGLE_QUOTE]++;
+            ast.quotes = true;
+            break;
+          case DOUBLE_QUOTE:
+            ast.nodes.push(T_DOUBLE_QUOTE);
+            ast.types[C_DOUBLE_QUOTE]++;
+            ast.quotes = true;
+            break;
+          case BACKSLASH:
+            next = pos + 1;
+            if (str.charCodeAt(next) === SINGLE_QUOTE) {
+              ast.nodes.push(T_ESCAPED_SINGLE_QUOTE);
+              ast.types[C_ESCAPED_SINGLE_QUOTE]++;
+              ast.quotes = true;
+              pos = next;
+              break;
+            } else if (str.charCodeAt(next) === DOUBLE_QUOTE) {
+              ast.nodes.push(T_ESCAPED_DOUBLE_QUOTE);
+              ast.types[C_ESCAPED_DOUBLE_QUOTE]++;
+              ast.quotes = true;
+              pos = next;
+              break;
+            } else if (str.charCodeAt(next) === NEWLINE) {
+              ast.nodes.push(T_NEWLINE);
+              pos = next;
+              break;
+            }
+          /*
+           * We need to fall through here to handle the token as
+           * a whole word. The missing 'break' is intentional.
+           */
+          default:
+            WORD_END.lastIndex = pos + 1;
+            WORD_END.test(str);
+            if (WORD_END.lastIndex === 0) {
+              next = len - 1;
+            } else {
+              next = WORD_END.lastIndex - 2;
+            }
+            value = str.slice(pos, next + 1);
+            ast.nodes.push({
+              type: C_STRING,
+              value
+            });
+            pos = next;
+        }
+        pos++;
+      }
+      return ast;
+    }
+    function changeWrappingQuotes(node, ast) {
+      const { types } = ast;
+      if (types[C_SINGLE_QUOTE] || types[C_DOUBLE_QUOTE]) {
+        return;
+      }
+      if (node.quote === L_SINGLE_QUOTE && types[C_ESCAPED_SINGLE_QUOTE] > 0 && !types[C_ESCAPED_DOUBLE_QUOTE]) {
+        node.quote = L_DOUBLE_QUOTE;
+      }
+      if (node.quote === L_DOUBLE_QUOTE && types[C_ESCAPED_DOUBLE_QUOTE] > 0 && !types[C_ESCAPED_SINGLE_QUOTE]) {
+        node.quote = L_SINGLE_QUOTE;
+      }
+      ast.nodes = changeChildQuotes(ast.nodes, node.quote);
+    }
+    function changeChildQuotes(childNodes, parentQuote) {
+      const updatedChildren = [];
+      for (const child of childNodes) {
+        if (child.type === C_ESCAPED_DOUBLE_QUOTE && parentQuote === L_SINGLE_QUOTE) {
+          updatedChildren.push(T_DOUBLE_QUOTE);
+        } else if (child.type === C_ESCAPED_SINGLE_QUOTE && parentQuote === L_DOUBLE_QUOTE) {
+          updatedChildren.push(T_SINGLE_QUOTE);
+        } else {
+          updatedChildren.push(child);
+        }
+      }
+      return updatedChildren;
+    }
+    function normalize(value, preferredQuote) {
+      if (!value || !value.length) {
+        return value;
+      }
+      return valueParser(value).walk((child) => {
+        if (child.type !== C_STRING) {
+          return;
+        }
+        const ast = parse(child.value);
+        if (ast.quotes) {
+          changeWrappingQuotes(child, ast);
+        } else if (preferredQuote === C_SINGLE) {
+          child.quote = L_SINGLE_QUOTE;
+        } else {
+          child.quote = L_DOUBLE_QUOTE;
+        }
+        child.value = stringify(ast);
+      }).toString();
+    }
+    function minify(original, cache, preferredQuote) {
+      const key = original + "|" + preferredQuote;
+      if (cache.has(key)) {
+        return (
+          /** @type {string} */
+          cache.get(key)
+        );
+      }
+      const newValue = normalize(original, preferredQuote);
+      cache.set(key, newValue);
+      return newValue;
+    }
+    function pluginCreator(opts) {
+      const { preferredQuote } = Object.assign(
+        {},
+        {
+          preferredQuote: "double"
+        },
+        opts
+      );
+      return {
+        postcssPlugin: "postcss-normalize-string",
+        OnceExit(css) {
+          const cache = /* @__PURE__ */ new Map();
+          css.walk((node) => {
+            switch (node.type) {
+              case "rule":
+                node.selector = minify(node.selector, cache, preferredQuote);
+                break;
+              case "decl":
+                node.value = minify(node.value, cache, preferredQuote);
+                break;
+              case "atrule":
+                node.params = minify(node.params, cache, preferredQuote);
+                break;
+            }
+          });
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-normalize-positions/src/index.js
+var require_src26 = __commonJS({
+  "node_modules/postcss-normalize-positions/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var directionKeywords = /* @__PURE__ */ new Set(["top", "right", "bottom", "left", "center"]);
+    var center = "50%";
+    var horizontal = /* @__PURE__ */ new Map([
+      ["right", "100%"],
+      ["left", "0"]
+    ]);
+    var verticalValue = /* @__PURE__ */ new Map([
+      ["bottom", "100%"],
+      ["top", "0"]
+    ]);
+    var mathFunctions = /* @__PURE__ */ new Set(["calc", "min", "max", "clamp"]);
+    var variableFunctions = /* @__PURE__ */ new Set(["var", "env", "constant"]);
+    function isCommaNode(node) {
+      return node.type === "div" && node.value === ",";
+    }
+    function isVariableFunctionNode(node) {
+      if (node.type !== "function") {
+        return false;
+      }
+      return variableFunctions.has(node.value.toLowerCase());
+    }
+    function isMathFunctionNode(node) {
+      if (node.type !== "function") {
+        return false;
+      }
+      return mathFunctions.has(node.value.toLowerCase());
+    }
+    function isNumberNode(node) {
+      if (node.type !== "word") {
+        return false;
+      }
+      const value = parseFloat(node.value);
+      return !isNaN(value);
+    }
+    function isDimensionNode(node) {
+      if (node.type !== "word") {
+        return false;
+      }
+      const parsed = valueParser.unit(node.value);
+      if (!parsed) {
+        return false;
+      }
+      return parsed.unit !== "";
+    }
+    function transform(value) {
+      const parsed = valueParser(value);
+      const ranges = [];
+      let rangeIndex = 0;
+      let shouldContinue = true;
+      parsed.nodes.forEach((node, index) => {
+        if (isCommaNode(node)) {
+          rangeIndex += 1;
+          shouldContinue = true;
+          return;
+        }
+        if (!shouldContinue) {
+          return;
+        }
+        if (node.type === "div" && node.value === "/") {
+          shouldContinue = false;
+          return;
+        }
+        if (!ranges[rangeIndex]) {
+          ranges[rangeIndex] = {
+            start: null,
+            end: null
+          };
+        }
+        if (isVariableFunctionNode(node)) {
+          shouldContinue = false;
+          ranges[rangeIndex].start = null;
+          ranges[rangeIndex].end = null;
+          return;
+        }
+        const isPositionKeyword = node.type === "word" && directionKeywords.has(node.value.toLowerCase()) || isDimensionNode(node) || isNumberNode(node) || isMathFunctionNode(node);
+        if (ranges[rangeIndex].start === null && isPositionKeyword) {
+          ranges[rangeIndex].start = index;
+          ranges[rangeIndex].end = index;
+          return;
+        }
+        if (ranges[rangeIndex].start !== null) {
+          if (node.type === "space") {
+            return;
+          } else if (isPositionKeyword) {
+            ranges[rangeIndex].end = index;
+            return;
+          }
+          return;
+        }
+      });
+      ranges.forEach((range) => {
+        if (range.start === null) {
+          return;
+        }
+        const nodes = parsed.nodes.slice(range.start, range.end + 1);
+        if (nodes.length > 3) {
+          return;
+        }
+        const firstNode = nodes[0].value.toLowerCase();
+        const secondNode = nodes[2] && nodes[2].value ? nodes[2].value.toLowerCase() : null;
+        if (nodes.length === 1 || secondNode === "center") {
+          if (secondNode) {
+            nodes[2].value = nodes[1].value = "";
+          }
+          const map = new Map([...horizontal, ["center", center]]);
+          if (map.has(firstNode)) {
+            nodes[0].value = /** @type {string}*/
+            map.get(firstNode);
+          }
+          return;
+        }
+        if (secondNode !== null) {
+          if (firstNode === "center" && directionKeywords.has(secondNode)) {
+            nodes[0].value = nodes[1].value = "";
+            if (horizontal.has(secondNode)) {
+              nodes[2].value = /** @type {string} */
+              horizontal.get(secondNode);
+            }
+            return;
+          }
+          if (horizontal.has(firstNode) && verticalValue.has(secondNode)) {
+            nodes[0].value = /** @type {string} */
+            horizontal.get(firstNode);
+            nodes[2].value = /** @type {string} */
+            verticalValue.get(secondNode);
+            return;
+          } else if (verticalValue.has(firstNode) && horizontal.has(secondNode)) {
+            nodes[0].value = /** @type {string} */
+            horizontal.get(secondNode);
+            nodes[2].value = /** @type {string} */
+            verticalValue.get(firstNode);
+            return;
+          }
+        }
+      });
+      return parsed.toString();
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-normalize-positions",
+        OnceExit(css) {
+          const cache = /* @__PURE__ */ new Map();
+          css.walkDecls(
+            /^(background(-position)?|(-\w+-)?perspective-origin)$/i,
+            (decl) => {
+              const value = decl.value;
+              if (!value) {
+                return;
+              }
+              if (cache.has(value)) {
+                decl.value = cache.get(value);
+                return;
+              }
+              const result = transform(value);
+              decl.value = result;
+              cache.set(value, result);
+            }
+          );
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-normalize-whitespace/src/index.js
+var require_src27 = __commonJS({
+  "node_modules/postcss-normalize-whitespace/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var atrule = "atrule";
+    var decl = "decl";
+    var rule = "rule";
+    var variableFunctions = /* @__PURE__ */ new Set(["var", "env", "constant"]);
+    function reduceCalcWhitespaces(node) {
+      if (node.type === "space") {
+        node.value = " ";
+      } else if (node.type === "function") {
+        if (!variableFunctions.has(node.value.toLowerCase())) {
+          node.before = node.after = "";
+        }
+      }
+    }
+    function reduceWhitespaces(node) {
+      if (node.type === "space") {
+        node.value = " ";
+      } else if (node.type === "div") {
+        node.before = node.after = "";
+      } else if (node.type === "function") {
+        if (!variableFunctions.has(node.value.toLowerCase())) {
+          node.before = node.after = "";
+        }
+        if (node.value.toLowerCase() === "calc") {
+          valueParser.walk(node.nodes, reduceCalcWhitespaces);
+          return false;
+        }
+      }
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-normalize-whitespace",
+        OnceExit(css) {
+          const cache = /* @__PURE__ */ new Map();
+          css.walk((node) => {
+            const { type } = node;
+            if ([decl, rule, atrule].includes(type) && node.raws.before) {
+              node.raws.before = node.raws.before.replace(/\s/g, "");
+            }
+            if (type === decl) {
+              if (node.important) {
+                node.raws.important = "!important";
+              }
+              node.value = node.value.replace(/\s*(\\9)\s*/, "$1");
+              const value = node.value;
+              if (cache.has(value)) {
+                node.value = cache.get(value);
+              } else {
+                const parsed = valueParser(node.value);
+                const result = parsed.walk(reduceWhitespaces).toString();
+                node.value = result;
+                cache.set(value, result);
+              }
+              if (node.prop.startsWith("--") && node.value === "") {
+                node.value = " ";
+              }
+              if (node.raws.before) {
+                const prev = node.prev();
+                if (prev && prev.type !== rule) {
+                  node.raws.before = node.raws.before.replace(/;/g, "");
+                }
+              }
+              node.raws.between = ":";
+              node.raws.semicolon = false;
+            } else if (type === rule || type === atrule) {
+              node.raws.between = node.raws.after = "";
+              node.raws.semicolon = false;
+            }
+          });
+          css.raws.after = "";
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-normalize-unicode/src/index.js
+var require_src28 = __commonJS({
+  "node_modules/postcss-normalize-unicode/src/index.js"(exports2, module2) {
+    "use strict";
+    var { dirname } = require("path");
+    var browserslist = require_browserslist();
+    var valueParser = require_lib();
+    var regexLowerCaseUPrefix = /^u(?=\+)/;
+    function unicode(range) {
+      const values = range.slice(2).split("-");
+      if (values.length < 2) {
+        return range;
+      }
+      const left = values[0].split("");
+      const right = values[1].split("");
+      if (left.length !== right.length) {
+        return range;
+      }
+      const merged = mergeRangeBounds(left, right);
+      if (merged) {
+        return merged;
+      }
+      return range;
+    }
+    function mergeRangeBounds(left, right) {
+      let questionCounter = 0;
+      let group = "u+";
+      for (const [index, value] of left.entries()) {
+        if (value === right[index] && questionCounter === 0) {
+          group = group + value;
+        } else if (value === "0" && right[index] === "f") {
+          questionCounter++;
+          group = group + "?";
+        } else {
+          return false;
+        }
+      }
+      if (questionCounter < 6) {
+        return group;
+      } else {
+        return false;
+      }
+    }
+    function hasLowerCaseUPrefixBug(browser) {
+      return browserslist("ie <=11, edge <= 15").includes(browser);
+    }
+    function transform(value, isLegacy = false) {
+      return valueParser(value).walk((child) => {
+        if (child.type === "unicode-range") {
+          const transformed = unicode(child.value.toLowerCase());
+          child.value = isLegacy ? transformed.replace(regexLowerCaseUPrefix, "U") : transformed;
+        }
+        return false;
+      }).toString();
+    }
+    function pluginCreator(opts = {}) {
+      return {
+        postcssPlugin: "postcss-normalize-unicode",
+        /**
+         * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
+         */
+        prepare(result) {
+          const { stats, env, from, file } = result.opts || {};
+          const browsers = browserslist(opts.overrideBrowserslist, {
+            stats: opts.stats || stats,
+            path: opts.path || dirname(from || file || __filename),
+            env: opts.env || env
+          });
+          const cache = /* @__PURE__ */ new Map();
+          const isLegacy = browsers.some(hasLowerCaseUPrefixBug);
+          return {
+            OnceExit(css) {
+              css.walkDecls(/^unicode-range$/i, (decl) => {
+                const value = decl.value;
+                if (cache.has(value)) {
+                  decl.value = cache.get(value);
+                  return;
+                }
+                const newValue = transform(value, isLegacy);
+                decl.value = newValue;
+                cache.set(value, newValue);
+              });
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-normalize-display-values/src/lib/map.js
+var require_map2 = __commonJS({
+  "node_modules/postcss-normalize-display-values/src/lib/map.js"(exports2, module2) {
+    "use strict";
+    var block = "block";
+    var flex = "flex";
+    var flow = "flow";
+    var flowRoot = "flow-root";
+    var grid = "grid";
+    var inline = "inline";
+    var inlineBlock = "inline-block";
+    var inlineFlex = "inline-flex";
+    var inlineGrid = "inline-grid";
+    var inlineTable = "inline-table";
+    var listItem = "list-item";
+    var ruby = "ruby";
+    var rubyBase = "ruby-base";
+    var rubyText = "ruby-text";
+    var runIn = "run-in";
+    var table = "table";
+    var tableCell = "table-cell";
+    var tableCaption = "table-caption";
+    module2.exports = /* @__PURE__ */ new Map([
+      [[block, flow].toString(), block],
+      [[block, flowRoot].toString(), flowRoot],
+      [[inline, flow].toString(), inline],
+      [[inline, flowRoot].toString(), inlineBlock],
+      [[runIn, flow].toString(), runIn],
+      [[listItem, block, flow].toString(), listItem],
+      [[inline, flow, listItem].toString(), inline + " " + listItem],
+      [[block, flex].toString(), flex],
+      [[inline, flex].toString(), inlineFlex],
+      [[block, grid].toString(), grid],
+      [[inline, grid].toString(), inlineGrid],
+      [[inline, ruby].toString(), ruby],
+      // `block ruby` is same
+      [[block, table].toString(), table],
+      [[inline, table].toString(), inlineTable],
+      [[tableCell, flow].toString(), tableCell],
+      [[tableCaption, flow].toString(), tableCaption],
+      [[rubyBase, flow].toString(), rubyBase],
+      [[rubyText, flow].toString(), rubyText]
+    ]);
+  }
+});
+
+// node_modules/postcss-normalize-display-values/src/index.js
+var require_src29 = __commonJS({
+  "node_modules/postcss-normalize-display-values/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var mappings = require_map2();
+    function transform(value) {
+      const { nodes } = valueParser(value);
+      if (nodes.length === 1) {
+        return value;
+      }
+      const values = nodes.filter((list, index) => index % 2 === 0).filter((node) => node.type === "word").map((n) => n.value.toLowerCase());
+      if (values.length === 0) {
+        return value;
+      }
+      const match = mappings.get(values.toString());
+      if (!match) {
+        return value;
+      }
+      return match;
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-normalize-display-values",
+        prepare() {
+          const cache = /* @__PURE__ */ new Map();
+          return {
+            OnceExit(css) {
+              css.walkDecls(/^display$/i, (decl) => {
+                const value = decl.value;
+                if (!value) {
+                  return;
+                }
+                if (cache.has(value)) {
+                  decl.value = cache.get(value);
+                  return;
+                }
+                const result = transform(value);
+                decl.value = result;
+                cache.set(value, result);
+              });
+            }
+          };
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/postcss-normalize-timing-functions/src/index.js
+var require_src30 = __commonJS({
+  "node_modules/postcss-normalize-timing-functions/src/index.js"(exports2, module2) {
+    "use strict";
+    var valueParser = require_lib();
+    var getValue = (node) => parseFloat(node.value);
+    var conversions = /* @__PURE__ */ new Map([
+      [[0.25, 0.1, 0.25, 1].toString(), "ease"],
+      [[0, 0, 1, 1].toString(), "linear"],
+      [[0.42, 0, 1, 1].toString(), "ease-in"],
+      [[0, 0, 0.58, 1].toString(), "ease-out"],
+      [[0.42, 0, 0.58, 1].toString(), "ease-in-out"]
+    ]);
+    function reduce(node) {
+      if (node.type !== "function") {
+        return false;
+      }
+      if (!node.value) {
+        return;
+      }
+      const lowerCasedValue = node.value.toLowerCase();
+      if (lowerCasedValue === "steps") {
+        if (node.nodes[0].type === "word" && getValue(node.nodes[0]) === 1 && node.nodes[2] && node.nodes[2].type === "word" && (node.nodes[2].value.toLowerCase() === "start" || node.nodes[2].value.toLowerCase() === "jump-start")) {
+          node.type = "word";
+          node.value = "step-start";
+          delete /** @type Partial<valueParser.FunctionNode> */
+          node.nodes;
+          return;
+        }
+        if (node.nodes[0].type === "word" && getValue(node.nodes[0]) === 1 && node.nodes[2] && node.nodes[2].type === "word" && (node.nodes[2].value.toLowerCase() === "end" || node.nodes[2].value.toLowerCase() === "jump-end")) {
+          node.type = "word";
+          node.value = "step-end";
+          delete /** @type Partial<valueParser.FunctionNode> */
+          node.nodes;
+          return;
+        }
+        if (node.nodes[2] && node.nodes[2].type === "word" && (node.nodes[2].value.toLowerCase() === "end" || node.nodes[2].value.toLowerCase() === "jump-end")) {
+          node.nodes = [node.nodes[0]];
+          return;
+        }
+        return false;
+      }
+      if (lowerCasedValue === "cubic-bezier") {
+        const values = node.nodes.filter((list, index) => {
+          return index % 2 === 0;
+        }).map(getValue);
+        if (values.length !== 4) {
+          return;
+        }
+        const match = conversions.get(values.toString());
+        if (match) {
+          node.type = "word";
+          node.value = match;
+          delete /** @type Partial<valueParser.FunctionNode> */
+          node.nodes;
+          return;
+        }
+      }
+    }
+    function transform(value) {
+      return valueParser(value).walk(reduce).toString();
+    }
+    function pluginCreator() {
+      return {
+        postcssPlugin: "postcss-normalize-timing-functions",
+        OnceExit(css) {
+          const cache = /* @__PURE__ */ new Map();
+          css.walkDecls(
+            /^(-\w+-)?(animation|transition)(-timing-function)?$/i,
+            (decl) => {
+              const value = decl.value;
+              if (cache.has(value)) {
+                decl.value = cache.get(value);
+                return;
+              }
+              const result = transform(value);
+              decl.value = result;
+              cache.set(value, result);
+            }
+          );
+        }
+      };
+    }
+    pluginCreator.postcss = true;
+    module2.exports = pluginCreator;
+  }
+});
+
+// node_modules/cssnano-preset-default/src/index.js
+var require_src31 = __commonJS({
+  "node_modules/cssnano-preset-default/src/index.js"(exports2, module2) {
+    "use strict";
+    var cssDeclarationSorter = require_main();
+    var postcssDiscardComments = require_src2();
+    var postcssReduceInitial = require_src3();
+    var postcssMinifyGradients = require_src5();
+    var postcssSvgo = require_src6();
+    var postcssReduceTransforms = require_src7();
+    var postcssConvertValues = require_src8();
+    var postcssCalc = require_src9();
+    var postcssColormin = require_src10();
+    var postcssOrderedValues = require_src11();
+    var postcssMinifySelectors = require_src12();
+    var postcssMinifyParams = require_src13();
+    var postcssNormalizeCharset = require_src14();
+    var postcssMinifyFontValues = require_src15();
+    var postcssNormalizeUrl = require_src16();
+    var postcssMergeLonghand = require_src18();
+    var postcssDiscardDuplicates = require_src19();
+    var postcssDiscardOverridden = require_src20();
+    var postcssNormalizeRepeatStyle = require_src21();
+    var postcssMergeRules = require_src22();
+    var postcssDiscardEmpty = require_src23();
+    var postcssUniqueSelectors = require_src24();
+    var postcssNormalizeString = require_src25();
+    var postcssNormalizePositions = require_src26();
+    var postcssNormalizeWhitespace = require_src27();
+    var postcssNormalizeUnicode = require_src28();
+    var postcssNormalizeDisplayValues = require_src29();
+    var postcssNormalizeTimingFunctions = require_src30();
+    var { rawCache } = require_src4();
+    function configurePlugins(plugins, opts = {}) {
+      const { overrideBrowserslist, stats, env, path } = opts;
+      const sharedProps = {
+        overrideBrowserslist,
+        stats,
+        env,
+        path
+      };
+      const defaults = {
+        colormin: {
+          ...sharedProps
+        },
+        convertValues: {
+          length: false,
+          ...sharedProps
+        },
+        mergeRules: {
+          ...sharedProps
+        },
+        minifyParams: {
+          ...sharedProps
+        },
+        normalizeCharset: {
+          add: false
+        },
+        normalizeUnicode: {
+          ...sharedProps
+        },
+        reduceInitial: {
+          ...sharedProps
+        },
+        cssDeclarationSorter: {
+          keepOverrides: true
+        }
+      };
+      return plugins.map(([plugin, opt]) => {
+        const defaultProps = defaults[opt] ?? {};
+        const presetProps = opts[opt] ?? {};
+        return [
+          plugin,
+          presetProps !== false ? { ...defaultProps, ...presetProps } : { exclude: true }
+        ];
+      });
+    }
+    function defaultPreset(opts = {}) {
+      return {
+        plugins: configurePlugins(
+          [
+            [postcssDiscardComments, "discardComments"],
+            [postcssMinifyGradients, "minifyGradients"],
+            [postcssReduceInitial, "reduceInitial"],
+            [postcssSvgo, "svgo"],
+            [postcssNormalizeDisplayValues, "normalizeDisplayValues"],
+            [postcssReduceTransforms, "reduceTransforms"],
+            [postcssColormin, "colormin"],
+            [postcssNormalizeTimingFunctions, "normalizeTimingFunctions"],
+            [postcssCalc, "calc"],
+            [postcssConvertValues, "convertValues"],
+            [postcssOrderedValues, "orderedValues"],
+            [postcssMinifySelectors, "minifySelectors"],
+            [postcssMinifyParams, "minifyParams"],
+            [postcssNormalizeCharset, "normalizeCharset"],
+            [postcssDiscardOverridden, "discardOverridden"],
+            [postcssNormalizeString, "normalizeString"],
+            [postcssNormalizeUnicode, "normalizeUnicode"],
+            [postcssMinifyFontValues, "minifyFontValues"],
+            [postcssNormalizeUrl, "normalizeUrl"],
+            [postcssNormalizeRepeatStyle, "normalizeRepeatStyle"],
+            [postcssNormalizePositions, "normalizePositions"],
+            [postcssNormalizeWhitespace, "normalizeWhitespace"],
+            [postcssMergeLonghand, "mergeLonghand"],
+            [postcssDiscardDuplicates, "discardDuplicates"],
+            [postcssMergeRules, "mergeRules"],
+            [postcssDiscardEmpty, "discardEmpty"],
+            [postcssUniqueSelectors, "uniqueSelectors"],
+            [cssDeclarationSorter, "cssDeclarationSorter"],
+            [rawCache, "rawCache"]
+          ],
+          opts
+        )
+      };
+    }
+    module2.exports = defaultPreset;
+  }
+});
+
+// node_modules/cssnano/src/index.js
+var require_src32 = __commonJS({
+  "node_modules/cssnano/src/index.js"(exports2, module2) {
+    "use strict";
+    var path = require("path");
+    var postcss = require_postcss();
+    var { lilconfigSync } = require_src();
+    var cssnano = "cssnano";
+    function isResolvable(moduleId) {
+      try {
+        require.resolve(moduleId);
+        return true;
+      } catch (e) {
+        return false;
+      }
+    }
+    function resolvePreset(preset) {
+      let fn, options;
+      if (Array.isArray(preset)) {
+        fn = preset[0];
+        options = preset[1];
+      } else {
+        fn = preset;
+        options = {};
+      }
+      if (fn.plugins) {
+        return fn.plugins;
+      }
+      if (fn === "default") {
+        return require_src31()(options).plugins;
+      }
+      if (typeof fn === "function") {
+        return fn(options).plugins;
+      }
+      if (isResolvable(fn)) {
+        return require(fn)(options).plugins;
+      }
+      const sugar = `cssnano-preset-${fn}`;
+      if (isResolvable(sugar)) {
+        return require(sugar)(options).plugins;
+      }
+      throw new Error(
+        `Cannot load preset "${fn}". Please check your configuration for errors and try again.`
+      );
+    }
+    function resolveConfig(options) {
+      if (options.preset) {
+        return resolvePreset(options.preset);
+      }
+      let searchPath = process.cwd();
+      let configPath = void 0;
+      if (options.configFile) {
+        searchPath = void 0;
+        configPath = path.resolve(process.cwd(), options.configFile);
+      }
+      const configExplorer = lilconfigSync(cssnano, {
+        searchPlaces: [
+          "package.json",
+          ".cssnanorc",
+          ".cssnanorc.json",
+          ".cssnanorc.js",
+          "cssnano.config.js"
+        ]
+      });
+      const config = configPath ? configExplorer.load(configPath) : configExplorer.search(searchPath);
+      if (config === null) {
+        return resolvePreset("default");
+      }
+      return resolvePreset(config.config.preset || config.config);
+    }
+    function cssnanoPlugin(options = {}) {
+      if (Array.isArray(options.plugins)) {
+        if (!options.preset || !options.preset.plugins) {
+          options.preset = { plugins: [] };
+        }
+        options.plugins.forEach((plugin) => {
+          if (Array.isArray(plugin)) {
+            const [pluginDef, opts = {}] = plugin;
+            if (typeof pluginDef === "string" && isResolvable(pluginDef)) {
+              options.preset.plugins.push([require(pluginDef), opts]);
+            } else {
+              options.preset.plugins.push([pluginDef, opts]);
+            }
+          } else if (typeof plugin === "string" && isResolvable(plugin)) {
+            options.preset.plugins.push([require(plugin), {}]);
+          } else {
+            options.preset.plugins.push([plugin, {}]);
+          }
+        });
+      }
+      const plugins = [];
+      const nanoPlugins = resolveConfig(options);
+      for (const nanoPlugin of nanoPlugins) {
+        if (Array.isArray(nanoPlugin)) {
+          const [processor, opts] = nanoPlugin;
+          if (typeof opts === "undefined" || typeof opts === "object" && !opts.exclude || typeof opts === "boolean" && opts === true) {
+            plugins.push(processor(opts));
+          }
+        } else {
+          plugins.push(nanoPlugin);
+        }
+      }
+      return postcss(plugins);
+    }
+    cssnanoPlugin.postcss = true;
+    module2.exports = cssnanoPlugin;
+  }
+});
+
+// lib/cli-peer-dependencies.js
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+function _export(target, all) {
+  for (var name in all) Object.defineProperty(target, name, {
+    enumerable: true,
+    get: all[name]
+  });
+}
+_export(exports, {
+  lazyPostcss: function() {
+    return lazyPostcss;
+  },
+  lazyPostcssImport: function() {
+    return lazyPostcssImport;
+  },
+  lazyAutoprefixer: function() {
+    return lazyAutoprefixer;
+  },
+  lazyCssnano: function() {
+    return lazyCssnano;
+  }
+});
+function lazyPostcss() {
+  return require_postcss();
+}
+function lazyPostcssImport() {
+  return require_postcss_import();
+}
+function lazyAutoprefixer() {
+  return require_autoprefixer();
+}
+function lazyCssnano() {
+  return require_src32();
+}
+/*! Bundled license information:
+
+fraction.js/fraction.cjs:
+  (**
+   * @license Fraction.js v4.3.7 31/08/2023
+   * https://www.xarg.org/2014/03/rational-numbers-in-javascript/
+   *
+   * Copyright (c) 2023, Robert Eisele (robert@raw.org)
+   * Dual licensed under the MIT or GPL Version 2 licenses.
+   **)
+
+cssesc/cssesc.js:
+  (*! https://mths.be/cssesc v3.0.0 by @mathias *)
+
+cssnano-preset-default/src/index.js:
+  (**
+   * @author Ben Briggs
+   * @license MIT
+   * @module cssnano:preset:default
+   * @overview
+   *
+   * This default preset for cssnano only includes transforms that make no
+   * assumptions about your CSS other than what is passed in. In previous
+   * iterations of cssnano, assumptions were made about your CSS which caused
+   * output to look different in certain use cases, but not others. These
+   * transforms have been moved from the defaults to other presets, to make
+   * this preset require only minimal configuration.
+   *)
+*/
Index: frontend/node_modules/tailwindcss/plugin.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/plugin.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/plugin.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,11 @@
+import type { Config, PluginCreator } from './types/config'
+type Plugin = {
+  withOptions<T>(
+    plugin: (options: T) => PluginCreator,
+    config?: (options: T) => Partial<Config>
+  ): { (options: T): { handler: PluginCreator; config?: Partial<Config> }; __isOptionsFunction: true }
+  (plugin: PluginCreator, config?: Partial<Config>): { handler: PluginCreator; config?: Partial<Config> }
+}
+
+declare const plugin: Plugin
+export = plugin
Index: frontend/node_modules/tailwindcss/plugin.js
===================================================================
--- frontend/node_modules/tailwindcss/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+let createPlugin = require('./lib/public/create-plugin')
+module.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default
Index: frontend/node_modules/tailwindcss/prettier.config.js
===================================================================
--- frontend/node_modules/tailwindcss/prettier.config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/prettier.config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+module.exports = {
+  // These settings are duplicated in .editorconfig:
+  tabWidth: 2, // indent_size = 2
+  useTabs: false, // indent_style = space
+  endOfLine: 'lf', // end_of_line = lf
+  semi: false, // default: true
+  singleQuote: true, // default: false
+  printWidth: 100, // default: 80
+  trailingComma: 'es5',
+  bracketSpacing: true,
+  overrides: [
+    {
+      files: '*.js',
+      options: {
+        parser: 'flow',
+      },
+    },
+  ],
+}
Index: frontend/node_modules/tailwindcss/resolveConfig.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/resolveConfig.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/resolveConfig.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,31 @@
+import { Config, ResolvableTo, ThemeConfig } from './types/config'
+import { DefaultTheme } from './types/generated/default-theme'
+import { DefaultColors } from './types/generated/colors'
+
+type ResolvedConfig<T extends Config> = Omit<T, 'theme'> & {
+  theme: MergeThemes<
+    UnwrapResolvables<Omit<T['theme'], 'extend'>>,
+    T['theme'] extends { extend: infer TExtend } ? UnwrapResolvables<TExtend> : {}
+  >
+}
+
+type UnwrapResolvables<T> = {
+  [K in keyof T]: T[K] extends ResolvableTo<infer R> ? R : T[K]
+}
+
+type ThemeConfigResolved = UnwrapResolvables<ThemeConfig>
+type DefaultThemeFull = DefaultTheme & { colors: DefaultColors }
+
+type MergeThemes<Overrides extends object, Extensions extends object> = {
+  [K in keyof ThemeConfigResolved | keyof Overrides]: (K extends keyof Overrides
+    ? Overrides[K]
+    : K extends keyof DefaultThemeFull
+    ? DefaultThemeFull[K]
+    : K extends keyof ThemeConfigResolved
+    ? ThemeConfigResolved[K]
+    : never) &
+    (K extends keyof Extensions ? Extensions[K] : {})
+}
+
+declare function resolveConfig<T extends Config>(config: T): ResolvedConfig<T>
+export = resolveConfig
Index: frontend/node_modules/tailwindcss/resolveConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/resolveConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/resolveConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+let resolveConfig = require('./lib/public/resolve-config')
+module.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default
Index: frontend/node_modules/tailwindcss/screens.css
===================================================================
--- frontend/node_modules/tailwindcss/screens.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/screens.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+@tailwind screens;
Index: frontend/node_modules/tailwindcss/scripts/create-plugin-list.js
===================================================================
--- frontend/node_modules/tailwindcss/scripts/create-plugin-list.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/scripts/create-plugin-list.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,10 @@
+import { corePlugins } from '../src/corePlugins'
+import fs from 'fs'
+import path from 'path'
+
+let corePluginList = Object.keys(corePlugins)
+
+fs.writeFileSync(
+  path.join(process.cwd(), 'src', 'corePluginList.js'),
+  `export default ${JSON.stringify(corePluginList)}`
+)
Index: frontend/node_modules/tailwindcss/scripts/generate-types.js
===================================================================
--- frontend/node_modules/tailwindcss/scripts/generate-types.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/scripts/generate-types.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,104 @@
+import prettier from 'prettier'
+import { corePlugins } from '../src/corePlugins'
+import colors from '../src/public/colors'
+import defaultTheme from '../src/public/default-theme'
+import fs from 'fs'
+import path from 'path'
+import * as types from './type-utils'
+
+fs.writeFileSync(
+  path.join(process.cwd(), 'types', 'generated', 'corePluginList.d.ts'),
+  `export type CorePluginList = ${Object.keys(corePlugins)
+    .map((p) => `'${p}'`)
+    .join(' | ')}`
+)
+
+let colorsWithoutDeprecatedColors = Object.fromEntries(
+  Object.entries(Object.getOwnPropertyDescriptors(colors))
+    .filter(([_, { value }]) => {
+      return typeof value !== 'undefined'
+    })
+    .map(([name, definition]) => [name, definition.value])
+)
+
+let deprecatedColors = Object.entries(Object.getOwnPropertyDescriptors(colors))
+  .filter(([_, { value }]) => {
+    return typeof value === 'undefined'
+  })
+  .map(([name, definition]) => {
+    let warn = console.warn
+    let messages = []
+    console.warn = (...args) => messages.push(args.pop())
+    definition.get()
+    console.warn = warn
+    let message = messages.join(' ').trim()
+    let newColor = message.match(/renamed to `(.*)`/)[1]
+    return `/** @deprecated ${message} */${name}: DefaultColors['${newColor}'],`
+  })
+  .join('\n')
+
+fs.writeFileSync(
+  path.join(process.cwd(), 'types', 'generated', 'colors.d.ts'),
+  prettier.format(
+    `export interface DefaultColors { ${JSON.stringify(colorsWithoutDeprecatedColors).slice(
+      1,
+      -1
+    )}\n${deprecatedColors}\n}`,
+    {
+      semi: false,
+      singleQuote: true,
+      printWidth: 100,
+      parser: 'typescript',
+    }
+  )
+)
+
+const defaultThemeTypes = Object.entries(defaultTheme)
+  .map(([name, value]) => {
+    // Special cases for slightly more accurate types
+    if (name === 'keyframes') {
+      return [name, `Record<${types.forKeys(value)}, Record<string, CSSDeclarationList>>`]
+    }
+
+    if (name === 'fontSize') {
+      return [name, `Record<${types.forKeys(value)}, [string, { lineHeight: string }]>`]
+    }
+
+    // General cases
+    if (typeof value === 'string') {
+      return [name, `string`]
+    }
+
+    if (typeof value === 'function') {
+      return [name, null]
+    }
+
+    if (typeof value === 'object') {
+      if (Object.keys(value).length === 0) {
+        return [name, null]
+      }
+
+      return [name, types.forValue(value)]
+    }
+
+    return [name, `unknown`]
+  })
+  .filter(([, type]) => type !== null)
+  .map(([name, type]) => `${name}: ${type}`)
+  .join('\n')
+
+fs.writeFileSync(
+  path.join(process.cwd(), 'types', 'generated', 'default-theme.d.ts'),
+  prettier.format(
+    `
+    type CSSDeclarationList = Record<string, string>
+    export type DefaultTheme = { ${defaultThemeTypes} }
+  `,
+    {
+      semi: false,
+      singleQuote: true,
+      printWidth: 100,
+      parser: 'typescript',
+    }
+  )
+)
Index: frontend/node_modules/tailwindcss/scripts/release-channel.js
===================================================================
--- frontend/node_modules/tailwindcss/scripts/release-channel.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/scripts/release-channel.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,18 @@
+// Given a version, figure out what the release channel is so that we can publish to the correct
+// channel on npm.
+//
+// E.g.:
+//
+//   1.2.3                  -> latest (default)
+//   0.0.0-insiders.ffaa88  -> insiders
+//   4.1.0-alpha.4          -> alpha
+
+let version =
+  process.argv[2] || process.env.npm_package_version || require('../package.json').version
+
+let match = /\d+\.\d+\.\d+-(.*)\.\d+/g.exec(version)
+if (match) {
+  console.log(match[1])
+} else {
+  console.log('latest')
+}
Index: frontend/node_modules/tailwindcss/scripts/release-notes.js
===================================================================
--- frontend/node_modules/tailwindcss/scripts/release-notes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/scripts/release-notes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,21 @@
+// Given a version, figure out what the release notes are so that we can use this to pre-fill the
+// relase notes on a GitHub release for the current version.
+
+let path = require('path')
+let fs = require('fs')
+
+let version =
+  process.argv[2] || process.env.npm_package_version || require('../package.json').version
+
+let changelog = fs.readFileSync(path.resolve(__dirname, '..', 'CHANGELOG.md'), 'utf8')
+let match = new RegExp(
+  `## \\[${version}\\] - (.*)\\n\\n([\\s\\S]*?)\\n(?:(?:##\\s)|(?:\\[))`,
+  'g'
+).exec(changelog)
+
+if (match) {
+  let [, , notes] = match
+  console.log(notes.trim())
+} else {
+  console.log(`Placeholder release notes for version: v${version}`)
+}
Index: frontend/node_modules/tailwindcss/scripts/type-utils.js
===================================================================
--- frontend/node_modules/tailwindcss/scripts/type-utils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/scripts/type-utils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,27 @@
+export function union(types) {
+  return [...new Set(types)].join(' | ')
+}
+
+export function unionValues(values) {
+  return union(values.map(forValue))
+}
+
+export function forKeys(value) {
+  return union(Object.keys(value).map((key) => `'${key}'`))
+}
+
+export function forValue(value) {
+  if (Array.isArray(value)) {
+    return `(${unionValues(value)})[]`
+  }
+
+  if (typeof value === 'object') {
+    return `Record<${forKeys(value)}, ${unionValues(Object.values(value))}>`
+  }
+
+  if (typeof value === 'string') {
+    return `string`
+  }
+
+  return `any`
+}
Index: frontend/node_modules/tailwindcss/src/cli-peer-dependencies.js
===================================================================
--- frontend/node_modules/tailwindcss/src/cli-peer-dependencies.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/cli-peer-dependencies.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,15 @@
+export function lazyPostcss() {
+  return require('postcss')
+}
+
+export function lazyPostcssImport() {
+  return require('postcss-import')
+}
+
+export function lazyAutoprefixer() {
+  return require('autoprefixer')
+}
+
+export function lazyCssnano() {
+  return require('cssnano')
+}
Index: frontend/node_modules/tailwindcss/src/cli.js
===================================================================
--- frontend/node_modules/tailwindcss/src/cli.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/cli.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+
+module.exports = require('./cli/index')
Index: frontend/node_modules/tailwindcss/src/cli/help/index.js
===================================================================
--- frontend/node_modules/tailwindcss/src/cli/help/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/cli/help/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,70 @@
+// @ts-check
+import packageJson from '../../../package.json'
+
+export function help({ message, usage, commands, options }) {
+  let indent = 2
+
+  // Render header
+  console.log()
+  console.log(`${packageJson.name} v${packageJson.version}`)
+
+  // Render message
+  if (message) {
+    console.log()
+    for (let msg of message.split('\n')) {
+      console.log(msg)
+    }
+  }
+
+  // Render usage
+  if (usage && usage.length > 0) {
+    console.log()
+    console.log('Usage:')
+    for (let example of usage) {
+      console.log(' '.repeat(indent), example)
+    }
+  }
+
+  // Render commands
+  if (commands && commands.length > 0) {
+    console.log()
+    console.log('Commands:')
+    for (let command of commands) {
+      console.log(' '.repeat(indent), command)
+    }
+  }
+
+  // Render options
+  if (options) {
+    let groupedOptions = {}
+    for (let [key, value] of Object.entries(options)) {
+      if (typeof value === 'object') {
+        groupedOptions[key] = { ...value, flags: [key] }
+      } else {
+        groupedOptions[value].flags.push(key)
+      }
+    }
+
+    console.log()
+    console.log('Options:')
+    for (let { flags, description, deprecated } of Object.values(groupedOptions)) {
+      if (deprecated) continue
+
+      if (flags.length === 1) {
+        console.log(
+          ' '.repeat(indent + 4 /* 4 = "-i, ".length */),
+          flags.slice().reverse().join(', ').padEnd(20, ' '),
+          description
+        )
+      } else {
+        console.log(
+          ' '.repeat(indent),
+          flags.slice().reverse().join(', ').padEnd(24, ' '),
+          description
+        )
+      }
+    }
+  }
+
+  console.log()
+}
Index: frontend/node_modules/tailwindcss/src/cli/index.js
===================================================================
--- frontend/node_modules/tailwindcss/src/cli/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/cli/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,216 @@
+#!/usr/bin/env node
+
+import path from 'path'
+import arg from 'arg'
+import fs from 'fs'
+
+import { build } from './build'
+import { help } from './help'
+import { init } from './init'
+
+function oneOf(...options) {
+  return Object.assign(
+    (value = true) => {
+      for (let option of options) {
+        let parsed = option(value)
+        if (parsed === value) {
+          return parsed
+        }
+      }
+
+      throw new Error('...')
+    },
+    { manualParsing: true }
+  )
+}
+
+let commands = {
+  init: {
+    run: init,
+    args: {
+      '--esm': { type: Boolean, description: `Initialize configuration file as ESM` },
+      '--ts': { type: Boolean, description: `Initialize configuration file as TypeScript` },
+      '--postcss': { type: Boolean, description: `Initialize a \`postcss.config.js\` file` },
+      '--full': {
+        type: Boolean,
+        description: `Include the default values for all options in the generated configuration file`,
+      },
+      '-f': '--full',
+      '-p': '--postcss',
+    },
+  },
+  build: {
+    run: build,
+    args: {
+      '--input': { type: String, description: 'Input file' },
+      '--output': { type: String, description: 'Output file' },
+      '--watch': {
+        type: oneOf(String, Boolean),
+        description: 'Watch for changes and rebuild as needed',
+      },
+      '--poll': {
+        type: Boolean,
+        description: 'Use polling instead of filesystem events when watching',
+      },
+      '--content': {
+        type: String,
+        description: 'Content paths to use for removing unused classes',
+      },
+      '--purge': {
+        type: String,
+        deprecated: true,
+      },
+      '--postcss': {
+        type: oneOf(String, Boolean),
+        description: 'Load custom PostCSS configuration',
+      },
+      '--minify': { type: Boolean, description: 'Minify the output' },
+      '--config': {
+        type: String,
+        description: 'Path to a custom config file',
+      },
+      '--no-autoprefixer': {
+        type: Boolean,
+        description: 'Disable autoprefixer',
+      },
+      '-c': '--config',
+      '-i': '--input',
+      '-o': '--output',
+      '-m': '--minify',
+      '-w': '--watch',
+      '-p': '--poll',
+    },
+  },
+}
+
+let sharedFlags = {
+  '--help': { type: Boolean, description: 'Display usage information' },
+  '-h': '--help',
+}
+
+if (
+  process.stdout.isTTY /* Detect redirecting output to a file */ &&
+  (process.argv[2] === undefined ||
+    process.argv.slice(2).every((flag) => sharedFlags[flag] !== undefined))
+) {
+  help({
+    usage: [
+      'tailwindcss [--input input.css] [--output output.css] [--watch] [options...]',
+      'tailwindcss init [--full] [--postcss] [options...]',
+    ],
+    commands: Object.keys(commands)
+      .filter((command) => command !== 'build')
+      .map((command) => `${command} [options]`),
+    options: { ...commands.build.args, ...sharedFlags },
+  })
+  process.exit(0)
+}
+
+let command = ((arg = '') => (arg.startsWith('-') ? undefined : arg))(process.argv[2]) || 'build'
+
+if (commands[command] === undefined) {
+  if (fs.existsSync(path.resolve(command))) {
+    // TODO: Deprecate this in future versions
+    // Check if non-existing command, might be a file.
+    command = 'build'
+  } else {
+    help({
+      message: `Invalid command: ${command}`,
+      usage: ['tailwindcss <command> [options]'],
+      commands: Object.keys(commands)
+        .filter((command) => command !== 'build')
+        .map((command) => `${command} [options]`),
+      options: sharedFlags,
+    })
+    process.exit(1)
+  }
+}
+
+// Execute command
+let { args: flags, run } = commands[command]
+let args = (() => {
+  try {
+    let result = arg(
+      Object.fromEntries(
+        Object.entries({ ...flags, ...sharedFlags })
+          .filter(([_key, value]) => !value?.type?.manualParsing)
+          .map(([key, value]) => [key, typeof value === 'object' ? value.type : value])
+      ),
+      { permissive: true }
+    )
+
+    // Manual parsing of flags to allow for special flags like oneOf(Boolean, String)
+    for (let i = result['_'].length - 1; i >= 0; --i) {
+      let flag = result['_'][i]
+      if (!flag.startsWith('-')) continue
+
+      let [flagName, flagValue] = flag.split('=')
+      let handler = flags[flagName]
+
+      // Resolve flagName & handler
+      while (typeof handler === 'string') {
+        flagName = handler
+        handler = flags[handler]
+      }
+
+      if (!handler) continue
+
+      let args = []
+      let offset = i + 1
+
+      // --flag value syntax was used so we need to pull `value` from `args`
+      if (flagValue === undefined) {
+        // Parse args for current flag
+        while (result['_'][offset] && !result['_'][offset].startsWith('-')) {
+          args.push(result['_'][offset++])
+        }
+
+        // Cleanup manually parsed flags + args
+        result['_'].splice(i, 1 + args.length)
+
+        // No args were provided, use default value defined in handler
+        // One arg was provided, use that directly
+        // Multiple args were provided so pass them all in an array
+        flagValue = args.length === 0 ? undefined : args.length === 1 ? args[0] : args
+      } else {
+        // Remove the whole flag from the args array
+        result['_'].splice(i, 1)
+      }
+
+      // Set the resolved value in the `result` object
+      result[flagName] = handler.type(flagValue, flagName)
+    }
+
+    // Ensure that the `command` is always the first argument in the `args`.
+    // This is important so that we don't have to check if a default command
+    // (build) was used or not from within each plugin.
+    //
+    // E.g.: tailwindcss input.css -> _: ['build', 'input.css']
+    // E.g.: tailwindcss build input.css -> _: ['build', 'input.css']
+    if (result['_'][0] !== command) {
+      result['_'].unshift(command)
+    }
+
+    return result
+  } catch (err) {
+    if (err.code === 'ARG_UNKNOWN_OPTION') {
+      help({
+        message: err.message,
+        usage: ['tailwindcss <command> [options]'],
+        options: sharedFlags,
+      })
+      process.exit(1)
+    }
+    throw err
+  }
+})()
+
+if (args['--help']) {
+  help({
+    options: { ...flags, ...sharedFlags },
+    usage: [`tailwindcss ${command} [options]`],
+  })
+  process.exit(0)
+}
+
+run(args)
Index: frontend/node_modules/tailwindcss/src/cli/init/index.js
===================================================================
--- frontend/node_modules/tailwindcss/src/cli/init/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/cli/init/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,79 @@
+// @ts-check
+
+import fs from 'fs'
+import path from 'path'
+
+function isESM() {
+  const pkgPath = path.resolve('./package.json')
+
+  try {
+    let pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))
+    return pkg.type && pkg.type === 'module'
+  } catch (err) {
+    return false
+  }
+}
+
+export function init(args) {
+  let messages = []
+
+  let isProjectESM = args['--ts'] || args['--esm'] || isESM()
+  let syntax = args['--ts'] ? 'ts' : isProjectESM ? 'js' : 'cjs'
+  let extension = args['--ts'] ? 'ts' : 'js'
+
+  let tailwindConfigLocation = path.resolve(args['_'][1] ?? `./tailwind.config.${extension}`)
+
+  if (fs.existsSync(tailwindConfigLocation)) {
+    messages.push(`${path.basename(tailwindConfigLocation)} already exists.`)
+  } else {
+    let stubContentsFile = fs.readFileSync(
+      args['--full']
+        ? path.resolve(__dirname, '../../../stubs/config.full.js')
+        : path.resolve(__dirname, '../../../stubs/config.simple.js'),
+      'utf8'
+    )
+
+    let stubFile = fs.readFileSync(
+      path.resolve(__dirname, `../../../stubs/tailwind.config.${syntax}`),
+      'utf8'
+    )
+
+    // Change colors import
+    stubContentsFile = stubContentsFile.replace('../colors', 'tailwindcss/colors')
+
+    // Replace contents of {ts,js,cjs} file with the stub {simple,full}.
+    stubFile =
+      stubFile
+        .replace('__CONFIG__', stubContentsFile.replace('module.exports =', '').trim())
+        .trim() + '\n\n'
+
+    fs.writeFileSync(tailwindConfigLocation, stubFile, 'utf8')
+
+    messages.push(`Created Tailwind CSS config file: ${path.basename(tailwindConfigLocation)}`)
+  }
+
+  if (args['--postcss']) {
+    let postcssConfigLocation = path.resolve('./postcss.config.js')
+    if (fs.existsSync(postcssConfigLocation)) {
+      messages.push(`${path.basename(postcssConfigLocation)} already exists.`)
+    } else {
+      let stubFile = fs.readFileSync(
+        isProjectESM
+          ? path.resolve(__dirname, '../../../stubs/postcss.config.js')
+          : path.resolve(__dirname, '../../../stubs/postcss.config.cjs'),
+        'utf8'
+      )
+
+      fs.writeFileSync(postcssConfigLocation, stubFile, 'utf8')
+
+      messages.push(`Created PostCSS config file: ${path.basename(postcssConfigLocation)}`)
+    }
+  }
+
+  if (messages.length > 0) {
+    console.log()
+    for (let message of messages) {
+      console.log(message)
+    }
+  }
+}
Index: frontend/node_modules/tailwindcss/src/corePluginList.js
===================================================================
--- frontend/node_modules/tailwindcss/src/corePluginList.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/corePluginList.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export default ["preflight","container","accessibility","pointerEvents","visibility","position","inset","isolation","zIndex","order","gridColumn","gridColumnStart","gridColumnEnd","gridRow","gridRowStart","gridRowEnd","float","clear","margin","boxSizing","lineClamp","display","aspectRatio","size","height","maxHeight","minHeight","width","minWidth","maxWidth","flex","flexShrink","flexGrow","flexBasis","tableLayout","captionSide","borderCollapse","borderSpacing","transformOrigin","translate","rotate","skew","scale","transform","animation","cursor","touchAction","userSelect","resize","scrollSnapType","scrollSnapAlign","scrollSnapStop","scrollMargin","scrollPadding","listStylePosition","listStyleType","listStyleImage","appearance","columns","breakBefore","breakInside","breakAfter","gridAutoColumns","gridAutoFlow","gridAutoRows","gridTemplateColumns","gridTemplateRows","flexDirection","flexWrap","placeContent","placeItems","alignContent","alignItems","justifyContent","justifyItems","gap","space","divideWidth","divideStyle","divideColor","divideOpacity","placeSelf","alignSelf","justifySelf","overflow","overscrollBehavior","scrollBehavior","textOverflow","hyphens","whitespace","textWrap","wordBreak","borderRadius","borderWidth","borderStyle","borderColor","borderOpacity","backgroundColor","backgroundOpacity","backgroundImage","gradientColorStops","boxDecorationBreak","backgroundSize","backgroundAttachment","backgroundClip","backgroundPosition","backgroundRepeat","backgroundOrigin","fill","stroke","strokeWidth","objectFit","objectPosition","padding","textAlign","textIndent","verticalAlign","fontFamily","fontSize","fontWeight","textTransform","fontStyle","fontVariantNumeric","lineHeight","letterSpacing","textColor","textOpacity","textDecoration","textDecorationColor","textDecorationStyle","textDecorationThickness","textUnderlineOffset","fontSmoothing","placeholderColor","placeholderOpacity","caretColor","accentColor","opacity","backgroundBlendMode","mixBlendMode","boxShadow","boxShadowColor","outlineStyle","outlineWidth","outlineOffset","outlineColor","ringWidth","ringColor","ringOpacity","ringOffsetWidth","ringOffsetColor","blur","brightness","contrast","dropShadow","grayscale","hueRotate","invert","saturate","sepia","filter","backdropBlur","backdropBrightness","backdropContrast","backdropGrayscale","backdropHueRotate","backdropInvert","backdropOpacity","backdropSaturate","backdropSepia","backdropFilter","transitionProperty","transitionDelay","transitionDuration","transitionTimingFunction","willChange","contain","content","forcedColorAdjust"]
Index: frontend/node_modules/tailwindcss/src/corePlugins.js
===================================================================
--- frontend/node_modules/tailwindcss/src/corePlugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/corePlugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3007 @@
+import fs from 'fs'
+import * as path from 'path'
+import postcss from 'postcss'
+import createUtilityPlugin from './util/createUtilityPlugin'
+import buildMediaQuery from './util/buildMediaQuery'
+import escapeClassName from './util/escapeClassName'
+import parseAnimationValue from './util/parseAnimationValue'
+import flattenColorPalette from './util/flattenColorPalette'
+import withAlphaVariable, { withAlphaValue } from './util/withAlphaVariable'
+import toColorValue from './util/toColorValue'
+import isPlainObject from './util/isPlainObject'
+import transformThemeValue from './util/transformThemeValue'
+import { version as tailwindVersion } from '../package.json'
+import log from './util/log'
+import {
+  normalizeScreens,
+  isScreenSortable,
+  compareScreens,
+  toScreen,
+} from './util/normalizeScreens'
+import { formatBoxShadowValue, parseBoxShadowValue } from './util/parseBoxShadowValue'
+import { removeAlphaVariables } from './util/removeAlphaVariables'
+import { flagEnabled } from './featureFlags'
+import { normalize, normalizeAttributeSelectors } from './util/dataTypes'
+import { INTERNAL_FEATURES } from './lib/setupContextUtils'
+
+export let variantPlugins = {
+  childVariant: ({ addVariant }) => {
+    addVariant('*', '& > *')
+  },
+  pseudoElementVariants: ({ addVariant }) => {
+    addVariant('first-letter', '&::first-letter')
+    addVariant('first-line', '&::first-line')
+
+    addVariant('marker', [
+      ({ container }) => {
+        removeAlphaVariables(container, ['--tw-text-opacity'])
+
+        return '& *::marker'
+      },
+      ({ container }) => {
+        removeAlphaVariables(container, ['--tw-text-opacity'])
+
+        return '&::marker'
+      },
+    ])
+
+    addVariant('selection', ['& *::selection', '&::selection'])
+
+    addVariant('file', '&::file-selector-button')
+
+    addVariant('placeholder', '&::placeholder')
+
+    addVariant('backdrop', '&::backdrop')
+
+    addVariant('before', ({ container }) => {
+      container.walkRules((rule) => {
+        let foundContent = false
+        rule.walkDecls('content', () => {
+          foundContent = true
+        })
+
+        if (!foundContent) {
+          rule.prepend(postcss.decl({ prop: 'content', value: 'var(--tw-content)' }))
+        }
+      })
+
+      return '&::before'
+    })
+
+    addVariant('after', ({ container }) => {
+      container.walkRules((rule) => {
+        let foundContent = false
+        rule.walkDecls('content', () => {
+          foundContent = true
+        })
+
+        if (!foundContent) {
+          rule.prepend(postcss.decl({ prop: 'content', value: 'var(--tw-content)' }))
+        }
+      })
+
+      return '&::after'
+    })
+  },
+
+  pseudoClassVariants: ({ addVariant, matchVariant, config, prefix }) => {
+    let pseudoVariants = [
+      // Positional
+      ['first', '&:first-child'],
+      ['last', '&:last-child'],
+      ['only', '&:only-child'],
+      ['odd', '&:nth-child(odd)'],
+      ['even', '&:nth-child(even)'],
+      'first-of-type',
+      'last-of-type',
+      'only-of-type',
+
+      // State
+      [
+        'visited',
+        ({ container }) => {
+          removeAlphaVariables(container, [
+            '--tw-text-opacity',
+            '--tw-border-opacity',
+            '--tw-bg-opacity',
+          ])
+
+          return '&:visited'
+        },
+      ],
+      'target',
+      ['open', '&[open]'],
+
+      // Forms
+      'default',
+      'checked',
+      'indeterminate',
+      'placeholder-shown',
+      'autofill',
+      'optional',
+      'required',
+      'valid',
+      'invalid',
+      'in-range',
+      'out-of-range',
+      'read-only',
+
+      // Content
+      'empty',
+
+      // Interactive
+      'focus-within',
+      [
+        'hover',
+        !flagEnabled(config(), 'hoverOnlyWhenSupported')
+          ? '&:hover'
+          : '@media (hover: hover) and (pointer: fine) { &:hover }',
+      ],
+      'focus',
+      'focus-visible',
+      'active',
+      'enabled',
+      'disabled',
+    ].map((variant) => (Array.isArray(variant) ? variant : [variant, `&:${variant}`]))
+
+    for (let [variantName, state] of pseudoVariants) {
+      addVariant(variantName, (ctx) => {
+        let result = typeof state === 'function' ? state(ctx) : state
+
+        return result
+      })
+    }
+
+    let variants = {
+      group: (_, { modifier }) =>
+        modifier
+          ? [`:merge(${prefix('.group')}\\/${escapeClassName(modifier)})`, ' &']
+          : [`:merge(${prefix('.group')})`, ' &'],
+      peer: (_, { modifier }) =>
+        modifier
+          ? [`:merge(${prefix('.peer')}\\/${escapeClassName(modifier)})`, ' ~ &']
+          : [`:merge(${prefix('.peer')})`, ' ~ &'],
+    }
+
+    for (let [name, fn] of Object.entries(variants)) {
+      matchVariant(
+        name,
+        (value = '', extra) => {
+          let result = normalize(typeof value === 'function' ? value(extra) : value)
+          if (!result.includes('&')) result = '&' + result
+
+          let [a, b] = fn('', extra)
+
+          let start = null
+          let end = null
+          let quotes = 0
+
+          for (let i = 0; i < result.length; ++i) {
+            let c = result[i]
+            if (c === '&') {
+              start = i
+            } else if (c === "'" || c === '"') {
+              quotes += 1
+            } else if (start !== null && c === ' ' && !quotes) {
+              end = i
+            }
+          }
+
+          if (start !== null && end === null) {
+            end = result.length
+          }
+
+          // Basically this but can handle quotes:
+          // result.replace(/&(\S+)?/g, (_, pseudo = '') => a + pseudo + b)
+
+          return result.slice(0, start) + a + result.slice(start + 1, end) + b + result.slice(end)
+        },
+        {
+          values: Object.fromEntries(pseudoVariants),
+          [INTERNAL_FEATURES]: {
+            respectPrefix: false,
+          },
+        }
+      )
+    }
+  },
+
+  directionVariants: ({ addVariant }) => {
+    addVariant('ltr', '&:where([dir="ltr"], [dir="ltr"] *)')
+    addVariant('rtl', '&:where([dir="rtl"], [dir="rtl"] *)')
+  },
+
+  reducedMotionVariants: ({ addVariant }) => {
+    addVariant('motion-safe', '@media (prefers-reduced-motion: no-preference)')
+    addVariant('motion-reduce', '@media (prefers-reduced-motion: reduce)')
+  },
+
+  darkVariants: ({ config, addVariant }) => {
+    let [mode, selector = '.dark'] = [].concat(config('darkMode', 'media'))
+
+    if (mode === false) {
+      mode = 'media'
+      log.warn('darkmode-false', [
+        'The `darkMode` option in your Tailwind CSS configuration is set to `false`, which now behaves the same as `media`.',
+        'Change `darkMode` to `media` or remove it entirely.',
+        'https://tailwindcss.com/docs/upgrade-guide#remove-dark-mode-configuration',
+      ])
+    }
+
+    if (mode === 'variant') {
+      let formats
+      if (Array.isArray(selector)) {
+        formats = selector
+      } else if (typeof selector === 'function') {
+        formats = selector
+      } else if (typeof selector === 'string') {
+        formats = [selector]
+      }
+
+      // TODO: We could also add these warnings if the user passes a function that returns string | string[]
+      // But this is an advanced enough use case that it's probably not necessary
+      if (Array.isArray(formats)) {
+        for (let format of formats) {
+          if (format === '.dark') {
+            mode = false
+            log.warn('darkmode-variant-without-selector', [
+              'When using `variant` for `darkMode`, you must provide a selector.',
+              'Example: `darkMode: ["variant", ".your-selector &"]`',
+            ])
+          } else if (!format.includes('&')) {
+            mode = false
+            log.warn('darkmode-variant-without-ampersand', [
+              'When using `variant` for `darkMode`, your selector must contain `&`.',
+              'Example `darkMode: ["variant", ".your-selector &"]`',
+            ])
+          }
+        }
+      }
+
+      selector = formats
+    }
+
+    if (mode === 'selector') {
+      // New preferred behavior
+      addVariant('dark', `&:where(${selector}, ${selector} *)`)
+    } else if (mode === 'media') {
+      addVariant('dark', '@media (prefers-color-scheme: dark)')
+    } else if (mode === 'variant') {
+      addVariant('dark', selector)
+    } else if (mode === 'class') {
+      // Old behavior
+      addVariant('dark', `&:is(${selector} *)`)
+    }
+  },
+
+  printVariant: ({ addVariant }) => {
+    addVariant('print', '@media print')
+  },
+
+  screenVariants: ({ theme, addVariant, matchVariant }) => {
+    let rawScreens = theme('screens') ?? {}
+    let areSimpleScreens = Object.values(rawScreens).every((v) => typeof v === 'string')
+    let screens = normalizeScreens(theme('screens'))
+
+    /** @type {Set<string>} */
+    let unitCache = new Set([])
+
+    /** @param {string} value */
+    function units(value) {
+      return value.match(/(\D+)$/)?.[1] ?? '(none)'
+    }
+
+    /** @param {string} value */
+    function recordUnits(value) {
+      if (value !== undefined) {
+        unitCache.add(units(value))
+      }
+    }
+
+    /** @param {string} value */
+    function canUseUnits(value) {
+      recordUnits(value)
+
+      // If the cache was empty it'll become 1 because we've just added the current unit
+      // If the cache was not empty and the units are the same the size doesn't change
+      // Otherwise, if the units are different from what is already known the size will always be > 1
+      return unitCache.size === 1
+    }
+
+    for (const screen of screens) {
+      for (const value of screen.values) {
+        recordUnits(value.min)
+        recordUnits(value.max)
+      }
+    }
+
+    let screensUseConsistentUnits = unitCache.size <= 1
+
+    /**
+     * @typedef {import('./util/normalizeScreens').Screen} Screen
+     */
+
+    /**
+     * @param {'min' | 'max'} type
+     * @returns {Record<string, Screen>}
+     */
+    function buildScreenValues(type) {
+      return Object.fromEntries(
+        screens
+          .filter((screen) => isScreenSortable(screen).result)
+          .map((screen) => {
+            let { min, max } = screen.values[0]
+
+            if (type === 'min' && min !== undefined) {
+              return screen
+            } else if (type === 'min' && max !== undefined) {
+              return { ...screen, not: !screen.not }
+            } else if (type === 'max' && max !== undefined) {
+              return screen
+            } else if (type === 'max' && min !== undefined) {
+              return { ...screen, not: !screen.not }
+            }
+          })
+          .map((screen) => [screen.name, screen])
+      )
+    }
+
+    /**
+     * @param {'min' | 'max'} type
+     * @returns {(a: { value: string | Screen }, z: { value: string | Screen }) => number}
+     */
+    function buildSort(type) {
+      return (a, z) => compareScreens(type, a.value, z.value)
+    }
+
+    let maxSort = buildSort('max')
+    let minSort = buildSort('min')
+
+    /** @param {'min'|'max'} type */
+    function buildScreenVariant(type) {
+      return (value) => {
+        if (!areSimpleScreens) {
+          log.warn('complex-screen-config', [
+            'The `min-*` and `max-*` variants are not supported with a `screens` configuration containing objects.',
+          ])
+
+          return []
+        } else if (!screensUseConsistentUnits) {
+          log.warn('mixed-screen-units', [
+            'The `min-*` and `max-*` variants are not supported with a `screens` configuration containing mixed units.',
+          ])
+
+          return []
+        } else if (typeof value === 'string' && !canUseUnits(value)) {
+          log.warn('minmax-have-mixed-units', [
+            'The `min-*` and `max-*` variants are not supported with a `screens` configuration containing mixed units.',
+          ])
+
+          return []
+        }
+
+        return [`@media ${buildMediaQuery(toScreen(value, type))}`]
+      }
+    }
+
+    matchVariant('max', buildScreenVariant('max'), {
+      sort: maxSort,
+      values: areSimpleScreens ? buildScreenValues('max') : {},
+    })
+
+    // screens and min-* are sorted together when they can be
+    let id = 'min-screens'
+    for (let screen of screens) {
+      addVariant(screen.name, `@media ${buildMediaQuery(screen)}`, {
+        id,
+        sort: areSimpleScreens && screensUseConsistentUnits ? minSort : undefined,
+        value: screen,
+      })
+    }
+
+    matchVariant('min', buildScreenVariant('min'), {
+      id,
+      sort: minSort,
+    })
+  },
+
+  supportsVariants: ({ matchVariant, theme }) => {
+    matchVariant(
+      'supports',
+      (value = '') => {
+        let check = value.startsWith('--') ? value : normalize(value)
+        let isRaw = /^[\w-]*\s*\(/.test(check)
+
+        // Chrome has a bug where `(condition1)or(condition2)` is not valid
+        // But `(condition1) or (condition2)` is supported.
+        check = isRaw ? check.replace(/\b(and|or|not)\b/g, ' $1 ') : check
+
+        if (isRaw) {
+          return `@supports ${check}`
+        }
+
+        if (!check.includes(':')) {
+          check = `${check}: var(--tw)`
+        }
+
+        if (!(check.startsWith('(') && check.endsWith(')'))) {
+          check = `(${check})`
+        }
+
+        return `@supports ${check}`
+      },
+      { values: theme('supports') ?? {} }
+    )
+  },
+
+  hasVariants: ({ matchVariant, prefix }) => {
+    matchVariant('has', (value) => `&:has(${normalize(value)})`, {
+      values: {},
+      [INTERNAL_FEATURES]: {
+        respectPrefix: false,
+      },
+    })
+
+    matchVariant(
+      'group-has',
+      (value, { modifier }) =>
+        modifier
+          ? `:merge(${prefix('.group')}\\/${modifier}):has(${normalize(value)}) &`
+          : `:merge(${prefix('.group')}):has(${normalize(value)}) &`,
+      {
+        values: {},
+        [INTERNAL_FEATURES]: {
+          respectPrefix: false,
+        },
+      }
+    )
+
+    matchVariant(
+      'peer-has',
+      (value, { modifier }) =>
+        modifier
+          ? `:merge(${prefix('.peer')}\\/${modifier}):has(${normalize(value)}) ~ &`
+          : `:merge(${prefix('.peer')}):has(${normalize(value)}) ~ &`,
+      {
+        values: {},
+        [INTERNAL_FEATURES]: {
+          respectPrefix: false,
+        },
+      }
+    )
+  },
+
+  ariaVariants: ({ matchVariant, theme }) => {
+    matchVariant('aria', (value) => `&[aria-${normalizeAttributeSelectors(normalize(value))}]`, {
+      values: theme('aria') ?? {},
+    })
+    matchVariant(
+      'group-aria',
+      (value, { modifier }) =>
+        modifier
+          ? `:merge(.group\\/${modifier})[aria-${normalizeAttributeSelectors(normalize(value))}] &`
+          : `:merge(.group)[aria-${normalizeAttributeSelectors(normalize(value))}] &`,
+      { values: theme('aria') ?? {} }
+    )
+    matchVariant(
+      'peer-aria',
+      (value, { modifier }) =>
+        modifier
+          ? `:merge(.peer\\/${modifier})[aria-${normalizeAttributeSelectors(normalize(value))}] ~ &`
+          : `:merge(.peer)[aria-${normalizeAttributeSelectors(normalize(value))}] ~ &`,
+      { values: theme('aria') ?? {} }
+    )
+  },
+
+  dataVariants: ({ matchVariant, theme }) => {
+    matchVariant('data', (value) => `&[data-${normalizeAttributeSelectors(normalize(value))}]`, {
+      values: theme('data') ?? {},
+    })
+    matchVariant(
+      'group-data',
+      (value, { modifier }) =>
+        modifier
+          ? `:merge(.group\\/${modifier})[data-${normalizeAttributeSelectors(normalize(value))}] &`
+          : `:merge(.group)[data-${normalizeAttributeSelectors(normalize(value))}] &`,
+      { values: theme('data') ?? {} }
+    )
+    matchVariant(
+      'peer-data',
+      (value, { modifier }) =>
+        modifier
+          ? `:merge(.peer\\/${modifier})[data-${normalizeAttributeSelectors(normalize(value))}] ~ &`
+          : `:merge(.peer)[data-${normalizeAttributeSelectors(normalize(value))}] ~ &`,
+      { values: theme('data') ?? {} }
+    )
+  },
+
+  orientationVariants: ({ addVariant }) => {
+    addVariant('portrait', '@media (orientation: portrait)')
+    addVariant('landscape', '@media (orientation: landscape)')
+  },
+
+  prefersContrastVariants: ({ addVariant }) => {
+    addVariant('contrast-more', '@media (prefers-contrast: more)')
+    addVariant('contrast-less', '@media (prefers-contrast: less)')
+  },
+
+  forcedColorsVariants: ({ addVariant }) => {
+    addVariant('forced-colors', '@media (forced-colors: active)')
+  },
+}
+
+let cssTransformValue = [
+  'translate(var(--tw-translate-x), var(--tw-translate-y))',
+  'rotate(var(--tw-rotate))',
+  'skewX(var(--tw-skew-x))',
+  'skewY(var(--tw-skew-y))',
+  'scaleX(var(--tw-scale-x))',
+  'scaleY(var(--tw-scale-y))',
+].join(' ')
+
+let cssFilterValue = [
+  'var(--tw-blur)',
+  'var(--tw-brightness)',
+  'var(--tw-contrast)',
+  'var(--tw-grayscale)',
+  'var(--tw-hue-rotate)',
+  'var(--tw-invert)',
+  'var(--tw-saturate)',
+  'var(--tw-sepia)',
+  'var(--tw-drop-shadow)',
+].join(' ')
+
+let cssBackdropFilterValue = [
+  'var(--tw-backdrop-blur)',
+  'var(--tw-backdrop-brightness)',
+  'var(--tw-backdrop-contrast)',
+  'var(--tw-backdrop-grayscale)',
+  'var(--tw-backdrop-hue-rotate)',
+  'var(--tw-backdrop-invert)',
+  'var(--tw-backdrop-opacity)',
+  'var(--tw-backdrop-saturate)',
+  'var(--tw-backdrop-sepia)',
+].join(' ')
+
+export let corePlugins = {
+  preflight: ({ addBase }) => {
+    let preflightStyles = postcss.parse(
+      fs.readFileSync(path.join(__dirname, './css/preflight.css'), 'utf8')
+    )
+
+    addBase([
+      postcss.comment({
+        text: `! tailwindcss v${tailwindVersion} | MIT License | https://tailwindcss.com`,
+      }),
+      ...preflightStyles.nodes,
+    ])
+  },
+
+  container: (() => {
+    function extractMinWidths(breakpoints = []) {
+      return breakpoints
+        .flatMap((breakpoint) => breakpoint.values.map((breakpoint) => breakpoint.min))
+        .filter((v) => v !== undefined)
+    }
+
+    function mapMinWidthsToPadding(minWidths, screens, paddings) {
+      if (typeof paddings === 'undefined') {
+        return []
+      }
+
+      if (!(typeof paddings === 'object' && paddings !== null)) {
+        return [
+          {
+            screen: 'DEFAULT',
+            minWidth: 0,
+            padding: paddings,
+          },
+        ]
+      }
+
+      let mapping = []
+
+      if (paddings.DEFAULT) {
+        mapping.push({
+          screen: 'DEFAULT',
+          minWidth: 0,
+          padding: paddings.DEFAULT,
+        })
+      }
+
+      for (let minWidth of minWidths) {
+        for (let screen of screens) {
+          for (let { min } of screen.values) {
+            if (min === minWidth) {
+              mapping.push({ minWidth, padding: paddings[screen.name] })
+            }
+          }
+        }
+      }
+
+      return mapping
+    }
+
+    return function ({ addComponents, theme }) {
+      let screens = normalizeScreens(theme('container.screens', theme('screens')))
+      let minWidths = extractMinWidths(screens)
+      let paddings = mapMinWidthsToPadding(minWidths, screens, theme('container.padding'))
+
+      let generatePaddingFor = (minWidth) => {
+        let paddingConfig = paddings.find((padding) => padding.minWidth === minWidth)
+
+        if (!paddingConfig) {
+          return {}
+        }
+
+        return {
+          paddingRight: paddingConfig.padding,
+          paddingLeft: paddingConfig.padding,
+        }
+      }
+
+      let atRules = Array.from(
+        new Set(minWidths.slice().sort((a, z) => parseInt(a) - parseInt(z)))
+      ).map((minWidth) => ({
+        [`@media (min-width: ${minWidth})`]: {
+          '.container': {
+            'max-width': minWidth,
+            ...generatePaddingFor(minWidth),
+          },
+        },
+      }))
+
+      addComponents([
+        {
+          '.container': Object.assign(
+            { width: '100%' },
+            theme('container.center', false) ? { marginRight: 'auto', marginLeft: 'auto' } : {},
+            generatePaddingFor(0)
+          ),
+        },
+        ...atRules,
+      ])
+    }
+  })(),
+
+  accessibility: ({ addUtilities }) => {
+    addUtilities({
+      '.sr-only': {
+        position: 'absolute',
+        width: '1px',
+        height: '1px',
+        padding: '0',
+        margin: '-1px',
+        overflow: 'hidden',
+        clip: 'rect(0, 0, 0, 0)',
+        whiteSpace: 'nowrap',
+        borderWidth: '0',
+      },
+      '.not-sr-only': {
+        position: 'static',
+        width: 'auto',
+        height: 'auto',
+        padding: '0',
+        margin: '0',
+        overflow: 'visible',
+        clip: 'auto',
+        whiteSpace: 'normal',
+      },
+    })
+  },
+
+  pointerEvents: ({ addUtilities }) => {
+    addUtilities({
+      '.pointer-events-none': { 'pointer-events': 'none' },
+      '.pointer-events-auto': { 'pointer-events': 'auto' },
+    })
+  },
+
+  visibility: ({ addUtilities }) => {
+    addUtilities({
+      '.visible': { visibility: 'visible' },
+      '.invisible': { visibility: 'hidden' },
+      '.collapse': { visibility: 'collapse' },
+    })
+  },
+
+  position: ({ addUtilities }) => {
+    addUtilities({
+      '.static': { position: 'static' },
+      '.fixed': { position: 'fixed' },
+      '.absolute': { position: 'absolute' },
+      '.relative': { position: 'relative' },
+      '.sticky': { position: 'sticky' },
+    })
+  },
+
+  inset: createUtilityPlugin(
+    'inset',
+    [
+      ['inset', ['inset']],
+      [
+        ['inset-x', ['left', 'right']],
+        ['inset-y', ['top', 'bottom']],
+      ],
+      [
+        ['start', ['inset-inline-start']],
+        ['end', ['inset-inline-end']],
+        ['top', ['top']],
+        ['right', ['right']],
+        ['bottom', ['bottom']],
+        ['left', ['left']],
+      ],
+    ],
+    { supportsNegativeValues: true }
+  ),
+
+  isolation: ({ addUtilities }) => {
+    addUtilities({
+      '.isolate': { isolation: 'isolate' },
+      '.isolation-auto': { isolation: 'auto' },
+    })
+  },
+
+  zIndex: createUtilityPlugin('zIndex', [['z', ['zIndex']]], { supportsNegativeValues: true }),
+  order: createUtilityPlugin('order', undefined, { supportsNegativeValues: true }),
+  gridColumn: createUtilityPlugin('gridColumn', [['col', ['gridColumn']]]),
+  gridColumnStart: createUtilityPlugin('gridColumnStart', [['col-start', ['gridColumnStart']]], {
+    supportsNegativeValues: true,
+  }),
+  gridColumnEnd: createUtilityPlugin('gridColumnEnd', [['col-end', ['gridColumnEnd']]], {
+    supportsNegativeValues: true,
+  }),
+  gridRow: createUtilityPlugin('gridRow', [['row', ['gridRow']]]),
+  gridRowStart: createUtilityPlugin('gridRowStart', [['row-start', ['gridRowStart']]], {
+    supportsNegativeValues: true,
+  }),
+  gridRowEnd: createUtilityPlugin('gridRowEnd', [['row-end', ['gridRowEnd']]], {
+    supportsNegativeValues: true,
+  }),
+
+  float: ({ addUtilities }) => {
+    addUtilities({
+      '.float-start': { float: 'inline-start' },
+      '.float-end': { float: 'inline-end' },
+      '.float-right': { float: 'right' },
+      '.float-left': { float: 'left' },
+      '.float-none': { float: 'none' },
+    })
+  },
+
+  clear: ({ addUtilities }) => {
+    addUtilities({
+      '.clear-start': { clear: 'inline-start' },
+      '.clear-end': { clear: 'inline-end' },
+      '.clear-left': { clear: 'left' },
+      '.clear-right': { clear: 'right' },
+      '.clear-both': { clear: 'both' },
+      '.clear-none': { clear: 'none' },
+    })
+  },
+
+  margin: createUtilityPlugin(
+    'margin',
+    [
+      ['m', ['margin']],
+      [
+        ['mx', ['margin-left', 'margin-right']],
+        ['my', ['margin-top', 'margin-bottom']],
+      ],
+      [
+        ['ms', ['margin-inline-start']],
+        ['me', ['margin-inline-end']],
+        ['mt', ['margin-top']],
+        ['mr', ['margin-right']],
+        ['mb', ['margin-bottom']],
+        ['ml', ['margin-left']],
+      ],
+    ],
+    { supportsNegativeValues: true }
+  ),
+
+  boxSizing: ({ addUtilities }) => {
+    addUtilities({
+      '.box-border': { 'box-sizing': 'border-box' },
+      '.box-content': { 'box-sizing': 'content-box' },
+    })
+  },
+
+  lineClamp: ({ matchUtilities, addUtilities, theme }) => {
+    matchUtilities(
+      {
+        'line-clamp': (value) => ({
+          overflow: 'hidden',
+          display: '-webkit-box',
+          '-webkit-box-orient': 'vertical',
+          '-webkit-line-clamp': `${value}`,
+        }),
+      },
+      { values: theme('lineClamp') }
+    )
+
+    addUtilities({
+      '.line-clamp-none': {
+        overflow: 'visible',
+        display: 'block',
+        '-webkit-box-orient': 'horizontal',
+        '-webkit-line-clamp': 'none',
+      },
+    })
+  },
+
+  display: ({ addUtilities }) => {
+    addUtilities({
+      '.block': { display: 'block' },
+      '.inline-block': { display: 'inline-block' },
+      '.inline': { display: 'inline' },
+      '.flex': { display: 'flex' },
+      '.inline-flex': { display: 'inline-flex' },
+      '.table': { display: 'table' },
+      '.inline-table': { display: 'inline-table' },
+      '.table-caption': { display: 'table-caption' },
+      '.table-cell': { display: 'table-cell' },
+      '.table-column': { display: 'table-column' },
+      '.table-column-group': { display: 'table-column-group' },
+      '.table-footer-group': { display: 'table-footer-group' },
+      '.table-header-group': { display: 'table-header-group' },
+      '.table-row-group': { display: 'table-row-group' },
+      '.table-row': { display: 'table-row' },
+      '.flow-root': { display: 'flow-root' },
+      '.grid': { display: 'grid' },
+      '.inline-grid': { display: 'inline-grid' },
+      '.contents': { display: 'contents' },
+      '.list-item': { display: 'list-item' },
+      '.hidden': { display: 'none' },
+    })
+  },
+
+  aspectRatio: createUtilityPlugin('aspectRatio', [['aspect', ['aspect-ratio']]]),
+
+  size: createUtilityPlugin('size', [['size', ['width', 'height']]]),
+
+  height: createUtilityPlugin('height', [['h', ['height']]]),
+  maxHeight: createUtilityPlugin('maxHeight', [['max-h', ['maxHeight']]]),
+  minHeight: createUtilityPlugin('minHeight', [['min-h', ['minHeight']]]),
+
+  width: createUtilityPlugin('width', [['w', ['width']]]),
+  minWidth: createUtilityPlugin('minWidth', [['min-w', ['minWidth']]]),
+  maxWidth: createUtilityPlugin('maxWidth', [['max-w', ['maxWidth']]]),
+
+  flex: createUtilityPlugin('flex'),
+  flexShrink: createUtilityPlugin('flexShrink', [
+    ['flex-shrink', ['flex-shrink']], // Deprecated
+    ['shrink', ['flex-shrink']],
+  ]),
+  flexGrow: createUtilityPlugin('flexGrow', [
+    ['flex-grow', ['flex-grow']], // Deprecated
+    ['grow', ['flex-grow']],
+  ]),
+  flexBasis: createUtilityPlugin('flexBasis', [['basis', ['flex-basis']]]),
+
+  tableLayout: ({ addUtilities }) => {
+    addUtilities({
+      '.table-auto': { 'table-layout': 'auto' },
+      '.table-fixed': { 'table-layout': 'fixed' },
+    })
+  },
+
+  captionSide: ({ addUtilities }) => {
+    addUtilities({
+      '.caption-top': { 'caption-side': 'top' },
+      '.caption-bottom': { 'caption-side': 'bottom' },
+    })
+  },
+
+  borderCollapse: ({ addUtilities }) => {
+    addUtilities({
+      '.border-collapse': { 'border-collapse': 'collapse' },
+      '.border-separate': { 'border-collapse': 'separate' },
+    })
+  },
+
+  borderSpacing: ({ addDefaults, matchUtilities, theme }) => {
+    addDefaults('border-spacing', {
+      '--tw-border-spacing-x': 0,
+      '--tw-border-spacing-y': 0,
+    })
+
+    matchUtilities(
+      {
+        'border-spacing': (value) => {
+          return {
+            '--tw-border-spacing-x': value,
+            '--tw-border-spacing-y': value,
+            '@defaults border-spacing': {},
+            'border-spacing': 'var(--tw-border-spacing-x) var(--tw-border-spacing-y)',
+          }
+        },
+        'border-spacing-x': (value) => {
+          return {
+            '--tw-border-spacing-x': value,
+            '@defaults border-spacing': {},
+            'border-spacing': 'var(--tw-border-spacing-x) var(--tw-border-spacing-y)',
+          }
+        },
+        'border-spacing-y': (value) => {
+          return {
+            '--tw-border-spacing-y': value,
+            '@defaults border-spacing': {},
+            'border-spacing': 'var(--tw-border-spacing-x) var(--tw-border-spacing-y)',
+          }
+        },
+      },
+      { values: theme('borderSpacing') }
+    )
+  },
+
+  transformOrigin: createUtilityPlugin('transformOrigin', [['origin', ['transformOrigin']]]),
+  translate: createUtilityPlugin(
+    'translate',
+    [
+      [
+        [
+          'translate-x',
+          [['@defaults transform', {}], '--tw-translate-x', ['transform', cssTransformValue]],
+        ],
+        [
+          'translate-y',
+          [['@defaults transform', {}], '--tw-translate-y', ['transform', cssTransformValue]],
+        ],
+      ],
+    ],
+    { supportsNegativeValues: true }
+  ),
+  rotate: createUtilityPlugin(
+    'rotate',
+    [['rotate', [['@defaults transform', {}], '--tw-rotate', ['transform', cssTransformValue]]]],
+    { supportsNegativeValues: true }
+  ),
+  skew: createUtilityPlugin(
+    'skew',
+    [
+      [
+        ['skew-x', [['@defaults transform', {}], '--tw-skew-x', ['transform', cssTransformValue]]],
+        ['skew-y', [['@defaults transform', {}], '--tw-skew-y', ['transform', cssTransformValue]]],
+      ],
+    ],
+    { supportsNegativeValues: true }
+  ),
+  scale: createUtilityPlugin(
+    'scale',
+    [
+      [
+        'scale',
+        [
+          ['@defaults transform', {}],
+          '--tw-scale-x',
+          '--tw-scale-y',
+          ['transform', cssTransformValue],
+        ],
+      ],
+      [
+        [
+          'scale-x',
+          [['@defaults transform', {}], '--tw-scale-x', ['transform', cssTransformValue]],
+        ],
+        [
+          'scale-y',
+          [['@defaults transform', {}], '--tw-scale-y', ['transform', cssTransformValue]],
+        ],
+      ],
+    ],
+    { supportsNegativeValues: true }
+  ),
+
+  transform: ({ addDefaults, addUtilities }) => {
+    addDefaults('transform', {
+      '--tw-translate-x': '0',
+      '--tw-translate-y': '0',
+      '--tw-rotate': '0',
+      '--tw-skew-x': '0',
+      '--tw-skew-y': '0',
+      '--tw-scale-x': '1',
+      '--tw-scale-y': '1',
+    })
+
+    addUtilities({
+      '.transform': { '@defaults transform': {}, transform: cssTransformValue },
+      '.transform-cpu': {
+        transform: cssTransformValue,
+      },
+      '.transform-gpu': {
+        transform: cssTransformValue.replace(
+          'translate(var(--tw-translate-x), var(--tw-translate-y))',
+          'translate3d(var(--tw-translate-x), var(--tw-translate-y), 0)'
+        ),
+      },
+      '.transform-none': { transform: 'none' },
+    })
+  },
+
+  animation: ({ matchUtilities, theme, config }) => {
+    let prefixName = (name) => escapeClassName(config('prefix') + name)
+    let keyframes = Object.fromEntries(
+      Object.entries(theme('keyframes') ?? {}).map(([key, value]) => {
+        return [key, { [`@keyframes ${prefixName(key)}`]: value }]
+      })
+    )
+
+    matchUtilities(
+      {
+        animate: (value) => {
+          let animations = parseAnimationValue(value)
+
+          return [
+            ...animations.flatMap((animation) => keyframes[animation.name]),
+            {
+              animation: animations
+                .map(({ name, value }) => {
+                  if (name === undefined || keyframes[name] === undefined) {
+                    return value
+                  }
+                  return value.replace(name, prefixName(name))
+                })
+                .join(', '),
+            },
+          ]
+        },
+      },
+      { values: theme('animation') }
+    )
+  },
+
+  cursor: createUtilityPlugin('cursor'),
+
+  touchAction: ({ addDefaults, addUtilities }) => {
+    addDefaults('touch-action', {
+      '--tw-pan-x': ' ',
+      '--tw-pan-y': ' ',
+      '--tw-pinch-zoom': ' ',
+    })
+
+    let cssTouchActionValue = 'var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)'
+
+    addUtilities({
+      '.touch-auto': { 'touch-action': 'auto' },
+      '.touch-none': { 'touch-action': 'none' },
+      '.touch-pan-x': {
+        '@defaults touch-action': {},
+        '--tw-pan-x': 'pan-x',
+        'touch-action': cssTouchActionValue,
+      },
+      '.touch-pan-left': {
+        '@defaults touch-action': {},
+        '--tw-pan-x': 'pan-left',
+        'touch-action': cssTouchActionValue,
+      },
+      '.touch-pan-right': {
+        '@defaults touch-action': {},
+        '--tw-pan-x': 'pan-right',
+        'touch-action': cssTouchActionValue,
+      },
+      '.touch-pan-y': {
+        '@defaults touch-action': {},
+        '--tw-pan-y': 'pan-y',
+        'touch-action': cssTouchActionValue,
+      },
+      '.touch-pan-up': {
+        '@defaults touch-action': {},
+        '--tw-pan-y': 'pan-up',
+        'touch-action': cssTouchActionValue,
+      },
+      '.touch-pan-down': {
+        '@defaults touch-action': {},
+        '--tw-pan-y': 'pan-down',
+        'touch-action': cssTouchActionValue,
+      },
+      '.touch-pinch-zoom': {
+        '@defaults touch-action': {},
+        '--tw-pinch-zoom': 'pinch-zoom',
+        'touch-action': cssTouchActionValue,
+      },
+      '.touch-manipulation': { 'touch-action': 'manipulation' },
+    })
+  },
+
+  userSelect: ({ addUtilities }) => {
+    addUtilities({
+      '.select-none': { 'user-select': 'none' },
+      '.select-text': { 'user-select': 'text' },
+      '.select-all': { 'user-select': 'all' },
+      '.select-auto': { 'user-select': 'auto' },
+    })
+  },
+
+  resize: ({ addUtilities }) => {
+    addUtilities({
+      '.resize-none': { resize: 'none' },
+      '.resize-y': { resize: 'vertical' },
+      '.resize-x': { resize: 'horizontal' },
+      '.resize': { resize: 'both' },
+    })
+  },
+
+  scrollSnapType: ({ addDefaults, addUtilities }) => {
+    addDefaults('scroll-snap-type', {
+      '--tw-scroll-snap-strictness': 'proximity',
+    })
+
+    addUtilities({
+      '.snap-none': { 'scroll-snap-type': 'none' },
+      '.snap-x': {
+        '@defaults scroll-snap-type': {},
+        'scroll-snap-type': 'x var(--tw-scroll-snap-strictness)',
+      },
+      '.snap-y': {
+        '@defaults scroll-snap-type': {},
+        'scroll-snap-type': 'y var(--tw-scroll-snap-strictness)',
+      },
+      '.snap-both': {
+        '@defaults scroll-snap-type': {},
+        'scroll-snap-type': 'both var(--tw-scroll-snap-strictness)',
+      },
+      '.snap-mandatory': { '--tw-scroll-snap-strictness': 'mandatory' },
+      '.snap-proximity': { '--tw-scroll-snap-strictness': 'proximity' },
+    })
+  },
+
+  scrollSnapAlign: ({ addUtilities }) => {
+    addUtilities({
+      '.snap-start': { 'scroll-snap-align': 'start' },
+      '.snap-end': { 'scroll-snap-align': 'end' },
+      '.snap-center': { 'scroll-snap-align': 'center' },
+      '.snap-align-none': { 'scroll-snap-align': 'none' },
+    })
+  },
+
+  scrollSnapStop: ({ addUtilities }) => {
+    addUtilities({
+      '.snap-normal': { 'scroll-snap-stop': 'normal' },
+      '.snap-always': { 'scroll-snap-stop': 'always' },
+    })
+  },
+
+  scrollMargin: createUtilityPlugin(
+    'scrollMargin',
+    [
+      ['scroll-m', ['scroll-margin']],
+      [
+        ['scroll-mx', ['scroll-margin-left', 'scroll-margin-right']],
+        ['scroll-my', ['scroll-margin-top', 'scroll-margin-bottom']],
+      ],
+      [
+        ['scroll-ms', ['scroll-margin-inline-start']],
+        ['scroll-me', ['scroll-margin-inline-end']],
+        ['scroll-mt', ['scroll-margin-top']],
+        ['scroll-mr', ['scroll-margin-right']],
+        ['scroll-mb', ['scroll-margin-bottom']],
+        ['scroll-ml', ['scroll-margin-left']],
+      ],
+    ],
+    { supportsNegativeValues: true }
+  ),
+
+  scrollPadding: createUtilityPlugin('scrollPadding', [
+    ['scroll-p', ['scroll-padding']],
+    [
+      ['scroll-px', ['scroll-padding-left', 'scroll-padding-right']],
+      ['scroll-py', ['scroll-padding-top', 'scroll-padding-bottom']],
+    ],
+    [
+      ['scroll-ps', ['scroll-padding-inline-start']],
+      ['scroll-pe', ['scroll-padding-inline-end']],
+      ['scroll-pt', ['scroll-padding-top']],
+      ['scroll-pr', ['scroll-padding-right']],
+      ['scroll-pb', ['scroll-padding-bottom']],
+      ['scroll-pl', ['scroll-padding-left']],
+    ],
+  ]),
+
+  listStylePosition: ({ addUtilities }) => {
+    addUtilities({
+      '.list-inside': { 'list-style-position': 'inside' },
+      '.list-outside': { 'list-style-position': 'outside' },
+    })
+  },
+  listStyleType: createUtilityPlugin('listStyleType', [['list', ['listStyleType']]]),
+  listStyleImage: createUtilityPlugin('listStyleImage', [['list-image', ['listStyleImage']]]),
+
+  appearance: ({ addUtilities }) => {
+    addUtilities({
+      '.appearance-none': { appearance: 'none' },
+      '.appearance-auto': { appearance: 'auto' },
+    })
+  },
+
+  columns: createUtilityPlugin('columns', [['columns', ['columns']]]),
+
+  breakBefore: ({ addUtilities }) => {
+    addUtilities({
+      '.break-before-auto': { 'break-before': 'auto' },
+      '.break-before-avoid': { 'break-before': 'avoid' },
+      '.break-before-all': { 'break-before': 'all' },
+      '.break-before-avoid-page': { 'break-before': 'avoid-page' },
+      '.break-before-page': { 'break-before': 'page' },
+      '.break-before-left': { 'break-before': 'left' },
+      '.break-before-right': { 'break-before': 'right' },
+      '.break-before-column': { 'break-before': 'column' },
+    })
+  },
+
+  breakInside: ({ addUtilities }) => {
+    addUtilities({
+      '.break-inside-auto': { 'break-inside': 'auto' },
+      '.break-inside-avoid': { 'break-inside': 'avoid' },
+      '.break-inside-avoid-page': { 'break-inside': 'avoid-page' },
+      '.break-inside-avoid-column': { 'break-inside': 'avoid-column' },
+    })
+  },
+
+  breakAfter: ({ addUtilities }) => {
+    addUtilities({
+      '.break-after-auto': { 'break-after': 'auto' },
+      '.break-after-avoid': { 'break-after': 'avoid' },
+      '.break-after-all': { 'break-after': 'all' },
+      '.break-after-avoid-page': { 'break-after': 'avoid-page' },
+      '.break-after-page': { 'break-after': 'page' },
+      '.break-after-left': { 'break-after': 'left' },
+      '.break-after-right': { 'break-after': 'right' },
+      '.break-after-column': { 'break-after': 'column' },
+    })
+  },
+
+  gridAutoColumns: createUtilityPlugin('gridAutoColumns', [['auto-cols', ['gridAutoColumns']]]),
+
+  gridAutoFlow: ({ addUtilities }) => {
+    addUtilities({
+      '.grid-flow-row': { gridAutoFlow: 'row' },
+      '.grid-flow-col': { gridAutoFlow: 'column' },
+      '.grid-flow-dense': { gridAutoFlow: 'dense' },
+      '.grid-flow-row-dense': { gridAutoFlow: 'row dense' },
+      '.grid-flow-col-dense': { gridAutoFlow: 'column dense' },
+    })
+  },
+
+  gridAutoRows: createUtilityPlugin('gridAutoRows', [['auto-rows', ['gridAutoRows']]]),
+  gridTemplateColumns: createUtilityPlugin('gridTemplateColumns', [
+    ['grid-cols', ['gridTemplateColumns']],
+  ]),
+  gridTemplateRows: createUtilityPlugin('gridTemplateRows', [['grid-rows', ['gridTemplateRows']]]),
+
+  flexDirection: ({ addUtilities }) => {
+    addUtilities({
+      '.flex-row': { 'flex-direction': 'row' },
+      '.flex-row-reverse': { 'flex-direction': 'row-reverse' },
+      '.flex-col': { 'flex-direction': 'column' },
+      '.flex-col-reverse': { 'flex-direction': 'column-reverse' },
+    })
+  },
+
+  flexWrap: ({ addUtilities }) => {
+    addUtilities({
+      '.flex-wrap': { 'flex-wrap': 'wrap' },
+      '.flex-wrap-reverse': { 'flex-wrap': 'wrap-reverse' },
+      '.flex-nowrap': { 'flex-wrap': 'nowrap' },
+    })
+  },
+
+  placeContent: ({ addUtilities }) => {
+    addUtilities({
+      '.place-content-center': { 'place-content': 'center' },
+      '.place-content-start': { 'place-content': 'start' },
+      '.place-content-end': { 'place-content': 'end' },
+      '.place-content-between': { 'place-content': 'space-between' },
+      '.place-content-around': { 'place-content': 'space-around' },
+      '.place-content-evenly': { 'place-content': 'space-evenly' },
+      '.place-content-baseline': { 'place-content': 'baseline' },
+      '.place-content-stretch': { 'place-content': 'stretch' },
+    })
+  },
+
+  placeItems: ({ addUtilities }) => {
+    addUtilities({
+      '.place-items-start': { 'place-items': 'start' },
+      '.place-items-end': { 'place-items': 'end' },
+      '.place-items-center': { 'place-items': 'center' },
+      '.place-items-baseline': { 'place-items': 'baseline' },
+      '.place-items-stretch': { 'place-items': 'stretch' },
+    })
+  },
+
+  alignContent: ({ addUtilities }) => {
+    addUtilities({
+      '.content-normal': { 'align-content': 'normal' },
+      '.content-center': { 'align-content': 'center' },
+      '.content-start': { 'align-content': 'flex-start' },
+      '.content-end': { 'align-content': 'flex-end' },
+      '.content-between': { 'align-content': 'space-between' },
+      '.content-around': { 'align-content': 'space-around' },
+      '.content-evenly': { 'align-content': 'space-evenly' },
+      '.content-baseline': { 'align-content': 'baseline' },
+      '.content-stretch': { 'align-content': 'stretch' },
+    })
+  },
+
+  alignItems: ({ addUtilities }) => {
+    addUtilities({
+      '.items-start': { 'align-items': 'flex-start' },
+      '.items-end': { 'align-items': 'flex-end' },
+      '.items-center': { 'align-items': 'center' },
+      '.items-baseline': { 'align-items': 'baseline' },
+      '.items-stretch': { 'align-items': 'stretch' },
+    })
+  },
+
+  justifyContent: ({ addUtilities }) => {
+    addUtilities({
+      '.justify-normal': { 'justify-content': 'normal' },
+      '.justify-start': { 'justify-content': 'flex-start' },
+      '.justify-end': { 'justify-content': 'flex-end' },
+      '.justify-center': { 'justify-content': 'center' },
+      '.justify-between': { 'justify-content': 'space-between' },
+      '.justify-around': { 'justify-content': 'space-around' },
+      '.justify-evenly': { 'justify-content': 'space-evenly' },
+      '.justify-stretch': { 'justify-content': 'stretch' },
+    })
+  },
+
+  justifyItems: ({ addUtilities }) => {
+    addUtilities({
+      '.justify-items-start': { 'justify-items': 'start' },
+      '.justify-items-end': { 'justify-items': 'end' },
+      '.justify-items-center': { 'justify-items': 'center' },
+      '.justify-items-stretch': { 'justify-items': 'stretch' },
+    })
+  },
+
+  gap: createUtilityPlugin('gap', [
+    ['gap', ['gap']],
+    [
+      ['gap-x', ['columnGap']],
+      ['gap-y', ['rowGap']],
+    ],
+  ]),
+
+  space: ({ matchUtilities, addUtilities, theme }) => {
+    matchUtilities(
+      {
+        'space-x': (value) => {
+          value = value === '0' ? '0px' : value
+
+          return {
+            '& > :not([hidden]) ~ :not([hidden])': {
+              '--tw-space-x-reverse': '0',
+              'margin-right': `calc(${value} * var(--tw-space-x-reverse))`,
+              'margin-left': `calc(${value} * calc(1 - var(--tw-space-x-reverse)))`,
+            },
+          }
+        },
+        'space-y': (value) => {
+          value = value === '0' ? '0px' : value
+
+          return {
+            '& > :not([hidden]) ~ :not([hidden])': {
+              '--tw-space-y-reverse': '0',
+              'margin-top': `calc(${value} * calc(1 - var(--tw-space-y-reverse)))`,
+              'margin-bottom': `calc(${value} * var(--tw-space-y-reverse))`,
+            },
+          }
+        },
+      },
+      { values: theme('space'), supportsNegativeValues: true }
+    )
+
+    addUtilities({
+      '.space-y-reverse > :not([hidden]) ~ :not([hidden])': { '--tw-space-y-reverse': '1' },
+      '.space-x-reverse > :not([hidden]) ~ :not([hidden])': { '--tw-space-x-reverse': '1' },
+    })
+  },
+
+  divideWidth: ({ matchUtilities, addUtilities, theme }) => {
+    matchUtilities(
+      {
+        'divide-x': (value) => {
+          value = value === '0' ? '0px' : value
+
+          return {
+            '& > :not([hidden]) ~ :not([hidden])': {
+              '@defaults border-width': {},
+              '--tw-divide-x-reverse': '0',
+              'border-right-width': `calc(${value} * var(--tw-divide-x-reverse))`,
+              'border-left-width': `calc(${value} * calc(1 - var(--tw-divide-x-reverse)))`,
+            },
+          }
+        },
+        'divide-y': (value) => {
+          value = value === '0' ? '0px' : value
+
+          return {
+            '& > :not([hidden]) ~ :not([hidden])': {
+              '@defaults border-width': {},
+              '--tw-divide-y-reverse': '0',
+              'border-top-width': `calc(${value} * calc(1 - var(--tw-divide-y-reverse)))`,
+              'border-bottom-width': `calc(${value} * var(--tw-divide-y-reverse))`,
+            },
+          }
+        },
+      },
+      { values: theme('divideWidth'), type: ['line-width', 'length', 'any'] }
+    )
+
+    addUtilities({
+      '.divide-y-reverse > :not([hidden]) ~ :not([hidden])': {
+        '@defaults border-width': {},
+        '--tw-divide-y-reverse': '1',
+      },
+      '.divide-x-reverse > :not([hidden]) ~ :not([hidden])': {
+        '@defaults border-width': {},
+        '--tw-divide-x-reverse': '1',
+      },
+    })
+  },
+
+  divideStyle: ({ addUtilities }) => {
+    addUtilities({
+      '.divide-solid > :not([hidden]) ~ :not([hidden])': { 'border-style': 'solid' },
+      '.divide-dashed > :not([hidden]) ~ :not([hidden])': { 'border-style': 'dashed' },
+      '.divide-dotted > :not([hidden]) ~ :not([hidden])': { 'border-style': 'dotted' },
+      '.divide-double > :not([hidden]) ~ :not([hidden])': { 'border-style': 'double' },
+      '.divide-none > :not([hidden]) ~ :not([hidden])': { 'border-style': 'none' },
+    })
+  },
+
+  divideColor: ({ matchUtilities, theme, corePlugins }) => {
+    matchUtilities(
+      {
+        divide: (value) => {
+          if (!corePlugins('divideOpacity')) {
+            return {
+              ['& > :not([hidden]) ~ :not([hidden])']: {
+                'border-color': toColorValue(value),
+              },
+            }
+          }
+
+          return {
+            ['& > :not([hidden]) ~ :not([hidden])']: withAlphaVariable({
+              color: value,
+              property: 'border-color',
+              variable: '--tw-divide-opacity',
+            }),
+          }
+        },
+      },
+      {
+        values: (({ DEFAULT: _, ...colors }) => colors)(flattenColorPalette(theme('divideColor'))),
+        type: ['color', 'any'],
+      }
+    )
+  },
+
+  divideOpacity: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'divide-opacity': (value) => {
+          return { [`& > :not([hidden]) ~ :not([hidden])`]: { '--tw-divide-opacity': value } }
+        },
+      },
+      { values: theme('divideOpacity') }
+    )
+  },
+
+  placeSelf: ({ addUtilities }) => {
+    addUtilities({
+      '.place-self-auto': { 'place-self': 'auto' },
+      '.place-self-start': { 'place-self': 'start' },
+      '.place-self-end': { 'place-self': 'end' },
+      '.place-self-center': { 'place-self': 'center' },
+      '.place-self-stretch': { 'place-self': 'stretch' },
+    })
+  },
+
+  alignSelf: ({ addUtilities }) => {
+    addUtilities({
+      '.self-auto': { 'align-self': 'auto' },
+      '.self-start': { 'align-self': 'flex-start' },
+      '.self-end': { 'align-self': 'flex-end' },
+      '.self-center': { 'align-self': 'center' },
+      '.self-stretch': { 'align-self': 'stretch' },
+      '.self-baseline': { 'align-self': 'baseline' },
+    })
+  },
+
+  justifySelf: ({ addUtilities }) => {
+    addUtilities({
+      '.justify-self-auto': { 'justify-self': 'auto' },
+      '.justify-self-start': { 'justify-self': 'start' },
+      '.justify-self-end': { 'justify-self': 'end' },
+      '.justify-self-center': { 'justify-self': 'center' },
+      '.justify-self-stretch': { 'justify-self': 'stretch' },
+    })
+  },
+
+  overflow: ({ addUtilities }) => {
+    addUtilities({
+      '.overflow-auto': { overflow: 'auto' },
+      '.overflow-hidden': { overflow: 'hidden' },
+      '.overflow-clip': { overflow: 'clip' },
+      '.overflow-visible': { overflow: 'visible' },
+      '.overflow-scroll': { overflow: 'scroll' },
+      '.overflow-x-auto': { 'overflow-x': 'auto' },
+      '.overflow-y-auto': { 'overflow-y': 'auto' },
+      '.overflow-x-hidden': { 'overflow-x': 'hidden' },
+      '.overflow-y-hidden': { 'overflow-y': 'hidden' },
+      '.overflow-x-clip': { 'overflow-x': 'clip' },
+      '.overflow-y-clip': { 'overflow-y': 'clip' },
+      '.overflow-x-visible': { 'overflow-x': 'visible' },
+      '.overflow-y-visible': { 'overflow-y': 'visible' },
+      '.overflow-x-scroll': { 'overflow-x': 'scroll' },
+      '.overflow-y-scroll': { 'overflow-y': 'scroll' },
+    })
+  },
+
+  overscrollBehavior: ({ addUtilities }) => {
+    addUtilities({
+      '.overscroll-auto': { 'overscroll-behavior': 'auto' },
+      '.overscroll-contain': { 'overscroll-behavior': 'contain' },
+      '.overscroll-none': { 'overscroll-behavior': 'none' },
+      '.overscroll-y-auto': { 'overscroll-behavior-y': 'auto' },
+      '.overscroll-y-contain': { 'overscroll-behavior-y': 'contain' },
+      '.overscroll-y-none': { 'overscroll-behavior-y': 'none' },
+      '.overscroll-x-auto': { 'overscroll-behavior-x': 'auto' },
+      '.overscroll-x-contain': { 'overscroll-behavior-x': 'contain' },
+      '.overscroll-x-none': { 'overscroll-behavior-x': 'none' },
+    })
+  },
+
+  scrollBehavior: ({ addUtilities }) => {
+    addUtilities({
+      '.scroll-auto': { 'scroll-behavior': 'auto' },
+      '.scroll-smooth': { 'scroll-behavior': 'smooth' },
+    })
+  },
+
+  textOverflow: ({ addUtilities }) => {
+    addUtilities({
+      '.truncate': { overflow: 'hidden', 'text-overflow': 'ellipsis', 'white-space': 'nowrap' },
+      '.overflow-ellipsis': { 'text-overflow': 'ellipsis' }, // Deprecated
+      '.text-ellipsis': { 'text-overflow': 'ellipsis' },
+      '.text-clip': { 'text-overflow': 'clip' },
+    })
+  },
+
+  hyphens: ({ addUtilities }) => {
+    addUtilities({
+      '.hyphens-none': { hyphens: 'none' },
+      '.hyphens-manual': { hyphens: 'manual' },
+      '.hyphens-auto': { hyphens: 'auto' },
+    })
+  },
+
+  whitespace: ({ addUtilities }) => {
+    addUtilities({
+      '.whitespace-normal': { 'white-space': 'normal' },
+      '.whitespace-nowrap': { 'white-space': 'nowrap' },
+      '.whitespace-pre': { 'white-space': 'pre' },
+      '.whitespace-pre-line': { 'white-space': 'pre-line' },
+      '.whitespace-pre-wrap': { 'white-space': 'pre-wrap' },
+      '.whitespace-break-spaces': { 'white-space': 'break-spaces' },
+    })
+  },
+
+  textWrap: ({ addUtilities }) => {
+    addUtilities({
+      '.text-wrap': { 'text-wrap': 'wrap' },
+      '.text-nowrap': { 'text-wrap': 'nowrap' },
+      '.text-balance': { 'text-wrap': 'balance' },
+      '.text-pretty': { 'text-wrap': 'pretty' },
+    })
+  },
+
+  wordBreak: ({ addUtilities }) => {
+    addUtilities({
+      '.break-normal': { 'overflow-wrap': 'normal', 'word-break': 'normal' },
+      '.break-words': { 'overflow-wrap': 'break-word' },
+      '.break-all': { 'word-break': 'break-all' },
+      '.break-keep': { 'word-break': 'keep-all' },
+    })
+  },
+
+  borderRadius: createUtilityPlugin('borderRadius', [
+    ['rounded', ['border-radius']],
+    [
+      ['rounded-s', ['border-start-start-radius', 'border-end-start-radius']],
+      ['rounded-e', ['border-start-end-radius', 'border-end-end-radius']],
+      ['rounded-t', ['border-top-left-radius', 'border-top-right-radius']],
+      ['rounded-r', ['border-top-right-radius', 'border-bottom-right-radius']],
+      ['rounded-b', ['border-bottom-right-radius', 'border-bottom-left-radius']],
+      ['rounded-l', ['border-top-left-radius', 'border-bottom-left-radius']],
+    ],
+    [
+      ['rounded-ss', ['border-start-start-radius']],
+      ['rounded-se', ['border-start-end-radius']],
+      ['rounded-ee', ['border-end-end-radius']],
+      ['rounded-es', ['border-end-start-radius']],
+      ['rounded-tl', ['border-top-left-radius']],
+      ['rounded-tr', ['border-top-right-radius']],
+      ['rounded-br', ['border-bottom-right-radius']],
+      ['rounded-bl', ['border-bottom-left-radius']],
+    ],
+  ]),
+
+  borderWidth: createUtilityPlugin(
+    'borderWidth',
+    [
+      ['border', [['@defaults border-width', {}], 'border-width']],
+      [
+        ['border-x', [['@defaults border-width', {}], 'border-left-width', 'border-right-width']],
+        ['border-y', [['@defaults border-width', {}], 'border-top-width', 'border-bottom-width']],
+      ],
+      [
+        ['border-s', [['@defaults border-width', {}], 'border-inline-start-width']],
+        ['border-e', [['@defaults border-width', {}], 'border-inline-end-width']],
+        ['border-t', [['@defaults border-width', {}], 'border-top-width']],
+        ['border-r', [['@defaults border-width', {}], 'border-right-width']],
+        ['border-b', [['@defaults border-width', {}], 'border-bottom-width']],
+        ['border-l', [['@defaults border-width', {}], 'border-left-width']],
+      ],
+    ],
+    { type: ['line-width', 'length'] }
+  ),
+
+  borderStyle: ({ addUtilities }) => {
+    addUtilities({
+      '.border-solid': { 'border-style': 'solid' },
+      '.border-dashed': { 'border-style': 'dashed' },
+      '.border-dotted': { 'border-style': 'dotted' },
+      '.border-double': { 'border-style': 'double' },
+      '.border-hidden': { 'border-style': 'hidden' },
+      '.border-none': { 'border-style': 'none' },
+    })
+  },
+
+  borderColor: ({ matchUtilities, theme, corePlugins }) => {
+    matchUtilities(
+      {
+        border: (value) => {
+          if (!corePlugins('borderOpacity')) {
+            return {
+              'border-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: 'border-color',
+            variable: '--tw-border-opacity',
+          })
+        },
+      },
+      {
+        values: (({ DEFAULT: _, ...colors }) => colors)(flattenColorPalette(theme('borderColor'))),
+        type: ['color', 'any'],
+      }
+    )
+
+    matchUtilities(
+      {
+        'border-x': (value) => {
+          if (!corePlugins('borderOpacity')) {
+            return {
+              'border-left-color': toColorValue(value),
+              'border-right-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: ['border-left-color', 'border-right-color'],
+            variable: '--tw-border-opacity',
+          })
+        },
+        'border-y': (value) => {
+          if (!corePlugins('borderOpacity')) {
+            return {
+              'border-top-color': toColorValue(value),
+              'border-bottom-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: ['border-top-color', 'border-bottom-color'],
+            variable: '--tw-border-opacity',
+          })
+        },
+      },
+      {
+        values: (({ DEFAULT: _, ...colors }) => colors)(flattenColorPalette(theme('borderColor'))),
+        type: ['color', 'any'],
+      }
+    )
+
+    matchUtilities(
+      {
+        'border-s': (value) => {
+          if (!corePlugins('borderOpacity')) {
+            return {
+              'border-inline-start-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: 'border-inline-start-color',
+            variable: '--tw-border-opacity',
+          })
+        },
+        'border-e': (value) => {
+          if (!corePlugins('borderOpacity')) {
+            return {
+              'border-inline-end-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: 'border-inline-end-color',
+            variable: '--tw-border-opacity',
+          })
+        },
+        'border-t': (value) => {
+          if (!corePlugins('borderOpacity')) {
+            return {
+              'border-top-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: 'border-top-color',
+            variable: '--tw-border-opacity',
+          })
+        },
+        'border-r': (value) => {
+          if (!corePlugins('borderOpacity')) {
+            return {
+              'border-right-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: 'border-right-color',
+            variable: '--tw-border-opacity',
+          })
+        },
+        'border-b': (value) => {
+          if (!corePlugins('borderOpacity')) {
+            return {
+              'border-bottom-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: 'border-bottom-color',
+            variable: '--tw-border-opacity',
+          })
+        },
+        'border-l': (value) => {
+          if (!corePlugins('borderOpacity')) {
+            return {
+              'border-left-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: 'border-left-color',
+            variable: '--tw-border-opacity',
+          })
+        },
+      },
+      {
+        values: (({ DEFAULT: _, ...colors }) => colors)(flattenColorPalette(theme('borderColor'))),
+        type: ['color', 'any'],
+      }
+    )
+  },
+
+  borderOpacity: createUtilityPlugin('borderOpacity', [
+    ['border-opacity', ['--tw-border-opacity']],
+  ]),
+
+  backgroundColor: ({ matchUtilities, theme, corePlugins }) => {
+    matchUtilities(
+      {
+        bg: (value) => {
+          if (!corePlugins('backgroundOpacity')) {
+            return {
+              'background-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: 'background-color',
+            variable: '--tw-bg-opacity',
+          })
+        },
+      },
+      { values: flattenColorPalette(theme('backgroundColor')), type: ['color', 'any'] }
+    )
+  },
+
+  backgroundOpacity: createUtilityPlugin('backgroundOpacity', [
+    ['bg-opacity', ['--tw-bg-opacity']],
+  ]),
+  backgroundImage: createUtilityPlugin('backgroundImage', [['bg', ['background-image']]], {
+    type: ['lookup', 'image', 'url'],
+  }),
+  gradientColorStops: (() => {
+    function transparentTo(value) {
+      return withAlphaValue(value, 0, 'rgb(255 255 255 / 0)')
+    }
+
+    return function ({ matchUtilities, theme, addDefaults }) {
+      addDefaults('gradient-color-stops', {
+        '--tw-gradient-from-position': ' ',
+        '--tw-gradient-via-position': ' ',
+        '--tw-gradient-to-position': ' ',
+      })
+
+      let options = {
+        values: flattenColorPalette(theme('gradientColorStops')),
+        type: ['color', 'any'],
+      }
+
+      let positionOptions = {
+        values: theme('gradientColorStopPositions'),
+        type: ['length', 'percentage'],
+      }
+
+      matchUtilities(
+        {
+          from: (value) => {
+            let transparentToValue = transparentTo(value)
+
+            return {
+              '@defaults gradient-color-stops': {},
+              '--tw-gradient-from': `${toColorValue(value)} var(--tw-gradient-from-position)`,
+              '--tw-gradient-to': `${transparentToValue} var(--tw-gradient-to-position)`,
+              '--tw-gradient-stops': `var(--tw-gradient-from), var(--tw-gradient-to)`,
+            }
+          },
+        },
+        options
+      )
+
+      matchUtilities(
+        {
+          from: (value) => {
+            return {
+              '--tw-gradient-from-position': value,
+            }
+          },
+        },
+        positionOptions
+      )
+
+      matchUtilities(
+        {
+          via: (value) => {
+            let transparentToValue = transparentTo(value)
+
+            return {
+              '@defaults gradient-color-stops': {},
+              '--tw-gradient-to': `${transparentToValue}  var(--tw-gradient-to-position)`,
+              '--tw-gradient-stops': `var(--tw-gradient-from), ${toColorValue(
+                value
+              )} var(--tw-gradient-via-position), var(--tw-gradient-to)`,
+            }
+          },
+        },
+        options
+      )
+
+      matchUtilities(
+        {
+          via: (value) => {
+            return {
+              '--tw-gradient-via-position': value,
+            }
+          },
+        },
+        positionOptions
+      )
+
+      matchUtilities(
+        {
+          to: (value) => ({
+            '@defaults gradient-color-stops': {},
+            '--tw-gradient-to': `${toColorValue(value)} var(--tw-gradient-to-position)`,
+          }),
+        },
+        options
+      )
+
+      matchUtilities(
+        {
+          to: (value) => {
+            return {
+              '--tw-gradient-to-position': value,
+            }
+          },
+        },
+        positionOptions
+      )
+    }
+  })(),
+
+  boxDecorationBreak: ({ addUtilities }) => {
+    addUtilities({
+      '.decoration-slice': { 'box-decoration-break': 'slice' }, // Deprecated
+      '.decoration-clone': { 'box-decoration-break': 'clone' }, // Deprecated
+      '.box-decoration-slice': { 'box-decoration-break': 'slice' },
+      '.box-decoration-clone': { 'box-decoration-break': 'clone' },
+    })
+  },
+
+  backgroundSize: createUtilityPlugin('backgroundSize', [['bg', ['background-size']]], {
+    type: ['lookup', 'length', 'percentage', 'size'],
+  }),
+
+  backgroundAttachment: ({ addUtilities }) => {
+    addUtilities({
+      '.bg-fixed': { 'background-attachment': 'fixed' },
+      '.bg-local': { 'background-attachment': 'local' },
+      '.bg-scroll': { 'background-attachment': 'scroll' },
+    })
+  },
+
+  backgroundClip: ({ addUtilities }) => {
+    addUtilities({
+      '.bg-clip-border': { 'background-clip': 'border-box' },
+      '.bg-clip-padding': { 'background-clip': 'padding-box' },
+      '.bg-clip-content': { 'background-clip': 'content-box' },
+      '.bg-clip-text': { 'background-clip': 'text' },
+    })
+  },
+
+  backgroundPosition: createUtilityPlugin('backgroundPosition', [['bg', ['background-position']]], {
+    type: ['lookup', ['position', { preferOnConflict: true }]],
+  }),
+
+  backgroundRepeat: ({ addUtilities }) => {
+    addUtilities({
+      '.bg-repeat': { 'background-repeat': 'repeat' },
+      '.bg-no-repeat': { 'background-repeat': 'no-repeat' },
+      '.bg-repeat-x': { 'background-repeat': 'repeat-x' },
+      '.bg-repeat-y': { 'background-repeat': 'repeat-y' },
+      '.bg-repeat-round': { 'background-repeat': 'round' },
+      '.bg-repeat-space': { 'background-repeat': 'space' },
+    })
+  },
+
+  backgroundOrigin: ({ addUtilities }) => {
+    addUtilities({
+      '.bg-origin-border': { 'background-origin': 'border-box' },
+      '.bg-origin-padding': { 'background-origin': 'padding-box' },
+      '.bg-origin-content': { 'background-origin': 'content-box' },
+    })
+  },
+
+  fill: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        fill: (value) => {
+          return { fill: toColorValue(value) }
+        },
+      },
+      { values: flattenColorPalette(theme('fill')), type: ['color', 'any'] }
+    )
+  },
+
+  stroke: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        stroke: (value) => {
+          return { stroke: toColorValue(value) }
+        },
+      },
+      { values: flattenColorPalette(theme('stroke')), type: ['color', 'url', 'any'] }
+    )
+  },
+
+  strokeWidth: createUtilityPlugin('strokeWidth', [['stroke', ['stroke-width']]], {
+    type: ['length', 'number', 'percentage'],
+  }),
+
+  objectFit: ({ addUtilities }) => {
+    addUtilities({
+      '.object-contain': { 'object-fit': 'contain' },
+      '.object-cover': { 'object-fit': 'cover' },
+      '.object-fill': { 'object-fit': 'fill' },
+      '.object-none': { 'object-fit': 'none' },
+      '.object-scale-down': { 'object-fit': 'scale-down' },
+    })
+  },
+  objectPosition: createUtilityPlugin('objectPosition', [['object', ['object-position']]]),
+
+  padding: createUtilityPlugin('padding', [
+    ['p', ['padding']],
+    [
+      ['px', ['padding-left', 'padding-right']],
+      ['py', ['padding-top', 'padding-bottom']],
+    ],
+    [
+      ['ps', ['padding-inline-start']],
+      ['pe', ['padding-inline-end']],
+      ['pt', ['padding-top']],
+      ['pr', ['padding-right']],
+      ['pb', ['padding-bottom']],
+      ['pl', ['padding-left']],
+    ],
+  ]),
+
+  textAlign: ({ addUtilities }) => {
+    addUtilities({
+      '.text-left': { 'text-align': 'left' },
+      '.text-center': { 'text-align': 'center' },
+      '.text-right': { 'text-align': 'right' },
+      '.text-justify': { 'text-align': 'justify' },
+      '.text-start': { 'text-align': 'start' },
+      '.text-end': { 'text-align': 'end' },
+    })
+  },
+
+  textIndent: createUtilityPlugin('textIndent', [['indent', ['text-indent']]], {
+    supportsNegativeValues: true,
+  }),
+
+  verticalAlign: ({ addUtilities, matchUtilities }) => {
+    addUtilities({
+      '.align-baseline': { 'vertical-align': 'baseline' },
+      '.align-top': { 'vertical-align': 'top' },
+      '.align-middle': { 'vertical-align': 'middle' },
+      '.align-bottom': { 'vertical-align': 'bottom' },
+      '.align-text-top': { 'vertical-align': 'text-top' },
+      '.align-text-bottom': { 'vertical-align': 'text-bottom' },
+      '.align-sub': { 'vertical-align': 'sub' },
+      '.align-super': { 'vertical-align': 'super' },
+    })
+
+    matchUtilities({ align: (value) => ({ 'vertical-align': value }) })
+  },
+
+  fontFamily: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        font: (value) => {
+          let [families, options = {}] =
+            Array.isArray(value) && isPlainObject(value[1]) ? value : [value]
+          let { fontFeatureSettings, fontVariationSettings } = options
+
+          return {
+            'font-family': Array.isArray(families) ? families.join(', ') : families,
+            ...(fontFeatureSettings === undefined
+              ? {}
+              : { 'font-feature-settings': fontFeatureSettings }),
+            ...(fontVariationSettings === undefined
+              ? {}
+              : { 'font-variation-settings': fontVariationSettings }),
+          }
+        },
+      },
+      {
+        values: theme('fontFamily'),
+        type: ['lookup', 'generic-name', 'family-name'],
+      }
+    )
+  },
+
+  fontSize: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        text: (value, { modifier }) => {
+          let [fontSize, options] = Array.isArray(value) ? value : [value]
+
+          if (modifier) {
+            return {
+              'font-size': fontSize,
+              'line-height': modifier,
+            }
+          }
+
+          let { lineHeight, letterSpacing, fontWeight } = isPlainObject(options)
+            ? options
+            : { lineHeight: options }
+
+          return {
+            'font-size': fontSize,
+            ...(lineHeight === undefined ? {} : { 'line-height': lineHeight }),
+            ...(letterSpacing === undefined ? {} : { 'letter-spacing': letterSpacing }),
+            ...(fontWeight === undefined ? {} : { 'font-weight': fontWeight }),
+          }
+        },
+      },
+      {
+        values: theme('fontSize'),
+        modifiers: theme('lineHeight'),
+        type: ['absolute-size', 'relative-size', 'length', 'percentage'],
+      }
+    )
+  },
+
+  fontWeight: createUtilityPlugin('fontWeight', [['font', ['fontWeight']]], {
+    type: ['lookup', 'number', 'any'],
+  }),
+
+  textTransform: ({ addUtilities }) => {
+    addUtilities({
+      '.uppercase': { 'text-transform': 'uppercase' },
+      '.lowercase': { 'text-transform': 'lowercase' },
+      '.capitalize': { 'text-transform': 'capitalize' },
+      '.normal-case': { 'text-transform': 'none' },
+    })
+  },
+
+  fontStyle: ({ addUtilities }) => {
+    addUtilities({
+      '.italic': { 'font-style': 'italic' },
+      '.not-italic': { 'font-style': 'normal' },
+    })
+  },
+
+  fontVariantNumeric: ({ addDefaults, addUtilities }) => {
+    let cssFontVariantNumericValue =
+      'var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)'
+
+    addDefaults('font-variant-numeric', {
+      '--tw-ordinal': ' ',
+      '--tw-slashed-zero': ' ',
+      '--tw-numeric-figure': ' ',
+      '--tw-numeric-spacing': ' ',
+      '--tw-numeric-fraction': ' ',
+    })
+
+    addUtilities({
+      '.normal-nums': { 'font-variant-numeric': 'normal' },
+      '.ordinal': {
+        '@defaults font-variant-numeric': {},
+        '--tw-ordinal': 'ordinal',
+        'font-variant-numeric': cssFontVariantNumericValue,
+      },
+      '.slashed-zero': {
+        '@defaults font-variant-numeric': {},
+        '--tw-slashed-zero': 'slashed-zero',
+        'font-variant-numeric': cssFontVariantNumericValue,
+      },
+      '.lining-nums': {
+        '@defaults font-variant-numeric': {},
+        '--tw-numeric-figure': 'lining-nums',
+        'font-variant-numeric': cssFontVariantNumericValue,
+      },
+      '.oldstyle-nums': {
+        '@defaults font-variant-numeric': {},
+        '--tw-numeric-figure': 'oldstyle-nums',
+        'font-variant-numeric': cssFontVariantNumericValue,
+      },
+      '.proportional-nums': {
+        '@defaults font-variant-numeric': {},
+        '--tw-numeric-spacing': 'proportional-nums',
+        'font-variant-numeric': cssFontVariantNumericValue,
+      },
+      '.tabular-nums': {
+        '@defaults font-variant-numeric': {},
+        '--tw-numeric-spacing': 'tabular-nums',
+        'font-variant-numeric': cssFontVariantNumericValue,
+      },
+      '.diagonal-fractions': {
+        '@defaults font-variant-numeric': {},
+        '--tw-numeric-fraction': 'diagonal-fractions',
+        'font-variant-numeric': cssFontVariantNumericValue,
+      },
+      '.stacked-fractions': {
+        '@defaults font-variant-numeric': {},
+        '--tw-numeric-fraction': 'stacked-fractions',
+        'font-variant-numeric': cssFontVariantNumericValue,
+      },
+    })
+  },
+
+  lineHeight: createUtilityPlugin('lineHeight', [['leading', ['lineHeight']]]),
+  letterSpacing: createUtilityPlugin('letterSpacing', [['tracking', ['letterSpacing']]], {
+    supportsNegativeValues: true,
+  }),
+
+  textColor: ({ matchUtilities, theme, corePlugins }) => {
+    matchUtilities(
+      {
+        text: (value) => {
+          if (!corePlugins('textOpacity')) {
+            return { color: toColorValue(value) }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: 'color',
+            variable: '--tw-text-opacity',
+          })
+        },
+      },
+      { values: flattenColorPalette(theme('textColor')), type: ['color', 'any'] }
+    )
+  },
+
+  textOpacity: createUtilityPlugin('textOpacity', [['text-opacity', ['--tw-text-opacity']]]),
+
+  textDecoration: ({ addUtilities }) => {
+    addUtilities({
+      '.underline': { 'text-decoration-line': 'underline' },
+      '.overline': { 'text-decoration-line': 'overline' },
+      '.line-through': { 'text-decoration-line': 'line-through' },
+      '.no-underline': { 'text-decoration-line': 'none' },
+    })
+  },
+
+  textDecorationColor: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        decoration: (value) => {
+          return { 'text-decoration-color': toColorValue(value) }
+        },
+      },
+      { values: flattenColorPalette(theme('textDecorationColor')), type: ['color', 'any'] }
+    )
+  },
+
+  textDecorationStyle: ({ addUtilities }) => {
+    addUtilities({
+      '.decoration-solid': { 'text-decoration-style': 'solid' },
+      '.decoration-double': { 'text-decoration-style': 'double' },
+      '.decoration-dotted': { 'text-decoration-style': 'dotted' },
+      '.decoration-dashed': { 'text-decoration-style': 'dashed' },
+      '.decoration-wavy': { 'text-decoration-style': 'wavy' },
+    })
+  },
+
+  textDecorationThickness: createUtilityPlugin(
+    'textDecorationThickness',
+    [['decoration', ['text-decoration-thickness']]],
+    { type: ['length', 'percentage'] }
+  ),
+
+  textUnderlineOffset: createUtilityPlugin(
+    'textUnderlineOffset',
+    [['underline-offset', ['text-underline-offset']]],
+    { type: ['length', 'percentage', 'any'] }
+  ),
+
+  fontSmoothing: ({ addUtilities }) => {
+    addUtilities({
+      '.antialiased': {
+        '-webkit-font-smoothing': 'antialiased',
+        '-moz-osx-font-smoothing': 'grayscale',
+      },
+      '.subpixel-antialiased': {
+        '-webkit-font-smoothing': 'auto',
+        '-moz-osx-font-smoothing': 'auto',
+      },
+    })
+  },
+
+  placeholderColor: ({ matchUtilities, theme, corePlugins }) => {
+    matchUtilities(
+      {
+        placeholder: (value) => {
+          if (!corePlugins('placeholderOpacity')) {
+            return {
+              '&::placeholder': {
+                color: toColorValue(value),
+              },
+            }
+          }
+
+          return {
+            '&::placeholder': withAlphaVariable({
+              color: value,
+              property: 'color',
+              variable: '--tw-placeholder-opacity',
+            }),
+          }
+        },
+      },
+      { values: flattenColorPalette(theme('placeholderColor')), type: ['color', 'any'] }
+    )
+  },
+
+  placeholderOpacity: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'placeholder-opacity': (value) => {
+          return { ['&::placeholder']: { '--tw-placeholder-opacity': value } }
+        },
+      },
+      { values: theme('placeholderOpacity') }
+    )
+  },
+
+  caretColor: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        caret: (value) => {
+          return { 'caret-color': toColorValue(value) }
+        },
+      },
+      { values: flattenColorPalette(theme('caretColor')), type: ['color', 'any'] }
+    )
+  },
+
+  accentColor: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        accent: (value) => {
+          return { 'accent-color': toColorValue(value) }
+        },
+      },
+      { values: flattenColorPalette(theme('accentColor')), type: ['color', 'any'] }
+    )
+  },
+
+  opacity: createUtilityPlugin('opacity', [['opacity', ['opacity']]]),
+
+  backgroundBlendMode: ({ addUtilities }) => {
+    addUtilities({
+      '.bg-blend-normal': { 'background-blend-mode': 'normal' },
+      '.bg-blend-multiply': { 'background-blend-mode': 'multiply' },
+      '.bg-blend-screen': { 'background-blend-mode': 'screen' },
+      '.bg-blend-overlay': { 'background-blend-mode': 'overlay' },
+      '.bg-blend-darken': { 'background-blend-mode': 'darken' },
+      '.bg-blend-lighten': { 'background-blend-mode': 'lighten' },
+      '.bg-blend-color-dodge': { 'background-blend-mode': 'color-dodge' },
+      '.bg-blend-color-burn': { 'background-blend-mode': 'color-burn' },
+      '.bg-blend-hard-light': { 'background-blend-mode': 'hard-light' },
+      '.bg-blend-soft-light': { 'background-blend-mode': 'soft-light' },
+      '.bg-blend-difference': { 'background-blend-mode': 'difference' },
+      '.bg-blend-exclusion': { 'background-blend-mode': 'exclusion' },
+      '.bg-blend-hue': { 'background-blend-mode': 'hue' },
+      '.bg-blend-saturation': { 'background-blend-mode': 'saturation' },
+      '.bg-blend-color': { 'background-blend-mode': 'color' },
+      '.bg-blend-luminosity': { 'background-blend-mode': 'luminosity' },
+    })
+  },
+
+  mixBlendMode: ({ addUtilities }) => {
+    addUtilities({
+      '.mix-blend-normal': { 'mix-blend-mode': 'normal' },
+      '.mix-blend-multiply': { 'mix-blend-mode': 'multiply' },
+      '.mix-blend-screen': { 'mix-blend-mode': 'screen' },
+      '.mix-blend-overlay': { 'mix-blend-mode': 'overlay' },
+      '.mix-blend-darken': { 'mix-blend-mode': 'darken' },
+      '.mix-blend-lighten': { 'mix-blend-mode': 'lighten' },
+      '.mix-blend-color-dodge': { 'mix-blend-mode': 'color-dodge' },
+      '.mix-blend-color-burn': { 'mix-blend-mode': 'color-burn' },
+      '.mix-blend-hard-light': { 'mix-blend-mode': 'hard-light' },
+      '.mix-blend-soft-light': { 'mix-blend-mode': 'soft-light' },
+      '.mix-blend-difference': { 'mix-blend-mode': 'difference' },
+      '.mix-blend-exclusion': { 'mix-blend-mode': 'exclusion' },
+      '.mix-blend-hue': { 'mix-blend-mode': 'hue' },
+      '.mix-blend-saturation': { 'mix-blend-mode': 'saturation' },
+      '.mix-blend-color': { 'mix-blend-mode': 'color' },
+      '.mix-blend-luminosity': { 'mix-blend-mode': 'luminosity' },
+      '.mix-blend-plus-darker': { 'mix-blend-mode': 'plus-darker' },
+      '.mix-blend-plus-lighter': { 'mix-blend-mode': 'plus-lighter' },
+    })
+  },
+
+  boxShadow: (() => {
+    let transformValue = transformThemeValue('boxShadow')
+    let defaultBoxShadow = [
+      `var(--tw-ring-offset-shadow, 0 0 #0000)`,
+      `var(--tw-ring-shadow, 0 0 #0000)`,
+      `var(--tw-shadow)`,
+    ].join(', ')
+
+    return function ({ matchUtilities, addDefaults, theme }) {
+      addDefaults('box-shadow', {
+        '--tw-ring-offset-shadow': '0 0 #0000',
+        '--tw-ring-shadow': '0 0 #0000',
+        '--tw-shadow': '0 0 #0000',
+        '--tw-shadow-colored': '0 0 #0000',
+      })
+
+      matchUtilities(
+        {
+          shadow: (value) => {
+            value = transformValue(value)
+
+            let ast = parseBoxShadowValue(value)
+            for (let shadow of ast) {
+              // Don't override color if the whole shadow is a variable
+              if (!shadow.valid) {
+                continue
+              }
+
+              shadow.color = 'var(--tw-shadow-color)'
+            }
+
+            return {
+              '@defaults box-shadow': {},
+              '--tw-shadow': value === 'none' ? '0 0 #0000' : value,
+              '--tw-shadow-colored': value === 'none' ? '0 0 #0000' : formatBoxShadowValue(ast),
+              'box-shadow': defaultBoxShadow,
+            }
+          },
+        },
+        { values: theme('boxShadow'), type: ['shadow'] }
+      )
+    }
+  })(),
+
+  boxShadowColor: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        shadow: (value) => {
+          return {
+            '--tw-shadow-color': toColorValue(value),
+            '--tw-shadow': 'var(--tw-shadow-colored)',
+          }
+        },
+      },
+      { values: flattenColorPalette(theme('boxShadowColor')), type: ['color', 'any'] }
+    )
+  },
+
+  outlineStyle: ({ addUtilities }) => {
+    addUtilities({
+      '.outline-none': {
+        outline: '2px solid transparent',
+        'outline-offset': '2px',
+      },
+      '.outline': { 'outline-style': 'solid' },
+      '.outline-dashed': { 'outline-style': 'dashed' },
+      '.outline-dotted': { 'outline-style': 'dotted' },
+      '.outline-double': { 'outline-style': 'double' },
+    })
+  },
+
+  outlineWidth: createUtilityPlugin('outlineWidth', [['outline', ['outline-width']]], {
+    type: ['length', 'number', 'percentage'],
+  }),
+
+  outlineOffset: createUtilityPlugin('outlineOffset', [['outline-offset', ['outline-offset']]], {
+    type: ['length', 'number', 'percentage', 'any'],
+    supportsNegativeValues: true,
+  }),
+
+  outlineColor: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        outline: (value) => {
+          return { 'outline-color': toColorValue(value) }
+        },
+      },
+      { values: flattenColorPalette(theme('outlineColor')), type: ['color', 'any'] }
+    )
+  },
+
+  ringWidth: ({ matchUtilities, addDefaults, addUtilities, theme, config }) => {
+    let ringColorDefault = (() => {
+      if (flagEnabled(config(), 'respectDefaultRingColorOpacity')) {
+        return theme('ringColor.DEFAULT')
+      }
+
+      let ringOpacityDefault = theme('ringOpacity.DEFAULT', '0.5')
+
+      if (!theme('ringColor')?.DEFAULT) {
+        return `rgb(147 197 253 / ${ringOpacityDefault})`
+      }
+
+      return withAlphaValue(
+        theme('ringColor')?.DEFAULT,
+        ringOpacityDefault,
+        `rgb(147 197 253 / ${ringOpacityDefault})`
+      )
+    })()
+
+    addDefaults('ring-width', {
+      '--tw-ring-inset': ' ',
+      '--tw-ring-offset-width': theme('ringOffsetWidth.DEFAULT', '0px'),
+      '--tw-ring-offset-color': theme('ringOffsetColor.DEFAULT', '#fff'),
+      '--tw-ring-color': ringColorDefault,
+      '--tw-ring-offset-shadow': '0 0 #0000',
+      '--tw-ring-shadow': '0 0 #0000',
+      '--tw-shadow': '0 0 #0000',
+      '--tw-shadow-colored': '0 0 #0000',
+    })
+
+    matchUtilities(
+      {
+        ring: (value) => {
+          return {
+            '@defaults ring-width': {},
+            '--tw-ring-offset-shadow': `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`,
+            '--tw-ring-shadow': `var(--tw-ring-inset) 0 0 0 calc(${value} + var(--tw-ring-offset-width)) var(--tw-ring-color)`,
+            'box-shadow': [
+              `var(--tw-ring-offset-shadow)`,
+              `var(--tw-ring-shadow)`,
+              `var(--tw-shadow, 0 0 #0000)`,
+            ].join(', '),
+          }
+        },
+      },
+      { values: theme('ringWidth'), type: 'length' }
+    )
+
+    addUtilities({
+      '.ring-inset': { '@defaults ring-width': {}, '--tw-ring-inset': 'inset' },
+    })
+  },
+
+  ringColor: ({ matchUtilities, theme, corePlugins }) => {
+    matchUtilities(
+      {
+        ring: (value) => {
+          if (!corePlugins('ringOpacity')) {
+            return {
+              '--tw-ring-color': toColorValue(value),
+            }
+          }
+
+          return withAlphaVariable({
+            color: value,
+            property: '--tw-ring-color',
+            variable: '--tw-ring-opacity',
+          })
+        },
+      },
+      {
+        values: Object.fromEntries(
+          Object.entries(flattenColorPalette(theme('ringColor'))).filter(
+            ([modifier]) => modifier !== 'DEFAULT'
+          )
+        ),
+        type: ['color', 'any'],
+      }
+    )
+  },
+
+  ringOpacity: (helpers) => {
+    let { config } = helpers
+
+    return createUtilityPlugin('ringOpacity', [['ring-opacity', ['--tw-ring-opacity']]], {
+      filterDefault: !flagEnabled(config(), 'respectDefaultRingColorOpacity'),
+    })(helpers)
+  },
+  ringOffsetWidth: createUtilityPlugin(
+    'ringOffsetWidth',
+    [['ring-offset', ['--tw-ring-offset-width']]],
+    { type: 'length' }
+  ),
+
+  ringOffsetColor: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'ring-offset': (value) => {
+          return {
+            '--tw-ring-offset-color': toColorValue(value),
+          }
+        },
+      },
+      { values: flattenColorPalette(theme('ringOffsetColor')), type: ['color', 'any'] }
+    )
+  },
+
+  blur: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        blur: (value) => {
+          return {
+            '--tw-blur': value.trim() === '' ? ' ' : `blur(${value})`,
+            '@defaults filter': {},
+            filter: cssFilterValue,
+          }
+        },
+      },
+      { values: theme('blur') }
+    )
+  },
+
+  brightness: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        brightness: (value) => {
+          return {
+            '--tw-brightness': `brightness(${value})`,
+            '@defaults filter': {},
+            filter: cssFilterValue,
+          }
+        },
+      },
+      { values: theme('brightness') }
+    )
+  },
+
+  contrast: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        contrast: (value) => {
+          return {
+            '--tw-contrast': `contrast(${value})`,
+            '@defaults filter': {},
+            filter: cssFilterValue,
+          }
+        },
+      },
+      { values: theme('contrast') }
+    )
+  },
+
+  dropShadow: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'drop-shadow': (value) => {
+          return {
+            '--tw-drop-shadow': Array.isArray(value)
+              ? value.map((v) => `drop-shadow(${v})`).join(' ')
+              : `drop-shadow(${value})`,
+            '@defaults filter': {},
+            filter: cssFilterValue,
+          }
+        },
+      },
+      { values: theme('dropShadow') }
+    )
+  },
+
+  grayscale: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        grayscale: (value) => {
+          return {
+            '--tw-grayscale': `grayscale(${value})`,
+            '@defaults filter': {},
+            filter: cssFilterValue,
+          }
+        },
+      },
+      { values: theme('grayscale') }
+    )
+  },
+
+  hueRotate: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'hue-rotate': (value) => {
+          return {
+            '--tw-hue-rotate': `hue-rotate(${value})`,
+            '@defaults filter': {},
+            filter: cssFilterValue,
+          }
+        },
+      },
+      { values: theme('hueRotate'), supportsNegativeValues: true }
+    )
+  },
+
+  invert: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        invert: (value) => {
+          return {
+            '--tw-invert': `invert(${value})`,
+            '@defaults filter': {},
+            filter: cssFilterValue,
+          }
+        },
+      },
+      { values: theme('invert') }
+    )
+  },
+
+  saturate: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        saturate: (value) => {
+          return {
+            '--tw-saturate': `saturate(${value})`,
+            '@defaults filter': {},
+            filter: cssFilterValue,
+          }
+        },
+      },
+      { values: theme('saturate') }
+    )
+  },
+
+  sepia: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        sepia: (value) => {
+          return {
+            '--tw-sepia': `sepia(${value})`,
+            '@defaults filter': {},
+            filter: cssFilterValue,
+          }
+        },
+      },
+      { values: theme('sepia') }
+    )
+  },
+
+  filter: ({ addDefaults, addUtilities }) => {
+    addDefaults('filter', {
+      '--tw-blur': ' ',
+      '--tw-brightness': ' ',
+      '--tw-contrast': ' ',
+      '--tw-grayscale': ' ',
+      '--tw-hue-rotate': ' ',
+      '--tw-invert': ' ',
+      '--tw-saturate': ' ',
+      '--tw-sepia': ' ',
+      '--tw-drop-shadow': ' ',
+    })
+    addUtilities({
+      '.filter': { '@defaults filter': {}, filter: cssFilterValue },
+      '.filter-none': { filter: 'none' },
+    })
+  },
+
+  backdropBlur: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'backdrop-blur': (value) => {
+          return {
+            '--tw-backdrop-blur': value.trim() === '' ? ' ' : `blur(${value})`,
+            '@defaults backdrop-filter': {},
+            '-webkit-backdrop-filter': cssBackdropFilterValue,
+            'backdrop-filter': cssBackdropFilterValue,
+          }
+        },
+      },
+      { values: theme('backdropBlur') }
+    )
+  },
+
+  backdropBrightness: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'backdrop-brightness': (value) => {
+          return {
+            '--tw-backdrop-brightness': `brightness(${value})`,
+            '@defaults backdrop-filter': {},
+            '-webkit-backdrop-filter': cssBackdropFilterValue,
+            'backdrop-filter': cssBackdropFilterValue,
+          }
+        },
+      },
+      { values: theme('backdropBrightness') }
+    )
+  },
+
+  backdropContrast: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'backdrop-contrast': (value) => {
+          return {
+            '--tw-backdrop-contrast': `contrast(${value})`,
+            '@defaults backdrop-filter': {},
+            '-webkit-backdrop-filter': cssBackdropFilterValue,
+            'backdrop-filter': cssBackdropFilterValue,
+          }
+        },
+      },
+      { values: theme('backdropContrast') }
+    )
+  },
+
+  backdropGrayscale: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'backdrop-grayscale': (value) => {
+          return {
+            '--tw-backdrop-grayscale': `grayscale(${value})`,
+            '@defaults backdrop-filter': {},
+            '-webkit-backdrop-filter': cssBackdropFilterValue,
+            'backdrop-filter': cssBackdropFilterValue,
+          }
+        },
+      },
+      { values: theme('backdropGrayscale') }
+    )
+  },
+
+  backdropHueRotate: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'backdrop-hue-rotate': (value) => {
+          return {
+            '--tw-backdrop-hue-rotate': `hue-rotate(${value})`,
+            '@defaults backdrop-filter': {},
+            '-webkit-backdrop-filter': cssBackdropFilterValue,
+            'backdrop-filter': cssBackdropFilterValue,
+          }
+        },
+      },
+      { values: theme('backdropHueRotate'), supportsNegativeValues: true }
+    )
+  },
+
+  backdropInvert: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'backdrop-invert': (value) => {
+          return {
+            '--tw-backdrop-invert': `invert(${value})`,
+            '@defaults backdrop-filter': {},
+            '-webkit-backdrop-filter': cssBackdropFilterValue,
+            'backdrop-filter': cssBackdropFilterValue,
+          }
+        },
+      },
+      { values: theme('backdropInvert') }
+    )
+  },
+
+  backdropOpacity: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'backdrop-opacity': (value) => {
+          return {
+            '--tw-backdrop-opacity': `opacity(${value})`,
+            '@defaults backdrop-filter': {},
+            '-webkit-backdrop-filter': cssBackdropFilterValue,
+            'backdrop-filter': cssBackdropFilterValue,
+          }
+        },
+      },
+      { values: theme('backdropOpacity') }
+    )
+  },
+
+  backdropSaturate: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'backdrop-saturate': (value) => {
+          return {
+            '--tw-backdrop-saturate': `saturate(${value})`,
+            '@defaults backdrop-filter': {},
+            '-webkit-backdrop-filter': cssBackdropFilterValue,
+            'backdrop-filter': cssBackdropFilterValue,
+          }
+        },
+      },
+      { values: theme('backdropSaturate') }
+    )
+  },
+
+  backdropSepia: ({ matchUtilities, theme }) => {
+    matchUtilities(
+      {
+        'backdrop-sepia': (value) => {
+          return {
+            '--tw-backdrop-sepia': `sepia(${value})`,
+            '@defaults backdrop-filter': {},
+            '-webkit-backdrop-filter': cssBackdropFilterValue,
+            'backdrop-filter': cssBackdropFilterValue,
+          }
+        },
+      },
+      { values: theme('backdropSepia') }
+    )
+  },
+
+  backdropFilter: ({ addDefaults, addUtilities }) => {
+    addDefaults('backdrop-filter', {
+      '--tw-backdrop-blur': ' ',
+      '--tw-backdrop-brightness': ' ',
+      '--tw-backdrop-contrast': ' ',
+      '--tw-backdrop-grayscale': ' ',
+      '--tw-backdrop-hue-rotate': ' ',
+      '--tw-backdrop-invert': ' ',
+      '--tw-backdrop-opacity': ' ',
+      '--tw-backdrop-saturate': ' ',
+      '--tw-backdrop-sepia': ' ',
+    })
+    addUtilities({
+      '.backdrop-filter': {
+        '@defaults backdrop-filter': {},
+        '-webkit-backdrop-filter': cssBackdropFilterValue,
+        'backdrop-filter': cssBackdropFilterValue,
+      },
+      '.backdrop-filter-none': {
+        '-webkit-backdrop-filter': 'none',
+        'backdrop-filter': 'none',
+      },
+    })
+  },
+
+  transitionProperty: ({ matchUtilities, theme }) => {
+    let defaultTimingFunction = theme('transitionTimingFunction.DEFAULT')
+    let defaultDuration = theme('transitionDuration.DEFAULT')
+
+    matchUtilities(
+      {
+        transition: (value) => {
+          return {
+            'transition-property': value,
+            ...(value === 'none'
+              ? {}
+              : {
+                  'transition-timing-function': defaultTimingFunction,
+                  'transition-duration': defaultDuration,
+                }),
+          }
+        },
+      },
+      { values: theme('transitionProperty') }
+    )
+  },
+
+  transitionDelay: createUtilityPlugin('transitionDelay', [['delay', ['transitionDelay']]]),
+  transitionDuration: createUtilityPlugin(
+    'transitionDuration',
+    [['duration', ['transitionDuration']]],
+    { filterDefault: true }
+  ),
+  transitionTimingFunction: createUtilityPlugin(
+    'transitionTimingFunction',
+    [['ease', ['transitionTimingFunction']]],
+    { filterDefault: true }
+  ),
+  willChange: createUtilityPlugin('willChange', [['will-change', ['will-change']]]),
+  contain: ({ addDefaults, addUtilities }) => {
+    let cssContainValue =
+      'var(--tw-contain-size) var(--tw-contain-layout) var(--tw-contain-paint) var(--tw-contain-style)'
+
+    addDefaults('contain', {
+      '--tw-contain-size': ' ',
+      '--tw-contain-layout': ' ',
+      '--tw-contain-paint': ' ',
+      '--tw-contain-style': ' ',
+    })
+
+    addUtilities({
+      '.contain-none': { contain: 'none' },
+      '.contain-content': { contain: 'content' },
+      '.contain-strict': { contain: 'strict' },
+      '.contain-size': {
+        '@defaults contain': {},
+        '--tw-contain-size': 'size',
+        contain: cssContainValue,
+      },
+      '.contain-inline-size': {
+        '@defaults contain': {},
+        '--tw-contain-size': 'inline-size',
+        contain: cssContainValue,
+      },
+      '.contain-layout': {
+        '@defaults contain': {},
+        '--tw-contain-layout': 'layout',
+        contain: cssContainValue,
+      },
+      '.contain-paint': {
+        '@defaults contain': {},
+        '--tw-contain-paint': 'paint',
+        contain: cssContainValue,
+      },
+      '.contain-style': {
+        '@defaults contain': {},
+        '--tw-contain-style': 'style',
+        contain: cssContainValue,
+      },
+    })
+  },
+  content: createUtilityPlugin('content', [
+    ['content', ['--tw-content', ['content', 'var(--tw-content)']]],
+  ]),
+  forcedColorAdjust: ({ addUtilities }) => {
+    addUtilities({
+      '.forced-color-adjust-auto': { 'forced-color-adjust': 'auto' },
+      '.forced-color-adjust-none': { 'forced-color-adjust': 'none' },
+    })
+  },
+}
Index: frontend/node_modules/tailwindcss/src/css/LICENSE
===================================================================
--- frontend/node_modules/tailwindcss/src/css/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/css/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,25 @@
+MIT License
+
+Copyright (c) Nicolas Gallagher
+Copyright (c) Jonathan Neal
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+Copyright (c) Adam Wathan
+Copyright (c) Jonathan Reinink
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Index: frontend/node_modules/tailwindcss/src/css/preflight.css
===================================================================
--- frontend/node_modules/tailwindcss/src/css/preflight.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/css/preflight.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,386 @@
+/*
+1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
+2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
+*/
+
+*,
+::before,
+::after {
+  box-sizing: border-box; /* 1 */
+  border-width: 0; /* 2 */
+  border-style: solid; /* 2 */
+  border-color: theme('borderColor.DEFAULT', currentColor); /* 2 */
+}
+
+::before,
+::after {
+  --tw-content: '';
+}
+
+/*
+1. Use a consistent sensible line-height in all browsers.
+2. Prevent adjustments of font size after orientation changes in iOS.
+3. Use a more readable tab size.
+4. Use the user's configured `sans` font-family by default.
+5. Use the user's configured `sans` font-feature-settings by default.
+6. Use the user's configured `sans` font-variation-settings by default.
+7. Disable tap highlights on iOS
+*/
+
+html,
+:host {
+  line-height: 1.5; /* 1 */
+  -webkit-text-size-adjust: 100%; /* 2 */
+  -moz-tab-size: 4; /* 3 */
+  tab-size: 4; /* 3 */
+  font-family: theme('fontFamily.sans', ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); /* 4 */
+  font-feature-settings: theme('fontFamily.sans[1].fontFeatureSettings', normal); /* 5 */
+  font-variation-settings: theme('fontFamily.sans[1].fontVariationSettings', normal); /* 6 */
+  -webkit-tap-highlight-color: transparent; /* 7 */
+}
+
+/*
+1. Remove the margin in all browsers.
+2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
+*/
+
+body {
+  margin: 0; /* 1 */
+  line-height: inherit; /* 2 */
+}
+
+/*
+1. Add the correct height in Firefox.
+2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
+3. Ensure horizontal rules are visible by default.
+*/
+
+hr {
+  height: 0; /* 1 */
+  color: inherit; /* 2 */
+  border-top-width: 1px; /* 3 */
+}
+
+/*
+Add the correct text decoration in Chrome, Edge, and Safari.
+*/
+
+abbr:where([title]) {
+  text-decoration: underline dotted;
+}
+
+/*
+Remove the default font size and weight for headings.
+*/
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  font-size: inherit;
+  font-weight: inherit;
+}
+
+/*
+Reset links to optimize for opt-in styling instead of opt-out.
+*/
+
+a {
+  color: inherit;
+  text-decoration: inherit;
+}
+
+/*
+Add the correct font weight in Edge and Safari.
+*/
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+/*
+1. Use the user's configured `mono` font-family by default.
+2. Use the user's configured `mono` font-feature-settings by default.
+3. Use the user's configured `mono` font-variation-settings by default.
+4. Correct the odd `em` font sizing in all browsers.
+*/
+
+code,
+kbd,
+samp,
+pre {
+  font-family: theme('fontFamily.mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); /* 1 */
+  font-feature-settings: theme('fontFamily.mono[1].fontFeatureSettings', normal); /* 2 */
+  font-variation-settings: theme('fontFamily.mono[1].fontVariationSettings', normal); /* 3 */
+  font-size: 1em; /* 4 */
+}
+
+/*
+Add the correct font size in all browsers.
+*/
+
+small {
+  font-size: 80%;
+}
+
+/*
+Prevent `sub` and `sup` elements from affecting the line height in all browsers.
+*/
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+/*
+1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
+2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
+3. Remove gaps between table borders by default.
+*/
+
+table {
+  text-indent: 0; /* 1 */
+  border-color: inherit; /* 2 */
+  border-collapse: collapse; /* 3 */
+}
+
+/*
+1. Change the font styles in all browsers.
+2. Remove the margin in Firefox and Safari.
+3. Remove default padding in all browsers.
+*/
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: inherit; /* 1 */
+  font-feature-settings: inherit; /* 1 */
+  font-variation-settings: inherit; /* 1 */
+  font-size: 100%; /* 1 */
+  font-weight: inherit; /* 1 */
+  line-height: inherit; /* 1 */
+  letter-spacing: inherit; /* 1 */
+  color: inherit; /* 1 */
+  margin: 0; /* 2 */
+  padding: 0; /* 3 */
+}
+
+/*
+Remove the inheritance of text transform in Edge and Firefox.
+*/
+
+button,
+select {
+  text-transform: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Remove default button styles.
+*/
+
+button,
+input:where([type='button']),
+input:where([type='reset']),
+input:where([type='submit']) {
+  -webkit-appearance: button; /* 1 */
+  background-color: transparent; /* 2 */
+  background-image: none; /* 2 */
+}
+
+/*
+Use the modern Firefox focus style for all focusable elements.
+*/
+
+:-moz-focusring {
+  outline: auto;
+}
+
+/*
+Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
+*/
+
+:-moz-ui-invalid {
+  box-shadow: none;
+}
+
+/*
+Add the correct vertical alignment in Chrome and Firefox.
+*/
+
+progress {
+  vertical-align: baseline;
+}
+
+/*
+Correct the cursor style of increment and decrement buttons in Safari.
+*/
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/*
+1. Correct the odd appearance in Chrome and Safari.
+2. Correct the outline style in Safari.
+*/
+
+[type='search'] {
+  -webkit-appearance: textfield; /* 1 */
+  outline-offset: -2px; /* 2 */
+}
+
+/*
+Remove the inner padding in Chrome and Safari on macOS.
+*/
+
+::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Change font properties to `inherit` in Safari.
+*/
+
+::-webkit-file-upload-button {
+  -webkit-appearance: button; /* 1 */
+  font: inherit; /* 2 */
+}
+
+/*
+Add the correct display in Chrome and Safari.
+*/
+
+summary {
+  display: list-item;
+}
+
+/*
+Removes the default spacing and border for appropriate elements.
+*/
+
+blockquote,
+dl,
+dd,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+hr,
+figure,
+p,
+pre {
+  margin: 0;
+}
+
+fieldset {
+  margin: 0;
+  padding: 0;
+}
+
+legend {
+  padding: 0;
+}
+
+ol,
+ul,
+menu {
+  list-style: none;
+  margin: 0;
+  padding: 0;
+}
+
+/*
+Reset default styling for dialogs.
+*/
+dialog {
+  padding: 0;
+}
+
+/*
+Prevent resizing textareas horizontally by default.
+*/
+
+textarea {
+  resize: vertical;
+}
+
+/*
+1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
+2. Set the default placeholder color to the user's configured gray 400 color.
+*/
+
+input::placeholder,
+textarea::placeholder {
+  opacity: 1; /* 1 */
+  color: theme('colors.gray.400', #9ca3af); /* 2 */
+}
+
+/*
+Set the default cursor for buttons.
+*/
+
+button,
+[role="button"] {
+  cursor: pointer;
+}
+
+/*
+Make sure disabled buttons don't get the pointer cursor.
+*/
+:disabled {
+  cursor: default;
+}
+
+/*
+1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
+2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
+   This can trigger a poorly considered lint error in some tools but is included by design.
+*/
+
+img,
+svg,
+video,
+canvas,
+audio,
+iframe,
+embed,
+object {
+  display: block; /* 1 */
+  vertical-align: middle; /* 2 */
+}
+
+/*
+Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
+*/
+
+img,
+video {
+  max-width: 100%;
+  height: auto;
+}
+
+/* Make elements with the HTML hidden attribute stay hidden by default */
+[hidden]:where(:not([hidden="until-found"])) {
+  display: none;
+}
Index: frontend/node_modules/tailwindcss/src/featureFlags.js
===================================================================
--- frontend/node_modules/tailwindcss/src/featureFlags.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/featureFlags.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,62 @@
+import colors from 'picocolors'
+import log from './util/log'
+
+let defaults = {
+  optimizeUniversalDefaults: false,
+  generalizedModifiers: true,
+  disableColorOpacityUtilitiesByDefault: false,
+  relativeContentPathsByDefault: false,
+}
+
+let featureFlags = {
+  future: [
+    'hoverOnlyWhenSupported',
+    'respectDefaultRingColorOpacity',
+    'disableColorOpacityUtilitiesByDefault',
+    'relativeContentPathsByDefault',
+  ],
+  experimental: ['optimizeUniversalDefaults', 'generalizedModifiers'],
+}
+
+export function flagEnabled(config, flag) {
+  if (featureFlags.future.includes(flag)) {
+    return config.future === 'all' || (config?.future?.[flag] ?? defaults[flag] ?? false)
+  }
+
+  if (featureFlags.experimental.includes(flag)) {
+    return (
+      config.experimental === 'all' || (config?.experimental?.[flag] ?? defaults[flag] ?? false)
+    )
+  }
+
+  return false
+}
+
+function experimentalFlagsEnabled(config) {
+  if (config.experimental === 'all') {
+    return featureFlags.experimental
+  }
+
+  return Object.keys(config?.experimental ?? {}).filter(
+    (flag) => featureFlags.experimental.includes(flag) && config.experimental[flag]
+  )
+}
+
+export function issueFlagNotices(config) {
+  if (process.env.JEST_WORKER_ID !== undefined) {
+    return
+  }
+
+  if (experimentalFlagsEnabled(config).length > 0) {
+    let changes = experimentalFlagsEnabled(config)
+      .map((s) => colors.yellow(s))
+      .join(', ')
+
+    log.warn('experimental-flags-enabled', [
+      `You have enabled experimental features: ${changes}`,
+      'Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.',
+    ])
+  }
+}
+
+export default featureFlags
Index: frontend/node_modules/tailwindcss/src/index.js
===================================================================
--- frontend/node_modules/tailwindcss/src/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+module.exports = require('./plugin')
Index: frontend/node_modules/tailwindcss/src/lib/cacheInvalidation.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/cacheInvalidation.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/cacheInvalidation.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,52 @@
+import crypto from 'crypto'
+import * as sharedState from './sharedState'
+
+/**
+ * Calculate the hash of a string.
+ *
+ * This doesn't need to be cryptographically secure or
+ * anything like that since it's used only to detect
+ * when the CSS changes to invalidate the context.
+ *
+ * This is wrapped in a try/catch because it's really dependent
+ * on how Node itself is build and the environment and OpenSSL
+ * version / build that is installed on the user's machine.
+ *
+ * Based on the environment this can just outright fail.
+ *
+ * See https://github.com/nodejs/node/issues/40455
+ *
+ * @param {string} str
+ */
+function getHash(str) {
+  try {
+    return crypto.createHash('md5').update(str, 'utf-8').digest('binary')
+  } catch (err) {
+    return ''
+  }
+}
+
+/**
+ * Determine if the CSS tree is different from the
+ * previous version for the given `sourcePath`.
+ *
+ * @param {string} sourcePath
+ * @param {import('postcss').Node} root
+ */
+export function hasContentChanged(sourcePath, root) {
+  let css = root.toString()
+
+  // We only care about files with @tailwind directives
+  // Other files use an existing context
+  if (!css.includes('@tailwind')) {
+    return false
+  }
+
+  let existingHash = sharedState.sourceHashMap.get(sourcePath)
+  let rootHash = getHash(css)
+  let didChange = existingHash !== rootHash
+
+  sharedState.sourceHashMap.set(sourcePath, rootHash)
+
+  return didChange
+}
Index: frontend/node_modules/tailwindcss/src/lib/collapseAdjacentRules.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/collapseAdjacentRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/collapseAdjacentRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,58 @@
+let comparisonMap = {
+  atrule: ['name', 'params'],
+  rule: ['selector'],
+}
+let types = new Set(Object.keys(comparisonMap))
+
+export default function collapseAdjacentRules() {
+  function collapseRulesIn(root) {
+    let currentRule = null
+    root.each((node) => {
+      if (!types.has(node.type)) {
+        currentRule = null
+        return
+      }
+
+      if (currentRule === null) {
+        currentRule = node
+        return
+      }
+
+      let properties = comparisonMap[node.type]
+
+      if (node.type === 'atrule' && node.name === 'font-face') {
+        currentRule = node
+      } else if (
+        properties.every(
+          (property) =>
+            (node[property] ?? '').replace(/\s+/g, ' ') ===
+            (currentRule[property] ?? '').replace(/\s+/g, ' ')
+        )
+      ) {
+        // An AtRule may not have children (for example if we encounter duplicate @import url(…) rules)
+        if (node.nodes) {
+          currentRule.append(node.nodes)
+        }
+
+        node.remove()
+      } else {
+        currentRule = node
+      }
+    })
+
+    // After we've collapsed adjacent rules & at-rules, we need to collapse
+    // adjacent rules & at-rules that are children of at-rules.
+    // We do not care about nesting rules because Tailwind CSS
+    // explicitly does not handle rule nesting on its own as
+    // the user is expected to use a nesting plugin
+    root.each((node) => {
+      if (node.type === 'atrule') {
+        collapseRulesIn(node)
+      }
+    })
+  }
+
+  return (root) => {
+    collapseRulesIn(root)
+  }
+}
Index: frontend/node_modules/tailwindcss/src/lib/collapseDuplicateDeclarations.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/collapseDuplicateDeclarations.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/collapseDuplicateDeclarations.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,93 @@
+export default function collapseDuplicateDeclarations() {
+  return (root) => {
+    root.walkRules((node) => {
+      let seen = new Map()
+      let droppable = new Set([])
+      let byProperty = new Map()
+
+      node.walkDecls((decl) => {
+        // This could happen if we have nested selectors. In that case the
+        // parent will loop over all its declarations but also the declarations
+        // of nested rules. With this we ensure that we are shallowly checking
+        // declarations.
+        if (decl.parent !== node) {
+          return
+        }
+
+        if (seen.has(decl.prop)) {
+          // Exact same value as what we have seen so far
+          if (seen.get(decl.prop).value === decl.value) {
+            // Keep the last one, drop the one we've seen so far
+            droppable.add(seen.get(decl.prop))
+            // Override the existing one with the new value. This is necessary
+            // so that if we happen to have more than one declaration with the
+            // same value, that we keep removing the previous one. Otherwise we
+            // will only remove the *first* one.
+            seen.set(decl.prop, decl)
+            return
+          }
+
+          // Not the same value, so we need to check if we can merge it so
+          // let's collect it first.
+          if (!byProperty.has(decl.prop)) {
+            byProperty.set(decl.prop, new Set())
+          }
+
+          byProperty.get(decl.prop).add(seen.get(decl.prop))
+          byProperty.get(decl.prop).add(decl)
+        }
+
+        seen.set(decl.prop, decl)
+      })
+
+      // Drop all the duplicate declarations with the exact same value we've
+      // already seen so far.
+      for (let decl of droppable) {
+        decl.remove()
+      }
+
+      // Analyze the declarations based on its unit, drop all the declarations
+      // with the same unit but the last one in the list.
+      for (let declarations of byProperty.values()) {
+        let byUnit = new Map()
+
+        for (let decl of declarations) {
+          let unit = resolveUnit(decl.value)
+          if (unit === null) {
+            // We don't have a unit, so should never try and collapse this
+            // value. This is because we can't know how to do it in a correct
+            // way (e.g.: overrides for older browsers)
+            continue
+          }
+
+          if (!byUnit.has(unit)) {
+            byUnit.set(unit, new Set())
+          }
+
+          byUnit.get(unit).add(decl)
+        }
+
+        for (let declarations of byUnit.values()) {
+          // Get all but the last one
+          let removableDeclarations = Array.from(declarations).slice(0, -1)
+
+          for (let decl of removableDeclarations) {
+            decl.remove()
+          }
+        }
+      }
+    })
+  }
+}
+
+let UNITLESS_NUMBER = Symbol('unitless-number')
+
+function resolveUnit(input) {
+  let result = /^-?\d*.?\d+([\w%]+)?$/g.exec(input)
+
+  if (result) {
+    return result[1] ?? UNITLESS_NUMBER
+  }
+
+  return null
+}
Index: frontend/node_modules/tailwindcss/src/lib/content.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/content.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/content.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,295 @@
+// @ts-check
+
+import fs from 'fs'
+import path from 'path'
+import isGlob from 'is-glob'
+import fastGlob from 'fast-glob'
+import normalizePath from 'normalize-path'
+import { parseGlob } from '../util/parseGlob'
+import { env } from './sharedState'
+import log from '../util/log'
+import micromatch from 'micromatch'
+
+/** @typedef {import('../../types/config.js').RawFile} RawFile */
+/** @typedef {import('../../types/config.js').FilePath} FilePath */
+
+/**
+ * @typedef {object} ContentPath
+ * @property {string} original
+ * @property {string} base
+ * @property {string | null} glob
+ * @property {boolean} ignore
+ * @property {string} pattern
+ */
+
+/**
+ * Turn a list of content paths (absolute or not; glob or not) into a list of
+ * absolute file paths that exist on the filesystem
+ *
+ * If there are symlinks in the path then multiple paths will be returned
+ * one for the symlink and one for the actual file
+ *
+ * @param {*} context
+ * @param {import('tailwindcss').Config} tailwindConfig
+ * @returns {ContentPath[]}
+ */
+export function parseCandidateFiles(context, tailwindConfig) {
+  let files = tailwindConfig.content.files
+
+  // Normalize the file globs
+  files = files.filter((filePath) => typeof filePath === 'string')
+  files = files.map(normalizePath)
+
+  // Split into included and excluded globs
+  let tasks = fastGlob.generateTasks(files)
+
+  /** @type {ContentPath[]} */
+  let included = []
+
+  /** @type {ContentPath[]} */
+  let excluded = []
+
+  for (const task of tasks) {
+    included.push(...task.positive.map((filePath) => parseFilePath(filePath, false)))
+    excluded.push(...task.negative.map((filePath) => parseFilePath(filePath, true)))
+  }
+
+  let paths = [...included, ...excluded]
+
+  // Resolve paths relative to the config file or cwd
+  paths = resolveRelativePaths(context, paths)
+
+  // Resolve symlinks if possible
+  paths = paths.flatMap(resolvePathSymlinks)
+
+  // Update cached patterns
+  paths = paths.map(resolveGlobPattern)
+
+  return paths
+}
+
+/**
+ *
+ * @param {string} filePath
+ * @param {boolean} ignore
+ * @returns {ContentPath}
+ */
+function parseFilePath(filePath, ignore) {
+  let contentPath = {
+    original: filePath,
+    base: filePath,
+    ignore,
+    pattern: filePath,
+    glob: null,
+  }
+
+  if (isGlob(filePath)) {
+    Object.assign(contentPath, parseGlob(filePath))
+  }
+
+  return contentPath
+}
+
+/**
+ *
+ * @param {ContentPath} contentPath
+ * @returns {ContentPath}
+ */
+function resolveGlobPattern(contentPath) {
+  // This is required for Windows support to properly pick up Glob paths.
+  // Afaik, this technically shouldn't be needed but there's probably
+  // some internal, direct path matching with a normalized path in
+  // a package which can't handle mixed directory separators
+  let base = normalizePath(contentPath.base)
+
+  // If the user's file path contains any special characters (like parens) for instance fast-glob
+  // is like "OOOH SHINY" and treats them as such. So we have to escape the base path to fix this
+  base = fastGlob.escapePath(base)
+
+  contentPath.pattern = contentPath.glob ? `${base}/${contentPath.glob}` : base
+  contentPath.pattern = contentPath.ignore ? `!${contentPath.pattern}` : contentPath.pattern
+
+  return contentPath
+}
+
+/**
+ * Resolve each path relative to the config file (when possible) if the experimental flag is enabled
+ * Otherwise, resolve relative to the current working directory
+ *
+ * @param {any} context
+ * @param {ContentPath[]} contentPaths
+ * @returns {ContentPath[]}
+ */
+function resolveRelativePaths(context, contentPaths) {
+  let resolveFrom = []
+
+  // Resolve base paths relative to the config file (when possible) if the experimental flag is enabled
+  if (context.userConfigPath && context.tailwindConfig.content.relative) {
+    resolveFrom = [path.dirname(context.userConfigPath)]
+  }
+
+  return contentPaths.map((contentPath) => {
+    contentPath.base = path.resolve(...resolveFrom, contentPath.base)
+
+    return contentPath
+  })
+}
+
+/**
+ * Resolve the symlink for the base directory / file in each path
+ * These are added as additional dependencies to watch for changes because
+ * some tools (like webpack) will only watch the actual file or directory
+ * but not the symlink itself even in projects that use monorepos.
+ *
+ * @param {ContentPath} contentPath
+ * @returns {ContentPath[]}
+ */
+function resolvePathSymlinks(contentPath) {
+  let paths = [contentPath]
+
+  try {
+    let resolvedPath = fs.realpathSync(contentPath.base)
+    if (resolvedPath !== contentPath.base) {
+      paths.push({
+        ...contentPath,
+        base: resolvedPath,
+      })
+    }
+  } catch {
+    // TODO: log this?
+  }
+
+  return paths
+}
+
+/**
+ * @param {any} context
+ * @param {ContentPath[]} candidateFiles
+ * @param {Map<string, number>} fileModifiedMap
+ * @returns {[{ content: string, extension: string }[], Map<string, number>]}
+ */
+export function resolvedChangedContent(context, candidateFiles, fileModifiedMap) {
+  let changedContent = context.tailwindConfig.content.files
+    .filter((item) => typeof item.raw === 'string')
+    .map(({ raw, extension = 'html' }) => ({ content: raw, extension }))
+
+  let [changedFiles, mTimesToCommit] = resolveChangedFiles(candidateFiles, fileModifiedMap)
+
+  for (let changedFile of changedFiles) {
+    let extension = path.extname(changedFile).slice(1)
+    changedContent.push({ file: changedFile, extension })
+  }
+
+  return [changedContent, mTimesToCommit]
+}
+
+const LARGE_DIRECTORIES = [
+  'node_modules', // Node
+]
+
+// Ensures that `node_modules` has to match as-is, otherwise `mynode_modules`
+// would match as well, but that is not a known large directory.
+const LARGE_DIRECTORIES_REGEX = new RegExp(
+  `(${LARGE_DIRECTORIES.map((dir) => String.raw`\b${dir}\b`).join('|')})`
+)
+
+/**
+ * @param {string[]} paths
+ */
+export function createBroadPatternCheck(paths) {
+  // Detect whether a glob pattern might be too broad. This means that it:
+  // - Includes `**`
+  // - Does not include any of the known large directories (e.g.: node_modules)
+  let maybeBroadPattern = paths.some(
+    (path) => path.includes('**') && !LARGE_DIRECTORIES_REGEX.test(path)
+  )
+
+  // Didn't detect any potentially broad patterns, so we can skip further
+  // checks.
+  if (!maybeBroadPattern) {
+    return () => {}
+  }
+
+  // All glob matchers
+  let matchers = []
+
+  // All glob matchers that explicitly contain any of the known large
+  // directories (e.g.: node_modules).
+  let explicitMatchers = []
+
+  // Create matchers for all paths
+  for (let path of paths) {
+    let matcher = micromatch.matcher(path)
+    if (LARGE_DIRECTORIES_REGEX.test(path)) {
+      explicitMatchers.push(matcher)
+    }
+
+    matchers.push(matcher)
+  }
+
+  // Keep track of whether we already warned about the broad pattern issue or
+  // not. The `log.warn` function already does something similar where we only
+  // output the log once. However, with this we can also skip the other checks
+  // when we already warned about the broad pattern.
+  let warned = false
+
+  /**
+   * @param {string} file
+   */
+  return (file) => {
+    if (warned) return // Already warned about the broad pattern
+    if (explicitMatchers.some((matcher) => matcher(file))) return // Explicitly included, so we can skip further checks
+
+    // When a broad pattern is used, we have to double check that the file was
+    // not explicitly included in the globs.
+    let matchingGlobIndex = matchers.findIndex((matcher) => matcher(file))
+    if (matchingGlobIndex === -1) return // This should never happen
+    let matchingGlob = paths[matchingGlobIndex]
+
+    // Create relative paths to make the output a bit more readable.
+    let relativeMatchingGlob = path.relative(process.cwd(), matchingGlob)
+    if (relativeMatchingGlob[0] !== '.') relativeMatchingGlob = `./${relativeMatchingGlob}`
+
+    let largeDirectory = LARGE_DIRECTORIES.find((directory) => file.includes(directory))
+    if (largeDirectory) {
+      warned = true
+
+      log.warn('broad-content-glob-pattern', [
+        `Your \`content\` configuration includes a pattern which looks like it's accidentally matching all of \`${largeDirectory}\` and can cause serious performance issues.`,
+        `Pattern: \`${relativeMatchingGlob}\``,
+        `See our documentation for recommendations:`,
+        'https://tailwindcss.com/docs/content-configuration#pattern-recommendations',
+      ])
+    }
+  }
+}
+
+/**
+ *
+ * @param {ContentPath[]} candidateFiles
+ * @param {Map<string, number>} fileModifiedMap
+ * @returns {[Set<string>, Map<string, number>]}
+ */
+function resolveChangedFiles(candidateFiles, fileModifiedMap) {
+  let paths = candidateFiles.map((contentPath) => contentPath.pattern)
+  let mTimesToCommit = new Map()
+
+  let checkBroadPattern = createBroadPatternCheck(paths)
+
+  let changedFiles = new Set()
+  env.DEBUG && console.time('Finding changed files')
+  let files = fastGlob.sync(paths, { absolute: true })
+  for (let file of files) {
+    checkBroadPattern(file)
+
+    let prevModified = fileModifiedMap.get(file) || -Infinity
+    let modified = fs.statSync(file).mtimeMs
+
+    if (modified > prevModified) {
+      changedFiles.add(file)
+      mTimesToCommit.set(file, modified)
+    }
+  }
+  env.DEBUG && console.timeEnd('Finding changed files')
+  return [changedFiles, mTimesToCommit]
+}
Index: frontend/node_modules/tailwindcss/src/lib/defaultExtractor.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/defaultExtractor.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/defaultExtractor.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,255 @@
+import * as regex from './regex'
+import { splitAtTopLevelOnly } from '../util/splitAtTopLevelOnly'
+
+export function defaultExtractor(context) {
+  let patterns = Array.from(buildRegExps(context))
+
+  /**
+   * @param {string} content
+   */
+  return (content) => {
+    /** @type {(string|string)[]} */
+    let results = []
+
+    for (let pattern of patterns) {
+      for (let result of content.match(pattern) ?? []) {
+        results.push(clipAtBalancedParens(result))
+      }
+    }
+
+    // Extract any subclasses from languages like Slim and Pug, eg:
+    // div.flex.px-5.underline
+    for (let result of results.slice()) {
+      let segments = splitAtTopLevelOnly(result, '.')
+
+      for (let idx = 0; idx < segments.length; idx++) {
+        let segment = segments[idx]
+        if (idx >= segments.length - 1) {
+          results.push(segment)
+          continue
+        }
+
+        // If the next segment is a number, discard both, for example seeing
+        // `px-1` and `5` means the real candidate was `px-1.5` which is already
+        // captured.
+        let next = Number(segments[idx + 1])
+        if (isNaN(next)) {
+          results.push(segment)
+        } else {
+          idx++
+        }
+      }
+    }
+
+    return results
+  }
+}
+
+function* buildRegExps(context) {
+  let separator = context.tailwindConfig.separator
+  let prefix =
+    context.tailwindConfig.prefix !== ''
+      ? regex.optional(regex.pattern([/-?/, regex.escape(context.tailwindConfig.prefix)]))
+      : ''
+
+  let utility = regex.any([
+    // Arbitrary properties (without square brackets)
+    /\[[^\s:'"`]+:[^\s\[\]]+\]/,
+
+    // Arbitrary properties with balanced square brackets
+    // This is a targeted fix to continue to allow theme()
+    // with square brackets to work in arbitrary properties
+    // while fixing a problem with the regex matching too much
+    /\[[^\s:'"`\]]+:[^\s]+?\[[^\s]+\][^\s]+?\]/,
+
+    // Utilities
+    regex.pattern([
+      // Utility Name / Group Name
+      regex.any([
+        /-?(?:\w+)/,
+
+        // This is here to make sure @container supports everything that other utilities do
+        /@(?:\w+)/,
+      ]),
+
+      // Normal/Arbitrary values
+      regex.optional(
+        regex.any([
+          regex.pattern([
+            // Arbitrary values
+            regex.any([
+              /-(?:\w+-)*\['[^\s]+'\]/,
+              /-(?:\w+-)*\["[^\s]+"\]/,
+              /-(?:\w+-)*\[`[^\s]+`\]/,
+              /-(?:\w+-)*\[(?:[^\s\[\]]+\[[^\s\[\]]+\])*[^\s:\[\]]+\]/,
+            ]),
+
+            // Not immediately followed by an `{[(`
+            /(?![{([]])/,
+
+            // optionally followed by an opacity modifier
+            /(?:\/[^\s'"`\\><$]*)?/,
+          ]),
+
+          regex.pattern([
+            // Arbitrary values
+            regex.any([
+              /-(?:\w+-)*\['[^\s]+'\]/,
+              /-(?:\w+-)*\["[^\s]+"\]/,
+              /-(?:\w+-)*\[`[^\s]+`\]/,
+              /-(?:\w+-)*\[(?:[^\s\[\]]+\[[^\s\[\]]+\])*[^\s\[\]]+\]/,
+            ]),
+
+            // Not immediately followed by an `{[(`
+            /(?![{([]])/,
+
+            // optionally followed by an opacity modifier
+            /(?:\/[^\s'"`\\$]*)?/,
+          ]),
+
+          // Normal values w/o quotes — may include an opacity modifier
+          /[-\/][^\s'"`\\$={><]*/,
+        ])
+      ),
+    ]),
+  ])
+
+  let variantPatterns = [
+    // Without quotes
+    regex.any([
+      // This is here to provide special support for the `@` variant
+      regex.pattern([/@\[[^\s"'`]+\](\/[^\s"'`]+)?/, separator]),
+
+      // With variant modifier (e.g.: group-[..]/modifier)
+      regex.pattern([/([^\s"'`\[\\]+-)?\[[^\s"'`]+\]\/[\w_-]+/, separator]),
+
+      regex.pattern([/([^\s"'`\[\\]+-)?\[[^\s"'`]+\]/, separator]),
+      regex.pattern([/[^\s"'`\[\\]+/, separator]),
+    ]),
+
+    // With quotes allowed
+    regex.any([
+      // With variant modifier (e.g.: group-[..]/modifier)
+      regex.pattern([/([^\s"'`\[\\]+-)?\[[^\s`]+\]\/[\w_-]+/, separator]),
+
+      regex.pattern([/([^\s"'`\[\\]+-)?\[[^\s`]+\]/, separator]),
+      regex.pattern([/[^\s`\[\\]+/, separator]),
+    ]),
+  ]
+
+  for (const variantPattern of variantPatterns) {
+    yield regex.pattern([
+      // Variants
+      '((?=((',
+      variantPattern,
+      ')+))\\2)?',
+
+      // Important (optional)
+      /!?/,
+
+      prefix,
+
+      utility,
+    ])
+  }
+
+  // 5. Inner matches
+  yield /[^<>"'`\s.(){}[\]#=%$][^<>"'`\s(){}[\]#=%$]*[^<>"'`\s.(){}[\]#=%:$]/g
+}
+
+// We want to capture any "special" characters
+// AND the characters immediately following them (if there is one)
+let SPECIALS = /([\[\]'"`])([^\[\]'"`])?/g
+let ALLOWED_CLASS_CHARACTERS = /[^"'`\s<>\]]+/
+
+/**
+ * Clips a string ensuring that parentheses, quotes, etc… are balanced
+ * Used for arbitrary values only
+ *
+ * We will go past the end of the balanced parens until we find a non-class character
+ *
+ * Depth matching behavior:
+ * w-[calc(100%-theme('spacing[some_key][1.5]'))]']
+ *   ┬    ┬          ┬┬       ┬        ┬┬   ┬┬┬┬┬┬┬
+ *   1    2          3        4        34   3 210 END
+ *   ╰────┴──────────┴────────┴────────┴┴───┴─┴┴┴
+ *
+ * @param {string} input
+ */
+function clipAtBalancedParens(input) {
+  // We are care about this for arbitrary values
+  if (!input.includes('-[')) {
+    return input
+  }
+
+  let depth = 0
+  let openStringTypes = []
+
+  // Find all parens, brackets, quotes, etc
+  // Stop when we end at a balanced pair
+  // This is naive and will treat mismatched parens as balanced
+  // This shouldn't be a problem in practice though
+  let matches = input.matchAll(SPECIALS)
+
+  // We can't use lookbehind assertions because we have to support Safari
+  // So, instead, we've emulated it using capture groups and we'll re-work the matches to accommodate
+  matches = Array.from(matches).flatMap((match) => {
+    const [, ...groups] = match
+
+    return groups.map((group, idx) =>
+      Object.assign([], match, {
+        index: match.index + idx,
+        0: group,
+      })
+    )
+  })
+
+  for (let match of matches) {
+    let char = match[0]
+    let inStringType = openStringTypes[openStringTypes.length - 1]
+
+    if (char === inStringType) {
+      openStringTypes.pop()
+    } else if (char === "'" || char === '"' || char === '`') {
+      openStringTypes.push(char)
+    }
+
+    if (inStringType) {
+      continue
+    } else if (char === '[') {
+      depth++
+      continue
+    } else if (char === ']') {
+      depth--
+      continue
+    }
+
+    // We've gone one character past the point where we should stop
+    // This means that there was an extra closing `]`
+    // We'll clip to just before it
+    if (depth < 0) {
+      return input.substring(0, match.index - 1)
+    }
+
+    // We've finished balancing the brackets but there still may be characters that can be included
+    // For example in the class `text-[#336699]/[.35]`
+    // The depth goes to `0` at the closing `]` but goes up again at the `[`
+
+    // If we're at zero and encounter a non-class character then we clip the class there
+    if (depth === 0 && !ALLOWED_CLASS_CHARACTERS.test(char)) {
+      return input.substring(0, match.index)
+    }
+  }
+
+  return input
+}
+
+// Regular utilities
+// {{modifier}:}*{namespace}{-{suffix}}*{/{opacityModifier}}?
+
+// Arbitrary values
+// {{modifier}:}*{namespace}-[{arbitraryValue}]{/{opacityModifier}}?
+// arbitraryValue: no whitespace, balanced quotes unless within quotes, balanced brackets unless within quotes
+
+// Arbitrary properties
+// {{modifier}:}*[{validCssPropertyName}:{arbitraryValue}]
Index: frontend/node_modules/tailwindcss/src/lib/evaluateTailwindFunctions.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/evaluateTailwindFunctions.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/evaluateTailwindFunctions.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,272 @@
+import dlv from 'dlv'
+import didYouMean from 'didyoumean'
+import transformThemeValue from '../util/transformThemeValue'
+import parseValue from '../value-parser/index'
+import { normalizeScreens } from '../util/normalizeScreens'
+import buildMediaQuery from '../util/buildMediaQuery'
+import { toPath } from '../util/toPath'
+import { withAlphaValue } from '../util/withAlphaVariable'
+import { parseColorFormat } from '../util/pluginUtils'
+import log from '../util/log'
+
+function isObject(input) {
+  return typeof input === 'object' && input !== null
+}
+
+function findClosestExistingPath(theme, path) {
+  let parts = toPath(path)
+  do {
+    parts.pop()
+
+    if (dlv(theme, parts) !== undefined) break
+  } while (parts.length)
+
+  return parts.length ? parts : undefined
+}
+
+function pathToString(path) {
+  if (typeof path === 'string') return path
+  return path.reduce((acc, cur, i) => {
+    if (cur.includes('.')) return `${acc}[${cur}]`
+    return i === 0 ? cur : `${acc}.${cur}`
+  }, '')
+}
+
+function list(items) {
+  return items.map((key) => `'${key}'`).join(', ')
+}
+
+function listKeys(obj) {
+  return list(Object.keys(obj))
+}
+
+function validatePath(config, path, defaultValue, themeOpts = {}) {
+  const pathString = Array.isArray(path) ? pathToString(path) : path.replace(/^['"]+|['"]+$/g, '')
+  const pathSegments = Array.isArray(path) ? path : toPath(pathString)
+  const value = dlv(config.theme, pathSegments, defaultValue)
+
+  if (value === undefined) {
+    let error = `'${pathString}' does not exist in your theme config.`
+    const parentSegments = pathSegments.slice(0, -1)
+    const parentValue = dlv(config.theme, parentSegments)
+
+    if (isObject(parentValue)) {
+      const validKeys = Object.keys(parentValue).filter(
+        (key) => validatePath(config, [...parentSegments, key]).isValid
+      )
+      const suggestion = didYouMean(pathSegments[pathSegments.length - 1], validKeys)
+      if (suggestion) {
+        error += ` Did you mean '${pathToString([...parentSegments, suggestion])}'?`
+      } else if (validKeys.length > 0) {
+        error += ` '${pathToString(parentSegments)}' has the following valid keys: ${list(
+          validKeys
+        )}`
+      }
+    } else {
+      const closestPath = findClosestExistingPath(config.theme, pathString)
+      if (closestPath) {
+        const closestValue = dlv(config.theme, closestPath)
+        if (isObject(closestValue)) {
+          error += ` '${pathToString(closestPath)}' has the following keys: ${listKeys(
+            closestValue
+          )}`
+        } else {
+          error += ` '${pathToString(closestPath)}' is not an object.`
+        }
+      } else {
+        error += ` Your theme has the following top-level keys: ${listKeys(config.theme)}`
+      }
+    }
+
+    return {
+      isValid: false,
+      error,
+    }
+  }
+
+  if (
+    !(
+      typeof value === 'string' ||
+      typeof value === 'number' ||
+      typeof value === 'function' ||
+      value instanceof String ||
+      value instanceof Number ||
+      Array.isArray(value)
+    )
+  ) {
+    let error = `'${pathString}' was found but does not resolve to a string.`
+
+    if (isObject(value)) {
+      let validKeys = Object.keys(value).filter(
+        (key) => validatePath(config, [...pathSegments, key]).isValid
+      )
+      if (validKeys.length) {
+        error += ` Did you mean something like '${pathToString([...pathSegments, validKeys[0]])}'?`
+      }
+    }
+
+    return {
+      isValid: false,
+      error,
+    }
+  }
+
+  const [themeSection] = pathSegments
+
+  return {
+    isValid: true,
+    value: transformThemeValue(themeSection)(value, themeOpts),
+  }
+}
+
+function extractArgs(node, vNodes, functions) {
+  vNodes = vNodes.map((vNode) => resolveVNode(node, vNode, functions))
+
+  let args = ['']
+
+  for (let vNode of vNodes) {
+    if (vNode.type === 'div' && vNode.value === ',') {
+      args.push('')
+    } else {
+      args[args.length - 1] += parseValue.stringify(vNode)
+    }
+  }
+
+  return args
+}
+
+function resolveVNode(node, vNode, functions) {
+  if (vNode.type === 'function' && functions[vNode.value] !== undefined) {
+    let args = extractArgs(node, vNode.nodes, functions)
+    vNode.type = 'word'
+    vNode.value = functions[vNode.value](node, ...args)
+  }
+
+  return vNode
+}
+
+function resolveFunctions(node, input, functions) {
+  let hasAnyFn = Object.keys(functions).some((fn) => input.includes(`${fn}(`))
+  if (!hasAnyFn) return input
+
+  return parseValue(input)
+    .walk((vNode) => {
+      resolveVNode(node, vNode, functions)
+    })
+    .toString()
+}
+
+let nodeTypePropertyMap = {
+  atrule: 'params',
+  decl: 'value',
+}
+
+/**
+ * @param {string} path
+ * @returns {Iterable<[path: string, alpha: string|undefined]>}
+ */
+function* toPaths(path) {
+  // Strip quotes from beginning and end of string
+  // This allows the alpha value to be present inside of quotes
+  path = path.replace(/^['"]+|['"]+$/g, '')
+
+  let matches = path.match(/^([^\s]+)(?![^\[]*\])(?:\s*\/\s*([^\/\s]+))$/)
+  let alpha = undefined
+
+  yield [path, undefined]
+
+  if (matches) {
+    path = matches[1]
+    alpha = matches[2]
+
+    yield [path, alpha]
+  }
+}
+
+/**
+ *
+ * @param {any} config
+ * @param {string} path
+ * @param {any} defaultValue
+ */
+function resolvePath(config, path, defaultValue) {
+  const results = Array.from(toPaths(path)).map(([path, alpha]) => {
+    return Object.assign(validatePath(config, path, defaultValue, { opacityValue: alpha }), {
+      resolvedPath: path,
+      alpha,
+    })
+  })
+
+  return results.find((result) => result.isValid) ?? results[0]
+}
+
+export default function (context) {
+  let config = context.tailwindConfig
+
+  let functions = {
+    theme: (node, path, ...defaultValue) => {
+      let { isValid, value, error, alpha } = resolvePath(
+        config,
+        path,
+        defaultValue.length ? defaultValue : undefined
+      )
+
+      if (!isValid) {
+        let parentNode = node.parent
+        let candidate = parentNode?.raws.tailwind?.candidate
+
+        if (parentNode && candidate !== undefined) {
+          // Remove this utility from any caches
+          context.markInvalidUtilityNode(parentNode)
+
+          // Remove the CSS node from the markup
+          parentNode.remove()
+
+          // Show a warning
+          log.warn('invalid-theme-key-in-class', [
+            `The utility \`${candidate}\` contains an invalid theme value and was not generated.`,
+          ])
+
+          return
+        }
+
+        throw node.error(error)
+      }
+
+      let maybeColor = parseColorFormat(value)
+      let isColorFunction = maybeColor !== undefined && typeof maybeColor === 'function'
+
+      if (alpha !== undefined || isColorFunction) {
+        if (alpha === undefined) {
+          alpha = 1.0
+        }
+
+        value = withAlphaValue(maybeColor, alpha, maybeColor)
+      }
+
+      return value
+    },
+    screen: (node, screen) => {
+      screen = screen.replace(/^['"]+/g, '').replace(/['"]+$/g, '')
+      let screens = normalizeScreens(config.theme.screens)
+      let screenDefinition = screens.find(({ name }) => name === screen)
+
+      if (!screenDefinition) {
+        throw node.error(`The '${screen}' screen does not exist in your theme.`)
+      }
+
+      return buildMediaQuery(screenDefinition)
+    },
+  }
+  return (root) => {
+    root.walk((node) => {
+      let property = nodeTypePropertyMap[node.type]
+
+      if (property === undefined) {
+        return
+      }
+
+      node[property] = resolveFunctions(node, node[property], functions)
+    })
+  }
+}
Index: frontend/node_modules/tailwindcss/src/lib/expandApplyAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/expandApplyAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/expandApplyAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,637 @@
+import postcss from 'postcss'
+import parser from 'postcss-selector-parser'
+
+import { resolveMatches } from './generateRules'
+import escapeClassName from '../util/escapeClassName'
+import { applyImportantSelector } from '../util/applyImportantSelector'
+import { movePseudos } from '../util/pseudoElements'
+
+/** @typedef {Map<string, [any, import('postcss').Rule[]]>} ApplyCache */
+
+function extractClasses(node) {
+  /** @type {Map<string, Set<string>>} */
+  let groups = new Map()
+
+  let container = postcss.root({ nodes: [node.clone()] })
+
+  container.walkRules((rule) => {
+    parser((selectors) => {
+      selectors.walkClasses((classSelector) => {
+        let parentSelector = classSelector.parent.toString()
+
+        let classes = groups.get(parentSelector)
+        if (!classes) {
+          groups.set(parentSelector, (classes = new Set()))
+        }
+
+        classes.add(classSelector.value)
+      })
+    }).processSync(rule.selector)
+  })
+
+  let normalizedGroups = Array.from(groups.values(), (classes) => Array.from(classes))
+  let classes = normalizedGroups.flat()
+
+  return Object.assign(classes, { groups: normalizedGroups })
+}
+
+let selectorExtractor = parser()
+
+/**
+ * @param {string} ruleSelectors
+ */
+function extractSelectors(ruleSelectors) {
+  return selectorExtractor.astSync(ruleSelectors)
+}
+
+function extractBaseCandidates(candidates, separator) {
+  let baseClasses = new Set()
+
+  for (let candidate of candidates) {
+    baseClasses.add(candidate.split(separator).pop())
+  }
+
+  return Array.from(baseClasses)
+}
+
+function prefix(context, selector) {
+  let prefix = context.tailwindConfig.prefix
+  return typeof prefix === 'function' ? prefix(selector) : prefix + selector
+}
+
+function* pathToRoot(node) {
+  yield node
+  while (node.parent) {
+    yield node.parent
+    node = node.parent
+  }
+}
+
+/**
+ * Only clone the node itself and not its children
+ *
+ * @param {*} node
+ * @param {*} overrides
+ * @returns
+ */
+function shallowClone(node, overrides = {}) {
+  let children = node.nodes
+  node.nodes = []
+
+  let tmp = node.clone(overrides)
+
+  node.nodes = children
+
+  return tmp
+}
+
+/**
+ * Clone just the nodes all the way to the top that are required to represent
+ * this singular rule in the tree.
+ *
+ * For example, if we have CSS like this:
+ * ```css
+ * @media (min-width: 768px) {
+ *   @supports (display: grid) {
+ *     .foo {
+ *       display: grid;
+ *       grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ *     }
+ *   }
+ *
+ *   @supports (backdrop-filter: blur(1px)) {
+ *     .bar {
+ *       backdrop-filter: blur(1px);
+ *     }
+ *   }
+ *
+ *   .baz {
+ *     color: orange;
+ *   }
+ * }
+ * ```
+ *
+ * And we're cloning `.bar` it'll return a cloned version of what's required for just that single node:
+ *
+ * ```css
+ * @media (min-width: 768px) {
+ *   @supports (backdrop-filter: blur(1px)) {
+ *     .bar {
+ *       backdrop-filter: blur(1px);
+ *     }
+ *   }
+ * }
+ * ```
+ *
+ * @param {import('postcss').Node} node
+ */
+function nestedClone(node) {
+  for (let parent of pathToRoot(node)) {
+    if (node === parent) {
+      continue
+    }
+
+    if (parent.type === 'root') {
+      break
+    }
+
+    node = shallowClone(parent, {
+      nodes: [node],
+    })
+  }
+
+  return node
+}
+
+/**
+ * @param {import('postcss').Root} root
+ */
+function buildLocalApplyCache(root, context) {
+  /** @type {ApplyCache} */
+  let cache = new Map()
+
+  root.walkRules((rule) => {
+    // Ignore rules generated by Tailwind
+    for (let node of pathToRoot(rule)) {
+      if (node.raws.tailwind?.layer !== undefined) {
+        return
+      }
+    }
+
+    // Clone what's required to represent this singular rule in the tree
+    let container = nestedClone(rule)
+    let sort = context.offsets.create('user')
+
+    for (let className of extractClasses(rule)) {
+      let list = cache.get(className) || []
+      cache.set(className, list)
+
+      list.push([
+        {
+          layer: 'user',
+          sort,
+          important: false,
+        },
+        container,
+      ])
+    }
+  })
+
+  return cache
+}
+
+/**
+ * @returns {ApplyCache}
+ */
+function buildApplyCache(applyCandidates, context) {
+  for (let candidate of applyCandidates) {
+    if (context.notClassCache.has(candidate) || context.applyClassCache.has(candidate)) {
+      continue
+    }
+
+    if (context.classCache.has(candidate)) {
+      context.applyClassCache.set(
+        candidate,
+        context.classCache.get(candidate).map(([meta, rule]) => [meta, rule.clone()])
+      )
+      continue
+    }
+
+    let matches = Array.from(resolveMatches(candidate, context))
+
+    if (matches.length === 0) {
+      context.notClassCache.add(candidate)
+      continue
+    }
+
+    context.applyClassCache.set(candidate, matches)
+  }
+
+  return context.applyClassCache
+}
+
+/**
+ * Build a cache only when it's first used
+ *
+ * @param {() => ApplyCache} buildCacheFn
+ * @returns {ApplyCache}
+ */
+function lazyCache(buildCacheFn) {
+  let cache = null
+
+  return {
+    get: (name) => {
+      cache = cache || buildCacheFn()
+
+      return cache.get(name)
+    },
+    has: (name) => {
+      cache = cache || buildCacheFn()
+
+      return cache.has(name)
+    },
+  }
+}
+
+/**
+ * Take a series of multiple caches and merge
+ * them so they act like one large cache
+ *
+ * @param {ApplyCache[]} caches
+ * @returns {ApplyCache}
+ */
+function combineCaches(caches) {
+  return {
+    get: (name) => caches.flatMap((cache) => cache.get(name) || []),
+    has: (name) => caches.some((cache) => cache.has(name)),
+  }
+}
+
+function extractApplyCandidates(params) {
+  let candidates = params.split(/[\s\t\n]+/g)
+
+  if (candidates[candidates.length - 1] === '!important') {
+    return [candidates.slice(0, -1), true]
+  }
+
+  return [candidates, false]
+}
+
+function processApply(root, context, localCache) {
+  let applyCandidates = new Set()
+
+  // Collect all @apply rules and candidates
+  let applies = []
+  root.walkAtRules('apply', (rule) => {
+    let [candidates] = extractApplyCandidates(rule.params)
+
+    for (let util of candidates) {
+      applyCandidates.add(util)
+    }
+
+    applies.push(rule)
+  })
+
+  // Start the @apply process if we have rules with @apply in them
+  if (applies.length === 0) {
+    return
+  }
+
+  // Fill up some caches!
+  let applyClassCache = combineCaches([localCache, buildApplyCache(applyCandidates, context)])
+
+  /**
+   * When we have an apply like this:
+   *
+   * .abc {
+   *    @apply hover:font-bold;
+   * }
+   *
+   * What we essentially will do is resolve to this:
+   *
+   * .abc {
+   *    @apply .hover\:font-bold:hover {
+   *      font-weight: 500;
+   *    }
+   * }
+   *
+   * Notice that the to-be-applied class is `.hover\:font-bold:hover` and that the utility candidate was `hover:font-bold`.
+   * What happens in this function is that we prepend a `.` and escape the candidate.
+   * This will result in `.hover\:font-bold`
+   * Which means that we can replace `.hover\:font-bold` with `.abc` in `.hover\:font-bold:hover` resulting in `.abc:hover`
+   *
+   * @param {string} selector
+   * @param {string} utilitySelectors
+   * @param {string} candidate
+   */
+  function replaceSelector(selector, utilitySelectors, candidate) {
+    let selectorList = extractSelectors(selector)
+    let utilitySelectorsList = extractSelectors(utilitySelectors)
+    let candidateList = extractSelectors(`.${escapeClassName(candidate)}`)
+    let candidateClass = candidateList.nodes[0].nodes[0]
+
+    selectorList.each((sel) => {
+      /** @type {Set<import('postcss-selector-parser').Selector>} */
+      let replaced = new Set()
+
+      utilitySelectorsList.each((utilitySelector) => {
+        let hasReplaced = false
+        utilitySelector = utilitySelector.clone()
+
+        utilitySelector.walkClasses((node) => {
+          if (node.value !== candidateClass.value) {
+            return
+          }
+
+          // Don't replace multiple instances of the same class
+          // This is theoretically correct but only partially
+          // We'd need to generate every possible permutation of the replacement
+          // For example with `.foo + .foo { … }` and `section { @apply foo; }`
+          // We'd need to generate all of these:
+          // - `.foo + .foo`
+          // - `.foo + section`
+          // - `section + .foo`
+          // - `section + section`
+          if (hasReplaced) {
+            return
+          }
+
+          // Since you can only `@apply` class names this is sufficient
+          // We want to replace the matched class name with the selector the user is using
+          // Ex: Replace `.text-blue-500` with `.foo.bar:is(.something-cool)`
+          node.replaceWith(...sel.nodes.map((node) => node.clone()))
+
+          // Record that we did something and we want to use this new selector
+          replaced.add(utilitySelector)
+
+          hasReplaced = true
+        })
+      })
+
+      // Sort tag names before class names (but only sort each group (separated by a combinator)
+      // separately and not in total)
+      // This happens when replacing `.bar` in `.foo.bar` with a tag like `section`
+      for (let sel of replaced) {
+        let groups = [[]]
+        for (let node of sel.nodes) {
+          if (node.type === 'combinator') {
+            groups.push(node)
+            groups.push([])
+          } else {
+            let last = groups[groups.length - 1]
+            last.push(node)
+          }
+        }
+
+        sel.nodes = []
+
+        for (let group of groups) {
+          if (Array.isArray(group)) {
+            group.sort((a, b) => {
+              if (a.type === 'tag' && b.type === 'class') {
+                return -1
+              } else if (a.type === 'class' && b.type === 'tag') {
+                return 1
+              } else if (a.type === 'class' && b.type === 'pseudo' && b.value.startsWith('::')) {
+                return -1
+              } else if (a.type === 'pseudo' && a.value.startsWith('::') && b.type === 'class') {
+                return 1
+              }
+
+              return 0
+            })
+          }
+
+          sel.nodes = sel.nodes.concat(group)
+        }
+      }
+
+      sel.replaceWith(...replaced)
+    })
+
+    return selectorList.toString()
+  }
+
+  let perParentApplies = new Map()
+
+  // Collect all apply candidates and their rules
+  for (let apply of applies) {
+    let [candidates] = perParentApplies.get(apply.parent) || [[], apply.source]
+
+    perParentApplies.set(apply.parent, [candidates, apply.source])
+
+    let [applyCandidates, important] = extractApplyCandidates(apply.params)
+
+    if (apply.parent.type === 'atrule') {
+      if (apply.parent.name === 'screen') {
+        let screenType = apply.parent.params
+
+        throw apply.error(
+          `@apply is not supported within nested at-rules like @screen. We suggest you write this as @apply ${applyCandidates
+            .map((c) => `${screenType}:${c}`)
+            .join(' ')} instead.`
+        )
+      }
+
+      throw apply.error(
+        `@apply is not supported within nested at-rules like @${apply.parent.name}. You can fix this by un-nesting @${apply.parent.name}.`
+      )
+    }
+
+    for (let applyCandidate of applyCandidates) {
+      if ([prefix(context, 'group'), prefix(context, 'peer')].includes(applyCandidate)) {
+        // TODO: Link to specific documentation page with error code.
+        throw apply.error(`@apply should not be used with the '${applyCandidate}' utility`)
+      }
+
+      if (!applyClassCache.has(applyCandidate)) {
+        throw apply.error(
+          `The \`${applyCandidate}\` class does not exist. If \`${applyCandidate}\` is a custom class, make sure it is defined within a \`@layer\` directive.`
+        )
+      }
+
+      let rules = applyClassCache.get(applyCandidate)
+
+      // Verify that we can apply the class
+      for (let [, rule] of rules) {
+        if (rule.type === 'atrule') {
+          continue
+        }
+
+        rule.walkRules(() => {
+          throw apply.error(
+            [
+              `The \`${applyCandidate}\` class cannot be used with \`@apply\` because \`@apply\` does not currently support nested CSS.`,
+              'Rewrite the selector without nesting or configure the `tailwindcss/nesting` plugin:',
+              'https://tailwindcss.com/docs/using-with-preprocessors#nesting',
+            ].join('\n')
+          )
+        })
+      }
+
+      candidates.push([applyCandidate, important, rules])
+    }
+  }
+
+  for (let [parent, [candidates, atApplySource]] of perParentApplies) {
+    let siblings = []
+
+    for (let [applyCandidate, important, rules] of candidates) {
+      let potentialApplyCandidates = [
+        applyCandidate,
+        ...extractBaseCandidates([applyCandidate], context.tailwindConfig.separator),
+      ]
+
+      for (let [meta, node] of rules) {
+        let parentClasses = extractClasses(parent)
+        let nodeClasses = extractClasses(node)
+
+        // When we encounter a rule like `.dark .a, .b { … }` we only want to be left with `[.dark, .a]` if the base applyCandidate is `.a` or with `[.b]` if the base applyCandidate is `.b`
+        // So we've split them into groups
+        nodeClasses = nodeClasses.groups
+          .filter((classList) =>
+            classList.some((className) => potentialApplyCandidates.includes(className))
+          )
+          .flat()
+
+        // Add base utility classes from the @apply node to the list of
+        // classes to check whether it intersects and therefore results in a
+        // circular dependency or not.
+        //
+        // E.g.:
+        // .foo {
+        //   @apply hover:a; // This applies "a" but with a modifier
+        // }
+        //
+        // We only have to do that with base classes of the `node`, not of the `parent`
+        // E.g.:
+        // .hover\:foo {
+        //   @apply bar;
+        // }
+        // .bar {
+        //   @apply foo;
+        // }
+        //
+        // This should not result in a circular dependency because we are
+        // just applying `.foo` and the rule above is `.hover\:foo` which is
+        // unrelated. However, if we were to apply `hover:foo` then we _did_
+        // have to include this one.
+        nodeClasses = nodeClasses.concat(
+          extractBaseCandidates(nodeClasses, context.tailwindConfig.separator)
+        )
+
+        let intersects = parentClasses.some((selector) => nodeClasses.includes(selector))
+        if (intersects) {
+          throw node.error(
+            `You cannot \`@apply\` the \`${applyCandidate}\` utility here because it creates a circular dependency.`
+          )
+        }
+
+        let root = postcss.root({ nodes: [node.clone()] })
+
+        // Make sure every node in the entire tree points back at the @apply rule that generated it
+        root.walk((node) => {
+          node.source = atApplySource
+        })
+
+        let canRewriteSelector =
+          node.type !== 'atrule' || (node.type === 'atrule' && node.name !== 'keyframes')
+
+        if (canRewriteSelector) {
+          root.walkRules((rule) => {
+            // Let's imagine you have the following structure:
+            //
+            // .foo {
+            //   @apply bar;
+            // }
+            //
+            // @supports (a: b) {
+            //   .bar {
+            //     color: blue
+            //   }
+            //
+            //   .something-unrelated {}
+            // }
+            //
+            // In this case we want to apply `.bar` but it happens to be in
+            // an atrule node. We clone that node instead of the nested one
+            // because we still want that @supports rule to be there once we
+            // applied everything.
+            //
+            // However it happens to be that the `.something-unrelated` is
+            // also in that same shared @supports atrule. This is not good,
+            // and this should not be there. The good part is that this is
+            // a clone already and it can be safely removed. The question is
+            // how do we know we can remove it. Basically what we can do is
+            // match it against the applyCandidate that you want to apply. If
+            // it doesn't match the we can safely delete it.
+            //
+            // If we didn't do this, then the `replaceSelector` function
+            // would have replaced this with something that didn't exist and
+            // therefore it removed the selector altogether. In this specific
+            // case it would result in `{}` instead of `.something-unrelated {}`
+            if (!extractClasses(rule).some((candidate) => candidate === applyCandidate)) {
+              rule.remove()
+              return
+            }
+
+            // Strip the important selector from the parent selector if at the beginning
+            let importantSelector =
+              typeof context.tailwindConfig.important === 'string'
+                ? context.tailwindConfig.important
+                : null
+
+            // We only want to move the "important" selector if this is a Tailwind-generated utility
+            // We do *not* want to do this for user CSS that happens to be structured the same
+            let isGenerated = parent.raws.tailwind !== undefined
+
+            let parentSelector =
+              isGenerated && importantSelector && parent.selector.indexOf(importantSelector) === 0
+                ? parent.selector.slice(importantSelector.length)
+                : parent.selector
+
+            // If the selector becomes empty after replacing the important selector
+            // This means that it's the same as the parent selector and we don't want to replace it
+            // Otherwise we'll crash
+            if (parentSelector === '') {
+              parentSelector = parent.selector
+            }
+
+            rule.selector = replaceSelector(parentSelector, rule.selector, applyCandidate)
+
+            // And then re-add it if it was removed
+            if (importantSelector && parentSelector !== parent.selector) {
+              rule.selector = applyImportantSelector(rule.selector, importantSelector)
+            }
+
+            rule.walkDecls((d) => {
+              d.important = meta.important || important
+            })
+
+            // Move pseudo elements to the end of the selector (if necessary)
+            let selector = parser().astSync(rule.selector)
+            selector.each((sel) => movePseudos(sel))
+            rule.selector = selector.toString()
+          })
+        }
+
+        // It could be that the node we were inserted was removed because the class didn't match
+        // If that was the *only* rule in the parent, then we have nothing add so we skip it
+        if (!root.nodes[0]) {
+          continue
+        }
+
+        // Insert it
+        siblings.push([meta.sort, root.nodes[0]])
+      }
+    }
+
+    // Inject the rules, sorted, correctly
+    let nodes = context.offsets.sort(siblings).map((s) => s[1])
+
+    // `parent` refers to the node at `.abc` in: .abc { @apply mt-2 }
+    parent.after(nodes)
+  }
+
+  for (let apply of applies) {
+    // If there are left-over declarations, just remove the @apply
+    if (apply.parent.nodes.length > 1) {
+      apply.remove()
+    } else {
+      // The node is empty, drop the full node
+      apply.parent.remove()
+    }
+  }
+
+  // Do it again, in case we have other `@apply` rules
+  processApply(root, context, localCache)
+}
+
+export default function expandApplyAtRules(context) {
+  return (root) => {
+    // Build a cache of the user's CSS so we can use it to resolve classes used by @apply
+    let localCache = lazyCache(() => buildLocalApplyCache(root, context))
+
+    processApply(root, context, localCache)
+  }
+}
Index: frontend/node_modules/tailwindcss/src/lib/expandTailwindAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/expandTailwindAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/expandTailwindAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,282 @@
+import fs from 'fs'
+import LRU from '@alloc/quick-lru'
+import * as sharedState from './sharedState'
+import { generateRules } from './generateRules'
+import log from '../util/log'
+import cloneNodes from '../util/cloneNodes'
+import { defaultExtractor } from './defaultExtractor'
+
+let env = sharedState.env
+
+const builtInExtractors = {
+  DEFAULT: defaultExtractor,
+}
+
+const builtInTransformers = {
+  DEFAULT: (content) => content,
+  svelte: (content) => content.replace(/(?:^|\s)class:/g, ' '),
+}
+
+function getExtractor(context, fileExtension) {
+  let extractors = context.tailwindConfig.content.extract
+
+  return (
+    extractors[fileExtension] ||
+    extractors.DEFAULT ||
+    builtInExtractors[fileExtension] ||
+    builtInExtractors.DEFAULT(context)
+  )
+}
+
+function getTransformer(tailwindConfig, fileExtension) {
+  let transformers = tailwindConfig.content.transform
+
+  return (
+    transformers[fileExtension] ||
+    transformers.DEFAULT ||
+    builtInTransformers[fileExtension] ||
+    builtInTransformers.DEFAULT
+  )
+}
+
+let extractorCache = new WeakMap()
+
+// Scans template contents for possible classes. This is a hot path on initial build but
+// not too important for subsequent builds. The faster the better though — if we can speed
+// up these regexes by 50% that could cut initial build time by like 20%.
+function getClassCandidates(content, extractor, candidates, seen) {
+  if (!extractorCache.has(extractor)) {
+    extractorCache.set(extractor, new LRU({ maxSize: 25000 }))
+  }
+
+  for (let line of content.split('\n')) {
+    line = line.trim()
+
+    if (seen.has(line)) {
+      continue
+    }
+    seen.add(line)
+
+    if (extractorCache.get(extractor).has(line)) {
+      for (let match of extractorCache.get(extractor).get(line)) {
+        candidates.add(match)
+      }
+    } else {
+      let extractorMatches = extractor(line).filter((s) => s !== '!*')
+      let lineMatchesSet = new Set(extractorMatches)
+
+      for (let match of lineMatchesSet) {
+        candidates.add(match)
+      }
+
+      extractorCache.get(extractor).set(line, lineMatchesSet)
+    }
+  }
+}
+
+/**
+ *
+ * @param {[import('./offsets.js').RuleOffset, import('postcss').Node][]} rules
+ * @param {*} context
+ */
+function buildStylesheet(rules, context) {
+  let sortedRules = context.offsets.sort(rules)
+
+  let returnValue = {
+    base: new Set(),
+    defaults: new Set(),
+    components: new Set(),
+    utilities: new Set(),
+    variants: new Set(),
+  }
+
+  for (let [sort, rule] of sortedRules) {
+    returnValue[sort.layer].add(rule)
+  }
+
+  return returnValue
+}
+
+export default function expandTailwindAtRules(context) {
+  return async (root) => {
+    let layerNodes = {
+      base: null,
+      components: null,
+      utilities: null,
+      variants: null,
+    }
+
+    root.walkAtRules((rule) => {
+      // Make sure this file contains Tailwind directives. If not, we can save
+      // a lot of work and bail early. Also we don't have to register our touch
+      // file as a dependency since the output of this CSS does not depend on
+      // the source of any templates. Think Vue <style> blocks for example.
+      if (rule.name === 'tailwind') {
+        if (Object.keys(layerNodes).includes(rule.params)) {
+          layerNodes[rule.params] = rule
+        }
+      }
+    })
+
+    if (Object.values(layerNodes).every((n) => n === null)) {
+      return root
+    }
+
+    // ---
+
+    // Find potential rules in changed files
+    let candidates = new Set([...(context.candidates ?? []), sharedState.NOT_ON_DEMAND])
+    let seen = new Set()
+
+    env.DEBUG && console.time('Reading changed files')
+
+    /** @type {[item: {file?: string, content?: string}, meta: {transformer: any, extractor: any}][]} */
+    let regexParserContent = []
+
+    for (let item of context.changedContent) {
+      let transformer = getTransformer(context.tailwindConfig, item.extension)
+      let extractor = getExtractor(context, item.extension)
+      regexParserContent.push([item, { transformer, extractor }])
+    }
+
+    const BATCH_SIZE = 500
+
+    for (let i = 0; i < regexParserContent.length; i += BATCH_SIZE) {
+      let batch = regexParserContent.slice(i, i + BATCH_SIZE)
+      await Promise.all(
+        batch.map(async ([{ file, content }, { transformer, extractor }]) => {
+          content = file ? await fs.promises.readFile(file, 'utf8') : content
+          getClassCandidates(transformer(content), extractor, candidates, seen)
+        })
+      )
+    }
+
+    env.DEBUG && console.timeEnd('Reading changed files')
+
+    // ---
+
+    // Generate the actual CSS
+    let classCacheCount = context.classCache.size
+
+    env.DEBUG && console.time('Generate rules')
+    env.DEBUG && console.time('Sorting candidates')
+    let sortedCandidates = new Set(
+      [...candidates].sort((a, z) => {
+        if (a === z) return 0
+        if (a < z) return -1
+        return 1
+      })
+    )
+    env.DEBUG && console.timeEnd('Sorting candidates')
+    generateRules(sortedCandidates, context)
+    env.DEBUG && console.timeEnd('Generate rules')
+
+    // We only ever add to the classCache, so if it didn't grow, there is nothing new.
+    env.DEBUG && console.time('Build stylesheet')
+    if (context.stylesheetCache === null || context.classCache.size !== classCacheCount) {
+      context.stylesheetCache = buildStylesheet([...context.ruleCache], context)
+    }
+    env.DEBUG && console.timeEnd('Build stylesheet')
+
+    let {
+      defaults: defaultNodes,
+      base: baseNodes,
+      components: componentNodes,
+      utilities: utilityNodes,
+      variants: screenNodes,
+    } = context.stylesheetCache
+
+    // ---
+
+    // Replace any Tailwind directives with generated CSS
+
+    if (layerNodes.base) {
+      layerNodes.base.before(
+        cloneNodes([...defaultNodes, ...baseNodes], layerNodes.base.source, {
+          layer: 'base',
+        })
+      )
+      layerNodes.base.remove()
+    }
+
+    if (layerNodes.components) {
+      layerNodes.components.before(
+        cloneNodes([...componentNodes], layerNodes.components.source, {
+          layer: 'components',
+        })
+      )
+      layerNodes.components.remove()
+    }
+
+    if (layerNodes.utilities) {
+      layerNodes.utilities.before(
+        cloneNodes([...utilityNodes], layerNodes.utilities.source, {
+          layer: 'utilities',
+        })
+      )
+      layerNodes.utilities.remove()
+    }
+
+    // We do post-filtering to not alter the emitted order of the variants
+    const variantNodes = Array.from(screenNodes).filter((node) => {
+      const parentLayer = node.raws.tailwind?.parentLayer
+
+      if (parentLayer === 'components') {
+        return layerNodes.components !== null
+      }
+
+      if (parentLayer === 'utilities') {
+        return layerNodes.utilities !== null
+      }
+
+      return true
+    })
+
+    if (layerNodes.variants) {
+      layerNodes.variants.before(
+        cloneNodes(variantNodes, layerNodes.variants.source, {
+          layer: 'variants',
+        })
+      )
+      layerNodes.variants.remove()
+    } else if (variantNodes.length > 0) {
+      root.append(
+        cloneNodes(variantNodes, root.source, {
+          layer: 'variants',
+        })
+      )
+    }
+
+    // TODO: Why is the root node having no source location for `end` possible?
+    root.source.end = root.source.end ?? root.source.start
+
+    // If we've got a utility layer and no utilities are generated there's likely something wrong
+    const hasUtilityVariants = variantNodes.some(
+      (node) => node.raws.tailwind?.parentLayer === 'utilities'
+    )
+
+    if (layerNodes.utilities && utilityNodes.size === 0 && !hasUtilityVariants) {
+      log.warn('content-problems', [
+        'No utility classes were detected in your source files. If this is unexpected, double-check the `content` option in your Tailwind CSS configuration.',
+        'https://tailwindcss.com/docs/content-configuration',
+      ])
+    }
+
+    // ---
+
+    if (env.DEBUG) {
+      console.log('Potential classes: ', candidates.size)
+      console.log('Active contexts: ', sharedState.contextSourcesMap.size)
+    }
+
+    // Clear the cache for the changed files
+    context.changedContent = []
+
+    // Cleanup any leftover @layer atrules
+    root.walkAtRules('layer', (rule) => {
+      if (Object.keys(layerNodes).includes(rule.params)) {
+        rule.remove()
+      }
+    })
+  }
+}
Index: frontend/node_modules/tailwindcss/src/lib/findAtConfigPath.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/findAtConfigPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/findAtConfigPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,48 @@
+import fs from 'fs'
+import path from 'path'
+
+/**
+ * Find the @config at-rule in the given CSS AST and return the relative path to the config file
+ *
+ * @param {import('postcss').Root} root
+ * @param {import('postcss').Result} result
+ */
+export function findAtConfigPath(root, result) {
+  let configPath = null
+  let relativeTo = null
+
+  root.walkAtRules('config', (rule) => {
+    relativeTo = rule.source?.input.file ?? result.opts.from ?? null
+
+    if (relativeTo === null) {
+      throw rule.error(
+        'The `@config` directive cannot be used without setting `from` in your PostCSS config.'
+      )
+    }
+
+    if (configPath) {
+      throw rule.error('Only one `@config` directive is allowed per file.')
+    }
+
+    let matches = rule.params.match(/(['"])(.*?)\1/)
+    if (!matches) {
+      throw rule.error('A path is required when using the `@config` directive.')
+    }
+
+    let inputPath = matches[2]
+    if (path.isAbsolute(inputPath)) {
+      throw rule.error('The `@config` directive cannot be used with an absolute path.')
+    }
+
+    configPath = path.resolve(path.dirname(relativeTo), inputPath)
+    if (!fs.existsSync(configPath)) {
+      throw rule.error(
+        `The config file at "${inputPath}" does not exist. Make sure the path is correct and the file exists.`
+      )
+    }
+
+    rule.remove()
+  })
+
+  return configPath ? configPath : null
+}
Index: frontend/node_modules/tailwindcss/src/lib/generateRules.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/generateRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/generateRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,958 @@
+import postcss from 'postcss'
+import selectorParser from 'postcss-selector-parser'
+import parseObjectStyles from '../util/parseObjectStyles'
+import isPlainObject from '../util/isPlainObject'
+import prefixSelector from '../util/prefixSelector'
+import { updateAllClasses, getMatchingTypes } from '../util/pluginUtils'
+import log from '../util/log'
+import * as sharedState from './sharedState'
+import {
+  formatVariantSelector,
+  finalizeSelector,
+  eliminateIrrelevantSelectors,
+} from '../util/formatVariantSelector'
+import { asClass } from '../util/nameClass'
+import { normalize } from '../util/dataTypes'
+import { isValidVariantFormatString, parseVariant, INTERNAL_FEATURES } from './setupContextUtils'
+import isValidArbitraryValue from '../util/isSyntacticallyValidPropertyValue'
+import { splitAtTopLevelOnly } from '../util/splitAtTopLevelOnly.js'
+import { flagEnabled } from '../featureFlags'
+import { applyImportantSelector } from '../util/applyImportantSelector'
+
+let classNameParser = selectorParser((selectors) => {
+  return selectors.first.filter(({ type }) => type === 'class').pop().value
+})
+
+export function getClassNameFromSelector(selector) {
+  return classNameParser.transformSync(selector)
+}
+
+// Generate match permutations for a class candidate, like:
+// ['ring-offset-blue', '100']
+// ['ring-offset', 'blue-100']
+// ['ring', 'offset-blue-100']
+// Example with dynamic classes:
+// ['grid-cols', '[[linename],1fr,auto]']
+// ['grid', 'cols-[[linename],1fr,auto]']
+function* candidatePermutations(candidate) {
+  let lastIndex = Infinity
+
+  while (lastIndex >= 0) {
+    let dashIdx
+    let wasSlash = false
+
+    if (lastIndex === Infinity && candidate.endsWith(']')) {
+      let bracketIdx = candidate.indexOf('[')
+
+      // If character before `[` isn't a dash or a slash, this isn't a dynamic class
+      // eg. string[]
+      if (candidate[bracketIdx - 1] === '-') {
+        dashIdx = bracketIdx - 1
+      } else if (candidate[bracketIdx - 1] === '/') {
+        dashIdx = bracketIdx - 1
+        wasSlash = true
+      } else {
+        dashIdx = -1
+      }
+    } else if (lastIndex === Infinity && candidate.includes('/')) {
+      dashIdx = candidate.lastIndexOf('/')
+      wasSlash = true
+    } else {
+      dashIdx = candidate.lastIndexOf('-', lastIndex)
+    }
+
+    if (dashIdx < 0) {
+      break
+    }
+
+    let prefix = candidate.slice(0, dashIdx)
+    let modifier = candidate.slice(wasSlash ? dashIdx : dashIdx + 1)
+
+    lastIndex = dashIdx - 1
+
+    // TODO: This feels a bit hacky
+    if (prefix === '' || modifier === '/') {
+      continue
+    }
+
+    yield [prefix, modifier]
+  }
+}
+
+function applyPrefix(matches, context) {
+  if (matches.length === 0 || context.tailwindConfig.prefix === '') {
+    return matches
+  }
+
+  for (let match of matches) {
+    let [meta] = match
+    if (meta.options.respectPrefix) {
+      let container = postcss.root({ nodes: [match[1].clone()] })
+      let classCandidate = match[1].raws.tailwind.classCandidate
+
+      container.walkRules((r) => {
+        // If this is a negative utility with a dash *before* the prefix we
+        // have to ensure that the generated selector matches the candidate
+
+        // Not doing this will cause `-tw-top-1` to generate the class `.tw--top-1`
+        // The disconnect between candidate <-> class can cause @apply to hard crash.
+        let shouldPrependNegative = classCandidate.startsWith('-')
+
+        r.selector = prefixSelector(
+          context.tailwindConfig.prefix,
+          r.selector,
+          shouldPrependNegative
+        )
+      })
+
+      match[1] = container.nodes[0]
+    }
+  }
+
+  return matches
+}
+
+function applyImportant(matches, classCandidate) {
+  if (matches.length === 0) {
+    return matches
+  }
+
+  let result = []
+
+  function isInKeyframes(rule) {
+    return rule.parent && rule.parent.type === 'atrule' && rule.parent.name === 'keyframes'
+  }
+
+  for (let [meta, rule] of matches) {
+    let container = postcss.root({ nodes: [rule.clone()] })
+
+    container.walkRules((r) => {
+      // Declarations inside keyframes cannot be marked as important
+      // They will be ignored by the browser
+      if (isInKeyframes(r)) {
+        return
+      }
+
+      let ast = selectorParser().astSync(r.selector)
+
+      // Remove extraneous selectors that do not include the base candidate
+      ast.each((sel) => eliminateIrrelevantSelectors(sel, classCandidate))
+
+      // Update all instances of the base candidate to include the important marker
+      updateAllClasses(ast, (className) =>
+        className === classCandidate ? `!${className}` : className
+      )
+
+      let newSelector = ast.toString()
+
+      if (newSelector.trim() === '') {
+        r.remove()
+        return
+      }
+
+      r.selector = newSelector
+
+      r.walkDecls((d) => (d.important = true))
+    })
+
+    result.push([{ ...meta, important: true }, container.nodes[0]])
+  }
+
+  return result
+}
+
+// Takes a list of rule tuples and applies a variant like `hover`, sm`,
+// whatever to it. We used to do some extra caching here to avoid generating
+// a variant of the same rule more than once, but this was never hit because
+// we cache at the entire selector level further up the tree.
+//
+// Technically you can get a cache hit if you have `hover:focus:text-center`
+// and `focus:hover:text-center` in the same project, but it doesn't feel
+// worth the complexity for that case.
+
+function applyVariant(variant, matches, context) {
+  if (matches.length === 0) {
+    return matches
+  }
+
+  /** @type {{modifier: string | null, value: string | null}} */
+  let args = { modifier: null, value: sharedState.NONE }
+
+  // Retrieve "modifier"
+  {
+    let [baseVariant, ...modifiers] = splitAtTopLevelOnly(variant, '/')
+
+    // This is a hack to support variants with `/` in them, like `ar-1/10/20:text-red-500`
+    // In this case 1/10 is a value but /20 is a modifier
+    if (modifiers.length > 1) {
+      baseVariant = baseVariant + '/' + modifiers.slice(0, -1).join('/')
+      modifiers = modifiers.slice(-1)
+    }
+
+    if (modifiers.length && !context.variantMap.has(variant)) {
+      variant = baseVariant
+      args.modifier = modifiers[0]
+
+      if (!flagEnabled(context.tailwindConfig, 'generalizedModifiers')) {
+        return []
+      }
+    }
+  }
+
+  // Retrieve "arbitrary value"
+  if (variant.endsWith(']') && !variant.startsWith('[')) {
+    // We either have:
+    //   @[200px]
+    //   group-[:hover]
+    //
+    // But we don't want:
+    //   @-[200px]        (`-` is incorrect)
+    //   group[:hover]    (`-` is missing)
+    let match = /(.)(-?)\[(.*)\]/g.exec(variant)
+    if (match) {
+      let [, char, separator, value] = match
+      // @-[200px] case
+      if (char === '@' && separator === '-') return []
+      // group[:hover] case
+      if (char !== '@' && separator === '') return []
+
+      variant = variant.replace(`${separator}[${value}]`, '')
+      args.value = value
+    }
+  }
+
+  // Register arbitrary variants
+  if (isArbitraryValue(variant) && !context.variantMap.has(variant)) {
+    let sort = context.offsets.recordVariant(variant)
+
+    let selector = normalize(variant.slice(1, -1))
+    let selectors = splitAtTopLevelOnly(selector, ',')
+
+    // We do not support multiple selectors for arbitrary variants
+    if (selectors.length > 1) {
+      return []
+    }
+
+    if (!selectors.every(isValidVariantFormatString)) {
+      return []
+    }
+
+    let records = selectors.map((sel, idx) => [
+      context.offsets.applyParallelOffset(sort, idx),
+      parseVariant(sel.trim()),
+    ])
+
+    context.variantMap.set(variant, records)
+  }
+
+  if (context.variantMap.has(variant)) {
+    let isArbitraryVariant = isArbitraryValue(variant)
+    let internalFeatures = context.variantOptions.get(variant)?.[INTERNAL_FEATURES] ?? {}
+    let variantFunctionTuples = context.variantMap.get(variant).slice()
+    let result = []
+
+    let respectPrefix = (() => {
+      if (isArbitraryVariant) return false
+      if (internalFeatures.respectPrefix === false) return false
+      return true
+    })()
+
+    for (let [meta, rule] of matches) {
+      // Don't generate variants for user css
+      if (meta.layer === 'user') {
+        continue
+      }
+
+      let container = postcss.root({ nodes: [rule.clone()] })
+
+      for (let [variantSort, variantFunction, containerFromArray] of variantFunctionTuples) {
+        let clone = (containerFromArray ?? container).clone()
+        let collectedFormats = []
+
+        function prepareBackup() {
+          // Already prepared, chicken out
+          if (clone.raws.neededBackup) {
+            return
+          }
+          clone.raws.neededBackup = true
+          clone.walkRules((rule) => (rule.raws.originalSelector = rule.selector))
+        }
+
+        function modifySelectors(modifierFunction) {
+          prepareBackup()
+          clone.each((rule) => {
+            if (rule.type !== 'rule') {
+              return
+            }
+
+            rule.selectors = rule.selectors.map((selector) => {
+              return modifierFunction({
+                get className() {
+                  return getClassNameFromSelector(selector)
+                },
+                selector,
+              })
+            })
+          })
+
+          return clone
+        }
+
+        let ruleWithVariant = variantFunction({
+          // Public API
+          get container() {
+            prepareBackup()
+            return clone
+          },
+          separator: context.tailwindConfig.separator,
+          modifySelectors,
+
+          // Private API for now
+          wrap(wrapper) {
+            let nodes = clone.nodes
+            clone.removeAll()
+            wrapper.append(nodes)
+            clone.append(wrapper)
+          },
+          format(selectorFormat) {
+            collectedFormats.push({
+              format: selectorFormat,
+              respectPrefix,
+            })
+          },
+          args,
+        })
+
+        // It can happen that a list of format strings is returned from within the function. In that
+        // case, we have to process them as well. We can use the existing `variantSort`.
+        if (Array.isArray(ruleWithVariant)) {
+          for (let [idx, variantFunction] of ruleWithVariant.entries()) {
+            // This is a little bit scary since we are pushing to an array of items that we are
+            // currently looping over. However, you can also think of it like a processing queue
+            // where you keep handling jobs until everything is done and each job can queue more
+            // jobs if needed.
+            variantFunctionTuples.push([
+              context.offsets.applyParallelOffset(variantSort, idx),
+              variantFunction,
+
+              // If the clone has been modified we have to pass that back
+              // though so each rule can use the modified container
+              clone.clone(),
+            ])
+          }
+          continue
+        }
+
+        if (typeof ruleWithVariant === 'string') {
+          collectedFormats.push({
+            format: ruleWithVariant,
+            respectPrefix,
+          })
+        }
+
+        if (ruleWithVariant === null) {
+          continue
+        }
+
+        // We had to backup selectors, therefore we assume that somebody touched
+        // `container` or `modifySelectors`. Let's see if they did, so that we
+        // can restore the selectors, and collect the format strings.
+        if (clone.raws.neededBackup) {
+          delete clone.raws.neededBackup
+          clone.walkRules((rule) => {
+            let before = rule.raws.originalSelector
+            if (!before) return
+            delete rule.raws.originalSelector
+            if (before === rule.selector) return // No mutation happened
+
+            let modified = rule.selector
+
+            // Rebuild the base selector, this is what plugin authors would do
+            // as well. E.g.: `${variant}${separator}${className}`.
+            // However, plugin authors probably also prepend or append certain
+            // classes, pseudos, ids, ...
+            let rebuiltBase = selectorParser((selectors) => {
+              selectors.walkClasses((classNode) => {
+                classNode.value = `${variant}${context.tailwindConfig.separator}${classNode.value}`
+              })
+            }).processSync(before)
+
+            // Now that we know the original selector, the new selector, and
+            // the rebuild part in between, we can replace the part that plugin
+            // authors need to rebuild with `&`, and eventually store it in the
+            // collectedFormats. Similar to what `format('...')` would do.
+            //
+            // E.g.:
+            //                   variant: foo
+            //                  selector: .markdown > p
+            //      modified (by plugin): .foo .foo\\:markdown > p
+            //    rebuiltBase (internal): .foo\\:markdown > p
+            //                    format: .foo &
+            collectedFormats.push({
+              format: modified.replace(rebuiltBase, '&'),
+              respectPrefix,
+            })
+            rule.selector = before
+          })
+        }
+
+        // This tracks the originating layer for the variant
+        // For example:
+        // .sm:underline {} is a variant of something in the utilities layer
+        // .sm:container {} is a variant of the container component
+        clone.nodes[0].raws.tailwind = { ...clone.nodes[0].raws.tailwind, parentLayer: meta.layer }
+
+        let withOffset = [
+          {
+            ...meta,
+            sort: context.offsets.applyVariantOffset(
+              meta.sort,
+              variantSort,
+              Object.assign(args, context.variantOptions.get(variant))
+            ),
+            collectedFormats: (meta.collectedFormats ?? []).concat(collectedFormats),
+          },
+          clone.nodes[0],
+        ]
+        result.push(withOffset)
+      }
+    }
+
+    return result
+  }
+
+  return []
+}
+
+function parseRules(rule, cache, options = {}) {
+  // PostCSS node
+  if (!isPlainObject(rule) && !Array.isArray(rule)) {
+    return [[rule], options]
+  }
+
+  // Tuple
+  if (Array.isArray(rule)) {
+    return parseRules(rule[0], cache, rule[1])
+  }
+
+  // Simple object
+  if (!cache.has(rule)) {
+    cache.set(rule, parseObjectStyles(rule))
+  }
+
+  return [cache.get(rule), options]
+}
+
+const IS_VALID_PROPERTY_NAME = /^[a-z_-]/
+
+function isValidPropName(name) {
+  return IS_VALID_PROPERTY_NAME.test(name)
+}
+
+/**
+ * @param {string} declaration
+ * @returns {boolean}
+ */
+function looksLikeUri(declaration) {
+  // Quick bailout for obvious non-urls
+  // This doesn't support schemes that don't use a leading // but that's unlikely to be a problem
+  if (!declaration.includes('://')) {
+    return false
+  }
+
+  try {
+    const url = new URL(declaration)
+    return url.scheme !== '' && url.host !== ''
+  } catch (err) {
+    // Definitely not a valid url
+    return false
+  }
+}
+
+function isParsableNode(node) {
+  let isParsable = true
+
+  node.walkDecls((decl) => {
+    if (!isParsableCssValue(decl.prop, decl.value)) {
+      isParsable = false
+      return false
+    }
+  })
+
+  return isParsable
+}
+
+function isParsableCssValue(property, value) {
+  // We don't want to to treat [https://example.com] as a custom property
+  // Even though, according to the CSS grammar, it's a totally valid CSS declaration
+  // So we short-circuit here by checking if the custom property looks like a url
+  if (looksLikeUri(`${property}:${value}`)) {
+    return false
+  }
+
+  try {
+    postcss.parse(`a{${property}:${value}}`).toResult()
+    return true
+  } catch (err) {
+    return false
+  }
+}
+
+function extractArbitraryProperty(classCandidate, context) {
+  let [, property, value] = classCandidate.match(/^\[([a-zA-Z0-9-_]+):(\S+)\]$/) ?? []
+
+  if (value === undefined) {
+    return null
+  }
+
+  if (!isValidPropName(property)) {
+    return null
+  }
+
+  if (!isValidArbitraryValue(value)) {
+    return null
+  }
+
+  let normalized = normalize(value, { property })
+
+  if (!isParsableCssValue(property, normalized)) {
+    return null
+  }
+
+  let sort = context.offsets.arbitraryProperty(classCandidate)
+
+  return [
+    [
+      { sort, layer: 'utilities', options: { respectImportant: true } },
+      () => ({
+        [asClass(classCandidate)]: {
+          [property]: normalized,
+        },
+      }),
+    ],
+  ]
+}
+
+function* resolveMatchedPlugins(classCandidate, context) {
+  if (context.candidateRuleMap.has(classCandidate)) {
+    yield [context.candidateRuleMap.get(classCandidate), 'DEFAULT']
+  }
+
+  yield* (function* (arbitraryPropertyRule) {
+    if (arbitraryPropertyRule !== null) {
+      yield [arbitraryPropertyRule, 'DEFAULT']
+    }
+  })(extractArbitraryProperty(classCandidate, context))
+
+  let candidatePrefix = classCandidate
+  let negative = false
+
+  const twConfigPrefix = context.tailwindConfig.prefix
+
+  const twConfigPrefixLen = twConfigPrefix.length
+
+  const hasMatchingPrefix =
+    candidatePrefix.startsWith(twConfigPrefix) || candidatePrefix.startsWith(`-${twConfigPrefix}`)
+
+  if (candidatePrefix[twConfigPrefixLen] === '-' && hasMatchingPrefix) {
+    negative = true
+    candidatePrefix = twConfigPrefix + candidatePrefix.slice(twConfigPrefixLen + 1)
+  }
+
+  if (negative && context.candidateRuleMap.has(candidatePrefix)) {
+    yield [context.candidateRuleMap.get(candidatePrefix), '-DEFAULT']
+  }
+
+  for (let [prefix, modifier] of candidatePermutations(candidatePrefix)) {
+    if (context.candidateRuleMap.has(prefix)) {
+      yield [context.candidateRuleMap.get(prefix), negative ? `-${modifier}` : modifier]
+    }
+  }
+}
+
+function splitWithSeparator(input, separator) {
+  if (input === sharedState.NOT_ON_DEMAND) {
+    return [sharedState.NOT_ON_DEMAND]
+  }
+
+  return splitAtTopLevelOnly(input, separator)
+}
+
+function* recordCandidates(matches, classCandidate) {
+  for (const match of matches) {
+    match[1].raws.tailwind = {
+      ...match[1].raws.tailwind,
+      classCandidate,
+      preserveSource: match[0].options?.preserveSource ?? false,
+    }
+
+    yield match
+  }
+}
+
+function* resolveMatches(candidate, context) {
+  let separator = context.tailwindConfig.separator
+  let [classCandidate, ...variants] = splitWithSeparator(candidate, separator).reverse()
+  let important = false
+
+  if (classCandidate.startsWith('!')) {
+    important = true
+    classCandidate = classCandidate.slice(1)
+  }
+
+  // TODO: Reintroduce this in ways that doesn't break on false positives
+  // function sortAgainst(toSort, against) {
+  //   return toSort.slice().sort((a, z) => {
+  //     return bigSign(against.get(a)[0] - against.get(z)[0])
+  //   })
+  // }
+  // let sorted = sortAgainst(variants, context.variantMap)
+  // if (sorted.toString() !== variants.toString()) {
+  //   let corrected = sorted.reverse().concat(classCandidate).join(':')
+  //   throw new Error(`Class ${candidate} should be written as ${corrected}`)
+  // }
+
+  for (let matchedPlugins of resolveMatchedPlugins(classCandidate, context)) {
+    let matches = []
+    let typesByMatches = new Map()
+
+    let [plugins, modifier] = matchedPlugins
+    let isOnlyPlugin = plugins.length === 1
+
+    for (let [sort, plugin] of plugins) {
+      let matchesPerPlugin = []
+
+      if (typeof plugin === 'function') {
+        for (let ruleSet of [].concat(plugin(modifier, { isOnlyPlugin }))) {
+          let [rules, options] = parseRules(ruleSet, context.postCssNodeCache)
+          for (let rule of rules) {
+            matchesPerPlugin.push([{ ...sort, options: { ...sort.options, ...options } }, rule])
+          }
+        }
+      }
+      // Only process static plugins on exact matches
+      else if (modifier === 'DEFAULT' || modifier === '-DEFAULT') {
+        let ruleSet = plugin
+        let [rules, options] = parseRules(ruleSet, context.postCssNodeCache)
+        for (let rule of rules) {
+          matchesPerPlugin.push([{ ...sort, options: { ...sort.options, ...options } }, rule])
+        }
+      }
+
+      if (matchesPerPlugin.length > 0) {
+        let matchingTypes = Array.from(
+          getMatchingTypes(
+            sort.options?.types ?? [],
+            modifier,
+            sort.options ?? {},
+            context.tailwindConfig
+          )
+        ).map(([_, type]) => type)
+
+        if (matchingTypes.length > 0) {
+          typesByMatches.set(matchesPerPlugin, matchingTypes)
+        }
+
+        matches.push(matchesPerPlugin)
+      }
+    }
+
+    if (isArbitraryValue(modifier)) {
+      if (matches.length > 1) {
+        // Partition plugins in 2 categories so that we can start searching in the plugins that
+        // don't have `any` as a type first.
+        let [withAny, withoutAny] = matches.reduce(
+          (group, plugin) => {
+            let hasAnyType = plugin.some(([{ options }]) =>
+              options.types.some(({ type }) => type === 'any')
+            )
+
+            if (hasAnyType) {
+              group[0].push(plugin)
+            } else {
+              group[1].push(plugin)
+            }
+            return group
+          },
+          [[], []]
+        )
+
+        function findFallback(matches) {
+          // If only a single plugin matches, let's take that one
+          if (matches.length === 1) {
+            return matches[0]
+          }
+
+          // Otherwise, find the plugin that creates a valid rule given the arbitrary value, and
+          // also has the correct type which preferOnConflicts the plugin in case of clashes.
+          return matches.find((rules) => {
+            let matchingTypes = typesByMatches.get(rules)
+            return rules.some(([{ options }, rule]) => {
+              if (!isParsableNode(rule)) {
+                return false
+              }
+
+              return options.types.some(
+                ({ type, preferOnConflict }) => matchingTypes.includes(type) && preferOnConflict
+              )
+            })
+          })
+        }
+
+        // Try to find a fallback plugin, because we already know that multiple plugins matched for
+        // the given arbitrary value.
+        let fallback = findFallback(withoutAny) ?? findFallback(withAny)
+        if (fallback) {
+          matches = [fallback]
+        }
+
+        // We couldn't find a fallback plugin which means that there are now multiple plugins that
+        // generated css for the current candidate. This means that the result is ambiguous and this
+        // should not happen. We won't generate anything right now, so let's report this to the user
+        // by logging some options about what they can do.
+        else {
+          let typesPerPlugin = matches.map(
+            (match) => new Set([...(typesByMatches.get(match) ?? [])])
+          )
+
+          // Remove duplicates, so that we can detect proper unique types for each plugin.
+          for (let pluginTypes of typesPerPlugin) {
+            for (let type of pluginTypes) {
+              let removeFromOwnGroup = false
+
+              for (let otherGroup of typesPerPlugin) {
+                if (pluginTypes === otherGroup) continue
+
+                if (otherGroup.has(type)) {
+                  otherGroup.delete(type)
+                  removeFromOwnGroup = true
+                }
+              }
+
+              if (removeFromOwnGroup) pluginTypes.delete(type)
+            }
+          }
+
+          let messages = []
+
+          for (let [idx, group] of typesPerPlugin.entries()) {
+            for (let type of group) {
+              let rules = matches[idx]
+                .map(([, rule]) => rule)
+                .flat()
+                .map((rule) =>
+                  rule
+                    .toString()
+                    .split('\n')
+                    .slice(1, -1) // Remove selector and closing '}'
+                    .map((line) => line.trim())
+                    .map((x) => `      ${x}`) // Re-indent
+                    .join('\n')
+                )
+                .join('\n\n')
+
+              messages.push(
+                `  Use \`${candidate.replace('[', `[${type}:`)}\` for \`${rules.trim()}\``
+              )
+              break
+            }
+          }
+
+          log.warn([
+            `The class \`${candidate}\` is ambiguous and matches multiple utilities.`,
+            ...messages,
+            `If this is content and not a class, replace it with \`${candidate
+              .replace('[', '&lsqb;')
+              .replace(']', '&rsqb;')}\` to silence this warning.`,
+          ])
+          continue
+        }
+      }
+
+      matches = matches.map((list) => list.filter((match) => isParsableNode(match[1])))
+    }
+
+    matches = matches.flat()
+    matches = Array.from(recordCandidates(matches, classCandidate))
+    matches = applyPrefix(matches, context)
+
+    if (important) {
+      matches = applyImportant(matches, classCandidate)
+    }
+
+    for (let variant of variants) {
+      matches = applyVariant(variant, matches, context)
+    }
+
+    for (let match of matches) {
+      match[1].raws.tailwind = { ...match[1].raws.tailwind, candidate }
+
+      // Apply final format selector
+      match = applyFinalFormat(match, { context, candidate })
+
+      // Skip rules with invalid selectors
+      // This will cause the candidate to be added to the "not class"
+      // cache skipping it entirely for future builds
+      if (match === null) {
+        continue
+      }
+
+      yield match
+    }
+  }
+}
+
+function applyFinalFormat(match, { context, candidate }) {
+  if (!match[0].collectedFormats) {
+    return match
+  }
+
+  let isValid = true
+  let finalFormat
+
+  try {
+    finalFormat = formatVariantSelector(match[0].collectedFormats, {
+      context,
+      candidate,
+    })
+  } catch {
+    // The format selector we produced is invalid
+    // This could be because:
+    // - A bug exists
+    // - A plugin introduced an invalid variant selector (ex: `addVariant('foo', '&;foo')`)
+    // - The user used an invalid arbitrary variant (ex: `[&;foo]:underline`)
+    // Either way the build will fail because of this
+    // We would rather that the build pass "silently" given that this could
+    // happen because of picking up invalid things when scanning content
+    // So we'll throw out the candidate instead
+
+    return null
+  }
+
+  let container = postcss.root({ nodes: [match[1].clone()] })
+
+  container.walkRules((rule) => {
+    if (inKeyframes(rule)) {
+      return
+    }
+
+    try {
+      let selector = finalizeSelector(rule.selector, finalFormat, {
+        candidate,
+        context,
+      })
+
+      // Finalize Selector determined that this candidate is irrelevant
+      // TODO: This elimination should happen earlier so this never happens
+      if (selector === null) {
+        rule.remove()
+        return
+      }
+
+      rule.selector = selector
+    } catch {
+      // If this selector is invalid we also want to skip it
+      // But it's likely that being invalid here means there's a bug in a plugin rather than too loosely matching content
+      isValid = false
+      return false
+    }
+  })
+
+  if (!isValid) {
+    return null
+  }
+
+  // If all rules have been eliminated we can skip this candidate entirely
+  if (container.nodes.length === 0) {
+    return null
+  }
+
+  match[1] = container.nodes[0]
+
+  return match
+}
+
+function inKeyframes(rule) {
+  return rule.parent && rule.parent.type === 'atrule' && rule.parent.name === 'keyframes'
+}
+
+function getImportantStrategy(important) {
+  if (important === true) {
+    return (rule) => {
+      if (inKeyframes(rule)) {
+        return
+      }
+
+      rule.walkDecls((d) => {
+        if (d.parent.type === 'rule' && !inKeyframes(d.parent)) {
+          d.important = true
+        }
+      })
+    }
+  }
+
+  if (typeof important === 'string') {
+    return (rule) => {
+      if (inKeyframes(rule)) {
+        return
+      }
+
+      rule.selectors = rule.selectors.map((selector) => {
+        return applyImportantSelector(selector, important)
+      })
+    }
+  }
+}
+
+function generateRules(candidates, context, isSorting = false) {
+  let allRules = []
+  let strategy = getImportantStrategy(context.tailwindConfig.important)
+
+  for (let candidate of candidates) {
+    if (context.notClassCache.has(candidate)) {
+      continue
+    }
+
+    if (context.candidateRuleCache.has(candidate)) {
+      allRules = allRules.concat(Array.from(context.candidateRuleCache.get(candidate)))
+      continue
+    }
+
+    let matches = Array.from(resolveMatches(candidate, context))
+
+    if (matches.length === 0) {
+      context.notClassCache.add(candidate)
+      continue
+    }
+
+    context.classCache.set(candidate, matches)
+
+    let rules = context.candidateRuleCache.get(candidate) ?? new Set()
+    context.candidateRuleCache.set(candidate, rules)
+
+    for (const match of matches) {
+      let [{ sort, options }, rule] = match
+
+      if (options.respectImportant && strategy) {
+        let container = postcss.root({ nodes: [rule.clone()] })
+        container.walkRules(strategy)
+        rule = container.nodes[0]
+      }
+
+      // Note: We have to clone rules during sorting
+      // so we eliminate some shared mutable state
+      let newEntry = [sort, isSorting ? rule.clone() : rule]
+      rules.add(newEntry)
+      context.ruleCache.add(newEntry)
+      allRules.push(newEntry)
+    }
+  }
+
+  return allRules
+}
+
+function isArbitraryValue(input) {
+  return input.startsWith('[') && input.endsWith(']')
+}
+
+export { resolveMatches, generateRules }
Index: frontend/node_modules/tailwindcss/src/lib/getModuleDependencies.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/getModuleDependencies.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/getModuleDependencies.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,79 @@
+import fs from 'fs'
+import path from 'path'
+
+let jsExtensions = ['.js', '.cjs', '.mjs']
+
+// Given the current file `a.ts`, we want to make sure that when importing `b` that we resolve
+// `b.ts` before `b.js`
+//
+// E.g.:
+//
+// a.ts
+//   b // .ts
+//   c // .ts
+// a.js
+//   b // .js or .ts
+
+let jsResolutionOrder = ['', '.js', '.cjs', '.mjs', '.ts', '.cts', '.mts', '.jsx', '.tsx']
+let tsResolutionOrder = ['', '.ts', '.cts', '.mts', '.tsx', '.js', '.cjs', '.mjs', '.jsx']
+
+function resolveWithExtension(file, extensions) {
+  // Try to find `./a.ts`, `./a.ts`, ... from `./a`
+  for (let ext of extensions) {
+    let full = `${file}${ext}`
+    if (fs.existsSync(full) && fs.statSync(full).isFile()) {
+      return full
+    }
+  }
+
+  // Try to find `./a/index.js` from `./a`
+  for (let ext of extensions) {
+    let full = `${file}/index${ext}`
+    if (fs.existsSync(full)) {
+      return full
+    }
+  }
+
+  return null
+}
+
+function* _getModuleDependencies(filename, base, seen, ext = path.extname(filename)) {
+  // Try to find the file
+  let absoluteFile = resolveWithExtension(
+    path.resolve(base, filename),
+    jsExtensions.includes(ext) ? jsResolutionOrder : tsResolutionOrder
+  )
+  if (absoluteFile === null) return // File doesn't exist
+
+  // Prevent infinite loops when there are circular dependencies
+  if (seen.has(absoluteFile)) return // Already seen
+  seen.add(absoluteFile)
+
+  // Mark the file as a dependency
+  yield absoluteFile
+
+  // Resolve new base for new imports/requires
+  base = path.dirname(absoluteFile)
+  ext = path.extname(absoluteFile)
+
+  let contents = fs.readFileSync(absoluteFile, 'utf-8')
+
+  // Find imports/requires
+  for (let match of [
+    ...contents.matchAll(/import[\s\S]*?['"](.{3,}?)['"]/gi),
+    ...contents.matchAll(/import[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi),
+    ...contents.matchAll(/require\(['"`](.+)['"`]\)/gi),
+  ]) {
+    // Bail out if it's not a relative file
+    if (!match[1].startsWith('.')) continue
+
+    yield* _getModuleDependencies(match[1], base, seen, ext)
+  }
+}
+
+export default function getModuleDependencies(absoluteFilePath) {
+  if (absoluteFilePath === null) return new Set()
+  return new Set(
+    _getModuleDependencies(absoluteFilePath, path.dirname(absoluteFilePath), new Set())
+  )
+}
Index: frontend/node_modules/tailwindcss/src/lib/load-config.ts
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/load-config.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/load-config.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,46 @@
+import jitiFactory from 'jiti'
+import { transform } from 'sucrase'
+
+import { Config } from '../../types/config'
+
+let jiti: ReturnType<typeof jitiFactory> | null = null
+
+// @internal
+// This WILL be removed in some future release
+// If you rely on this your stuff WILL break
+export function useCustomJiti(_jiti: () => ReturnType<typeof jitiFactory>) {
+  jiti = _jiti()
+}
+
+function lazyJiti() {
+  return (
+    jiti ??
+    (jiti = jitiFactory(__filename, {
+      interopDefault: true,
+      transform: (opts) => {
+        // Sucrase can't transform import.meta so we have to use Babel
+        if (opts.source.includes('import.meta')) {
+          return require('jiti/dist/babel.js')(opts)
+        }
+
+        return transform(opts.source, {
+          transforms: ['typescript', 'imports'],
+        })
+      },
+    }))
+  )
+}
+
+export function loadConfig(path: string): Config {
+  let config = (function () {
+    if (!path) return {}
+
+    try {
+      return require(path)
+    } catch {
+      return lazyJiti()(path)
+    }
+  })()
+
+  return config.default ?? config
+}
Index: frontend/node_modules/tailwindcss/src/lib/normalizeTailwindDirectives.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/normalizeTailwindDirectives.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/normalizeTailwindDirectives.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,84 @@
+import log from '../util/log'
+
+export default function normalizeTailwindDirectives(root) {
+  let tailwindDirectives = new Set()
+  let layerDirectives = new Set()
+  let applyDirectives = new Set()
+
+  root.walkAtRules((atRule) => {
+    if (atRule.name === 'apply') {
+      applyDirectives.add(atRule)
+    }
+
+    if (atRule.name === 'import') {
+      if (atRule.params === '"tailwindcss/base"' || atRule.params === "'tailwindcss/base'") {
+        atRule.name = 'tailwind'
+        atRule.params = 'base'
+      } else if (
+        atRule.params === '"tailwindcss/components"' ||
+        atRule.params === "'tailwindcss/components'"
+      ) {
+        atRule.name = 'tailwind'
+        atRule.params = 'components'
+      } else if (
+        atRule.params === '"tailwindcss/utilities"' ||
+        atRule.params === "'tailwindcss/utilities'"
+      ) {
+        atRule.name = 'tailwind'
+        atRule.params = 'utilities'
+      } else if (
+        atRule.params === '"tailwindcss/screens"' ||
+        atRule.params === "'tailwindcss/screens'" ||
+        atRule.params === '"tailwindcss/variants"' ||
+        atRule.params === "'tailwindcss/variants'"
+      ) {
+        atRule.name = 'tailwind'
+        atRule.params = 'variants'
+      }
+    }
+
+    if (atRule.name === 'tailwind') {
+      if (atRule.params === 'screens') {
+        atRule.params = 'variants'
+      }
+      tailwindDirectives.add(atRule.params)
+    }
+
+    if (['layer', 'responsive', 'variants'].includes(atRule.name)) {
+      if (['responsive', 'variants'].includes(atRule.name)) {
+        log.warn(`${atRule.name}-at-rule-deprecated`, [
+          `The \`@${atRule.name}\` directive has been deprecated in Tailwind CSS v3.0.`,
+          `Use \`@layer utilities\` or \`@layer components\` instead.`,
+          'https://tailwindcss.com/docs/upgrade-guide#replace-variants-with-layer',
+        ])
+      }
+      layerDirectives.add(atRule)
+    }
+  })
+
+  if (
+    !tailwindDirectives.has('base') ||
+    !tailwindDirectives.has('components') ||
+    !tailwindDirectives.has('utilities')
+  ) {
+    for (let rule of layerDirectives) {
+      if (rule.name === 'layer' && ['base', 'components', 'utilities'].includes(rule.params)) {
+        if (!tailwindDirectives.has(rule.params)) {
+          throw rule.error(
+            `\`@layer ${rule.params}\` is used but no matching \`@tailwind ${rule.params}\` directive is present.`
+          )
+        }
+      } else if (rule.name === 'responsive') {
+        if (!tailwindDirectives.has('utilities')) {
+          throw rule.error('`@responsive` is used but `@tailwind utilities` is missing.')
+        }
+      } else if (rule.name === 'variants') {
+        if (!tailwindDirectives.has('utilities')) {
+          throw rule.error('`@variants` is used but `@tailwind utilities` is missing.')
+        }
+      }
+    }
+  }
+
+  return { tailwindDirectives, applyDirectives }
+}
Index: frontend/node_modules/tailwindcss/src/lib/offsets.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/offsets.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/offsets.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,432 @@
+// @ts-check
+
+import bigSign from '../util/bigSign'
+import { remapBitfield } from './remap-bitfield.js'
+
+/**
+ * @typedef {'base' | 'defaults' | 'components' | 'utilities' | 'variants' | 'user'} Layer
+ */
+
+/**
+ * @typedef {object} VariantOption
+ * @property {number} id An unique identifier to identify `matchVariant`
+ * @property {function | undefined} sort The sort function
+ * @property {string|null} value The value we want to compare
+ * @property {string|null} modifier The modifier that was used (if any)
+ * @property {bigint} variant The variant bitmask
+ */
+
+/**
+ * @typedef {object} RuleOffset
+ * @property {Layer} layer The layer that this rule belongs to
+ * @property {Layer} parentLayer The layer that this rule originally belonged to. Only different from layer if this is a variant.
+ * @property {bigint} arbitrary 0n if false, 1n if true
+ * @property {bigint} variants Dynamic size. 1 bit per registered variant. 0n means no variants
+ * @property {bigint} parallelIndex Rule index for the parallel variant. 0 if not applicable.
+ * @property {bigint} index Index of the rule / utility in its given *parent* layer. Monotonically increasing.
+ * @property {bigint} propertyOffset Offset for the arbitrary property. Only valid after sorting.
+ * @property {string} property Name/Value of the arbitrary property.
+ * @property {VariantOption[]} options Some information on how we can sort arbitrary variants
+ */
+
+export class Offsets {
+  constructor() {
+    /**
+     * Offsets for the next rule in a given layer
+     *
+     * @type {Record<Layer, bigint>}
+     */
+    this.offsets = {
+      defaults: 0n,
+      base: 0n,
+      components: 0n,
+      utilities: 0n,
+      variants: 0n,
+      user: 0n,
+    }
+
+    /**
+     * Positions for a given layer
+     *
+     * @type {Record<Layer, bigint>}
+     */
+    this.layerPositions = {
+      defaults: 0n,
+      base: 1n,
+      components: 2n,
+      utilities: 3n,
+
+      // There isn't technically a "user" layer, but we need to give it a position
+      // Because it's used for ordering user-css from @apply
+      user: 4n,
+
+      variants: 5n,
+    }
+
+    /**
+     * The total number of functions currently registered across all variants (including arbitrary variants)
+     *
+     * @type {bigint}
+     */
+    this.reservedVariantBits = 0n
+
+    /**
+     * Positions for a given variant
+     *
+     * @type {Map<string, bigint>}
+     */
+    this.variantOffsets = new Map()
+  }
+
+  /**
+   * @param {Layer} layer
+   * @returns {RuleOffset}
+   */
+  create(layer) {
+    return {
+      layer,
+      parentLayer: layer,
+      arbitrary: 0n,
+      variants: 0n,
+      parallelIndex: 0n,
+      index: this.offsets[layer]++,
+      propertyOffset: 0n,
+      property: '',
+      options: [],
+    }
+  }
+
+  /**
+   * @param {string} name
+   * @returns {RuleOffset}
+   */
+  arbitraryProperty(name) {
+    return {
+      ...this.create('utilities'),
+      arbitrary: 1n,
+      property: name,
+    }
+  }
+
+  /**
+   * Get the offset for a variant
+   *
+   * @param {string} variant
+   * @param {number} index
+   * @returns {RuleOffset}
+   */
+  forVariant(variant, index = 0) {
+    let offset = this.variantOffsets.get(variant)
+    if (offset === undefined) {
+      throw new Error(`Cannot find offset for unknown variant ${variant}`)
+    }
+
+    return {
+      ...this.create('variants'),
+      variants: offset << BigInt(index),
+    }
+  }
+
+  /**
+   * @param {RuleOffset} rule
+   * @param {RuleOffset} variant
+   * @param {VariantOption} options
+   * @returns {RuleOffset}
+   */
+  applyVariantOffset(rule, variant, options) {
+    options.variant = variant.variants
+
+    return {
+      ...rule,
+      layer: 'variants',
+      parentLayer: rule.layer === 'variants' ? rule.parentLayer : rule.layer,
+      variants: rule.variants | variant.variants,
+      options: options.sort ? [].concat(options, rule.options) : rule.options,
+
+      // TODO: Technically this is wrong. We should be handling parallel index on a per variant basis.
+      // We'll take the max of all the parallel indexes for now.
+      // @ts-ignore
+      parallelIndex: max([rule.parallelIndex, variant.parallelIndex]),
+    }
+  }
+
+  /**
+   * @param {RuleOffset} offset
+   * @param {number} parallelIndex
+   * @returns {RuleOffset}
+   */
+  applyParallelOffset(offset, parallelIndex) {
+    return {
+      ...offset,
+      parallelIndex: BigInt(parallelIndex),
+    }
+  }
+
+  /**
+   * Each variant gets 1 bit per function / rule registered.
+   * This is because multiple variants can be applied to a single rule and we need to know which ones are present and which ones are not.
+   * Additionally, every unique group of variants is grouped together in the stylesheet.
+   *
+   * This grouping is order-independent. For instance, we do not differentiate between `hover:focus` and `focus:hover`.
+   *
+   * @param {string[]} variants
+   * @param {(name: string) => number} getLength
+   */
+  recordVariants(variants, getLength) {
+    for (let variant of variants) {
+      this.recordVariant(variant, getLength(variant))
+    }
+  }
+
+  /**
+   * The same as `recordVariants` but for a single arbitrary variant at runtime.
+   * @param {string} variant
+   * @param {number} fnCount
+   *
+   * @returns {RuleOffset} The highest offset for this variant
+   */
+  recordVariant(variant, fnCount = 1) {
+    this.variantOffsets.set(variant, 1n << this.reservedVariantBits)
+
+    // Ensure space is reserved for each "function" in the parallel variant
+    // by offsetting the next variant by the number of parallel variants
+    // in the one we just added.
+
+    // Single functions that return parallel variants are NOT handled separately here
+    // They're offset by 1 (or the number of functions) as usual
+    // And each rule returned is tracked separately since the functions are evaluated lazily.
+    // @see `RuleOffset.parallelIndex`
+    this.reservedVariantBits += BigInt(fnCount)
+
+    return {
+      ...this.create('variants'),
+      variants: this.variantOffsets.get(variant),
+    }
+  }
+
+  /**
+   * @param {RuleOffset} a
+   * @param {RuleOffset} b
+   * @returns {bigint}
+   */
+  compare(a, b) {
+    // Sort layers together
+    if (a.layer !== b.layer) {
+      return this.layerPositions[a.layer] - this.layerPositions[b.layer]
+    }
+
+    // When sorting the `variants` layer, we need to sort based on the parent layer as well within
+    // this variants layer.
+    if (a.parentLayer !== b.parentLayer) {
+      return this.layerPositions[a.parentLayer] - this.layerPositions[b.parentLayer]
+    }
+
+    // Sort based on the sorting function
+    for (let aOptions of a.options) {
+      for (let bOptions of b.options) {
+        if (aOptions.id !== bOptions.id) continue
+        if (!aOptions.sort || !bOptions.sort) continue
+
+        let maxFnVariant = max([aOptions.variant, bOptions.variant]) ?? 0n
+
+        // Create a mask of 0s from bits 1..N where N represents the mask of the Nth bit
+        let mask = ~(maxFnVariant | (maxFnVariant - 1n))
+        let aVariantsAfterFn = a.variants & mask
+        let bVariantsAfterFn = b.variants & mask
+
+        // If the variants the same, we _can_ sort them
+        if (aVariantsAfterFn !== bVariantsAfterFn) {
+          continue
+        }
+
+        let result = aOptions.sort(
+          {
+            value: aOptions.value,
+            modifier: aOptions.modifier,
+          },
+          {
+            value: bOptions.value,
+            modifier: bOptions.modifier,
+          }
+        )
+        if (result !== 0) return result
+      }
+    }
+
+    // Sort variants in the order they were registered
+    if (a.variants !== b.variants) {
+      return a.variants - b.variants
+    }
+
+    // Make sure each rule returned by a parallel variant is sorted in ascending order
+    if (a.parallelIndex !== b.parallelIndex) {
+      return a.parallelIndex - b.parallelIndex
+    }
+
+    // Always sort arbitrary properties after other utilities
+    if (a.arbitrary !== b.arbitrary) {
+      return a.arbitrary - b.arbitrary
+    }
+
+    // Always sort arbitrary properties alphabetically
+    if (a.propertyOffset !== b.propertyOffset) {
+      return a.propertyOffset - b.propertyOffset
+    }
+
+    // Sort utilities, components, etc… in the order they were registered
+    return a.index - b.index
+  }
+
+  /**
+   * Arbitrary variants are recorded in the order they're encountered.
+   * This means that the order is not stable between environments and sets of content files.
+   *
+   * In order to make the order stable, we need to remap the arbitrary variant offsets to
+   * be in alphabetical order starting from the offset of the first arbitrary variant.
+   */
+  recalculateVariantOffsets() {
+    // Sort the variants by their name
+    let variants = Array.from(this.variantOffsets.entries())
+      .filter(([v]) => v.startsWith('['))
+      .sort(([a], [z]) => fastCompare(a, z))
+
+    // Sort the list of offsets
+    // This is not necessarily a discrete range of numbers which is why
+    // we're using sort instead of creating a range from min/max
+    let newOffsets = variants.map(([, offset]) => offset).sort((a, z) => bigSign(a - z))
+
+    // Create a map from the old offsets to the new offsets in the new sort order
+    /** @type {[bigint, bigint][]} */
+    let mapping = variants.map(([, oldOffset], i) => [oldOffset, newOffsets[i]])
+
+    // Remove any variants that will not move letting us skip
+    // remapping if everything happens to be in order
+    return mapping.filter(([a, z]) => a !== z)
+  }
+
+  /**
+   * @template T
+   * @param {[RuleOffset, T][]} list
+   * @returns {[RuleOffset, T][]}
+   */
+  remapArbitraryVariantOffsets(list) {
+    let mapping = this.recalculateVariantOffsets()
+
+    // No arbitrary variants? Nothing to do.
+    // Everyhing already in order? Nothing to do.
+    if (mapping.length === 0) {
+      return list
+    }
+
+    // Remap every variant offset in the list
+    return list.map((item) => {
+      let [offset, rule] = item
+
+      offset = {
+        ...offset,
+        variants: remapBitfield(offset.variants, mapping),
+      }
+
+      return [offset, rule]
+    })
+  }
+
+  /**
+   * @template T
+   * @param {[RuleOffset, T][]} list
+   * @returns {[RuleOffset, T][]}
+   */
+  sortArbitraryProperties(list) {
+    // Collect all known arbitrary properties
+    let known = new Set()
+
+    for (let [offset] of list) {
+      if (offset.arbitrary === 1n) {
+        known.add(offset.property)
+      }
+    }
+
+    // No arbitrary properties? Nothing to do.
+    if (known.size === 0) {
+      return list
+    }
+
+    // Sort the properties alphabetically
+    let properties = Array.from(known).sort()
+
+    // Create a map from the property name to its offset
+    let offsets = new Map()
+
+    let offset = 1n
+    for (let property of properties) {
+      offsets.set(property, offset++)
+    }
+
+    // Apply the sorted offsets to the list
+    return list.map((item) => {
+      let [offset, rule] = item
+
+      offset = {
+        ...offset,
+        propertyOffset: offsets.get(offset.property) ?? 0n,
+      }
+
+      return [offset, rule]
+    })
+  }
+
+  /**
+   * @template T
+   * @param {[RuleOffset, T][]} list
+   * @returns {[RuleOffset, T][]}
+   */
+  sort(list) {
+    // Sort arbitrary variants so they're in alphabetical order
+    list = this.remapArbitraryVariantOffsets(list)
+
+    // Sort arbitrary properties so they're in alphabetical order
+    list = this.sortArbitraryProperties(list)
+
+    return list.sort(([a], [b]) => bigSign(this.compare(a, b)))
+  }
+}
+
+/**
+ *
+ * @param {bigint[]} nums
+ * @returns {bigint|null}
+ */
+function max(nums) {
+  let max = null
+
+  for (const num of nums) {
+    max = max ?? num
+    max = max > num ? max : num
+  }
+
+  return max
+}
+
+/**
+ * A fast ASCII order string comparison function.
+ *
+ * Using `.sort()` without a custom compare function is faster
+ * But you can only use that if you're sorting an array of
+ * only strings. If you're sorting strings inside objects
+ * or arrays, you need must use a custom compare function.
+ *
+ * @param {string} a
+ * @param {string} b
+ */
+function fastCompare(a, b) {
+  let aLen = a.length
+  let bLen = b.length
+  let minLen = aLen < bLen ? aLen : bLen
+
+  for (let i = 0; i < minLen; i++) {
+    let cmp = a.charCodeAt(i) - b.charCodeAt(i)
+    if (cmp !== 0) return cmp
+  }
+
+  return aLen - bLen
+}
Index: frontend/node_modules/tailwindcss/src/lib/partitionApplyAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/partitionApplyAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/partitionApplyAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,52 @@
+function partitionRules(root) {
+  if (!root.walkAtRules) return
+
+  let applyParents = new Set()
+
+  root.walkAtRules('apply', (rule) => {
+    applyParents.add(rule.parent)
+  })
+
+  if (applyParents.size === 0) {
+    return
+  }
+
+  for (let rule of applyParents) {
+    let nodeGroups = []
+    let lastGroup = []
+
+    for (let node of rule.nodes) {
+      if (node.type === 'atrule' && node.name === 'apply') {
+        if (lastGroup.length > 0) {
+          nodeGroups.push(lastGroup)
+          lastGroup = []
+        }
+        nodeGroups.push([node])
+      } else {
+        lastGroup.push(node)
+      }
+    }
+
+    if (lastGroup.length > 0) {
+      nodeGroups.push(lastGroup)
+    }
+
+    if (nodeGroups.length === 1) {
+      continue
+    }
+
+    for (let group of [...nodeGroups].reverse()) {
+      let clone = rule.clone({ nodes: [] })
+      clone.append(group)
+      rule.after(clone)
+    }
+
+    rule.remove()
+  }
+}
+
+export default function expandApplyAtRules() {
+  return (root) => {
+    partitionRules(root)
+  }
+}
Index: frontend/node_modules/tailwindcss/src/lib/regex.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/regex.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/regex.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,74 @@
+const REGEX_SPECIAL = /[\\^$.*+?()[\]{}|]/g
+const REGEX_HAS_SPECIAL = RegExp(REGEX_SPECIAL.source)
+
+/**
+ * @param {string|RegExp|Array<string|RegExp>} source
+ */
+function toSource(source) {
+  source = Array.isArray(source) ? source : [source]
+
+  source = source.map((item) => (item instanceof RegExp ? item.source : item))
+
+  return source.join('')
+}
+
+/**
+ * @param {string|RegExp|Array<string|RegExp>} source
+ */
+export function pattern(source) {
+  return new RegExp(toSource(source), 'g')
+}
+
+/**
+ * @param {string|RegExp|Array<string|RegExp>} source
+ */
+export function withoutCapturing(source) {
+  return new RegExp(`(?:${toSource(source)})`, 'g')
+}
+
+/**
+ * @param {Array<string|RegExp>} sources
+ */
+export function any(sources) {
+  return `(?:${sources.map(toSource).join('|')})`
+}
+
+/**
+ * @param {string|RegExp} source
+ */
+export function optional(source) {
+  return `(?:${toSource(source)})?`
+}
+
+/**
+ * @param {string|RegExp|Array<string|RegExp>} source
+ */
+export function zeroOrMore(source) {
+  return `(?:${toSource(source)})*`
+}
+
+/**
+ * Generate a RegExp that matches balanced brackets for a given depth
+ * We have to specify a depth because JS doesn't support recursive groups using ?R
+ *
+ * Based on https://stackoverflow.com/questions/17759004/how-to-match-string-within-parentheses-nested-in-java/17759264#17759264
+ *
+ * @param {string|RegExp|Array<string|RegExp>} source
+ */
+export function nestedBrackets(open, close, depth = 1) {
+  return withoutCapturing([
+    escape(open),
+    /[^\s]*/,
+    depth === 1
+      ? `[^${escape(open)}${escape(close)}\s]*`
+      : any([`[^${escape(open)}${escape(close)}\s]*`, nestedBrackets(open, close, depth - 1)]),
+    /[^\s]*/,
+    escape(close),
+  ])
+}
+
+export function escape(string) {
+  return string && REGEX_HAS_SPECIAL.test(string)
+    ? string.replace(REGEX_SPECIAL, '\\$&')
+    : string || ''
+}
Index: frontend/node_modules/tailwindcss/src/lib/remap-bitfield.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/remap-bitfield.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/remap-bitfield.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,82 @@
+// @ts-check
+
+/**
+ * We must remap all the old bits to new bits for each set variant
+ * Only arbitrary variants are considered as those are the only
+ * ones that need to be re-sorted at this time
+ *
+ * An iterated process that removes and sets individual bits simultaneously
+ * will not work because we may have a new bit that is also a later old bit
+ * This means that we would be removing a previously set bit which we don't
+ * want to do
+ *
+ * For example (assume `bN` = `1<<N`)
+ * Given the "total" mapping `[[b1, b3], [b2, b4], [b3, b1], [b4, b2]]`
+ * The mapping is "total" because:
+ * 1. Every input and output is accounted for
+ * 2. All combinations are unique
+ * 3. No one input maps to multiple outputs and vice versa
+ * And, given an offset with all bits set:
+ * V = b1 | b2 | b3 | b4
+ *
+ * Let's explore the issue with removing and setting bits simultaneously:
+ * V & ~b1 | b3 = b2 | b3 | b4
+ * V & ~b2 | b4 = b3 | b4
+ * V & ~b3 | b1 = b1 | b4
+ * V & ~b4 | b2 = b1 | b2
+ *
+ * As you can see, we end up with the wrong result.
+ * This is because we're removing a bit that was previously set.
+ * And, thus the final result is missing b3 and b4.
+ *
+ * Now, let's explore the issue with removing the bits first:
+ * V & ~b1 = b2 | b3 | b4
+ * V & ~b2 = b3 | b4
+ * V & ~b3 = b4
+ * V & ~b4 = 0
+ *
+ * And then setting the bits:
+ * V | b3 = b3
+ * V | b4 = b3 | b4
+ * V | b1 = b1 | b3 | b4
+ * V | b2 = b1 | b2 | b3 | b4
+ *
+ * We get the correct result because we're not removing any bits that were
+ * previously set thus properly remapping the bits to the new order
+ *
+ * To collect this into a single operation that can be done simultaneously
+ * we must first create a mask for the old bits that are set and a mask for
+ * the new bits that are set. Then we can remove the old bits and set the new
+ * bits simultaneously in a "single" operation like so:
+ * OldMask = b1 | b2 | b3 | b4
+ * NewMask = b3 | b4 | b1 | b2
+ *
+ * So this:
+ * V & ~oldMask | newMask
+ *
+ * Expands to this:
+ * V & ~b1 & ~b2 & ~b3 & ~b4 | b3 | b4 | b1 | b2
+ *
+ * Which becomes this:
+ * b1 | b2 | b3 | b4
+ *
+ * Which is the correct result!
+ *
+ * @param {bigint} num
+ * @param {[bigint, bigint][]} mapping
+ */
+export function remapBitfield(num, mapping) {
+  // Create masks for the old and new bits that are set
+  let oldMask = 0n
+  let newMask = 0n
+  for (let [oldBit, newBit] of mapping) {
+    if (num & oldBit) {
+      oldMask = oldMask | oldBit
+      newMask = newMask | newBit
+    }
+  }
+
+  // Remove all old bits
+  // Set all new bits
+  return (num & ~oldMask) | newMask
+}
Index: frontend/node_modules/tailwindcss/src/lib/resolveDefaultsAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/resolveDefaultsAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/resolveDefaultsAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,165 @@
+import postcss from 'postcss'
+import selectorParser from 'postcss-selector-parser'
+import { flagEnabled } from '../featureFlags'
+
+let getNode = {
+  id(node) {
+    return selectorParser.attribute({
+      attribute: 'id',
+      operator: '=',
+      value: node.value,
+      quoteMark: '"',
+    })
+  },
+}
+
+function minimumImpactSelector(nodes) {
+  let rest = nodes
+    .filter((node) => {
+      // Keep non-pseudo nodes
+      if (node.type !== 'pseudo') return true
+
+      // Keep pseudo nodes that have subnodes
+      // E.g.: `:not()` contains subnodes inside the parentheses
+      if (node.nodes.length > 0) return true
+
+      // Keep pseudo `elements`
+      // This implicitly means that we ignore pseudo `classes`
+      return (
+        node.value.startsWith('::') ||
+        [':before', ':after', ':first-line', ':first-letter'].includes(node.value)
+      )
+    })
+    .reverse()
+
+  let searchFor = new Set(['tag', 'class', 'id', 'attribute'])
+
+  let splitPointIdx = rest.findIndex((n) => searchFor.has(n.type))
+  if (splitPointIdx === -1) return rest.reverse().join('').trim()
+
+  let node = rest[splitPointIdx]
+  let bestNode = getNode[node.type] ? getNode[node.type](node) : node
+
+  rest = rest.slice(0, splitPointIdx)
+
+  let combinatorIdx = rest.findIndex((n) => n.type === 'combinator' && n.value === '>')
+  if (combinatorIdx !== -1) {
+    rest.splice(0, combinatorIdx)
+    rest.unshift(selectorParser.universal())
+  }
+
+  return [bestNode, ...rest.reverse()].join('').trim()
+}
+
+export let elementSelectorParser = selectorParser((selectors) => {
+  return selectors.map((s) => {
+    let nodes = s.split((n) => n.type === 'combinator' && n.value === ' ').pop()
+    return minimumImpactSelector(nodes)
+  })
+})
+
+let cache = new Map()
+
+function extractElementSelector(selector) {
+  if (!cache.has(selector)) {
+    cache.set(selector, elementSelectorParser.transformSync(selector))
+  }
+
+  return cache.get(selector)
+}
+
+export default function resolveDefaultsAtRules({ tailwindConfig }) {
+  return (root) => {
+    let variableNodeMap = new Map()
+
+    /** @type {Set<import('postcss').AtRule>} */
+    let universals = new Set()
+
+    root.walkAtRules('defaults', (rule) => {
+      if (rule.nodes && rule.nodes.length > 0) {
+        universals.add(rule)
+        return
+      }
+
+      let variable = rule.params
+      if (!variableNodeMap.has(variable)) {
+        variableNodeMap.set(variable, new Set())
+      }
+
+      variableNodeMap.get(variable).add(rule.parent)
+
+      rule.remove()
+    })
+
+    if (flagEnabled(tailwindConfig, 'optimizeUniversalDefaults')) {
+      for (let universal of universals) {
+        /** @type {Map<string, Set<string>>} */
+        let selectorGroups = new Map()
+
+        let rules = variableNodeMap.get(universal.params) ?? []
+
+        for (let rule of rules) {
+          for (let selector of extractElementSelector(rule.selector)) {
+            // If selector contains a vendor prefix after a pseudo element or class,
+            // we consider them separately because merging the declarations into
+            // a single rule will cause browsers that do not understand the
+            // vendor prefix to throw out the whole rule
+            // Additionally if a selector contains `:has` we also consider
+            // it separately because FF only recently gained support for it
+            let selectorGroupName =
+              selector.includes(':-') || selector.includes('::-') || selector.includes(':has')
+                ? selector
+                : '__DEFAULT__'
+
+            let selectors = selectorGroups.get(selectorGroupName) ?? new Set()
+            selectorGroups.set(selectorGroupName, selectors)
+
+            selectors.add(selector)
+          }
+        }
+
+        if (selectorGroups.size === 0) {
+          universal.remove()
+          continue
+        }
+
+        for (let [, selectors] of selectorGroups) {
+          let universalRule = postcss.rule({
+            source: universal.source,
+          })
+
+          universalRule.selectors = [...selectors]
+
+          universalRule.append(universal.nodes.map((node) => node.clone()))
+          universal.before(universalRule)
+        }
+
+        universal.remove()
+      }
+    } else if (universals.size) {
+      let universalRule = postcss.rule({
+        selectors: ['*', '::before', '::after'],
+      })
+
+      for (let universal of universals) {
+        universalRule.append(universal.nodes)
+
+        if (!universalRule.parent) {
+          universal.before(universalRule)
+        }
+
+        if (!universalRule.source) {
+          universalRule.source = universal.source
+        }
+
+        universal.remove()
+      }
+
+      let backdropRule = universalRule.clone({
+        selectors: ['::backdrop'],
+      })
+
+      universalRule.after(backdropRule)
+    }
+  }
+}
Index: frontend/node_modules/tailwindcss/src/lib/setupContextUtils.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/setupContextUtils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/setupContextUtils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1371 @@
+import fs from 'fs'
+import url from 'url'
+import postcss from 'postcss'
+import dlv from 'dlv'
+import selectorParser from 'postcss-selector-parser'
+
+import transformThemeValue from '../util/transformThemeValue'
+import parseObjectStyles from '../util/parseObjectStyles'
+import prefixSelector from '../util/prefixSelector'
+import isPlainObject from '../util/isPlainObject'
+import escapeClassName from '../util/escapeClassName'
+import nameClass, { formatClass } from '../util/nameClass'
+import { coerceValue } from '../util/pluginUtils'
+import { variantPlugins, corePlugins } from '../corePlugins'
+import * as sharedState from './sharedState'
+import { env } from './sharedState'
+import { toPath } from '../util/toPath'
+import log from '../util/log'
+import negateValue from '../util/negateValue'
+import isSyntacticallyValidPropertyValue from '../util/isSyntacticallyValidPropertyValue'
+import { generateRules, getClassNameFromSelector } from './generateRules'
+import { hasContentChanged } from './cacheInvalidation.js'
+import { Offsets } from './offsets.js'
+import { flagEnabled } from '../featureFlags.js'
+import { finalizeSelector, formatVariantSelector } from '../util/formatVariantSelector'
+
+export const INTERNAL_FEATURES = Symbol()
+
+const VARIANT_TYPES = {
+  AddVariant: Symbol.for('ADD_VARIANT'),
+  MatchVariant: Symbol.for('MATCH_VARIANT'),
+}
+
+const VARIANT_INFO = {
+  Base: 1 << 0,
+  Dynamic: 1 << 1,
+}
+
+function prefix(context, selector) {
+  let prefix = context.tailwindConfig.prefix
+  return typeof prefix === 'function' ? prefix(selector) : prefix + selector
+}
+
+function normalizeOptionTypes({ type = 'any', ...options }) {
+  let types = [].concat(type)
+
+  return {
+    ...options,
+    types: types.map((type) => {
+      if (Array.isArray(type)) {
+        return { type: type[0], ...type[1] }
+      }
+      return { type, preferOnConflict: false }
+    }),
+  }
+}
+
+function parseVariantFormatString(input) {
+  /** @type {string[]} */
+  let parts = []
+
+  // When parsing whitespace around special characters are insignificant
+  // However, _inside_ of a variant they could be
+  // Because the selector could look like this
+  // @media { &[data-name="foo bar"] }
+  // This is why we do not skip whitespace
+
+  let current = ''
+  let depth = 0
+
+  for (let idx = 0; idx < input.length; idx++) {
+    let char = input[idx]
+
+    if (char === '\\') {
+      // Escaped characters are not special
+      current += '\\' + input[++idx]
+    } else if (char === '{') {
+      // Nested rule: start
+      ++depth
+      parts.push(current.trim())
+      current = ''
+    } else if (char === '}') {
+      // Nested rule: end
+      if (--depth < 0) {
+        throw new Error(`Your { and } are unbalanced.`)
+      }
+
+      parts.push(current.trim())
+      current = ''
+    } else {
+      // Normal character
+      current += char
+    }
+  }
+
+  if (current.length > 0) {
+    parts.push(current.trim())
+  }
+
+  parts = parts.filter((part) => part !== '')
+
+  return parts
+}
+
+function insertInto(list, value, { before = [] } = {}) {
+  before = [].concat(before)
+
+  if (before.length <= 0) {
+    list.push(value)
+    return
+  }
+
+  let idx = list.length - 1
+  for (let other of before) {
+    let iidx = list.indexOf(other)
+    if (iidx === -1) continue
+    idx = Math.min(idx, iidx)
+  }
+
+  list.splice(idx, 0, value)
+}
+
+function parseStyles(styles) {
+  if (!Array.isArray(styles)) {
+    return parseStyles([styles])
+  }
+
+  return styles.flatMap((style) => {
+    let isNode = !Array.isArray(style) && !isPlainObject(style)
+    return isNode ? style : parseObjectStyles(style)
+  })
+}
+
+function getClasses(selector, mutate) {
+  let parser = selectorParser((selectors) => {
+    let allClasses = []
+
+    if (mutate) {
+      mutate(selectors)
+    }
+
+    selectors.walkClasses((classNode) => {
+      allClasses.push(classNode.value)
+    })
+
+    return allClasses
+  })
+  return parser.transformSync(selector)
+}
+
+/**
+ * Ignore everything inside a :not(...). This allows you to write code like
+ * `div:not(.foo)`. If `.foo` is never found in your code, then we used to
+ * not generated it. But now we will ignore everything inside a `:not`, so
+ * that it still gets generated.
+ *
+ * @param {selectorParser.Root} selectors
+ */
+function ignoreNot(selectors) {
+  selectors.walkPseudos((pseudo) => {
+    if (pseudo.value === ':not') {
+      pseudo.remove()
+    }
+  })
+}
+
+function extractCandidates(node, state = { containsNonOnDemandable: false }, depth = 0) {
+  let classes = []
+  let selectors = []
+
+  if (node.type === 'rule') {
+    // Handle normal rules
+    selectors.push(...node.selectors)
+  } else if (node.type === 'atrule') {
+    // Handle at-rules (which contains nested rules)
+    node.walkRules((rule) => selectors.push(...rule.selectors))
+  }
+
+  for (let selector of selectors) {
+    let classCandidates = getClasses(selector, ignoreNot)
+
+    // At least one of the selectors contains non-"on-demandable" candidates.
+    if (classCandidates.length === 0) {
+      state.containsNonOnDemandable = true
+    }
+
+    for (let classCandidate of classCandidates) {
+      classes.push(classCandidate)
+    }
+  }
+
+  if (depth === 0) {
+    return [state.containsNonOnDemandable || classes.length === 0, classes]
+  }
+
+  return classes
+}
+
+function withIdentifiers(styles) {
+  return parseStyles(styles).flatMap((node) => {
+    let nodeMap = new Map()
+    let [containsNonOnDemandableSelectors, candidates] = extractCandidates(node)
+
+    // If this isn't "on-demandable", assign it a universal candidate to always include it.
+    if (containsNonOnDemandableSelectors) {
+      candidates.unshift(sharedState.NOT_ON_DEMAND)
+    }
+
+    // However, it could be that it also contains "on-demandable" candidates.
+    // E.g.: `span, .foo {}`, in that case it should still be possible to use
+    // `@apply foo` for example.
+    return candidates.map((c) => {
+      if (!nodeMap.has(node)) {
+        nodeMap.set(node, node)
+      }
+      return [c, nodeMap.get(node)]
+    })
+  })
+}
+
+export function isValidVariantFormatString(format) {
+  return format.startsWith('@') || format.includes('&')
+}
+
+export function parseVariant(variant) {
+  variant = variant
+    .replace(/\n+/g, '')
+    .replace(/\s{1,}/g, ' ')
+    .trim()
+
+  let fns = parseVariantFormatString(variant)
+    .map((str) => {
+      if (!str.startsWith('@')) {
+        return ({ format }) => format(str)
+      }
+
+      let [, name, params] = /@(\S*)( .+|[({].*)?/g.exec(str)
+      return ({ wrap }) => wrap(postcss.atRule({ name, params: params?.trim() ?? '' }))
+    })
+    .reverse()
+
+  return (api) => {
+    for (let fn of fns) {
+      fn(api)
+    }
+  }
+}
+
+/**
+ *
+ * @param {any} tailwindConfig
+ * @param {any} context
+ * @param {object} param2
+ * @param {Offsets} param2.offsets
+ */
+function buildPluginApi(tailwindConfig, context, { variantList, variantMap, offsets, classList }) {
+  function getConfigValue(path, defaultValue) {
+    return path ? dlv(tailwindConfig, path, defaultValue) : tailwindConfig
+  }
+
+  function applyConfiguredPrefix(selector) {
+    return prefixSelector(tailwindConfig.prefix, selector)
+  }
+
+  function prefixIdentifier(identifier, options) {
+    if (identifier === sharedState.NOT_ON_DEMAND) {
+      return sharedState.NOT_ON_DEMAND
+    }
+
+    if (!options.respectPrefix) {
+      return identifier
+    }
+
+    return context.tailwindConfig.prefix + identifier
+  }
+
+  function resolveThemeValue(path, defaultValue, opts = {}) {
+    let parts = toPath(path)
+    let value = getConfigValue(['theme', ...parts], defaultValue)
+    return transformThemeValue(parts[0])(value, opts)
+  }
+
+  let variantIdentifier = 0
+  let api = {
+    postcss,
+    prefix: applyConfiguredPrefix,
+    e: escapeClassName,
+    config: getConfigValue,
+    theme: resolveThemeValue,
+    corePlugins: (path) => {
+      if (Array.isArray(tailwindConfig.corePlugins)) {
+        return tailwindConfig.corePlugins.includes(path)
+      }
+
+      return getConfigValue(['corePlugins', path], true)
+    },
+    variants: () => {
+      // Preserved for backwards compatibility but not used in v3.0+
+      return []
+    },
+    addBase(base) {
+      for (let [identifier, rule] of withIdentifiers(base)) {
+        let prefixedIdentifier = prefixIdentifier(identifier, {})
+        let offset = offsets.create('base')
+
+        if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+          context.candidateRuleMap.set(prefixedIdentifier, [])
+        }
+
+        context.candidateRuleMap
+          .get(prefixedIdentifier)
+          .push([{ sort: offset, layer: 'base' }, rule])
+      }
+    },
+    /**
+     * @param {string} group
+     * @param {Record<string, string | string[]>} declarations
+     */
+    addDefaults(group, declarations) {
+      const groups = {
+        [`@defaults ${group}`]: declarations,
+      }
+
+      for (let [identifier, rule] of withIdentifiers(groups)) {
+        let prefixedIdentifier = prefixIdentifier(identifier, {})
+
+        if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+          context.candidateRuleMap.set(prefixedIdentifier, [])
+        }
+
+        context.candidateRuleMap
+          .get(prefixedIdentifier)
+          .push([{ sort: offsets.create('defaults'), layer: 'defaults' }, rule])
+      }
+    },
+    addComponents(components, options) {
+      let defaultOptions = {
+        preserveSource: false,
+        respectPrefix: true,
+        respectImportant: false,
+      }
+
+      options = Object.assign({}, defaultOptions, Array.isArray(options) ? {} : options)
+
+      for (let [identifier, rule] of withIdentifiers(components)) {
+        let prefixedIdentifier = prefixIdentifier(identifier, options)
+
+        classList.add(prefixedIdentifier)
+
+        if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+          context.candidateRuleMap.set(prefixedIdentifier, [])
+        }
+
+        context.candidateRuleMap
+          .get(prefixedIdentifier)
+          .push([{ sort: offsets.create('components'), layer: 'components', options }, rule])
+      }
+    },
+    addUtilities(utilities, options) {
+      let defaultOptions = {
+        preserveSource: false,
+        respectPrefix: true,
+        respectImportant: true,
+      }
+
+      options = Object.assign({}, defaultOptions, Array.isArray(options) ? {} : options)
+
+      for (let [identifier, rule] of withIdentifiers(utilities)) {
+        let prefixedIdentifier = prefixIdentifier(identifier, options)
+
+        classList.add(prefixedIdentifier)
+
+        if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+          context.candidateRuleMap.set(prefixedIdentifier, [])
+        }
+
+        context.candidateRuleMap
+          .get(prefixedIdentifier)
+          .push([{ sort: offsets.create('utilities'), layer: 'utilities', options }, rule])
+      }
+    },
+    matchUtilities: function (utilities, options) {
+      let defaultOptions = {
+        respectPrefix: true,
+        respectImportant: true,
+        modifiers: false,
+      }
+
+      options = normalizeOptionTypes({ ...defaultOptions, ...options })
+
+      let offset = offsets.create('utilities')
+
+      for (let identifier in utilities) {
+        let prefixedIdentifier = prefixIdentifier(identifier, options)
+        let rule = utilities[identifier]
+
+        classList.add([prefixedIdentifier, options])
+
+        function wrapped(modifier, { isOnlyPlugin }) {
+          let [value, coercedType, utilityModifier] = coerceValue(
+            options.types,
+            modifier,
+            options,
+            tailwindConfig
+          )
+
+          if (value === undefined) {
+            return []
+          }
+
+          if (!options.types.some(({ type }) => type === coercedType)) {
+            if (isOnlyPlugin) {
+              log.warn([
+                `Unnecessary typehint \`${coercedType}\` in \`${identifier}-${modifier}\`.`,
+                `You can safely update it to \`${identifier}-${modifier.replace(
+                  coercedType + ':',
+                  ''
+                )}\`.`,
+              ])
+            } else {
+              return []
+            }
+          }
+
+          if (!isSyntacticallyValidPropertyValue(value)) {
+            return []
+          }
+
+          let extras = {
+            get modifier() {
+              if (!options.modifiers) {
+                log.warn(`modifier-used-without-options-for-${identifier}`, [
+                  'Your plugin must set `modifiers: true` in its options to support modifiers.',
+                ])
+              }
+
+              return utilityModifier
+            },
+          }
+
+          let modifiersEnabled = flagEnabled(tailwindConfig, 'generalizedModifiers')
+
+          let ruleSets = []
+            .concat(modifiersEnabled ? rule(value, extras) : rule(value))
+            .filter(Boolean)
+            .map((declaration) => ({
+              [nameClass(identifier, modifier)]: declaration,
+            }))
+
+          return ruleSets
+        }
+
+        let withOffsets = [{ sort: offset, layer: 'utilities', options }, wrapped]
+
+        if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+          context.candidateRuleMap.set(prefixedIdentifier, [])
+        }
+
+        context.candidateRuleMap.get(prefixedIdentifier).push(withOffsets)
+      }
+    },
+    matchComponents: function (components, options) {
+      let defaultOptions = {
+        respectPrefix: true,
+        respectImportant: false,
+        modifiers: false,
+      }
+
+      options = normalizeOptionTypes({ ...defaultOptions, ...options })
+
+      let offset = offsets.create('components')
+
+      for (let identifier in components) {
+        let prefixedIdentifier = prefixIdentifier(identifier, options)
+        let rule = components[identifier]
+
+        classList.add([prefixedIdentifier, options])
+
+        function wrapped(modifier, { isOnlyPlugin }) {
+          let [value, coercedType, utilityModifier] = coerceValue(
+            options.types,
+            modifier,
+            options,
+            tailwindConfig
+          )
+
+          if (value === undefined) {
+            return []
+          }
+
+          if (!options.types.some(({ type }) => type === coercedType)) {
+            if (isOnlyPlugin) {
+              log.warn([
+                `Unnecessary typehint \`${coercedType}\` in \`${identifier}-${modifier}\`.`,
+                `You can safely update it to \`${identifier}-${modifier.replace(
+                  coercedType + ':',
+                  ''
+                )}\`.`,
+              ])
+            } else {
+              return []
+            }
+          }
+
+          if (!isSyntacticallyValidPropertyValue(value)) {
+            return []
+          }
+
+          let extras = {
+            get modifier() {
+              if (!options.modifiers) {
+                log.warn(`modifier-used-without-options-for-${identifier}`, [
+                  'Your plugin must set `modifiers: true` in its options to support modifiers.',
+                ])
+              }
+
+              return utilityModifier
+            },
+          }
+
+          let modifiersEnabled = flagEnabled(tailwindConfig, 'generalizedModifiers')
+
+          let ruleSets = []
+            .concat(modifiersEnabled ? rule(value, extras) : rule(value))
+            .filter(Boolean)
+            .map((declaration) => ({
+              [nameClass(identifier, modifier)]: declaration,
+            }))
+
+          return ruleSets
+        }
+
+        let withOffsets = [{ sort: offset, layer: 'components', options }, wrapped]
+
+        if (!context.candidateRuleMap.has(prefixedIdentifier)) {
+          context.candidateRuleMap.set(prefixedIdentifier, [])
+        }
+
+        context.candidateRuleMap.get(prefixedIdentifier).push(withOffsets)
+      }
+    },
+    addVariant(variantName, variantFunctions, options = {}) {
+      variantFunctions = [].concat(variantFunctions).map((variantFunction) => {
+        if (typeof variantFunction !== 'string') {
+          // Safelist public API functions
+          return (api = {}) => {
+            let { args, modifySelectors, container, separator, wrap, format } = api
+            let result = variantFunction(
+              Object.assign(
+                { modifySelectors, container, separator },
+                options.type === VARIANT_TYPES.MatchVariant && { args, wrap, format }
+              )
+            )
+
+            if (typeof result === 'string' && !isValidVariantFormatString(result)) {
+              throw new Error(
+                `Your custom variant \`${variantName}\` has an invalid format string. Make sure it's an at-rule or contains a \`&\` placeholder.`
+              )
+            }
+
+            if (Array.isArray(result)) {
+              return result
+                .filter((variant) => typeof variant === 'string')
+                .map((variant) => parseVariant(variant))
+            }
+
+            // result may be undefined with legacy variants that use APIs like `modifySelectors`
+            // result may also be a postcss node if someone was returning the result from `modifySelectors`
+            return result && typeof result === 'string' && parseVariant(result)(api)
+          }
+        }
+
+        if (!isValidVariantFormatString(variantFunction)) {
+          throw new Error(
+            `Your custom variant \`${variantName}\` has an invalid format string. Make sure it's an at-rule or contains a \`&\` placeholder.`
+          )
+        }
+
+        return parseVariant(variantFunction)
+      })
+
+      insertInto(variantList, variantName, options)
+      variantMap.set(variantName, variantFunctions)
+      context.variantOptions.set(variantName, options)
+    },
+    matchVariant(variant, variantFn, options) {
+      // A unique identifier that "groups" these variants together.
+      // This is for internal use only which is why it is not present in the types
+      let id = options?.id ?? ++variantIdentifier
+      let isSpecial = variant === '@'
+
+      let modifiersEnabled = flagEnabled(tailwindConfig, 'generalizedModifiers')
+
+      for (let [key, value] of Object.entries(options?.values ?? {})) {
+        if (key === 'DEFAULT') continue
+
+        api.addVariant(
+          isSpecial ? `${variant}${key}` : `${variant}-${key}`,
+          ({ args, container }) => {
+            return variantFn(
+              value,
+              modifiersEnabled ? { modifier: args?.modifier, container } : { container }
+            )
+          },
+
+          {
+            ...options,
+            value,
+            id,
+            type: VARIANT_TYPES.MatchVariant,
+            variantInfo: VARIANT_INFO.Base,
+          }
+        )
+      }
+
+      let hasDefault = 'DEFAULT' in (options?.values ?? {})
+
+      api.addVariant(
+        variant,
+        ({ args, container }) => {
+          if (args?.value === sharedState.NONE && !hasDefault) {
+            return null
+          }
+
+          return variantFn(
+            args?.value === sharedState.NONE
+              ? options.values.DEFAULT
+              : // Falling back to args if it is a string, otherwise '' for older intellisense
+                // (JetBrains) plugins.
+                args?.value ?? (typeof args === 'string' ? args : ''),
+            modifiersEnabled ? { modifier: args?.modifier, container } : { container }
+          )
+        },
+        {
+          ...options,
+          id,
+          type: VARIANT_TYPES.MatchVariant,
+          variantInfo: VARIANT_INFO.Dynamic,
+        }
+      )
+    },
+  }
+
+  return api
+}
+
+let fileModifiedMapCache = new WeakMap()
+export function getFileModifiedMap(context) {
+  if (!fileModifiedMapCache.has(context)) {
+    fileModifiedMapCache.set(context, new Map())
+  }
+  return fileModifiedMapCache.get(context)
+}
+
+function trackModified(files, fileModifiedMap) {
+  let changed = false
+  let mtimesToCommit = new Map()
+
+  for (let file of files) {
+    if (!file) continue
+
+    let parsed = url.parse(file)
+    let pathname = parsed.hash ? parsed.href.replace(parsed.hash, '') : parsed.href
+    pathname = parsed.search ? pathname.replace(parsed.search, '') : pathname
+    let newModified = fs.statSync(decodeURIComponent(pathname), { throwIfNoEntry: false })?.mtimeMs
+    if (!newModified) {
+      // It could happen that a file is passed in that doesn't exist. E.g.:
+      // postcss-cli will provide you a fake path when reading from stdin. This
+      // path then looks like /path-to-your-project/stdin In that case we just
+      // want to ignore it and don't track changes at all.
+      continue
+    }
+
+    if (!fileModifiedMap.has(file) || newModified > fileModifiedMap.get(file)) {
+      changed = true
+    }
+
+    mtimesToCommit.set(file, newModified)
+  }
+
+  return [changed, mtimesToCommit]
+}
+
+function extractVariantAtRules(node) {
+  node.walkAtRules((atRule) => {
+    if (['responsive', 'variants'].includes(atRule.name)) {
+      extractVariantAtRules(atRule)
+      atRule.before(atRule.nodes)
+      atRule.remove()
+    }
+  })
+}
+
+function collectLayerPlugins(root) {
+  let layerPlugins = []
+
+  root.each((node) => {
+    if (node.type === 'atrule' && ['responsive', 'variants'].includes(node.name)) {
+      node.name = 'layer'
+      node.params = 'utilities'
+    }
+  })
+
+  // Walk @layer rules and treat them like plugins
+  root.walkAtRules('layer', (layerRule) => {
+    extractVariantAtRules(layerRule)
+
+    if (layerRule.params === 'base') {
+      for (let node of layerRule.nodes) {
+        layerPlugins.push(function ({ addBase }) {
+          addBase(node, { respectPrefix: false })
+        })
+      }
+      layerRule.remove()
+    } else if (layerRule.params === 'components') {
+      for (let node of layerRule.nodes) {
+        layerPlugins.push(function ({ addComponents }) {
+          addComponents(node, { respectPrefix: false, preserveSource: true })
+        })
+      }
+      layerRule.remove()
+    } else if (layerRule.params === 'utilities') {
+      for (let node of layerRule.nodes) {
+        layerPlugins.push(function ({ addUtilities }) {
+          addUtilities(node, { respectPrefix: false, preserveSource: true })
+        })
+      }
+      layerRule.remove()
+    }
+  })
+
+  return layerPlugins
+}
+
+function resolvePlugins(context, root) {
+  let corePluginList = Object.entries({ ...variantPlugins, ...corePlugins })
+    .map(([name, plugin]) => {
+      if (!context.tailwindConfig.corePlugins.includes(name)) {
+        return null
+      }
+
+      return plugin
+    })
+    .filter(Boolean)
+
+  let userPlugins = context.tailwindConfig.plugins.map((plugin) => {
+    if (plugin.__isOptionsFunction) {
+      plugin = plugin()
+    }
+
+    return typeof plugin === 'function' ? plugin : plugin.handler
+  })
+
+  let layerPlugins = collectLayerPlugins(root)
+
+  // TODO: This is a workaround for backwards compatibility, since custom variants
+  // were historically sorted before screen/stackable variants.
+  let beforeVariants = [
+    variantPlugins['childVariant'],
+    variantPlugins['pseudoElementVariants'],
+    variantPlugins['pseudoClassVariants'],
+    variantPlugins['hasVariants'],
+    variantPlugins['ariaVariants'],
+    variantPlugins['dataVariants'],
+  ]
+  let afterVariants = [
+    variantPlugins['supportsVariants'],
+    variantPlugins['reducedMotionVariants'],
+    variantPlugins['prefersContrastVariants'],
+    variantPlugins['screenVariants'],
+    variantPlugins['orientationVariants'],
+    variantPlugins['directionVariants'],
+    variantPlugins['darkVariants'],
+    variantPlugins['forcedColorsVariants'],
+    variantPlugins['printVariant'],
+  ]
+
+  // This is a compatibility fix for the pre 3.4 dark mode behavior
+  // `class` retains the old behavior, but `selector` keeps the new behavior
+  let isLegacyDarkMode =
+    context.tailwindConfig.darkMode === 'class' ||
+    (Array.isArray(context.tailwindConfig.darkMode) &&
+      context.tailwindConfig.darkMode[0] === 'class')
+
+  if (isLegacyDarkMode) {
+    afterVariants = [
+      variantPlugins['supportsVariants'],
+      variantPlugins['reducedMotionVariants'],
+      variantPlugins['prefersContrastVariants'],
+      variantPlugins['darkVariants'],
+      variantPlugins['screenVariants'],
+      variantPlugins['orientationVariants'],
+      variantPlugins['directionVariants'],
+      variantPlugins['forcedColorsVariants'],
+      variantPlugins['printVariant'],
+    ]
+  }
+
+  return [...corePluginList, ...beforeVariants, ...userPlugins, ...afterVariants, ...layerPlugins]
+}
+
+function registerPlugins(plugins, context) {
+  let variantList = []
+  let variantMap = new Map()
+  context.variantMap = variantMap
+
+  let offsets = new Offsets()
+  context.offsets = offsets
+
+  let classList = new Set()
+
+  let pluginApi = buildPluginApi(context.tailwindConfig, context, {
+    variantList,
+    variantMap,
+    offsets,
+    classList,
+  })
+
+  for (let plugin of plugins) {
+    if (Array.isArray(plugin)) {
+      for (let pluginItem of plugin) {
+        pluginItem(pluginApi)
+      }
+    } else {
+      plugin?.(pluginApi)
+    }
+  }
+
+  // Make sure to record bit masks for every variant
+  offsets.recordVariants(variantList, (variant) => variantMap.get(variant).length)
+
+  // Build variantMap
+  for (let [variantName, variantFunctions] of variantMap.entries()) {
+    context.variantMap.set(
+      variantName,
+      variantFunctions.map((variantFunction, idx) => [
+        offsets.forVariant(variantName, idx),
+        variantFunction,
+      ])
+    )
+  }
+
+  let safelist = (context.tailwindConfig.safelist ?? []).filter(Boolean)
+  if (safelist.length > 0) {
+    let checks = []
+
+    for (let value of safelist) {
+      if (typeof value === 'string') {
+        context.changedContent.push({ content: value, extension: 'html' })
+        continue
+      }
+
+      if (value instanceof RegExp) {
+        log.warn('root-regex', [
+          'Regular expressions in `safelist` work differently in Tailwind CSS v3.0.',
+          'Update your `safelist` configuration to eliminate this warning.',
+          'https://tailwindcss.com/docs/content-configuration#safelisting-classes',
+        ])
+        continue
+      }
+
+      checks.push(value)
+    }
+
+    if (checks.length > 0) {
+      let patternMatchingCount = new Map()
+      let prefixLength = context.tailwindConfig.prefix.length
+      let checkImportantUtils = checks.some((check) => check.pattern.source.includes('!'))
+
+      for (let util of classList) {
+        let utils = Array.isArray(util)
+          ? (() => {
+              let [utilName, options] = util
+              let values = Object.keys(options?.values ?? {})
+              let classes = values.map((value) => formatClass(utilName, value))
+
+              if (options?.supportsNegativeValues) {
+                // This is the normal negated version
+                // e.g. `-inset-1` or `-tw-inset-1`
+                classes = [...classes, ...classes.map((cls) => '-' + cls)]
+
+                // This is the negated version *after* the prefix
+                // e.g. `tw--inset-1`
+                // The prefix is already attached to util name
+                // So we add the negative after the prefix
+                classes = [
+                  ...classes,
+                  ...classes.map(
+                    (cls) => cls.slice(0, prefixLength) + '-' + cls.slice(prefixLength)
+                  ),
+                ]
+              }
+
+              if (options.types.some(({ type }) => type === 'color')) {
+                classes = [
+                  ...classes,
+                  ...classes.flatMap((cls) =>
+                    Object.keys(context.tailwindConfig.theme.opacity).map(
+                      (opacity) => `${cls}/${opacity}`
+                    )
+                  ),
+                ]
+              }
+
+              if (checkImportantUtils && options?.respectImportant) {
+                classes = [...classes, ...classes.map((cls) => '!' + cls)]
+              }
+
+              return classes
+            })()
+          : [util]
+
+        for (let util of utils) {
+          for (let { pattern, variants = [] } of checks) {
+            // RegExp with the /g flag are stateful, so let's reset the last
+            // index pointer to reset the state.
+            pattern.lastIndex = 0
+
+            if (!patternMatchingCount.has(pattern)) {
+              patternMatchingCount.set(pattern, 0)
+            }
+
+            if (!pattern.test(util)) continue
+
+            patternMatchingCount.set(pattern, patternMatchingCount.get(pattern) + 1)
+
+            context.changedContent.push({ content: util, extension: 'html' })
+            for (let variant of variants) {
+              context.changedContent.push({
+                content: variant + context.tailwindConfig.separator + util,
+                extension: 'html',
+              })
+            }
+          }
+        }
+      }
+
+      for (let [regex, count] of patternMatchingCount.entries()) {
+        if (count !== 0) continue
+
+        log.warn([
+          `The safelist pattern \`${regex}\` doesn't match any Tailwind CSS classes.`,
+          'Fix this pattern or remove it from your `safelist` configuration.',
+          'https://tailwindcss.com/docs/content-configuration#safelisting-classes',
+        ])
+      }
+    }
+  }
+
+  let darkClassName = [].concat(context.tailwindConfig.darkMode ?? 'media')[1] ?? 'dark'
+
+  // A list of utilities that are used by certain Tailwind CSS utilities but
+  // that don't exist on their own. This will result in them "not existing" and
+  // sorting could be weird since you still require them in order to make the
+  // host utilities work properly. (Thanks Biology)
+  let parasiteUtilities = [
+    prefix(context, darkClassName),
+    prefix(context, 'group'),
+    prefix(context, 'peer'),
+  ]
+  context.getClassOrder = function getClassOrder(classes) {
+    // Sort classes so they're ordered in a deterministic manner
+    let sorted = [...classes].sort((a, z) => {
+      if (a === z) return 0
+      if (a < z) return -1
+      return 1
+    })
+
+    // Non-util classes won't be generated, so we default them to null
+    let sortedClassNames = new Map(sorted.map((className) => [className, null]))
+
+    // Sort all classes in order
+    // Non-tailwind classes won't be generated and will be left as `null`
+    let rules = generateRules(new Set(sorted), context, true)
+    rules = context.offsets.sort(rules)
+
+    let idx = BigInt(parasiteUtilities.length)
+
+    for (const [, rule] of rules) {
+      let candidate = rule.raws.tailwind.candidate
+
+      // When multiple rules match a candidate
+      // always take the position of the first one
+      sortedClassNames.set(candidate, sortedClassNames.get(candidate) ?? idx++)
+    }
+
+    return classes.map((className) => {
+      let order = sortedClassNames.get(className) ?? null
+      let parasiteIndex = parasiteUtilities.indexOf(className)
+
+      if (order === null && parasiteIndex !== -1) {
+        // This will make sure that it is at the very beginning of the
+        // `components` layer which technically means 'before any
+        // components'.
+        order = BigInt(parasiteIndex)
+      }
+
+      return [className, order]
+    })
+  }
+
+  // Generate a list of strings for autocompletion purposes, e.g.
+  // ['uppercase', 'lowercase', ...]
+  context.getClassList = function getClassList(options = {}) {
+    let output = []
+
+    for (let util of classList) {
+      if (Array.isArray(util)) {
+        let [utilName, utilOptions] = util
+        let negativeClasses = []
+
+        let modifiers = Object.keys(utilOptions?.modifiers ?? {})
+
+        if (utilOptions?.types?.some(({ type }) => type === 'color')) {
+          modifiers.push(...Object.keys(context.tailwindConfig.theme.opacity ?? {}))
+        }
+
+        let metadata = { modifiers }
+        let includeMetadata = options.includeMetadata && modifiers.length > 0
+
+        for (let [key, value] of Object.entries(utilOptions?.values ?? {})) {
+          // Ignore undefined and null values
+          if (value == null) {
+            continue
+          }
+
+          let cls = formatClass(utilName, key)
+          output.push(includeMetadata ? [cls, metadata] : cls)
+
+          if (utilOptions?.supportsNegativeValues && negateValue(value)) {
+            let cls = formatClass(utilName, `-${key}`)
+            negativeClasses.push(includeMetadata ? [cls, metadata] : cls)
+          }
+        }
+
+        output.push(...negativeClasses)
+      } else {
+        output.push(util)
+      }
+    }
+
+    return output
+  }
+
+  // Generate a list of available variants with meta information of the type of variant.
+  context.getVariants = function getVariants() {
+    // We use a unique, random ID for candidate names to avoid conflicts
+    // We can't use characters like `_`, `:`, `@` or `.` because they might
+    // be used as a separator
+    let id = Math.random().toString(36).substring(7).toUpperCase()
+
+    let result = []
+    for (let [name, options] of context.variantOptions.entries()) {
+      if (options.variantInfo === VARIANT_INFO.Base) continue
+
+      result.push({
+        name,
+        isArbitrary: options.type === Symbol.for('MATCH_VARIANT'),
+        values: Object.keys(options.values ?? {}),
+        hasDash: name !== '@',
+        selectors({ modifier, value } = {}) {
+          let candidate = `TAILWINDPLACEHOLDER${id}`
+
+          let rule = postcss.rule({ selector: `.${candidate}` })
+          let container = postcss.root({ nodes: [rule.clone()] })
+
+          let before = container.toString()
+
+          let fns = (context.variantMap.get(name) ?? []).flatMap(([_, fn]) => fn)
+          let formatStrings = []
+          for (let fn of fns) {
+            let localFormatStrings = []
+
+            let api = {
+              args: { modifier, value: options.values?.[value] ?? value },
+              separator: context.tailwindConfig.separator,
+              modifySelectors(modifierFunction) {
+                // Run the modifierFunction over each rule
+                container.each((rule) => {
+                  if (rule.type !== 'rule') {
+                    return
+                  }
+
+                  rule.selectors = rule.selectors.map((selector) => {
+                    return modifierFunction({
+                      get className() {
+                        return getClassNameFromSelector(selector)
+                      },
+                      selector,
+                    })
+                  })
+                })
+
+                return container
+              },
+              format(str) {
+                localFormatStrings.push(str)
+              },
+              wrap(wrapper) {
+                localFormatStrings.push(`@${wrapper.name} ${wrapper.params} { & }`)
+              },
+              container,
+            }
+
+            let ruleWithVariant = fn(api)
+            if (localFormatStrings.length > 0) {
+              formatStrings.push(localFormatStrings)
+            }
+
+            if (Array.isArray(ruleWithVariant)) {
+              for (let variantFunction of ruleWithVariant) {
+                localFormatStrings = []
+                variantFunction(api)
+                formatStrings.push(localFormatStrings)
+              }
+            }
+          }
+
+          // Reverse engineer the result of the `container`
+          let manualFormatStrings = []
+          let after = container.toString()
+
+          if (before !== after) {
+            // Figure out all selectors
+            container.walkRules((rule) => {
+              let modified = rule.selector
+
+              // Rebuild the base selector, this is what plugin authors would do
+              // as well. E.g.: `${variant}${separator}${className}`.
+              // However, plugin authors probably also prepend or append certain
+              // classes, pseudos, ids, ...
+              let rebuiltBase = selectorParser((selectors) => {
+                selectors.walkClasses((classNode) => {
+                  classNode.value = `${name}${context.tailwindConfig.separator}${classNode.value}`
+                })
+              }).processSync(modified)
+
+              // Now that we know the original selector, the new selector, and
+              // the rebuild part in between, we can replace the part that plugin
+              // authors need to rebuild with `&`, and eventually store it in the
+              // collectedFormats. Similar to what `format('...')` would do.
+              //
+              // E.g.:
+              //                   variant: foo
+              //                  selector: .markdown > p
+              //      modified (by plugin): .foo .foo\\:markdown > p
+              //    rebuiltBase (internal): .foo\\:markdown > p
+              //                    format: .foo &
+              manualFormatStrings.push(modified.replace(rebuiltBase, '&').replace(candidate, '&'))
+            })
+
+            // Figure out all atrules
+            container.walkAtRules((atrule) => {
+              manualFormatStrings.push(`@${atrule.name} (${atrule.params}) { & }`)
+            })
+          }
+
+          let isArbitraryVariant = !(value in (options.values ?? {}))
+          let internalFeatures = options[INTERNAL_FEATURES] ?? {}
+
+          let respectPrefix = (() => {
+            if (isArbitraryVariant) return false
+            if (internalFeatures.respectPrefix === false) return false
+            return true
+          })()
+
+          formatStrings = formatStrings.map((format) =>
+            format.map((str) => ({
+              format: str,
+              respectPrefix,
+            }))
+          )
+
+          manualFormatStrings = manualFormatStrings.map((format) => ({
+            format,
+            respectPrefix,
+          }))
+
+          let opts = {
+            candidate,
+            context,
+          }
+
+          let result = formatStrings.map((formats) =>
+            finalizeSelector(`.${candidate}`, formatVariantSelector(formats, opts), opts)
+              .replace(`.${candidate}`, '&')
+              .replace('{ & }', '')
+              .trim()
+          )
+
+          if (manualFormatStrings.length > 0) {
+            result.push(
+              formatVariantSelector(manualFormatStrings, opts)
+                .toString()
+                .replace(`.${candidate}`, '&')
+            )
+          }
+
+          return result
+        },
+      })
+    }
+
+    return result
+  }
+}
+
+/**
+ * Mark as class as retroactively invalid
+ *
+ *
+ * @param {string} candidate
+ */
+function markInvalidUtilityCandidate(context, candidate) {
+  if (!context.classCache.has(candidate)) {
+    return
+  }
+
+  // Mark this as not being a real utility
+  context.notClassCache.add(candidate)
+
+  // Remove it from any candidate-specific caches
+  context.classCache.delete(candidate)
+  context.applyClassCache.delete(candidate)
+  context.candidateRuleMap.delete(candidate)
+  context.candidateRuleCache.delete(candidate)
+
+  // Ensure the stylesheet gets rebuilt
+  context.stylesheetCache = null
+}
+
+/**
+ * Mark as class as retroactively invalid
+ *
+ * @param {import('postcss').Node} node
+ */
+function markInvalidUtilityNode(context, node) {
+  let candidate = node.raws.tailwind.candidate
+
+  if (!candidate) {
+    return
+  }
+
+  for (const entry of context.ruleCache) {
+    if (entry[1].raws.tailwind.candidate === candidate) {
+      context.ruleCache.delete(entry)
+      // context.postCssNodeCache.delete(node)
+    }
+  }
+
+  markInvalidUtilityCandidate(context, candidate)
+}
+
+export function createContext(tailwindConfig, changedContent = [], root = postcss.root()) {
+  let context = {
+    disposables: [],
+    ruleCache: new Set(),
+    candidateRuleCache: new Map(),
+    classCache: new Map(),
+    applyClassCache: new Map(),
+    // Seed the not class cache with the blocklist (which is only strings)
+    notClassCache: new Set(tailwindConfig.blocklist ?? []),
+    postCssNodeCache: new Map(),
+    candidateRuleMap: new Map(),
+    tailwindConfig,
+    changedContent: changedContent,
+    variantMap: new Map(),
+    stylesheetCache: null,
+    variantOptions: new Map(),
+
+    markInvalidUtilityCandidate: (candidate) => markInvalidUtilityCandidate(context, candidate),
+    markInvalidUtilityNode: (node) => markInvalidUtilityNode(context, node),
+  }
+
+  let resolvedPlugins = resolvePlugins(context, root)
+  registerPlugins(resolvedPlugins, context)
+
+  return context
+}
+
+let contextMap = sharedState.contextMap
+let configContextMap = sharedState.configContextMap
+let contextSourcesMap = sharedState.contextSourcesMap
+
+export function getContext(
+  root,
+  result,
+  tailwindConfig,
+  userConfigPath,
+  tailwindConfigHash,
+  contextDependencies
+) {
+  let sourcePath = result.opts.from
+  let isConfigFile = userConfigPath !== null
+
+  env.DEBUG && console.log('Source path:', sourcePath)
+
+  let existingContext
+
+  if (isConfigFile && contextMap.has(sourcePath)) {
+    existingContext = contextMap.get(sourcePath)
+  } else if (configContextMap.has(tailwindConfigHash)) {
+    let context = configContextMap.get(tailwindConfigHash)
+    contextSourcesMap.get(context).add(sourcePath)
+    contextMap.set(sourcePath, context)
+
+    existingContext = context
+  }
+
+  let cssDidChange = hasContentChanged(sourcePath, root)
+
+  // If there's already a context in the cache and we don't need to
+  // reset the context, return the cached context.
+  if (existingContext) {
+    let [contextDependenciesChanged, mtimesToCommit] = trackModified(
+      [...contextDependencies],
+      getFileModifiedMap(existingContext)
+    )
+    if (!contextDependenciesChanged && !cssDidChange) {
+      return [existingContext, false, mtimesToCommit]
+    }
+  }
+
+  // If this source is in the context map, get the old context.
+  // Remove this source from the context sources for the old context,
+  // and clean up that context if no one else is using it. This can be
+  // called by many processes in rapid succession, so we check for presence
+  // first because the first process to run this code will wipe it out first.
+  if (contextMap.has(sourcePath)) {
+    let oldContext = contextMap.get(sourcePath)
+    if (contextSourcesMap.has(oldContext)) {
+      contextSourcesMap.get(oldContext).delete(sourcePath)
+      if (contextSourcesMap.get(oldContext).size === 0) {
+        contextSourcesMap.delete(oldContext)
+        for (let [tailwindConfigHash, context] of configContextMap) {
+          if (context === oldContext) {
+            configContextMap.delete(tailwindConfigHash)
+          }
+        }
+        for (let disposable of oldContext.disposables.splice(0)) {
+          disposable(oldContext)
+        }
+      }
+    }
+  }
+
+  env.DEBUG && console.log('Setting up new context...')
+
+  let context = createContext(tailwindConfig, [], root)
+
+  Object.assign(context, {
+    userConfigPath,
+  })
+
+  let [, mtimesToCommit] = trackModified([...contextDependencies], getFileModifiedMap(context))
+
+  // ---
+
+  // Update all context tracking state
+
+  configContextMap.set(tailwindConfigHash, context)
+  contextMap.set(sourcePath, context)
+
+  if (!contextSourcesMap.has(context)) {
+    contextSourcesMap.set(context, new Set())
+  }
+
+  contextSourcesMap.get(context).add(sourcePath)
+
+  return [context, true, mtimesToCommit]
+}
Index: frontend/node_modules/tailwindcss/src/lib/setupTrackingContext.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/setupTrackingContext.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/setupTrackingContext.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,172 @@
+// @ts-check
+
+import fs from 'fs'
+import LRU from '@alloc/quick-lru'
+
+import hash from '../util/hashConfig'
+import resolveConfig from '../public/resolve-config'
+import resolveConfigPath from '../util/resolveConfigPath'
+import { getContext, getFileModifiedMap } from './setupContextUtils'
+import parseDependency from '../util/parseDependency'
+import { validateConfig } from '../util/validateConfig.js'
+import { parseCandidateFiles, resolvedChangedContent } from './content.js'
+import { loadConfig } from '../lib/load-config'
+import getModuleDependencies from './getModuleDependencies'
+
+let configPathCache = new LRU({ maxSize: 100 })
+
+let candidateFilesCache = new WeakMap()
+
+function getCandidateFiles(context, tailwindConfig) {
+  if (candidateFilesCache.has(context)) {
+    return candidateFilesCache.get(context)
+  }
+
+  let candidateFiles = parseCandidateFiles(context, tailwindConfig)
+
+  return candidateFilesCache.set(context, candidateFiles).get(context)
+}
+
+// Get the config object based on a path
+function getTailwindConfig(configOrPath) {
+  let userConfigPath = resolveConfigPath(configOrPath)
+
+  if (userConfigPath !== null) {
+    let [prevConfig, prevConfigHash, prevDeps, prevModified] =
+      configPathCache.get(userConfigPath) || []
+
+    let newDeps = getModuleDependencies(userConfigPath)
+
+    let modified = false
+    let newModified = new Map()
+    for (let file of newDeps) {
+      let time = fs.statSync(file).mtimeMs
+      newModified.set(file, time)
+      if (!prevModified || !prevModified.has(file) || time > prevModified.get(file)) {
+        modified = true
+      }
+    }
+
+    // It hasn't changed (based on timestamps)
+    if (!modified) {
+      return [prevConfig, userConfigPath, prevConfigHash, prevDeps]
+    }
+
+    // It has changed (based on timestamps), or first run
+    for (let file of newDeps) {
+      // When loaded transitively through a TypeScript file `require.cache`
+      // may be undefined. Happens in Node 22.18+.
+      if (!require.cache) continue
+      delete require.cache[file]
+    }
+    let newConfig = validateConfig(resolveConfig(loadConfig(userConfigPath)))
+    let newHash = hash(newConfig)
+    configPathCache.set(userConfigPath, [newConfig, newHash, newDeps, newModified])
+    return [newConfig, userConfigPath, newHash, newDeps]
+  }
+
+  // It's a plain object, not a path
+  let newConfig = resolveConfig(configOrPath?.config ?? configOrPath ?? {})
+
+  newConfig = validateConfig(newConfig)
+
+  return [newConfig, null, hash(newConfig), []]
+}
+
+// DISABLE_TOUCH = TRUE
+
+// Retrieve an existing context from cache if possible (since contexts are unique per
+// source path), or set up a new one (including setting up watchers and registering
+// plugins) then return it
+export default function setupTrackingContext(configOrPath) {
+  return ({ tailwindDirectives, registerDependency }) => {
+    return (root, result) => {
+      let [tailwindConfig, userConfigPath, tailwindConfigHash, configDependencies] =
+        getTailwindConfig(configOrPath)
+
+      let contextDependencies = new Set(configDependencies)
+
+      // If there are no @tailwind or @apply rules, we don't consider this CSS
+      // file or its dependencies to be dependencies of the context. Can reuse
+      // the context even if they change. We may want to think about `@layer`
+      // being part of this trigger too, but it's tough because it's impossible
+      // for a layer in one file to end up in the actual @tailwind rule in
+      // another file since independent sources are effectively isolated.
+      if (tailwindDirectives.size > 0) {
+        // Add current css file as a context dependencies.
+        contextDependencies.add(result.opts.from)
+
+        // Add all css @import dependencies as context dependencies.
+        for (let message of result.messages) {
+          if (message.type === 'dependency') {
+            contextDependencies.add(message.file)
+          }
+        }
+      }
+
+      let [context, , mTimesToCommit] = getContext(
+        root,
+        result,
+        tailwindConfig,
+        userConfigPath,
+        tailwindConfigHash,
+        contextDependencies
+      )
+
+      let fileModifiedMap = getFileModifiedMap(context)
+
+      let candidateFiles = getCandidateFiles(context, tailwindConfig)
+
+      // If there are no @tailwind or @apply rules, we don't consider this CSS file or it's
+      // dependencies to be dependencies of the context. Can reuse the context even if they change.
+      // We may want to think about `@layer` being part of this trigger too, but it's tough
+      // because it's impossible for a layer in one file to end up in the actual @tailwind rule
+      // in another file since independent sources are effectively isolated.
+      if (tailwindDirectives.size > 0) {
+        // Add template paths as postcss dependencies.
+        for (let contentPath of candidateFiles) {
+          for (let dependency of parseDependency(contentPath)) {
+            registerDependency(dependency)
+          }
+        }
+
+        let [changedContent, contentMTimesToCommit] = resolvedChangedContent(
+          context,
+          candidateFiles,
+          fileModifiedMap
+        )
+
+        for (let content of changedContent) {
+          context.changedContent.push(content)
+        }
+
+        // Add the mtimes of the content files to the commit list
+        // We can overwrite the existing values because unconditionally
+        // This is because:
+        // 1. Most of the files here won't be in the map yet
+        // 2. If they are that means it's a context dependency
+        // and we're reading this after the context. This means
+        // that the mtime we just read is strictly >= the context
+        // mtime. Unless the user / os is doing something weird
+        // in which the mtime would be going backwards. If that
+        // happens there's already going to be problems.
+        for (let [path, mtime] of contentMTimesToCommit.entries()) {
+          mTimesToCommit.set(path, mtime)
+        }
+      }
+
+      for (let file of configDependencies) {
+        registerDependency({ type: 'dependency', file })
+      }
+
+      // "commit" the new modified time for all context deps
+      // We do this here because we want content tracking to
+      // read the "old" mtime even when it's a context dependency.
+      for (let [path, mtime] of mTimesToCommit.entries()) {
+        fileModifiedMap.set(path, mtime)
+      }
+
+      return context
+    }
+  }
+}
Index: frontend/node_modules/tailwindcss/src/lib/sharedState.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/sharedState.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/sharedState.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,57 @@
+export const env =
+  typeof process !== 'undefined'
+    ? {
+        NODE_ENV: process.env.NODE_ENV,
+        DEBUG: resolveDebug(process.env.DEBUG),
+      }
+    : {
+        NODE_ENV: 'production',
+        DEBUG: false,
+      }
+
+export const contextMap = new Map()
+export const configContextMap = new Map()
+export const contextSourcesMap = new Map()
+export const sourceHashMap = new Map()
+export const NOT_ON_DEMAND = new String('*')
+
+export const NONE = Symbol('__NONE__')
+
+export function resolveDebug(debug) {
+  if (debug === undefined) {
+    return false
+  }
+
+  // Environment variables are strings, so convert to boolean
+  if (debug === 'true' || debug === '1') {
+    return true
+  }
+
+  if (debug === 'false' || debug === '0') {
+    return false
+  }
+
+  // Keep the debug convention into account:
+  // DEBUG=* -> This enables all debug modes
+  // DEBUG=projectA,projectB,projectC -> This enables debug for projectA, projectB and projectC
+  // DEBUG=projectA:* -> This enables all debug modes for projectA (if you have sub-types)
+  // DEBUG=projectA,-projectB -> This enables debug for projectA and explicitly disables it for projectB
+
+  if (debug === '*') {
+    return true
+  }
+
+  let debuggers = debug.split(',').map((d) => d.split(':')[0])
+
+  // Ignoring tailwindcss
+  if (debuggers.includes('-tailwindcss')) {
+    return false
+  }
+
+  // Including tailwindcss
+  if (debuggers.includes('tailwindcss')) {
+    return true
+  }
+
+  return false
+}
Index: frontend/node_modules/tailwindcss/src/lib/substituteScreenAtRules.js
===================================================================
--- frontend/node_modules/tailwindcss/src/lib/substituteScreenAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/lib/substituteScreenAtRules.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+import { normalizeScreens } from '../util/normalizeScreens'
+import buildMediaQuery from '../util/buildMediaQuery'
+
+export default function ({ tailwindConfig: { theme } }) {
+  return function (css) {
+    css.walkAtRules('screen', (atRule) => {
+      let screen = atRule.params
+      let screens = normalizeScreens(theme.screens)
+      let screenDefinition = screens.find(({ name }) => name === screen)
+
+      if (!screenDefinition) {
+        throw atRule.error(`No \`${screen}\` screen found.`)
+      }
+
+      atRule.name = 'media'
+      atRule.params = buildMediaQuery(screenDefinition)
+    })
+  }
+}
Index: frontend/node_modules/tailwindcss/src/plugin.js
===================================================================
--- frontend/node_modules/tailwindcss/src/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,47 @@
+import setupTrackingContext from './lib/setupTrackingContext'
+import processTailwindFeatures from './processTailwindFeatures'
+import { env } from './lib/sharedState'
+import { findAtConfigPath } from './lib/findAtConfigPath'
+
+module.exports = function tailwindcss(configOrPath) {
+  return {
+    postcssPlugin: 'tailwindcss',
+    plugins: [
+      env.DEBUG &&
+        function (root) {
+          console.log('\n')
+          console.time('JIT TOTAL')
+          return root
+        },
+      async function (root, result) {
+        // Use the path for the `@config` directive if it exists, otherwise use the
+        // path for the file being processed
+        configOrPath = findAtConfigPath(root, result) ?? configOrPath
+
+        let context = setupTrackingContext(configOrPath)
+
+        if (root.type === 'document') {
+          let roots = root.nodes.filter((node) => node.type === 'root')
+
+          for (const root of roots) {
+            if (root.type === 'root') {
+              await processTailwindFeatures(context)(root, result)
+            }
+          }
+
+          return
+        }
+
+        await processTailwindFeatures(context)(root, result)
+      },
+      env.DEBUG &&
+        function (root) {
+          console.timeEnd('JIT TOTAL')
+          console.log('\n')
+          return root
+        },
+    ].filter(Boolean),
+  }
+}
+
+module.exports.postcss = true
Index: frontend/node_modules/tailwindcss/src/postcss-plugins/nesting/README.md
===================================================================
--- frontend/node_modules/tailwindcss/src/postcss-plugins/nesting/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/postcss-plugins/nesting/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,42 @@
+# tailwindcss/nesting
+
+This is a PostCSS plugin that wraps [postcss-nested](https://github.com/postcss/postcss-nested) or [postcss-nesting](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting) and acts as a compatibility layer to make sure your nesting plugin of choice properly understands Tailwind's custom syntax like `@apply` and `@screen`.
+
+Add it to your PostCSS configuration, somewhere before Tailwind itself:
+
+```js
+// postcss.config.js
+module.exports = {
+  plugins: [
+    require('postcss-import'),
+    require('tailwindcss/nesting'),
+    require('tailwindcss'),
+    require('autoprefixer'),
+  ]
+}
+```
+
+By default, it uses the [postcss-nested](https://github.com/postcss/postcss-nested) plugin under the hood, which uses a Sass-like syntax and is the plugin that powers nesting support in the [Tailwind CSS plugin API](https://tailwindcss.com/docs/plugins#css-in-js-syntax).
+
+If you'd rather use [postcss-nesting](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting) (which is based on the work-in-progress [CSS Nesting](https://drafts.csswg.org/css-nesting-1/) specification), first install the plugin alongside:
+
+```shell
+npm install postcss-nesting
+```
+
+Then pass the plugin itself as an argument to `tailwindcss/nesting` in your PostCSS configuration:
+
+```js
+// postcss.config.js
+module.exports = {
+  plugins: [
+    require('postcss-import'),
+    require('tailwindcss/nesting')(require('postcss-nesting')),
+    require('tailwindcss'),
+    require('autoprefixer'),
+  ]
+}
+```
+
+This can also be helpful if for whatever reason you need to use a very specific version of `postcss-nested` and want to override the version we bundle with `tailwindcss/nesting` itself.
+
Index: frontend/node_modules/tailwindcss/src/postcss-plugins/nesting/index.js
===================================================================
--- frontend/node_modules/tailwindcss/src/postcss-plugins/nesting/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/postcss-plugins/nesting/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,13 @@
+import { nesting } from './plugin'
+
+export default Object.assign(
+  function (opts) {
+    return {
+      postcssPlugin: 'tailwindcss/nesting',
+      Once(root, { result }) {
+        return nesting(opts)(root, result)
+      },
+    }
+  },
+  { postcss: true }
+)
Index: frontend/node_modules/tailwindcss/src/postcss-plugins/nesting/plugin.js
===================================================================
--- frontend/node_modules/tailwindcss/src/postcss-plugins/nesting/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/postcss-plugins/nesting/plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,80 @@
+import postcss from 'postcss'
+import postcssNested from 'postcss-nested'
+
+export function nesting(opts = postcssNested) {
+  return (root, result) => {
+    root.walkAtRules('screen', (rule) => {
+      rule.name = 'media'
+      rule.params = `screen(${rule.params})`
+    })
+
+    root.walkAtRules('apply', (rule) => {
+      rule.before(postcss.decl({ prop: '__apply', value: rule.params, source: rule.source }))
+      rule.remove()
+    })
+
+    let plugin = (() => {
+      if (
+        typeof opts === 'function' ||
+        (typeof opts === 'object' && opts?.hasOwnProperty?.('postcssPlugin'))
+      ) {
+        return opts
+      }
+
+      if (typeof opts === 'string') {
+        return require(opts)
+      }
+
+      if (Object.keys(opts).length <= 0) {
+        return postcssNested
+      }
+
+      throw new Error('tailwindcss/nesting should be loaded with a nesting plugin.')
+    })()
+
+    postcss([plugin]).process(root, result.opts).sync()
+
+    root.walkDecls('__apply', (decl) => {
+      decl.before(postcss.atRule({ name: 'apply', params: decl.value, source: decl.source }))
+      decl.remove()
+    })
+
+    /**
+     * Use a private PostCSS API to remove the "clean" flag from the entire AST.
+     * This is done because running process() on the AST will set the "clean"
+     * flag on all nodes, which we don't want.
+     *
+     * This causes downstream plugins using the visitor API to be skipped.
+     *
+     * This is guarded because the PostCSS API is not public
+     * and may change in future versions of PostCSS.
+     *
+     * See https://github.com/postcss/postcss/issues/1712 for more details
+     *
+     * @param {import('postcss').Node} node
+     */
+    function markDirty(node) {
+      if (!('markDirty' in node)) {
+        return
+      }
+
+      // Traverse the tree down to the leaf nodes
+      if (node.nodes) {
+        node.nodes.forEach((n) => markDirty(n))
+      }
+
+      // If it's a leaf node mark it as dirty
+      // We do this here because marking a node as dirty
+      // will walk up the tree and mark all parents as dirty
+      // resulting in a lot of unnecessary work if we did this
+      // for every single node
+      if (!node.nodes) {
+        node.markDirty()
+      }
+    }
+
+    markDirty(root)
+
+    return root
+  }
+}
Index: frontend/node_modules/tailwindcss/src/processTailwindFeatures.js
===================================================================
--- frontend/node_modules/tailwindcss/src/processTailwindFeatures.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/processTailwindFeatures.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,56 @@
+import normalizeTailwindDirectives from './lib/normalizeTailwindDirectives'
+import expandTailwindAtRules from './lib/expandTailwindAtRules'
+import expandApplyAtRules from './lib/expandApplyAtRules'
+import evaluateTailwindFunctions from './lib/evaluateTailwindFunctions'
+import substituteScreenAtRules from './lib/substituteScreenAtRules'
+import resolveDefaultsAtRules from './lib/resolveDefaultsAtRules'
+import collapseAdjacentRules from './lib/collapseAdjacentRules'
+import collapseDuplicateDeclarations from './lib/collapseDuplicateDeclarations'
+import partitionApplyAtRules from './lib/partitionApplyAtRules'
+import { createContext } from './lib/setupContextUtils'
+import { issueFlagNotices } from './featureFlags'
+
+export default function processTailwindFeatures(setupContext) {
+  return async function (root, result) {
+    let { tailwindDirectives, applyDirectives } = normalizeTailwindDirectives(root)
+
+    // Partition apply rules that are found in the css
+    // itself.
+    partitionApplyAtRules()(root, result)
+
+    let context = setupContext({
+      tailwindDirectives,
+      applyDirectives,
+      registerDependency(dependency) {
+        result.messages.push({
+          plugin: 'tailwindcss',
+          parent: result.opts.from,
+          ...dependency,
+        })
+      },
+      createContext(tailwindConfig, changedContent) {
+        return createContext(tailwindConfig, changedContent, root)
+      },
+    })(root, result)
+
+    if (context.tailwindConfig.separator === '-') {
+      throw new Error(
+        "The '-' character cannot be used as a custom separator in JIT mode due to parsing ambiguity. Please use another character like '_' instead."
+      )
+    }
+
+    issueFlagNotices(context.tailwindConfig)
+
+    await expandTailwindAtRules(context)(root, result)
+
+    // Partition apply rules that are generated by
+    // addComponents, addUtilities and so on.
+    partitionApplyAtRules()(root, result)
+    expandApplyAtRules(context)(root, result)
+    evaluateTailwindFunctions(context)(root, result)
+    substituteScreenAtRules(context)(root, result)
+    resolveDefaultsAtRules(context)(root, result)
+    collapseAdjacentRules(context)(root, result)
+    collapseDuplicateDeclarations(context)(root, result)
+  }
+}
Index: frontend/node_modules/tailwindcss/src/public/colors.js
===================================================================
--- frontend/node_modules/tailwindcss/src/public/colors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/public/colors.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,322 @@
+import log from '../util/log'
+
+function warn({ version, from, to }) {
+  log.warn(`${from}-color-renamed`, [
+    `As of Tailwind CSS ${version}, \`${from}\` has been renamed to \`${to}\`.`,
+    'Update your configuration file to silence this warning.',
+  ])
+}
+
+export default {
+  inherit: 'inherit',
+  current: 'currentColor',
+  transparent: 'transparent',
+  black: '#000',
+  white: '#fff',
+  slate: {
+    50: '#f8fafc',
+    100: '#f1f5f9',
+    200: '#e2e8f0',
+    300: '#cbd5e1',
+    400: '#94a3b8',
+    500: '#64748b',
+    600: '#475569',
+    700: '#334155',
+    800: '#1e293b',
+    900: '#0f172a',
+    950: '#020617',
+  },
+  gray: {
+    50: '#f9fafb',
+    100: '#f3f4f6',
+    200: '#e5e7eb',
+    300: '#d1d5db',
+    400: '#9ca3af',
+    500: '#6b7280',
+    600: '#4b5563',
+    700: '#374151',
+    800: '#1f2937',
+    900: '#111827',
+    950: '#030712',
+  },
+  zinc: {
+    50: '#fafafa',
+    100: '#f4f4f5',
+    200: '#e4e4e7',
+    300: '#d4d4d8',
+    400: '#a1a1aa',
+    500: '#71717a',
+    600: '#52525b',
+    700: '#3f3f46',
+    800: '#27272a',
+    900: '#18181b',
+    950: '#09090b',
+  },
+  neutral: {
+    50: '#fafafa',
+    100: '#f5f5f5',
+    200: '#e5e5e5',
+    300: '#d4d4d4',
+    400: '#a3a3a3',
+    500: '#737373',
+    600: '#525252',
+    700: '#404040',
+    800: '#262626',
+    900: '#171717',
+    950: '#0a0a0a',
+  },
+  stone: {
+    50: '#fafaf9',
+    100: '#f5f5f4',
+    200: '#e7e5e4',
+    300: '#d6d3d1',
+    400: '#a8a29e',
+    500: '#78716c',
+    600: '#57534e',
+    700: '#44403c',
+    800: '#292524',
+    900: '#1c1917',
+    950: '#0c0a09',
+  },
+  red: {
+    50: '#fef2f2',
+    100: '#fee2e2',
+    200: '#fecaca',
+    300: '#fca5a5',
+    400: '#f87171',
+    500: '#ef4444',
+    600: '#dc2626',
+    700: '#b91c1c',
+    800: '#991b1b',
+    900: '#7f1d1d',
+    950: '#450a0a',
+  },
+  orange: {
+    50: '#fff7ed',
+    100: '#ffedd5',
+    200: '#fed7aa',
+    300: '#fdba74',
+    400: '#fb923c',
+    500: '#f97316',
+    600: '#ea580c',
+    700: '#c2410c',
+    800: '#9a3412',
+    900: '#7c2d12',
+    950: '#431407',
+  },
+  amber: {
+    50: '#fffbeb',
+    100: '#fef3c7',
+    200: '#fde68a',
+    300: '#fcd34d',
+    400: '#fbbf24',
+    500: '#f59e0b',
+    600: '#d97706',
+    700: '#b45309',
+    800: '#92400e',
+    900: '#78350f',
+    950: '#451a03',
+  },
+  yellow: {
+    50: '#fefce8',
+    100: '#fef9c3',
+    200: '#fef08a',
+    300: '#fde047',
+    400: '#facc15',
+    500: '#eab308',
+    600: '#ca8a04',
+    700: '#a16207',
+    800: '#854d0e',
+    900: '#713f12',
+    950: '#422006',
+  },
+  lime: {
+    50: '#f7fee7',
+    100: '#ecfccb',
+    200: '#d9f99d',
+    300: '#bef264',
+    400: '#a3e635',
+    500: '#84cc16',
+    600: '#65a30d',
+    700: '#4d7c0f',
+    800: '#3f6212',
+    900: '#365314',
+    950: '#1a2e05',
+  },
+  green: {
+    50: '#f0fdf4',
+    100: '#dcfce7',
+    200: '#bbf7d0',
+    300: '#86efac',
+    400: '#4ade80',
+    500: '#22c55e',
+    600: '#16a34a',
+    700: '#15803d',
+    800: '#166534',
+    900: '#14532d',
+    950: '#052e16',
+  },
+  emerald: {
+    50: '#ecfdf5',
+    100: '#d1fae5',
+    200: '#a7f3d0',
+    300: '#6ee7b7',
+    400: '#34d399',
+    500: '#10b981',
+    600: '#059669',
+    700: '#047857',
+    800: '#065f46',
+    900: '#064e3b',
+    950: '#022c22',
+  },
+  teal: {
+    50: '#f0fdfa',
+    100: '#ccfbf1',
+    200: '#99f6e4',
+    300: '#5eead4',
+    400: '#2dd4bf',
+    500: '#14b8a6',
+    600: '#0d9488',
+    700: '#0f766e',
+    800: '#115e59',
+    900: '#134e4a',
+    950: '#042f2e',
+  },
+  cyan: {
+    50: '#ecfeff',
+    100: '#cffafe',
+    200: '#a5f3fc',
+    300: '#67e8f9',
+    400: '#22d3ee',
+    500: '#06b6d4',
+    600: '#0891b2',
+    700: '#0e7490',
+    800: '#155e75',
+    900: '#164e63',
+    950: '#083344',
+  },
+  sky: {
+    50: '#f0f9ff',
+    100: '#e0f2fe',
+    200: '#bae6fd',
+    300: '#7dd3fc',
+    400: '#38bdf8',
+    500: '#0ea5e9',
+    600: '#0284c7',
+    700: '#0369a1',
+    800: '#075985',
+    900: '#0c4a6e',
+    950: '#082f49',
+  },
+  blue: {
+    50: '#eff6ff',
+    100: '#dbeafe',
+    200: '#bfdbfe',
+    300: '#93c5fd',
+    400: '#60a5fa',
+    500: '#3b82f6',
+    600: '#2563eb',
+    700: '#1d4ed8',
+    800: '#1e40af',
+    900: '#1e3a8a',
+    950: '#172554',
+  },
+  indigo: {
+    50: '#eef2ff',
+    100: '#e0e7ff',
+    200: '#c7d2fe',
+    300: '#a5b4fc',
+    400: '#818cf8',
+    500: '#6366f1',
+    600: '#4f46e5',
+    700: '#4338ca',
+    800: '#3730a3',
+    900: '#312e81',
+    950: '#1e1b4b',
+  },
+  violet: {
+    50: '#f5f3ff',
+    100: '#ede9fe',
+    200: '#ddd6fe',
+    300: '#c4b5fd',
+    400: '#a78bfa',
+    500: '#8b5cf6',
+    600: '#7c3aed',
+    700: '#6d28d9',
+    800: '#5b21b6',
+    900: '#4c1d95',
+    950: '#2e1065',
+  },
+  purple: {
+    50: '#faf5ff',
+    100: '#f3e8ff',
+    200: '#e9d5ff',
+    300: '#d8b4fe',
+    400: '#c084fc',
+    500: '#a855f7',
+    600: '#9333ea',
+    700: '#7e22ce',
+    800: '#6b21a8',
+    900: '#581c87',
+    950: '#3b0764',
+  },
+  fuchsia: {
+    50: '#fdf4ff',
+    100: '#fae8ff',
+    200: '#f5d0fe',
+    300: '#f0abfc',
+    400: '#e879f9',
+    500: '#d946ef',
+    600: '#c026d3',
+    700: '#a21caf',
+    800: '#86198f',
+    900: '#701a75',
+    950: '#4a044e',
+  },
+  pink: {
+    50: '#fdf2f8',
+    100: '#fce7f3',
+    200: '#fbcfe8',
+    300: '#f9a8d4',
+    400: '#f472b6',
+    500: '#ec4899',
+    600: '#db2777',
+    700: '#be185d',
+    800: '#9d174d',
+    900: '#831843',
+    950: '#500724',
+  },
+  rose: {
+    50: '#fff1f2',
+    100: '#ffe4e6',
+    200: '#fecdd3',
+    300: '#fda4af',
+    400: '#fb7185',
+    500: '#f43f5e',
+    600: '#e11d48',
+    700: '#be123c',
+    800: '#9f1239',
+    900: '#881337',
+    950: '#4c0519',
+  },
+  get lightBlue() {
+    warn({ version: 'v2.2', from: 'lightBlue', to: 'sky' })
+    return this.sky
+  },
+  get warmGray() {
+    warn({ version: 'v3.0', from: 'warmGray', to: 'stone' })
+    return this.stone
+  },
+  get trueGray() {
+    warn({ version: 'v3.0', from: 'trueGray', to: 'neutral' })
+    return this.neutral
+  },
+  get coolGray() {
+    warn({ version: 'v3.0', from: 'coolGray', to: 'gray' })
+    return this.gray
+  },
+  get blueGray() {
+    warn({ version: 'v3.0', from: 'blueGray', to: 'slate' })
+    return this.slate
+  },
+}
Index: frontend/node_modules/tailwindcss/src/public/create-plugin.js
===================================================================
--- frontend/node_modules/tailwindcss/src/public/create-plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/public/create-plugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import createPlugin from '../util/createPlugin'
+export default createPlugin
Index: frontend/node_modules/tailwindcss/src/public/default-config.js
===================================================================
--- frontend/node_modules/tailwindcss/src/public/default-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/public/default-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import { cloneDeep } from '../util/cloneDeep'
+import defaultConfig from '../../stubs/config.full'
+
+export default cloneDeep(defaultConfig)
Index: frontend/node_modules/tailwindcss/src/public/default-theme.js
===================================================================
--- frontend/node_modules/tailwindcss/src/public/default-theme.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/public/default-theme.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+import { cloneDeep } from '../util/cloneDeep'
+import defaultFullConfig from '../../stubs/config.full'
+
+export default cloneDeep(defaultFullConfig.theme)
Index: frontend/node_modules/tailwindcss/src/public/load-config.js
===================================================================
--- frontend/node_modules/tailwindcss/src/public/load-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/public/load-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+import { loadConfig } from '../lib/load-config'
+export default loadConfig
Index: frontend/node_modules/tailwindcss/src/public/resolve-config.js
===================================================================
--- frontend/node_modules/tailwindcss/src/public/resolve-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/public/resolve-config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,7 @@
+import resolveConfigObjects from '../util/resolveConfig'
+import getAllConfigs from '../util/getAllConfigs'
+
+export default function resolveConfig(...configs) {
+  let [, ...defaultConfigs] = getAllConfigs(configs[0])
+  return resolveConfigObjects([...configs, ...defaultConfigs])
+}
Index: frontend/node_modules/tailwindcss/src/util/applyImportantSelector.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/applyImportantSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/applyImportantSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,26 @@
+import parser from 'postcss-selector-parser'
+import { movePseudos } from './pseudoElements'
+
+export function applyImportantSelector(selector, important) {
+  let sel = parser().astSync(selector)
+
+  sel.each((sel) => {
+    // For nesting, we only need to wrap a selector with :is() if it has a top-level combinator,
+    // e.g. `.dark .text-white`, to be independent of DOM order. Any other selector, including
+    // combinators inside of pseudos like `:where()`, are ok to nest.
+    let shouldWrap = sel.nodes.some((node) => node.type === 'combinator')
+
+    if (shouldWrap) {
+      sel.nodes = [
+        parser.pseudo({
+          value: ':is',
+          nodes: [sel.clone()],
+        }),
+      ]
+    }
+
+    movePseudos(sel)
+  })
+
+  return `${important} ${sel.toString()}`
+}
Index: frontend/node_modules/tailwindcss/src/util/bigSign.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/bigSign.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/bigSign.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+export default function bigSign(bigIntValue) {
+  return (bigIntValue > 0n) - (bigIntValue < 0n)
+}
Index: frontend/node_modules/tailwindcss/src/util/buildMediaQuery.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/buildMediaQuery.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/buildMediaQuery.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,22 @@
+export default function buildMediaQuery(screens) {
+  screens = Array.isArray(screens) ? screens : [screens]
+
+  return screens
+    .map((screen) => {
+      let values = screen.values.map((screen) => {
+        if (screen.raw !== undefined) {
+          return screen.raw
+        }
+
+        return [
+          screen.min && `(min-width: ${screen.min})`,
+          screen.max && `(max-width: ${screen.max})`,
+        ]
+          .filter(Boolean)
+          .join(' and ')
+      })
+
+      return screen.not ? `not all and ${values}` : values
+    })
+    .join(', ')
+}
Index: frontend/node_modules/tailwindcss/src/util/cloneDeep.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/cloneDeep.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/cloneDeep.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,11 @@
+export function cloneDeep(value) {
+  if (Array.isArray(value)) {
+    return value.map((child) => cloneDeep(child))
+  }
+
+  if (typeof value === 'object' && value !== null) {
+    return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, cloneDeep(v)]))
+  }
+
+  return value
+}
Index: frontend/node_modules/tailwindcss/src/util/cloneNodes.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/cloneNodes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/cloneNodes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,49 @@
+/**
+ * @param {import('postcss').Container[]} nodes
+ * @param {any} source
+ * @param {any} raws
+ * @returns {import('postcss').Container[]}
+ */
+export default function cloneNodes(nodes, source = undefined, raws = undefined) {
+  return nodes.map((node) => {
+    let cloned = node.clone()
+
+    if (raws !== undefined) {
+      cloned.raws.tailwind = {
+        ...cloned.raws.tailwind,
+        ...raws,
+      }
+    }
+
+    if (source !== undefined) {
+      traverse(cloned, (node) => {
+        // Do not traverse nodes that have opted
+        // to preserve their original source
+        let shouldPreserveSource = node.raws.tailwind?.preserveSource === true && node.source
+        if (shouldPreserveSource) {
+          return false
+        }
+
+        // Otherwise we can safely replace the source
+        // And continue traversing
+        node.source = source
+      })
+    }
+
+    return cloned
+  })
+}
+
+/**
+ * Traverse a tree of nodes and don't traverse children if the callback
+ * returns false. Ideally we'd use Container#walk instead of this
+ * function but it stops traversing siblings too.
+ *
+ * @param {import('postcss').Container} node
+ * @param {(node: import('postcss').Container) => boolean} onNode
+ */
+function traverse(node, onNode) {
+  if (onNode(node) !== false) {
+    node.each?.((child) => traverse(child, onNode))
+  }
+}
Index: frontend/node_modules/tailwindcss/src/util/color.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/color.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/color.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,88 @@
+import namedColors from './colorNames'
+
+let HEX = /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i
+let SHORT_HEX = /^#([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i
+let VALUE = /(?:\d+|\d*\.\d+)%?/
+let SEP = /(?:\s*,\s*|\s+)/
+let ALPHA_SEP = /\s*[,/]\s*/
+let CUSTOM_PROPERTY = /var\(--(?:[^ )]*?)(?:,(?:[^ )]*?|var\(--[^ )]*?\)))?\)/
+
+let RGB = new RegExp(
+  `^(rgba?)\\(\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`
+)
+let HSL = new RegExp(
+  `^(hsla?)\\(\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`
+)
+
+// In "loose" mode the color may contain fewer than 3 parts, as long as at least
+// one of the parts is variable.
+export function parseColor(value, { loose = false } = {}) {
+  if (typeof value !== 'string') {
+    return null
+  }
+
+  value = value.trim()
+  if (value === 'transparent') {
+    return { mode: 'rgb', color: ['0', '0', '0'], alpha: '0' }
+  }
+
+  if (value in namedColors) {
+    return { mode: 'rgb', color: namedColors[value].map((v) => v.toString()) }
+  }
+
+  let hex = value
+    .replace(SHORT_HEX, (_, r, g, b, a) => ['#', r, r, g, g, b, b, a ? a + a : ''].join(''))
+    .match(HEX)
+
+  if (hex !== null) {
+    return {
+      mode: 'rgb',
+      color: [parseInt(hex[1], 16), parseInt(hex[2], 16), parseInt(hex[3], 16)].map((v) =>
+        v.toString()
+      ),
+      alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined,
+    }
+  }
+
+  let match = value.match(RGB) ?? value.match(HSL)
+
+  if (match === null) {
+    return null
+  }
+
+  let color = [match[2], match[3], match[4]].filter(Boolean).map((v) => v.toString())
+
+  // rgba(var(--my-color), 0.1)
+  // hsla(var(--my-color), 0.1)
+  if (color.length === 2 && color[0].startsWith('var(')) {
+    return {
+      mode: match[1],
+      color: [color[0]],
+      alpha: color[1],
+    }
+  }
+
+  if (!loose && color.length !== 3) {
+    return null
+  }
+
+  if (color.length < 3 && !color.some((part) => /^var\(.*?\)$/.test(part))) {
+    return null
+  }
+
+  return {
+    mode: match[1],
+    color,
+    alpha: match[5]?.toString?.(),
+  }
+}
+
+export function formatColor({ mode, color, alpha }) {
+  let hasAlpha = alpha !== undefined
+
+  if (mode === 'rgba' || mode === 'hsla') {
+    return `${mode}(${color.join(', ')}${hasAlpha ? `, ${alpha}` : ''})`
+  }
+
+  return `${mode}(${color.join(' ')}${hasAlpha ? ` / ${alpha}` : ''})`
+}
Index: frontend/node_modules/tailwindcss/src/util/colorNames.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/colorNames.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/colorNames.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,150 @@
+export default {
+  aliceblue: [240, 248, 255],
+  antiquewhite: [250, 235, 215],
+  aqua: [0, 255, 255],
+  aquamarine: [127, 255, 212],
+  azure: [240, 255, 255],
+  beige: [245, 245, 220],
+  bisque: [255, 228, 196],
+  black: [0, 0, 0],
+  blanchedalmond: [255, 235, 205],
+  blue: [0, 0, 255],
+  blueviolet: [138, 43, 226],
+  brown: [165, 42, 42],
+  burlywood: [222, 184, 135],
+  cadetblue: [95, 158, 160],
+  chartreuse: [127, 255, 0],
+  chocolate: [210, 105, 30],
+  coral: [255, 127, 80],
+  cornflowerblue: [100, 149, 237],
+  cornsilk: [255, 248, 220],
+  crimson: [220, 20, 60],
+  cyan: [0, 255, 255],
+  darkblue: [0, 0, 139],
+  darkcyan: [0, 139, 139],
+  darkgoldenrod: [184, 134, 11],
+  darkgray: [169, 169, 169],
+  darkgreen: [0, 100, 0],
+  darkgrey: [169, 169, 169],
+  darkkhaki: [189, 183, 107],
+  darkmagenta: [139, 0, 139],
+  darkolivegreen: [85, 107, 47],
+  darkorange: [255, 140, 0],
+  darkorchid: [153, 50, 204],
+  darkred: [139, 0, 0],
+  darksalmon: [233, 150, 122],
+  darkseagreen: [143, 188, 143],
+  darkslateblue: [72, 61, 139],
+  darkslategray: [47, 79, 79],
+  darkslategrey: [47, 79, 79],
+  darkturquoise: [0, 206, 209],
+  darkviolet: [148, 0, 211],
+  deeppink: [255, 20, 147],
+  deepskyblue: [0, 191, 255],
+  dimgray: [105, 105, 105],
+  dimgrey: [105, 105, 105],
+  dodgerblue: [30, 144, 255],
+  firebrick: [178, 34, 34],
+  floralwhite: [255, 250, 240],
+  forestgreen: [34, 139, 34],
+  fuchsia: [255, 0, 255],
+  gainsboro: [220, 220, 220],
+  ghostwhite: [248, 248, 255],
+  gold: [255, 215, 0],
+  goldenrod: [218, 165, 32],
+  gray: [128, 128, 128],
+  green: [0, 128, 0],
+  greenyellow: [173, 255, 47],
+  grey: [128, 128, 128],
+  honeydew: [240, 255, 240],
+  hotpink: [255, 105, 180],
+  indianred: [205, 92, 92],
+  indigo: [75, 0, 130],
+  ivory: [255, 255, 240],
+  khaki: [240, 230, 140],
+  lavender: [230, 230, 250],
+  lavenderblush: [255, 240, 245],
+  lawngreen: [124, 252, 0],
+  lemonchiffon: [255, 250, 205],
+  lightblue: [173, 216, 230],
+  lightcoral: [240, 128, 128],
+  lightcyan: [224, 255, 255],
+  lightgoldenrodyellow: [250, 250, 210],
+  lightgray: [211, 211, 211],
+  lightgreen: [144, 238, 144],
+  lightgrey: [211, 211, 211],
+  lightpink: [255, 182, 193],
+  lightsalmon: [255, 160, 122],
+  lightseagreen: [32, 178, 170],
+  lightskyblue: [135, 206, 250],
+  lightslategray: [119, 136, 153],
+  lightslategrey: [119, 136, 153],
+  lightsteelblue: [176, 196, 222],
+  lightyellow: [255, 255, 224],
+  lime: [0, 255, 0],
+  limegreen: [50, 205, 50],
+  linen: [250, 240, 230],
+  magenta: [255, 0, 255],
+  maroon: [128, 0, 0],
+  mediumaquamarine: [102, 205, 170],
+  mediumblue: [0, 0, 205],
+  mediumorchid: [186, 85, 211],
+  mediumpurple: [147, 112, 219],
+  mediumseagreen: [60, 179, 113],
+  mediumslateblue: [123, 104, 238],
+  mediumspringgreen: [0, 250, 154],
+  mediumturquoise: [72, 209, 204],
+  mediumvioletred: [199, 21, 133],
+  midnightblue: [25, 25, 112],
+  mintcream: [245, 255, 250],
+  mistyrose: [255, 228, 225],
+  moccasin: [255, 228, 181],
+  navajowhite: [255, 222, 173],
+  navy: [0, 0, 128],
+  oldlace: [253, 245, 230],
+  olive: [128, 128, 0],
+  olivedrab: [107, 142, 35],
+  orange: [255, 165, 0],
+  orangered: [255, 69, 0],
+  orchid: [218, 112, 214],
+  palegoldenrod: [238, 232, 170],
+  palegreen: [152, 251, 152],
+  paleturquoise: [175, 238, 238],
+  palevioletred: [219, 112, 147],
+  papayawhip: [255, 239, 213],
+  peachpuff: [255, 218, 185],
+  peru: [205, 133, 63],
+  pink: [255, 192, 203],
+  plum: [221, 160, 221],
+  powderblue: [176, 224, 230],
+  purple: [128, 0, 128],
+  rebeccapurple: [102, 51, 153],
+  red: [255, 0, 0],
+  rosybrown: [188, 143, 143],
+  royalblue: [65, 105, 225],
+  saddlebrown: [139, 69, 19],
+  salmon: [250, 128, 114],
+  sandybrown: [244, 164, 96],
+  seagreen: [46, 139, 87],
+  seashell: [255, 245, 238],
+  sienna: [160, 82, 45],
+  silver: [192, 192, 192],
+  skyblue: [135, 206, 235],
+  slateblue: [106, 90, 205],
+  slategray: [112, 128, 144],
+  slategrey: [112, 128, 144],
+  snow: [255, 250, 250],
+  springgreen: [0, 255, 127],
+  steelblue: [70, 130, 180],
+  tan: [210, 180, 140],
+  teal: [0, 128, 128],
+  thistle: [216, 191, 216],
+  tomato: [255, 99, 71],
+  turquoise: [64, 224, 208],
+  violet: [238, 130, 238],
+  wheat: [245, 222, 179],
+  white: [255, 255, 255],
+  whitesmoke: [245, 245, 245],
+  yellow: [255, 255, 0],
+  yellowgreen: [154, 205, 50],
+}
Index: frontend/node_modules/tailwindcss/src/util/configurePlugins.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/configurePlugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/configurePlugins.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,23 @@
+export default function (pluginConfig, plugins) {
+  if (pluginConfig === undefined) {
+    return plugins
+  }
+
+  const pluginNames = Array.isArray(pluginConfig)
+    ? pluginConfig
+    : [
+        ...new Set(
+          plugins
+            .filter((pluginName) => {
+              return pluginConfig !== false && pluginConfig[pluginName] !== false
+            })
+            .concat(
+              Object.keys(pluginConfig).filter((pluginName) => {
+                return pluginConfig[pluginName] !== false
+              })
+            )
+        ),
+      ]
+
+  return pluginNames
+}
Index: frontend/node_modules/tailwindcss/src/util/createPlugin.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/createPlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/createPlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,27 @@
+function createPlugin(plugin, config) {
+  return {
+    handler: plugin,
+    config,
+  }
+}
+
+createPlugin.withOptions = function (pluginFunction, configFunction = () => ({})) {
+  const optionsFunction = function (options) {
+    return {
+      __options: options,
+      handler: pluginFunction(options),
+      config: configFunction(options),
+    }
+  }
+
+  optionsFunction.__isOptionsFunction = true
+
+  // Expose plugin dependencies so that `object-hash` returns a different
+  // value if anything here changes, to ensure a rebuild is triggered.
+  optionsFunction.__pluginFunction = pluginFunction
+  optionsFunction.__configFunction = configFunction
+
+  return optionsFunction
+}
+
+export default createPlugin
Index: frontend/node_modules/tailwindcss/src/util/createUtilityPlugin.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/createUtilityPlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/createUtilityPlugin.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,37 @@
+import transformThemeValue from './transformThemeValue'
+
+export default function createUtilityPlugin(
+  themeKey,
+  utilityVariations = [[themeKey, [themeKey]]],
+  { filterDefault = false, ...options } = {}
+) {
+  let transformValue = transformThemeValue(themeKey)
+  return function ({ matchUtilities, theme }) {
+    for (let utilityVariation of utilityVariations) {
+      let group = Array.isArray(utilityVariation[0]) ? utilityVariation : [utilityVariation]
+
+      matchUtilities(
+        group.reduce((obj, [classPrefix, properties]) => {
+          return Object.assign(obj, {
+            [classPrefix]: (value) => {
+              return properties.reduce((obj, name) => {
+                if (Array.isArray(name)) {
+                  return Object.assign(obj, { [name[0]]: name[1] })
+                }
+                return Object.assign(obj, { [name]: transformValue(value) })
+              }, {})
+            },
+          })
+        }, {}),
+        {
+          ...options,
+          values: filterDefault
+            ? Object.fromEntries(
+                Object.entries(theme(themeKey) ?? {}).filter(([modifier]) => modifier !== 'DEFAULT')
+              )
+            : theme(themeKey),
+        }
+      )
+    }
+  }
+}
Index: frontend/node_modules/tailwindcss/src/util/dataTypes.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/dataTypes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/dataTypes.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,327 @@
+import { parseColor } from './color'
+import { addWhitespaceAroundMathOperators } from './math-operators'
+import { parseBoxShadowValue } from './parseBoxShadowValue'
+import { splitAtTopLevelOnly } from './splitAtTopLevelOnly'
+
+let cssFunctions = ['min', 'max', 'clamp', 'calc']
+
+// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types
+
+function isCSSFunction(value) {
+  return cssFunctions.some((fn) => new RegExp(`^${fn}\\(.*\\)`).test(value))
+}
+
+// These properties accept a `<dashed-ident>` as one of the values. This means that you can use them
+// as: `timeline-scope: --tl;`
+//
+// Without the `var(--tl)`, in these cases we don't want to normalize the value, and you should add
+// the `var()` yourself.
+//
+// More info:
+// - https://drafts.csswg.org/scroll-animations/#propdef-timeline-scope
+// - https://developer.mozilla.org/en-US/docs/Web/CSS/timeline-scope#dashed-ident
+// - https://www.w3.org/TR/css-anchor-position-1
+//
+const AUTO_VAR_INJECTION_EXCEPTIONS = new Set([
+  // Concrete properties
+  'scroll-timeline-name',
+  'timeline-scope',
+  'view-timeline-name',
+  'font-palette',
+  'anchor-name',
+  'anchor-scope',
+  'position-anchor',
+  'position-try-options',
+
+  // Shorthand properties
+  'scroll-timeline',
+  'animation-timeline',
+  'view-timeline',
+  'position-try',
+])
+
+// This is not a data type, but rather a function that can normalize the
+// correct values.
+export function normalize(value, context = null, isRoot = true) {
+  let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property)
+  if (value.startsWith('--') && !isVarException) {
+    return `var(${value})`
+  }
+
+  // Keep raw strings if it starts with `url(`
+  if (value.includes('url(')) {
+    return value
+      .split(/(url\(.*?\))/g)
+      .filter(Boolean)
+      .map((part) => {
+        if (/^url\(.*?\)$/.test(part)) {
+          return part
+        }
+
+        return normalize(part, context, false)
+      })
+      .join('')
+  }
+
+  // Convert `_` to ` `, except for escaped underscores `\_`
+  value = value
+    .replace(
+      /([^\\])_+/g,
+      (fullMatch, characterBefore) => characterBefore + ' '.repeat(fullMatch.length - 1)
+    )
+    .replace(/^_/g, ' ')
+    .replace(/\\_/g, '_')
+
+  // Remove leftover whitespace
+  if (isRoot) {
+    value = value.trim()
+  }
+
+  value = addWhitespaceAroundMathOperators(value)
+
+  return value
+}
+
+export function normalizeAttributeSelectors(value) {
+  // Wrap values in attribute selectors with quotes
+  if (value.includes('=')) {
+    value = value.replace(/(=.*)/g, (_fullMatch, match) => {
+      if (match[1] === "'" || match[1] === '"') {
+        return match
+      }
+
+      // Handle regex flags on unescaped values
+      if (match.length > 2) {
+        let trailingCharacter = match[match.length - 1]
+        if (
+          match[match.length - 2] === ' ' &&
+          (trailingCharacter === 'i' ||
+            trailingCharacter === 'I' ||
+            trailingCharacter === 's' ||
+            trailingCharacter === 'S')
+        ) {
+          return `="${match.slice(1, -2)}" ${match[match.length - 1]}`
+        }
+      }
+
+      return `="${match.slice(1)}"`
+    })
+  }
+  return value
+}
+
+export function url(value) {
+  return value.startsWith('url(')
+}
+
+export function number(value) {
+  return !isNaN(Number(value)) || isCSSFunction(value)
+}
+
+export function percentage(value) {
+  return (value.endsWith('%') && number(value.slice(0, -1))) || isCSSFunction(value)
+}
+
+// Please refer to MDN when updating this list:
+// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units
+// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units
+let lengthUnits = [
+  'cm',
+  'mm',
+  'Q',
+  'in',
+  'pc',
+  'pt',
+  'px',
+  'em',
+  'ex',
+  'ch',
+  'rem',
+  'lh',
+  'rlh',
+  'vw',
+  'vh',
+  'vmin',
+  'vmax',
+  'vb',
+  'vi',
+  'svw',
+  'svh',
+  'lvw',
+  'lvh',
+  'dvw',
+  'dvh',
+  'cqw',
+  'cqh',
+  'cqi',
+  'cqb',
+  'cqmin',
+  'cqmax',
+]
+let lengthUnitsPattern = `(?:${lengthUnits.join('|')})`
+export function length(value) {
+  return (
+    value === '0' ||
+    new RegExp(`^[+-]?[0-9]*\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) ||
+    isCSSFunction(value)
+  )
+}
+
+let lineWidths = new Set(['thin', 'medium', 'thick'])
+export function lineWidth(value) {
+  return lineWidths.has(value)
+}
+
+export function shadow(value) {
+  let parsedShadows = parseBoxShadowValue(normalize(value))
+
+  for (let parsedShadow of parsedShadows) {
+    if (!parsedShadow.valid) {
+      return false
+    }
+  }
+
+  return true
+}
+
+export function color(value) {
+  let colors = 0
+
+  let result = splitAtTopLevelOnly(value, '_').every((part) => {
+    part = normalize(part)
+
+    if (part.startsWith('var(')) return true
+    if (parseColor(part, { loose: true }) !== null) return colors++, true
+
+    return false
+  })
+
+  if (!result) return false
+  return colors > 0
+}
+
+export function image(value) {
+  let images = 0
+  let result = splitAtTopLevelOnly(value, ',').every((part) => {
+    part = normalize(part)
+
+    if (part.startsWith('var(')) return true
+    if (
+      url(part) ||
+      gradient(part) ||
+      ['element(', 'image(', 'cross-fade(', 'image-set('].some((fn) => part.startsWith(fn))
+    ) {
+      images++
+      return true
+    }
+
+    return false
+  })
+
+  if (!result) return false
+  return images > 0
+}
+
+let gradientTypes = new Set([
+  'conic-gradient',
+  'linear-gradient',
+  'radial-gradient',
+  'repeating-conic-gradient',
+  'repeating-linear-gradient',
+  'repeating-radial-gradient',
+])
+export function gradient(value) {
+  value = normalize(value)
+
+  for (let type of gradientTypes) {
+    if (value.startsWith(`${type}(`)) {
+      return true
+    }
+  }
+  return false
+}
+
+let validPositions = new Set(['center', 'top', 'right', 'bottom', 'left'])
+export function position(value) {
+  let positions = 0
+  let result = splitAtTopLevelOnly(value, '_').every((part) => {
+    part = normalize(part)
+
+    if (part.startsWith('var(')) return true
+    if (validPositions.has(part) || length(part) || percentage(part)) {
+      positions++
+      return true
+    }
+
+    return false
+  })
+
+  if (!result) return false
+  return positions > 0
+}
+
+export function familyName(value) {
+  let fonts = 0
+  let result = splitAtTopLevelOnly(value, ',').every((part) => {
+    part = normalize(part)
+
+    if (part.startsWith('var(')) return true
+
+    // If it contains spaces, then it should be quoted
+    if (part.includes(' ')) {
+      if (!/(['"])([^"']+)\1/g.test(part)) {
+        return false
+      }
+    }
+
+    // If it starts with a number, it's invalid
+    if (/^\d/g.test(part)) {
+      return false
+    }
+
+    fonts++
+
+    return true
+  })
+
+  if (!result) return false
+  return fonts > 0
+}
+
+let genericNames = new Set([
+  'serif',
+  'sans-serif',
+  'monospace',
+  'cursive',
+  'fantasy',
+  'system-ui',
+  'ui-serif',
+  'ui-sans-serif',
+  'ui-monospace',
+  'ui-rounded',
+  'math',
+  'emoji',
+  'fangsong',
+])
+export function genericName(value) {
+  return genericNames.has(value)
+}
+
+let absoluteSizes = new Set([
+  'xx-small',
+  'x-small',
+  'small',
+  'medium',
+  'large',
+  'x-large',
+  'xx-large',
+  'xxx-large',
+])
+export function absoluteSize(value) {
+  return absoluteSizes.has(value)
+}
+
+let relativeSizes = new Set(['larger', 'smaller'])
+export function relativeSize(value) {
+  return relativeSizes.has(value)
+}
Index: frontend/node_modules/tailwindcss/src/util/defaults.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/defaults.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/defaults.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,17 @@
+export function defaults(target, ...sources) {
+  for (let source of sources) {
+    for (let k in source) {
+      if (!target?.hasOwnProperty?.(k)) {
+        target[k] = source[k]
+      }
+    }
+
+    for (let k of Object.getOwnPropertySymbols(source)) {
+      if (!target?.hasOwnProperty?.(k)) {
+        target[k] = source[k]
+      }
+    }
+  }
+
+  return target
+}
Index: frontend/node_modules/tailwindcss/src/util/escapeClassName.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/escapeClassName.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/escapeClassName.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,8 @@
+import parser from 'postcss-selector-parser'
+import escapeCommas from './escapeCommas'
+
+export default function escapeClassName(className) {
+  let node = parser.className()
+  node.value = className
+  return escapeCommas(node?.raws?.value ?? node.value)
+}
Index: frontend/node_modules/tailwindcss/src/util/escapeCommas.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/escapeCommas.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/escapeCommas.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+export default function escapeCommas(className) {
+  return className.replace(/\\,/g, '\\2c ')
+}
Index: frontend/node_modules/tailwindcss/src/util/flattenColorPalette.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/flattenColorPalette.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/flattenColorPalette.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,13 @@
+const flattenColorPalette = (colors) =>
+  Object.assign(
+    {},
+    ...Object.entries(colors ?? {}).flatMap(([color, values]) =>
+      typeof values == 'object'
+        ? Object.entries(flattenColorPalette(values)).map(([number, hex]) => ({
+            [color + (number === 'DEFAULT' ? '' : `-${number}`)]: hex,
+          }))
+        : [{ [`${color}`]: values }]
+    )
+  )
+
+export default flattenColorPalette
Index: frontend/node_modules/tailwindcss/src/util/formatVariantSelector.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/formatVariantSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/formatVariantSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,324 @@
+import selectorParser from 'postcss-selector-parser'
+import unescape from 'postcss-selector-parser/dist/util/unesc'
+import escapeClassName from '../util/escapeClassName'
+import prefixSelector from '../util/prefixSelector'
+import { movePseudos } from './pseudoElements'
+import { splitAtTopLevelOnly } from './splitAtTopLevelOnly'
+
+/** @typedef {import('postcss-selector-parser').Root} Root */
+/** @typedef {import('postcss-selector-parser').Selector} Selector */
+/** @typedef {import('postcss-selector-parser').Pseudo} Pseudo */
+/** @typedef {import('postcss-selector-parser').Node} Node */
+
+/** @typedef {{format: string, respectPrefix: boolean}[]} RawFormats */
+/** @typedef {import('postcss-selector-parser').Root} ParsedFormats */
+/** @typedef {RawFormats | ParsedFormats} AcceptedFormats */
+
+let MERGE = ':merge'
+
+/**
+ * @param {RawFormats} formats
+ * @param {{context: any, candidate: string, base: string | null}} options
+ * @returns {ParsedFormats | null}
+ */
+export function formatVariantSelector(formats, { context, candidate }) {
+  let prefix = context?.tailwindConfig.prefix ?? ''
+
+  // Parse the format selector into an AST
+  let parsedFormats = formats.map((format) => {
+    let ast = selectorParser().astSync(format.format)
+
+    return {
+      ...format,
+      ast: format.respectPrefix ? prefixSelector(prefix, ast) : ast,
+    }
+  })
+
+  // We start with the candidate selector
+  let formatAst = selectorParser.root({
+    nodes: [
+      selectorParser.selector({
+        nodes: [selectorParser.className({ value: escapeClassName(candidate) })],
+      }),
+    ],
+  })
+
+  // And iteratively merge each format selector into the candidate selector
+  for (let { ast } of parsedFormats) {
+    // 1. Handle :merge() special pseudo-class
+    ;[formatAst, ast] = handleMergePseudo(formatAst, ast)
+
+    // 2. Merge the format selector into the current selector AST
+    ast.walkNesting((nesting) => nesting.replaceWith(...formatAst.nodes[0].nodes))
+
+    // 3. Keep going!
+    formatAst = ast
+  }
+
+  return formatAst
+}
+
+/**
+ * Given any node in a selector this gets the "simple" selector it's a part of
+ * A simple selector is just a list of nodes without any combinators
+ * Technically :is(), :not(), :has(), etc… can have combinators but those are nested
+ * inside the relevant node and won't be picked up so they're fine to ignore
+ *
+ * @param {Node} node
+ * @returns {Node[]}
+ **/
+function simpleSelectorForNode(node) {
+  /** @type {Node[]} */
+  let nodes = []
+
+  // Walk backwards until we hit a combinator node (or the start)
+  while (node.prev() && node.prev().type !== 'combinator') {
+    node = node.prev()
+  }
+
+  // Now record all non-combinator nodes until we hit one (or the end)
+  while (node && node.type !== 'combinator') {
+    nodes.push(node)
+    node = node.next()
+  }
+
+  return nodes
+}
+
+/**
+ * Resorts the nodes in a selector to ensure they're in the correct order
+ * Tags go before classes, and pseudo classes go after classes
+ *
+ * @param {Selector} sel
+ * @returns {Selector}
+ **/
+function resortSelector(sel) {
+  sel.sort((a, b) => {
+    if (a.type === 'tag' && b.type === 'class') {
+      return -1
+    } else if (a.type === 'class' && b.type === 'tag') {
+      return 1
+    } else if (a.type === 'class' && b.type === 'pseudo' && b.value.startsWith('::')) {
+      return -1
+    } else if (a.type === 'pseudo' && a.value.startsWith('::') && b.type === 'class') {
+      return 1
+    }
+
+    return sel.index(a) - sel.index(b)
+  })
+
+  return sel
+}
+
+/**
+ * Remove extraneous selectors that do not include the base class/candidate
+ *
+ * Example:
+ * Given the utility `.a, .b { color: red}`
+ * Given the candidate `sm:b`
+ *
+ * The final selector should be `.sm\:b` and not `.a, .sm\:b`
+ *
+ * @param {Selector} ast
+ * @param {string} base
+ */
+export function eliminateIrrelevantSelectors(sel, base) {
+  let hasClassesMatchingCandidate = false
+
+  sel.walk((child) => {
+    if (child.type === 'class' && child.value === base) {
+      hasClassesMatchingCandidate = true
+      return false // Stop walking
+    }
+  })
+
+  if (!hasClassesMatchingCandidate) {
+    sel.remove()
+  }
+
+  // We do NOT recursively eliminate sub selectors that don't have the base class
+  // as this is NOT a safe operation. For example, if we have:
+  // `.space-x-2 > :not([hidden]) ~ :not([hidden])`
+  // We cannot remove the [hidden] from the :not() because it would change the
+  // meaning of the selector.
+
+  // TODO: Can we do this for :matches, :is, and :where?
+}
+
+/**
+ * @param {string} current
+ * @param {AcceptedFormats} formats
+ * @param {{context: any, candidate: string, base: string | null}} options
+ * @returns {string}
+ */
+export function finalizeSelector(current, formats, { context, candidate, base }) {
+  let separator = context?.tailwindConfig?.separator ?? ':'
+
+  // Split by the separator, but ignore the separator inside square brackets:
+  //
+  // E.g.: dark:lg:hover:[paint-order:markers]
+  //           ┬  ┬     ┬            ┬
+  //           │  │     │            ╰── We will not split here
+  //           ╰──┴─────┴─────────────── We will split here
+  //
+  base = base ?? splitAtTopLevelOnly(candidate, separator).pop()
+
+  // Parse the selector into an AST
+  let selector = selectorParser().astSync(current)
+
+  // Normalize escaped classes, e.g.:
+  //
+  // The idea would be to replace the escaped `base` in the selector with the
+  // `format`. However, in css you can escape the same selector in a few
+  // different ways. This would result in different strings and therefore we
+  // can't replace it properly.
+  //
+  //               base: bg-[rgb(255,0,0)]
+  //   base in selector: bg-\\[rgb\\(255\\,0\\,0\\)\\]
+  //       escaped base: bg-\\[rgb\\(255\\2c 0\\2c 0\\)\\]
+  //
+  selector.walkClasses((node) => {
+    if (node.raws && node.value.includes(base)) {
+      node.raws.value = escapeClassName(unescape(node.raws.value))
+    }
+  })
+
+  // Remove extraneous selectors that do not include the base candidate
+  selector.each((sel) => eliminateIrrelevantSelectors(sel, base))
+
+  // If ffter eliminating irrelevant selectors, we end up with nothing
+  // Then the whole "rule" this is associated with does not need to exist
+  // We use `null` as a marker value for that case
+  if (selector.length === 0) {
+    return null
+  }
+
+  // If there are no formats that means there were no variants added to the candidate
+  // so we can just return the selector as-is
+  let formatAst = Array.isArray(formats)
+    ? formatVariantSelector(formats, { context, candidate })
+    : formats
+
+  if (formatAst === null) {
+    return selector.toString()
+  }
+
+  let simpleStart = selectorParser.comment({ value: '/*__simple__*/' })
+  let simpleEnd = selectorParser.comment({ value: '/*__simple__*/' })
+
+  // We can safely replace the escaped base now, since the `base` section is
+  // now in a normalized escaped value.
+  selector.walkClasses((node) => {
+    if (node.value !== base) {
+      return
+    }
+
+    let parent = node.parent
+    let formatNodes = formatAst.nodes[0].nodes
+
+    // Perf optimization: if the parent is a single class we can just replace it and be done
+    if (parent.nodes.length === 1) {
+      node.replaceWith(...formatNodes)
+      return
+    }
+
+    let simpleSelector = simpleSelectorForNode(node)
+    parent.insertBefore(simpleSelector[0], simpleStart)
+    parent.insertAfter(simpleSelector[simpleSelector.length - 1], simpleEnd)
+
+    for (let child of formatNodes) {
+      parent.insertBefore(simpleSelector[0], child.clone())
+    }
+
+    node.remove()
+
+    // Re-sort the simple selector to ensure it's in the correct order
+    simpleSelector = simpleSelectorForNode(simpleStart)
+    let firstNode = parent.index(simpleStart)
+
+    parent.nodes.splice(
+      firstNode,
+      simpleSelector.length,
+      ...resortSelector(selectorParser.selector({ nodes: simpleSelector })).nodes
+    )
+
+    simpleStart.remove()
+    simpleEnd.remove()
+  })
+
+  // Remove unnecessary pseudo selectors that we used as placeholders
+  selector.walkPseudos((p) => {
+    if (p.value === MERGE) {
+      p.replaceWith(p.nodes)
+    }
+  })
+
+  // Move pseudo elements to the end of the selector (if necessary)
+  selector.each((sel) => movePseudos(sel))
+
+  return selector.toString()
+}
+
+/**
+ *
+ * @param {Selector} selector
+ * @param {Selector} format
+ */
+export function handleMergePseudo(selector, format) {
+  /** @type {{pseudo: Pseudo, value: string}[]} */
+  let merges = []
+
+  // Find all :merge() pseudo-classes in `selector`
+  selector.walkPseudos((pseudo) => {
+    if (pseudo.value === MERGE) {
+      merges.push({
+        pseudo,
+        value: pseudo.nodes[0].toString(),
+      })
+    }
+  })
+
+  // Find all :merge() "attachments" in `format` and attach them to the matching selector in `selector`
+  format.walkPseudos((pseudo) => {
+    if (pseudo.value !== MERGE) {
+      return
+    }
+
+    let value = pseudo.nodes[0].toString()
+
+    // Does `selector` contain a :merge() pseudo-class with the same value?
+    let existing = merges.find((merge) => merge.value === value)
+
+    // Nope so there's nothing to do
+    if (!existing) {
+      return
+    }
+
+    // Everything after `:merge()` up to the next combinator is what is attached to the merged selector
+    let attachments = []
+    let next = pseudo.next()
+    while (next && next.type !== 'combinator') {
+      attachments.push(next)
+      next = next.next()
+    }
+
+    let combinator = next
+
+    existing.pseudo.parent.insertAfter(
+      existing.pseudo,
+      selectorParser.selector({ nodes: attachments.map((node) => node.clone()) })
+    )
+
+    pseudo.remove()
+    attachments.forEach((node) => node.remove())
+
+    // What about this case:
+    // :merge(.group):focus > &
+    // :merge(.group):hover &
+    if (combinator && combinator.type === 'combinator') {
+      combinator.remove()
+    }
+  })
+
+  return [selector, format]
+}
Index: frontend/node_modules/tailwindcss/src/util/getAllConfigs.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/getAllConfigs.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/getAllConfigs.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,38 @@
+import defaultFullConfig from '../../stubs/config.full.js'
+import { flagEnabled } from '../featureFlags'
+
+export default function getAllConfigs(config) {
+  const configs = (config?.presets ?? [defaultFullConfig])
+    .slice()
+    .reverse()
+    .flatMap((preset) => getAllConfigs(preset instanceof Function ? preset() : preset))
+
+  const features = {
+    // Add experimental configs here...
+    respectDefaultRingColorOpacity: {
+      theme: {
+        ringColor: ({ theme }) => ({
+          DEFAULT: '#3b82f67f',
+          ...theme('colors'),
+        }),
+      },
+    },
+
+    disableColorOpacityUtilitiesByDefault: {
+      corePlugins: {
+        backgroundOpacity: false,
+        borderOpacity: false,
+        divideOpacity: false,
+        placeholderOpacity: false,
+        ringOpacity: false,
+        textOpacity: false,
+      },
+    },
+  }
+
+  const experimentals = Object.keys(features)
+    .filter((feature) => flagEnabled(config, feature))
+    .map((feature) => features[feature])
+
+  return [config, ...experimentals, ...configs]
+}
Index: frontend/node_modules/tailwindcss/src/util/hashConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/hashConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/hashConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,5 @@
+import hash from 'object-hash'
+
+export default function hashConfig(config) {
+  return hash(config, { ignoreUnknown: true })
+}
Index: frontend/node_modules/tailwindcss/src/util/isKeyframeRule.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/isKeyframeRule.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/isKeyframeRule.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+export default function isKeyframeRule(rule) {
+  return rule.parent && rule.parent.type === 'atrule' && /keyframes$/.test(rule.parent.name)
+}
Index: frontend/node_modules/tailwindcss/src/util/isPlainObject.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/isPlainObject.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/isPlainObject.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,8 @@
+export default function isPlainObject(value) {
+  if (Object.prototype.toString.call(value) !== '[object Object]') {
+    return false
+  }
+
+  const prototype = Object.getPrototypeOf(value)
+  return prototype === null || Object.getPrototypeOf(prototype) === null
+}
Index: frontend/node_modules/tailwindcss/src/util/isSyntacticallyValidPropertyValue.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/isSyntacticallyValidPropertyValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/isSyntacticallyValidPropertyValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,61 @@
+let matchingBrackets = new Map([
+  ['{', '}'],
+  ['[', ']'],
+  ['(', ')'],
+])
+let inverseMatchingBrackets = new Map(
+  Array.from(matchingBrackets.entries()).map(([k, v]) => [v, k])
+)
+
+let quotes = new Set(['"', "'", '`'])
+
+// Arbitrary values must contain balanced brackets (), [] and {}. Escaped
+// values don't count, and brackets inside quotes also don't count.
+//
+// E.g.: w-[this-is]w-[weird-and-invalid]
+// E.g.: w-[this-is\\]w-\\[weird-but-valid]
+// E.g.: content-['this-is-also-valid]-weirdly-enough']
+export default function isSyntacticallyValidPropertyValue(value) {
+  let stack = []
+  let inQuotes = false
+
+  for (let i = 0; i < value.length; i++) {
+    let char = value[i]
+
+    if (char === ':' && !inQuotes && stack.length === 0) {
+      return false
+    }
+
+    // Non-escaped quotes allow us to "allow" anything in between
+    if (quotes.has(char) && value[i - 1] !== '\\') {
+      inQuotes = !inQuotes
+    }
+
+    if (inQuotes) continue
+    if (value[i - 1] === '\\') continue // Escaped
+
+    if (matchingBrackets.has(char)) {
+      stack.push(char)
+    } else if (inverseMatchingBrackets.has(char)) {
+      let inverse = inverseMatchingBrackets.get(char)
+
+      // Nothing to pop from, therefore it is unbalanced
+      if (stack.length <= 0) {
+        return false
+      }
+
+      // Popped value must match the inverse value, otherwise it is unbalanced
+      if (stack.pop() !== inverse) {
+        return false
+      }
+    }
+  }
+
+  // If there is still something on the stack, it is also unbalanced
+  if (stack.length > 0) {
+    return false
+  }
+
+  // All good, totally balanced!
+  return true
+}
Index: frontend/node_modules/tailwindcss/src/util/log.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/log.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/log.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,29 @@
+import colors from 'picocolors'
+
+let alreadyShown = new Set()
+
+function log(type, messages, key) {
+  if (typeof process !== 'undefined' && process.env.JEST_WORKER_ID) return
+
+  if (key && alreadyShown.has(key)) return
+  if (key) alreadyShown.add(key)
+
+  console.warn('')
+  messages.forEach((message) => console.warn(type, '-', message))
+}
+
+export function dim(input) {
+  return colors.dim(input)
+}
+
+export default {
+  info(key, messages) {
+    log(colors.bold(colors.cyan('info')), ...(Array.isArray(key) ? [key] : [messages, key]))
+  },
+  warn(key, messages) {
+    log(colors.bold(colors.yellow('warn')), ...(Array.isArray(key) ? [key] : [messages, key]))
+  },
+  risk(key, messages) {
+    log(colors.bold(colors.magenta('risk')), ...(Array.isArray(key) ? [key] : [messages, key]))
+  },
+}
Index: frontend/node_modules/tailwindcss/src/util/math-operators.ts
===================================================================
--- frontend/node_modules/tailwindcss/src/util/math-operators.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/math-operators.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,205 @@
+const LOWER_A = 0x61
+const LOWER_Z = 0x7a
+const UPPER_A = 0x41
+const UPPER_Z = 0x5a
+const LOWER_E = 0x65
+const UPPER_E = 0x45
+const ZERO = 0x30
+const NINE = 0x39
+const ADD = 0x2b
+const SUB = 0x2d
+const MUL = 0x2a
+const DIV = 0x2f
+const OPEN_PAREN = 0x28
+const CLOSE_PAREN = 0x29
+const COMMA = 0x2c
+const SPACE = 0x20
+const PERCENT = 0x25
+
+const MATH_FUNCTIONS = [
+  'calc',
+  'min',
+  'max',
+  'clamp',
+  'mod',
+  'rem',
+  'sin',
+  'cos',
+  'tan',
+  'asin',
+  'acos',
+  'atan',
+  'atan2',
+  'pow',
+  'sqrt',
+  'hypot',
+  'log',
+  'exp',
+  'round',
+]
+
+export function hasMathFn(input: string) {
+  return input.indexOf('(') !== -1 && MATH_FUNCTIONS.some((fn) => input.includes(`${fn}(`))
+}
+
+export function addWhitespaceAroundMathOperators(input: string) {
+  // Bail early if there are no math functions in the input
+  if (!MATH_FUNCTIONS.some((fn) => input.includes(fn))) {
+    return input
+  }
+
+  let result = ''
+  let formattable: boolean[] = []
+
+  let valuePos = null
+  let lastValuePos = null
+
+  for (let i = 0; i < input.length; i++) {
+    let char = input.charCodeAt(i)
+
+    // Track if we see a number followed by a unit, then we know for sure that
+    // this is not a function call.
+    if (char >= ZERO && char <= NINE) {
+      valuePos = i
+    }
+
+    // If we saw a number before, and we see normal a-z character, then we
+    // assume this is a value such as `123px`
+    else if (
+      valuePos !== null &&
+      (char === PERCENT ||
+        (char >= LOWER_A && char <= LOWER_Z) ||
+        (char >= UPPER_A && char <= UPPER_Z))
+    ) {
+      valuePos = i
+    }
+
+    // Once we see something else, we reset the value position
+    else {
+      lastValuePos = valuePos
+      valuePos = null
+    }
+
+    // Determine if we're inside a math function
+    if (char === OPEN_PAREN) {
+      result += input[i]
+
+      // Scan backwards to determine the function name. This assumes math
+      // functions are named with lowercase alphanumeric characters.
+      let start = i
+
+      for (let j = i - 1; j >= 0; j--) {
+        let inner = input.charCodeAt(j)
+
+        if (inner >= ZERO && inner <= NINE) {
+          start = j // 0-9
+        } else if (inner >= LOWER_A && inner <= LOWER_Z) {
+          start = j // a-z
+        } else {
+          break
+        }
+      }
+
+      let fn = input.slice(start, i)
+
+      // This is a known math function so start formatting
+      if (MATH_FUNCTIONS.includes(fn)) {
+        formattable.unshift(true)
+        continue
+      }
+
+      // We've encountered nested parens inside a math function, record that and
+      // keep formatting until we've closed all parens.
+      else if (formattable[0] && fn === '') {
+        formattable.unshift(true)
+        continue
+      }
+
+      // This is not a known math function so don't format it
+      formattable.unshift(false)
+      continue
+    }
+
+    // We've exited the function so format according to the parent function's
+    // type.
+    else if (char === CLOSE_PAREN) {
+      result += input[i]
+      formattable.shift()
+    }
+
+    // Add spaces after commas in math functions
+    else if (char === COMMA && formattable[0]) {
+      result += `, `
+      continue
+    }
+
+    // Skip over consecutive whitespace
+    else if (char === SPACE && formattable[0] && result.charCodeAt(result.length - 1) === SPACE) {
+      continue
+    }
+
+    // Add whitespace around operators inside math functions
+    else if ((char === ADD || char === MUL || char === DIV || char === SUB) && formattable[0]) {
+      let trimmed = result.trimEnd()
+      let prev = trimmed.charCodeAt(trimmed.length - 1)
+      let prevPrev = trimmed.charCodeAt(trimmed.length - 2)
+      let next = input.charCodeAt(i + 1)
+
+      // Do not add spaces for scientific notation, e.g.: `-3.4e-2`
+      if ((prev === LOWER_E || prev === UPPER_E) && prevPrev >= ZERO && prevPrev <= NINE) {
+        result += input[i]
+        continue
+      }
+
+      // If we're preceded by an operator don't add spaces
+      else if (prev === ADD || prev === MUL || prev === DIV || prev === SUB) {
+        result += input[i]
+        continue
+      }
+
+      // If we're at the beginning of an argument don't add spaces
+      else if (prev === OPEN_PAREN || prev === COMMA) {
+        result += input[i]
+        continue
+      }
+
+      // Add spaces only after the operator if we already have spaces before it
+      else if (input.charCodeAt(i - 1) === SPACE) {
+        result += `${input[i]} `
+      }
+
+      // Add spaces around the operator, if...
+      else if (
+        // Previous is a digit
+        (prev >= ZERO && prev <= NINE) ||
+        // Next is a digit
+        (next >= ZERO && next <= NINE) ||
+        // Previous is end of a function call (or parenthesized expression)
+        prev === CLOSE_PAREN ||
+        // Next is start of a parenthesized expression
+        next === OPEN_PAREN ||
+        // Next is an operator
+        next === ADD ||
+        next === MUL ||
+        next === DIV ||
+        next === SUB ||
+        // Previous position was a value (+ unit)
+        (lastValuePos !== null && lastValuePos === i - 1)
+      ) {
+        result += ` ${input[i]} `
+      }
+
+      // Everything else
+      else {
+        result += input[i]
+      }
+    }
+
+    // Handle all other characters
+    else {
+      result += input[i]
+    }
+  }
+
+  return result
+}
Index: frontend/node_modules/tailwindcss/src/util/nameClass.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/nameClass.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/nameClass.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,30 @@
+import escapeClassName from './escapeClassName'
+import escapeCommas from './escapeCommas'
+
+export function asClass(name) {
+  return escapeCommas(`.${escapeClassName(name)}`)
+}
+
+export default function nameClass(classPrefix, key) {
+  return asClass(formatClass(classPrefix, key))
+}
+
+export function formatClass(classPrefix, key) {
+  if (key === 'DEFAULT') {
+    return classPrefix
+  }
+
+  if (key === '-' || key === '-DEFAULT') {
+    return `-${classPrefix}`
+  }
+
+  if (key.startsWith('-')) {
+    return `-${classPrefix}${key}`
+  }
+
+  if (key.startsWith('/')) {
+    return `${classPrefix}${key}`
+  }
+
+  return `${classPrefix}-${key}`
+}
Index: frontend/node_modules/tailwindcss/src/util/negateValue.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/negateValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/negateValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,24 @@
+export default function negateValue(value) {
+  value = `${value}`
+
+  if (value === '0') {
+    return '0'
+  }
+
+  // Flip sign of numbers
+  if (/^[+-]?(\d+|\d*\.\d+)(e[+-]?\d+)?(%|\w+)?$/.test(value)) {
+    return value.replace(/^[+-]?/, (sign) => (sign === '-' ? '' : '-'))
+  }
+
+  // What functions we support negating numeric values for
+  // var() isn't inherently a numeric function but we support it anyway
+  // The trigonometric functions are omitted because you'll need to use calc(…) with them _anyway_
+  // to produce generally useful results and that will be covered already
+  let numericFunctions = ['var', 'calc', 'min', 'max', 'clamp']
+
+  for (const fn of numericFunctions) {
+    if (value.includes(`${fn}(`)) {
+      return `calc(${value} * -1)`
+    }
+  }
+}
Index: frontend/node_modules/tailwindcss/src/util/normalizeConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/normalizeConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/normalizeConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,299 @@
+import { flagEnabled } from '../featureFlags'
+import log, { dim } from './log'
+
+export function normalizeConfig(config) {
+  // Quick structure validation
+  /**
+   * type FilePath = string
+   * type RawFile = { raw: string, extension?: string }
+   * type ExtractorFn = (content: string) => Array<string>
+   * type TransformerFn = (content: string) => string
+   *
+   * type Content =
+   *   | Array<FilePath | RawFile>
+   *   | {
+   *       files: Array<FilePath | RawFile>,
+   *       extract?: ExtractorFn | { [extension: string]: ExtractorFn }
+   *       transform?: TransformerFn | { [extension: string]: TransformerFn }
+   *   }
+   */
+  let valid = (() => {
+    // `config.purge` should not exist anymore
+    if (config.purge) {
+      return false
+    }
+
+    // `config.content` should exist
+    if (!config.content) {
+      return false
+    }
+
+    // `config.content` should be an object or an array
+    if (
+      !Array.isArray(config.content) &&
+      !(typeof config.content === 'object' && config.content !== null)
+    ) {
+      return false
+    }
+
+    // When `config.content` is an array, it should consist of FilePaths or RawFiles
+    if (Array.isArray(config.content)) {
+      return config.content.every((path) => {
+        // `path` can be a string
+        if (typeof path === 'string') return true
+
+        // `path` can be an object { raw: string, extension?: string }
+        // `raw` must be a string
+        if (typeof path?.raw !== 'string') return false
+
+        // `extension` (if provided) should also be a string
+        if (path?.extension && typeof path?.extension !== 'string') {
+          return false
+        }
+
+        return true
+      })
+    }
+
+    // When `config.content` is an object
+    if (typeof config.content === 'object' && config.content !== null) {
+      // Only `files`, `relative`, `extract`, and `transform` can exist in `config.content`
+      if (
+        Object.keys(config.content).some(
+          (key) => !['files', 'relative', 'extract', 'transform'].includes(key)
+        )
+      ) {
+        return false
+      }
+
+      // `config.content.files` should exist of FilePaths or RawFiles
+      if (Array.isArray(config.content.files)) {
+        if (
+          !config.content.files.every((path) => {
+            // `path` can be a string
+            if (typeof path === 'string') return true
+
+            // `path` can be an object { raw: string, extension?: string }
+            // `raw` must be a string
+            if (typeof path?.raw !== 'string') return false
+
+            // `extension` (if provided) should also be a string
+            if (path?.extension && typeof path?.extension !== 'string') {
+              return false
+            }
+
+            return true
+          })
+        ) {
+          return false
+        }
+
+        // `config.content.extract` is optional, and can be a Function or a Record<String, Function>
+        if (typeof config.content.extract === 'object') {
+          for (let value of Object.values(config.content.extract)) {
+            if (typeof value !== 'function') {
+              return false
+            }
+          }
+        } else if (
+          !(config.content.extract === undefined || typeof config.content.extract === 'function')
+        ) {
+          return false
+        }
+
+        // `config.content.transform` is optional, and can be a Function or a Record<String, Function>
+        if (typeof config.content.transform === 'object') {
+          for (let value of Object.values(config.content.transform)) {
+            if (typeof value !== 'function') {
+              return false
+            }
+          }
+        } else if (
+          !(
+            config.content.transform === undefined || typeof config.content.transform === 'function'
+          )
+        ) {
+          return false
+        }
+
+        // `config.content.relative` is optional and can be a boolean
+        if (
+          typeof config.content.relative !== 'boolean' &&
+          typeof config.content.relative !== 'undefined'
+        ) {
+          return false
+        }
+      }
+
+      return true
+    }
+
+    return false
+  })()
+
+  if (!valid) {
+    log.warn('purge-deprecation', [
+      'The `purge`/`content` options have changed in Tailwind CSS v3.0.',
+      'Update your configuration file to eliminate this warning.',
+      'https://tailwindcss.com/docs/upgrade-guide#configure-content-sources',
+    ])
+  }
+
+  // Normalize the `safelist`
+  config.safelist = (() => {
+    let { content, purge, safelist } = config
+
+    if (Array.isArray(safelist)) return safelist
+    if (Array.isArray(content?.safelist)) return content.safelist
+    if (Array.isArray(purge?.safelist)) return purge.safelist
+    if (Array.isArray(purge?.options?.safelist)) return purge.options.safelist
+
+    return []
+  })()
+
+  // Normalize the `blocklist`
+  config.blocklist = (() => {
+    let { blocklist } = config
+
+    if (Array.isArray(blocklist)) {
+      if (blocklist.every((item) => typeof item === 'string')) {
+        return blocklist
+      }
+
+      log.warn('blocklist-invalid', [
+        'The `blocklist` option must be an array of strings.',
+        'https://tailwindcss.com/docs/content-configuration#discarding-classes',
+      ])
+    }
+
+    return []
+  })()
+
+  // Normalize prefix option
+  if (typeof config.prefix === 'function') {
+    log.warn('prefix-function', [
+      'As of Tailwind CSS v3.0, `prefix` cannot be a function.',
+      'Update `prefix` in your configuration to be a string to eliminate this warning.',
+      'https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function',
+    ])
+    config.prefix = ''
+  } else {
+    config.prefix = config.prefix ?? ''
+  }
+
+  // Normalize the `content`
+  config.content = {
+    relative: (() => {
+      let { content } = config
+
+      if (content?.relative) {
+        return content.relative
+      }
+
+      return flagEnabled(config, 'relativeContentPathsByDefault')
+    })(),
+
+    files: (() => {
+      let { content, purge } = config
+
+      if (Array.isArray(purge)) return purge
+      if (Array.isArray(purge?.content)) return purge.content
+      if (Array.isArray(content)) return content
+      if (Array.isArray(content?.content)) return content.content
+      if (Array.isArray(content?.files)) return content.files
+
+      return []
+    })(),
+
+    extract: (() => {
+      let extract = (() => {
+        if (config.purge?.extract) return config.purge.extract
+        if (config.content?.extract) return config.content.extract
+
+        if (config.purge?.extract?.DEFAULT) return config.purge.extract.DEFAULT
+        if (config.content?.extract?.DEFAULT) return config.content.extract.DEFAULT
+
+        if (config.purge?.options?.extractors) return config.purge.options.extractors
+        if (config.content?.options?.extractors) return config.content.options.extractors
+
+        return {}
+      })()
+
+      let extractors = {}
+
+      let defaultExtractor = (() => {
+        if (config.purge?.options?.defaultExtractor) {
+          return config.purge.options.defaultExtractor
+        }
+
+        if (config.content?.options?.defaultExtractor) {
+          return config.content.options.defaultExtractor
+        }
+
+        return undefined
+      })()
+
+      if (defaultExtractor !== undefined) {
+        extractors.DEFAULT = defaultExtractor
+      }
+
+      // Functions
+      if (typeof extract === 'function') {
+        extractors.DEFAULT = extract
+      }
+
+      // Arrays
+      else if (Array.isArray(extract)) {
+        for (let { extensions, extractor } of extract ?? []) {
+          for (let extension of extensions) {
+            extractors[extension] = extractor
+          }
+        }
+      }
+
+      // Objects
+      else if (typeof extract === 'object' && extract !== null) {
+        Object.assign(extractors, extract)
+      }
+
+      return extractors
+    })(),
+
+    transform: (() => {
+      let transform = (() => {
+        if (config.purge?.transform) return config.purge.transform
+        if (config.content?.transform) return config.content.transform
+
+        if (config.purge?.transform?.DEFAULT) return config.purge.transform.DEFAULT
+        if (config.content?.transform?.DEFAULT) return config.content.transform.DEFAULT
+
+        return {}
+      })()
+
+      let transformers = {}
+
+      if (typeof transform === 'function') {
+        transformers.DEFAULT = transform
+      } else if (typeof transform === 'object' && transform !== null) {
+        Object.assign(transformers, transform)
+      }
+
+      return transformers
+    })(),
+  }
+
+  // Validate globs to prevent bogus globs.
+  // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`
+  for (let file of config.content.files) {
+    if (typeof file === 'string' && /{([^,]*?)}/g.test(file)) {
+      log.warn('invalid-glob-braces', [
+        `The glob pattern ${dim(file)} in your Tailwind CSS configuration is invalid.`,
+        `Update it to ${dim(file.replace(/{([^,]*?)}/g, '$1'))} to silence this warning.`,
+        // TODO: Add https://tw.wtf/invalid-glob-braces
+      ])
+      break
+    }
+  }
+
+  return config
+}
Index: frontend/node_modules/tailwindcss/src/util/normalizeScreens.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/normalizeScreens.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/normalizeScreens.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,140 @@
+/**
+ * @typedef {object} ScreenValue
+ * @property {number|undefined} min
+ * @property {number|undefined} max
+ * @property {string|undefined} raw
+ */
+
+/**
+ * @typedef {object} Screen
+ * @property {string} name
+ * @property {boolean} not
+ * @property {ScreenValue[]} values
+ */
+
+/**
+ * A function that normalizes the various forms that the screens object can be
+ * provided in.
+ *
+ * Input(s):
+ *   - ['100px', '200px'] // Raw strings
+ *   - { sm: '100px', md: '200px' } // Object with string values
+ *   - { sm: { min: '100px' }, md: { max: '100px' } } // Object with object values
+ *   - { sm: [{ min: '100px' }, { max: '200px' }] } // Object with object array (multiple values)
+ *
+ * Output(s):
+ *   - [{ name: 'sm', values: [{ min: '100px', max: '200px' }] }] // List of objects, that contains multiple values
+ *
+ * @returns {Screen[]}
+ */
+export function normalizeScreens(screens, root = true) {
+  if (Array.isArray(screens)) {
+    return screens.map((screen) => {
+      if (root && Array.isArray(screen)) {
+        throw new Error('The tuple syntax is not supported for `screens`.')
+      }
+
+      if (typeof screen === 'string') {
+        return { name: screen.toString(), not: false, values: [{ min: screen, max: undefined }] }
+      }
+
+      let [name, options] = screen
+      name = name.toString()
+
+      if (typeof options === 'string') {
+        return { name, not: false, values: [{ min: options, max: undefined }] }
+      }
+
+      if (Array.isArray(options)) {
+        return { name, not: false, values: options.map((option) => resolveValue(option)) }
+      }
+
+      return { name, not: false, values: [resolveValue(options)] }
+    })
+  }
+
+  return normalizeScreens(Object.entries(screens ?? {}), false)
+}
+
+/**
+ * @param {Screen} screen
+ * @returns {{result: false, reason: string} | {result: true, reason: null}}
+ */
+export function isScreenSortable(screen) {
+  if (screen.values.length !== 1) {
+    return { result: false, reason: 'multiple-values' }
+  } else if (screen.values[0].raw !== undefined) {
+    return { result: false, reason: 'raw-values' }
+  } else if (screen.values[0].min !== undefined && screen.values[0].max !== undefined) {
+    return { result: false, reason: 'min-and-max' }
+  }
+
+  return { result: true, reason: null }
+}
+
+/**
+ * @param {'min' | 'max'} type
+ * @param {Screen | 'string'} a
+ * @param {Screen | 'string'} z
+ * @returns {number}
+ */
+export function compareScreens(type, a, z) {
+  let aScreen = toScreen(a, type)
+  let zScreen = toScreen(z, type)
+
+  let aSorting = isScreenSortable(aScreen)
+  let bSorting = isScreenSortable(zScreen)
+
+  // These cases should never happen and indicate a bug in Tailwind CSS itself
+  if (aSorting.reason === 'multiple-values' || bSorting.reason === 'multiple-values') {
+    throw new Error(
+      'Attempted to sort a screen with multiple values. This should never happen. Please open a bug report.'
+    )
+  } else if (aSorting.reason === 'raw-values' || bSorting.reason === 'raw-values') {
+    throw new Error(
+      'Attempted to sort a screen with raw values. This should never happen. Please open a bug report.'
+    )
+  } else if (aSorting.reason === 'min-and-max' || bSorting.reason === 'min-and-max') {
+    throw new Error(
+      'Attempted to sort a screen with both min and max values. This should never happen. Please open a bug report.'
+    )
+  }
+
+  // Let the sorting begin
+  let { min: aMin, max: aMax } = aScreen.values[0]
+  let { min: zMin, max: zMax } = zScreen.values[0]
+
+  // Negating screens flip their behavior. Basically `not min-width` is `max-width`
+  if (a.not) [aMin, aMax] = [aMax, aMin]
+  if (z.not) [zMin, zMax] = [zMax, zMin]
+
+  aMin = aMin === undefined ? aMin : parseFloat(aMin)
+  aMax = aMax === undefined ? aMax : parseFloat(aMax)
+  zMin = zMin === undefined ? zMin : parseFloat(zMin)
+  zMax = zMax === undefined ? zMax : parseFloat(zMax)
+
+  let [aValue, zValue] = type === 'min' ? [aMin, zMin] : [zMax, aMax]
+
+  return aValue - zValue
+}
+
+/**
+ *
+ * @param {PartialScreen> | string} value
+ * @param {'min' | 'max'} type
+ * @returns {Screen}
+ */
+export function toScreen(value, type) {
+  if (typeof value === 'object') {
+    return value
+  }
+
+  return {
+    name: 'arbitrary-screen',
+    values: [{ [type]: value }],
+  }
+}
+
+function resolveValue({ 'min-width': _minWidth, min = _minWidth, max, raw } = {}) {
+  return { min, max, raw }
+}
Index: frontend/node_modules/tailwindcss/src/util/parseAnimationValue.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/parseAnimationValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/parseAnimationValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,68 @@
+const DIRECTIONS = new Set(['normal', 'reverse', 'alternate', 'alternate-reverse'])
+const PLAY_STATES = new Set(['running', 'paused'])
+const FILL_MODES = new Set(['none', 'forwards', 'backwards', 'both'])
+const ITERATION_COUNTS = new Set(['infinite'])
+const TIMINGS = new Set([
+  'linear',
+  'ease',
+  'ease-in',
+  'ease-out',
+  'ease-in-out',
+  'step-start',
+  'step-end',
+])
+const TIMING_FNS = ['cubic-bezier', 'steps']
+
+const COMMA = /\,(?![^(]*\))/g // Comma separator that is not located between brackets. E.g.: `cubic-bezier(a, b, c)` these don't count.
+const SPACE = /\ +(?![^(]*\))/g // Similar to the one above, but with spaces instead.
+const TIME = /^(-?[\d.]+m?s)$/
+const DIGIT = /^(\d+)$/
+
+export default function parseAnimationValue(input) {
+  let animations = input.split(COMMA)
+  return animations.map((animation) => {
+    let value = animation.trim()
+    let result = { value }
+    let parts = value.split(SPACE)
+    let seen = new Set()
+
+    for (let part of parts) {
+      if (!seen.has('DIRECTIONS') && DIRECTIONS.has(part)) {
+        result.direction = part
+        seen.add('DIRECTIONS')
+      } else if (!seen.has('PLAY_STATES') && PLAY_STATES.has(part)) {
+        result.playState = part
+        seen.add('PLAY_STATES')
+      } else if (!seen.has('FILL_MODES') && FILL_MODES.has(part)) {
+        result.fillMode = part
+        seen.add('FILL_MODES')
+      } else if (
+        !seen.has('ITERATION_COUNTS') &&
+        (ITERATION_COUNTS.has(part) || DIGIT.test(part))
+      ) {
+        result.iterationCount = part
+        seen.add('ITERATION_COUNTS')
+      } else if (!seen.has('TIMING_FUNCTION') && TIMINGS.has(part)) {
+        result.timingFunction = part
+        seen.add('TIMING_FUNCTION')
+      } else if (!seen.has('TIMING_FUNCTION') && TIMING_FNS.some((f) => part.startsWith(`${f}(`))) {
+        result.timingFunction = part
+        seen.add('TIMING_FUNCTION')
+      } else if (!seen.has('DURATION') && TIME.test(part)) {
+        result.duration = part
+        seen.add('DURATION')
+      } else if (!seen.has('DELAY') && TIME.test(part)) {
+        result.delay = part
+        seen.add('DELAY')
+      } else if (!seen.has('NAME')) {
+        result.name = part
+        seen.add('NAME')
+      } else {
+        if (!result.unknown) result.unknown = []
+        result.unknown.push(part)
+      }
+    }
+
+    return result
+  })
+}
Index: frontend/node_modules/tailwindcss/src/util/parseBoxShadowValue.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/parseBoxShadowValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/parseBoxShadowValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,72 @@
+import { splitAtTopLevelOnly } from './splitAtTopLevelOnly'
+
+let KEYWORDS = new Set(['inset', 'inherit', 'initial', 'revert', 'unset'])
+let SPACE = /\ +(?![^(]*\))/g // Similar to the one above, but with spaces instead.
+let LENGTH = /^-?(\d+|\.\d+)(.*?)$/g
+
+export function parseBoxShadowValue(input) {
+  let shadows = splitAtTopLevelOnly(input, ',')
+  return shadows.map((shadow) => {
+    let value = shadow.trim()
+    let result = { raw: value }
+    let parts = value.split(SPACE)
+    let seen = new Set()
+
+    for (let part of parts) {
+      // Reset index, since the regex is stateful.
+      LENGTH.lastIndex = 0
+
+      // Keyword
+      if (!seen.has('KEYWORD') && KEYWORDS.has(part)) {
+        result.keyword = part
+        seen.add('KEYWORD')
+      }
+
+      // Length value
+      else if (LENGTH.test(part)) {
+        if (!seen.has('X')) {
+          result.x = part
+          seen.add('X')
+        } else if (!seen.has('Y')) {
+          result.y = part
+          seen.add('Y')
+        } else if (!seen.has('BLUR')) {
+          result.blur = part
+          seen.add('BLUR')
+        } else if (!seen.has('SPREAD')) {
+          result.spread = part
+          seen.add('SPREAD')
+        }
+      }
+
+      // Color or unknown
+      else {
+        if (!result.color) {
+          result.color = part
+        } else {
+          if (!result.unknown) result.unknown = []
+          result.unknown.push(part)
+        }
+      }
+    }
+
+    // Check if valid
+    result.valid = result.x !== undefined && result.y !== undefined
+
+    return result
+  })
+}
+
+export function formatBoxShadowValue(shadows) {
+  return shadows
+    .map((shadow) => {
+      if (!shadow.valid) {
+        return shadow.raw
+      }
+
+      return [shadow.keyword, shadow.x, shadow.y, shadow.blur, shadow.spread, shadow.color]
+        .filter(Boolean)
+        .join(' ')
+    })
+    .join(', ')
+}
Index: frontend/node_modules/tailwindcss/src/util/parseDependency.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/parseDependency.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/parseDependency.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,44 @@
+// @ts-check
+
+/**
+ * @typedef {{type: 'dependency', file: string} | {type: 'dir-dependency', dir: string, glob: string}} Dependency
+ */
+
+/**
+ *
+ * @param {import('../lib/content.js').ContentPath} contentPath
+ * @returns {Dependency[]}
+ */
+export default function parseDependency(contentPath) {
+  if (contentPath.ignore) {
+    return []
+  }
+
+  if (!contentPath.glob) {
+    return [
+      {
+        type: 'dependency',
+        file: contentPath.base,
+      },
+    ]
+  }
+
+  if (process.env.ROLLUP_WATCH === 'true') {
+    // rollup-plugin-postcss does not support dir-dependency messages
+    // but directories can be watched in the same way as files
+    return [
+      {
+        type: 'dependency',
+        file: contentPath.base,
+      },
+    ]
+  }
+
+  return [
+    {
+      type: 'dir-dependency',
+      dir: contentPath.base,
+      glob: contentPath.glob,
+    },
+  ]
+}
Index: frontend/node_modules/tailwindcss/src/util/parseGlob.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/parseGlob.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/parseGlob.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,23 @@
+import globParent from 'glob-parent'
+
+// Based on `glob-base`
+// https://github.com/micromatch/glob-base/blob/master/index.js
+export function parseGlob(pattern) {
+  let glob = pattern
+  let base = globParent(pattern)
+
+  if (base !== '.') {
+    glob = pattern.substr(base.length)
+    if (glob.charAt(0) === '/') {
+      glob = glob.substr(1)
+    }
+  }
+
+  if (glob.substr(0, 2) === './') {
+    glob = glob.substr(2)
+  } else if (glob.charAt(0) === '/') {
+    glob = glob.substr(1)
+  }
+
+  return { base, glob }
+}
Index: frontend/node_modules/tailwindcss/src/util/parseObjectStyles.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/parseObjectStyles.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/parseObjectStyles.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,19 @@
+import postcss from 'postcss'
+import postcssNested from 'postcss-nested'
+import postcssJs from 'postcss-js'
+
+export default function parseObjectStyles(styles) {
+  if (!Array.isArray(styles)) {
+    return parseObjectStyles([styles])
+  }
+
+  return styles.flatMap((style) => {
+    return postcss([
+      postcssNested({
+        bubble: ['screen'],
+      }),
+    ]).process(style, {
+      parser: postcssJs,
+    }).root.nodes
+  })
+}
Index: frontend/node_modules/tailwindcss/src/util/pluginUtils.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/pluginUtils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/pluginUtils.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,307 @@
+import escapeCommas from './escapeCommas'
+import { withAlphaValue } from './withAlphaVariable'
+import {
+  normalize,
+  length,
+  number,
+  percentage,
+  url,
+  color as validateColor,
+  genericName,
+  familyName,
+  image,
+  absoluteSize,
+  relativeSize,
+  position,
+  lineWidth,
+  shadow,
+} from './dataTypes'
+import negateValue from './negateValue'
+import { backgroundSize } from './validateFormalSyntax'
+import { flagEnabled } from '../featureFlags.js'
+
+/**
+ * @param {import('postcss-selector-parser').Container} selectors
+ * @param {(className: string) => string} updateClass
+ * @returns {string}
+ */
+export function updateAllClasses(selectors, updateClass) {
+  selectors.walkClasses((sel) => {
+    sel.value = updateClass(sel.value)
+
+    if (sel.raws && sel.raws.value) {
+      sel.raws.value = escapeCommas(sel.raws.value)
+    }
+  })
+}
+
+function resolveArbitraryValue(modifier, validate) {
+  if (!isArbitraryValue(modifier)) {
+    return undefined
+  }
+
+  let value = modifier.slice(1, -1)
+
+  if (!validate(value)) {
+    return undefined
+  }
+
+  return normalize(value)
+}
+
+function asNegativeValue(modifier, lookup = {}, validate) {
+  let positiveValue = lookup[modifier]
+
+  if (positiveValue !== undefined) {
+    return negateValue(positiveValue)
+  }
+
+  if (isArbitraryValue(modifier)) {
+    let resolved = resolveArbitraryValue(modifier, validate)
+
+    if (resolved === undefined) {
+      return undefined
+    }
+
+    return negateValue(resolved)
+  }
+}
+
+export function asValue(modifier, options = {}, { validate = () => true } = {}) {
+  let value = options.values?.[modifier]
+
+  if (value !== undefined) {
+    return value
+  }
+
+  if (options.supportsNegativeValues && modifier.startsWith('-')) {
+    return asNegativeValue(modifier.slice(1), options.values, validate)
+  }
+
+  return resolveArbitraryValue(modifier, validate)
+}
+
+function isArbitraryValue(input) {
+  return input.startsWith('[') && input.endsWith(']')
+}
+
+function splitUtilityModifier(modifier) {
+  let slashIdx = modifier.lastIndexOf('/')
+
+  // If the `/` is inside an arbitrary, we want to find the previous one if any
+  // This logic probably isn't perfect but it should work for most cases
+  let arbitraryStartIdx = modifier.lastIndexOf('[', slashIdx)
+  let arbitraryEndIdx = modifier.indexOf(']', slashIdx)
+
+  let isNextToArbitrary = modifier[slashIdx - 1] === ']' || modifier[slashIdx + 1] === '['
+
+  // Backtrack to the previous `/` if the one we found was inside an arbitrary
+  if (!isNextToArbitrary) {
+    if (arbitraryStartIdx !== -1 && arbitraryEndIdx !== -1) {
+      if (arbitraryStartIdx < slashIdx && slashIdx < arbitraryEndIdx) {
+        slashIdx = modifier.lastIndexOf('/', arbitraryStartIdx)
+      }
+    }
+  }
+
+  if (slashIdx === -1 || slashIdx === modifier.length - 1) {
+    return [modifier, undefined]
+  }
+
+  let arbitrary = isArbitraryValue(modifier)
+
+  // The modifier could be of the form `[foo]/[bar]`
+  // We want to handle this case properly
+  // without affecting `[foo/bar]`
+  if (arbitrary && !modifier.includes(']/[')) {
+    return [modifier, undefined]
+  }
+
+  return [modifier.slice(0, slashIdx), modifier.slice(slashIdx + 1)]
+}
+
+export function parseColorFormat(value) {
+  if (typeof value === 'string' && value.includes('<alpha-value>')) {
+    let oldValue = value
+
+    return ({ opacityValue = 1 }) => oldValue.replace(/<alpha-value>/g, opacityValue)
+  }
+
+  return value
+}
+
+function unwrapArbitraryModifier(modifier) {
+  return normalize(modifier.slice(1, -1))
+}
+
+export function asColor(modifier, options = {}, { tailwindConfig = {} } = {}) {
+  if (options.values?.[modifier] !== undefined) {
+    return parseColorFormat(options.values?.[modifier])
+  }
+
+  // TODO: Hoist this up to getMatchingTypes or something
+  // We do this here because we need the alpha value (if any)
+  let [color, alpha] = splitUtilityModifier(modifier)
+
+  if (alpha !== undefined) {
+    let normalizedColor =
+      options.values?.[color] ?? (isArbitraryValue(color) ? color.slice(1, -1) : undefined)
+
+    if (normalizedColor === undefined) {
+      return undefined
+    }
+
+    normalizedColor = parseColorFormat(normalizedColor)
+
+    if (isArbitraryValue(alpha)) {
+      return withAlphaValue(normalizedColor, unwrapArbitraryModifier(alpha))
+    }
+
+    if (tailwindConfig.theme?.opacity?.[alpha] === undefined) {
+      return undefined
+    }
+
+    return withAlphaValue(normalizedColor, tailwindConfig.theme.opacity[alpha])
+  }
+
+  return asValue(modifier, options, { validate: validateColor })
+}
+
+export function asLookupValue(modifier, options = {}) {
+  return options.values?.[modifier]
+}
+
+function guess(validate) {
+  return (modifier, options) => {
+    return asValue(modifier, options, { validate })
+  }
+}
+
+export let typeMap = {
+  any: asValue,
+  color: asColor,
+  url: guess(url),
+  image: guess(image),
+  length: guess(length),
+  percentage: guess(percentage),
+  position: guess(position),
+  lookup: asLookupValue,
+  'generic-name': guess(genericName),
+  'family-name': guess(familyName),
+  number: guess(number),
+  'line-width': guess(lineWidth),
+  'absolute-size': guess(absoluteSize),
+  'relative-size': guess(relativeSize),
+  shadow: guess(shadow),
+  size: guess(backgroundSize),
+}
+
+let supportedTypes = Object.keys(typeMap)
+
+function splitAtFirst(input, delim) {
+  let idx = input.indexOf(delim)
+  if (idx === -1) return [undefined, input]
+  return [input.slice(0, idx), input.slice(idx + 1)]
+}
+
+export function coerceValue(types, modifier, options, tailwindConfig) {
+  if (options.values && modifier in options.values) {
+    for (let { type } of types ?? []) {
+      let result = typeMap[type](modifier, options, {
+        tailwindConfig,
+      })
+
+      if (result === undefined) {
+        continue
+      }
+
+      return [result, type, null]
+    }
+  }
+
+  if (isArbitraryValue(modifier)) {
+    let arbitraryValue = modifier.slice(1, -1)
+    let [explicitType, value] = splitAtFirst(arbitraryValue, ':')
+
+    // It could be that this resolves to `url(https` which is not a valid
+    // identifier. We currently only support "simple" words with dashes or
+    // underscores. E.g.: family-name
+    if (!/^[\w-_]+$/g.test(explicitType)) {
+      value = arbitraryValue
+    }
+
+    //
+    else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {
+      return []
+    }
+
+    if (value.length > 0 && supportedTypes.includes(explicitType)) {
+      return [asValue(`[${value}]`, options), explicitType, null]
+    }
+  }
+
+  let matches = getMatchingTypes(types, modifier, options, tailwindConfig)
+
+  // Find first matching type
+  for (let match of matches) {
+    return match
+  }
+
+  return []
+}
+
+/**
+ *
+ * @param {{type: string}[]} types
+ * @param {string} rawModifier
+ * @param {any} options
+ * @param {any} tailwindConfig
+ * @returns {Iterator<[value: string, type: string, modifier: string | null]>}
+ */
+export function* getMatchingTypes(types, rawModifier, options, tailwindConfig) {
+  let modifiersEnabled = flagEnabled(tailwindConfig, 'generalizedModifiers')
+
+  let [modifier, utilityModifier] = splitUtilityModifier(rawModifier)
+
+  let canUseUtilityModifier =
+    modifiersEnabled &&
+    options.modifiers != null &&
+    (options.modifiers === 'any' ||
+      (typeof options.modifiers === 'object' &&
+        ((utilityModifier && isArbitraryValue(utilityModifier)) ||
+          utilityModifier in options.modifiers)))
+
+  if (!canUseUtilityModifier) {
+    modifier = rawModifier
+    utilityModifier = undefined
+  }
+
+  if (utilityModifier !== undefined && modifier === '') {
+    modifier = 'DEFAULT'
+  }
+
+  // Check the full value first
+  // TODO: Move to asValue… somehow
+  if (utilityModifier !== undefined) {
+    if (typeof options.modifiers === 'object') {
+      let configValue = options.modifiers?.[utilityModifier] ?? null
+      if (configValue !== null) {
+        utilityModifier = configValue
+      } else if (isArbitraryValue(utilityModifier)) {
+        utilityModifier = unwrapArbitraryModifier(utilityModifier)
+      }
+    }
+  }
+
+  for (let { type } of types ?? []) {
+    let result = typeMap[type](modifier, options, {
+      tailwindConfig,
+    })
+
+    if (result === undefined) {
+      continue
+    }
+
+    yield [result, type, utilityModifier ?? null]
+  }
+}
Index: frontend/node_modules/tailwindcss/src/util/prefixSelector.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/prefixSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/prefixSelector.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,33 @@
+import parser from 'postcss-selector-parser'
+
+/**
+ * @template {string | import('postcss-selector-parser').Root} T
+ *
+ * Prefix all classes in the selector with the given prefix
+ *
+ * It can take either a string or a selector AST and will return the same type
+ *
+ * @param {string} prefix
+ * @param {T} selector
+ * @param {boolean} prependNegative
+ * @returns {T}
+ */
+export default function (prefix, selector, prependNegative = false) {
+  if (prefix === '') {
+    return selector
+  }
+
+  /** @type {import('postcss-selector-parser').Root} */
+  let ast = typeof selector === 'string' ? parser().astSync(selector) : selector
+
+  ast.walkClasses((classSelector) => {
+    let baseClass = classSelector.value
+    let shouldPlaceNegativeBeforePrefix = prependNegative && baseClass.startsWith('-')
+
+    classSelector.value = shouldPlaceNegativeBeforePrefix
+      ? `-${prefix}${baseClass.slice(1)}`
+      : `${prefix}${baseClass}`
+  })
+
+  return typeof selector === 'string' ? ast.toString() : ast
+}
Index: frontend/node_modules/tailwindcss/src/util/pseudoElements.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/pseudoElements.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/pseudoElements.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,171 @@
+/** @typedef {import('postcss-selector-parser').Root} Root */
+/** @typedef {import('postcss-selector-parser').Selector} Selector */
+/** @typedef {import('postcss-selector-parser').Pseudo} Pseudo */
+/** @typedef {import('postcss-selector-parser').Node} Node */
+
+// There are some pseudo-elements that may or may not be:
+
+// **Actionable**
+// Zero or more user-action pseudo-classes may be attached to the pseudo-element itself
+// structural-pseudo-classes are NOT allowed but we don't make
+// The spec is not clear on whether this is allowed or not — but in practice it is.
+
+// **Terminal**
+// It MUST be placed at the end of a selector
+//
+// This is the required in the spec. However, some pseudo elements are not "terminal" because
+// they represent a "boundary piercing" that is compiled out by a build step.
+
+// **Jumpable**
+// Any terminal element may "jump" over combinators when moving to the end of the selector
+//
+// This is a backwards-compat quirk of pseudo element variants from earlier versions of Tailwind CSS.
+
+/** @typedef {'terminal' | 'actionable' | 'jumpable'} PseudoProperty */
+
+/** @type {Record<string, PseudoProperty[]>} */
+let elementProperties = {
+  // Pseudo elements from the spec
+  '::after': ['terminal', 'jumpable'],
+  '::backdrop': ['terminal', 'jumpable'],
+  '::before': ['terminal', 'jumpable'],
+  '::cue': ['terminal'],
+  '::cue-region': ['terminal'],
+  '::first-letter': ['terminal', 'jumpable'],
+  '::first-line': ['terminal', 'jumpable'],
+  '::grammar-error': ['terminal'],
+  '::marker': ['terminal', 'jumpable'],
+  '::part': ['terminal', 'actionable'],
+  '::placeholder': ['terminal', 'jumpable'],
+  '::selection': ['terminal', 'jumpable'],
+  '::slotted': ['terminal'],
+  '::spelling-error': ['terminal'],
+  '::target-text': ['terminal'],
+
+  // Pseudo elements from the spec with special rules
+  '::file-selector-button': ['terminal', 'actionable'],
+
+  // Library-specific pseudo elements used by component libraries
+  // These are Shadow DOM-like
+  '::deep': ['actionable'],
+  '::v-deep': ['actionable'],
+  '::ng-deep': ['actionable'],
+
+  // Note: As a rule, double colons (::) should be used instead of a single colon
+  // (:). This distinguishes pseudo-classes from pseudo-elements. However, since
+  // this distinction was not present in older versions of the W3C spec, most
+  // browsers support both syntaxes for the original pseudo-elements.
+  ':after': ['terminal', 'jumpable'],
+  ':before': ['terminal', 'jumpable'],
+  ':first-letter': ['terminal', 'jumpable'],
+  ':first-line': ['terminal', 'jumpable'],
+
+  ':where': [],
+  ':is': [],
+  ':has': [],
+
+  // The default value is used when the pseudo-element is not recognized
+  // Because it's not recognized, we don't know if it's terminal or not
+  // So we assume it can be moved AND can have user-action pseudo classes attached to it
+  __default__: ['terminal', 'actionable'],
+}
+
+/**
+ * @param {Selector} sel
+ * @returns {Selector}
+ */
+export function movePseudos(sel) {
+  let [pseudos] = movablePseudos(sel)
+
+  // Remove all pseudo elements from their respective selectors
+  pseudos.forEach(([sel, pseudo]) => sel.removeChild(pseudo))
+
+  // Re-add them to the end of the selector in the correct order.
+  // This moves terminal pseudo elements to the end of the
+  // selector otherwise the selector will not be valid.
+  //
+  // Examples:
+  //  - `before:hover:text-center` would result in `.before\:hover\:text-center:hover::before`
+  //  - `hover:before:text-center` would result in `.hover\:before\:text-center:hover::before`
+  //
+  // The selector `::before:hover` does not work but we
+  // can make it work for you by flipping the order.
+  sel.nodes.push(...pseudos.map(([, pseudo]) => pseudo))
+
+  return sel
+}
+
+/** @typedef {[sel: Selector, pseudo: Pseudo, attachedTo: Pseudo | null]} MovablePseudo */
+/** @typedef {[pseudos: MovablePseudo[], lastSeenElement: Pseudo | null]} MovablePseudosResult */
+
+/**
+ * @param {Selector} sel
+ * @returns {MovablePseudosResult}
+ */
+function movablePseudos(sel) {
+  /** @type {MovablePseudo[]} */
+  let buffer = []
+
+  /** @type {Pseudo | null} */
+  let lastSeenElement = null
+
+  for (let node of sel.nodes) {
+    if (node.type === 'combinator') {
+      buffer = buffer.filter(([, node]) => propertiesForPseudo(node).includes('jumpable'))
+      lastSeenElement = null
+    } else if (node.type === 'pseudo') {
+      if (isMovablePseudoElement(node)) {
+        lastSeenElement = node
+        buffer.push([sel, node, null])
+      } else if (lastSeenElement && isAttachablePseudoClass(node, lastSeenElement)) {
+        buffer.push([sel, node, lastSeenElement])
+      } else {
+        lastSeenElement = null
+      }
+
+      for (let sub of node.nodes ?? []) {
+        let [movable, lastSeenElementInSub] = movablePseudos(sub)
+        lastSeenElement = lastSeenElementInSub || lastSeenElement
+        buffer.push(...movable)
+      }
+    }
+  }
+
+  return [buffer, lastSeenElement]
+}
+
+/**
+ * @param {Node} node
+ * @returns {boolean}
+ */
+function isPseudoElement(node) {
+  return node.value.startsWith('::') || elementProperties[node.value] !== undefined
+}
+
+/**
+ * @param {Node} node
+ * @returns {boolean}
+ */
+function isMovablePseudoElement(node) {
+  return isPseudoElement(node) && propertiesForPseudo(node).includes('terminal')
+}
+
+/**
+ * @param {Node} node
+ * @param {Pseudo} pseudo
+ * @returns {boolean}
+ */
+function isAttachablePseudoClass(node, pseudo) {
+  if (node.type !== 'pseudo') return false
+  if (isPseudoElement(node)) return false
+
+  return propertiesForPseudo(pseudo).includes('actionable')
+}
+
+/**
+ * @param {Pseudo} pseudo
+ * @returns {PseudoProperty[]}
+ */
+function propertiesForPseudo(pseudo) {
+  return elementProperties[pseudo.value] ?? elementProperties.__default__
+}
Index: frontend/node_modules/tailwindcss/src/util/removeAlphaVariables.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/removeAlphaVariables.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/removeAlphaVariables.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,26 @@
+/**
+ * This function removes any uses of CSS variables used as an alpha channel
+ *
+ * This is required for selectors like `:visited` which do not allow
+ * changes in opacity or external control using CSS variables.
+ *
+ * @param {import('postcss').Container} container
+ * @param {string[]} toRemove
+ */
+export function removeAlphaVariables(container, toRemove) {
+  container.walkDecls((decl) => {
+    if (toRemove.includes(decl.prop)) {
+      decl.remove()
+
+      return
+    }
+
+    for (let varName of toRemove) {
+      if (decl.value.includes(`/ var(${varName})`)) {
+        decl.value = decl.value.replace(`/ var(${varName})`, '')
+      } else if (decl.value.includes(`/ var(${varName}, 1)`)) {
+        decl.value = decl.value.replace(`/ var(${varName}, 1)`, '')
+      }
+    }
+  })
+}
Index: frontend/node_modules/tailwindcss/src/util/resolveConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/resolveConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/resolveConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,277 @@
+import negateValue from './negateValue'
+import corePluginList from '../corePluginList'
+import configurePlugins from './configurePlugins'
+import colors from '../public/colors'
+import { defaults } from './defaults'
+import { toPath } from './toPath'
+import { normalizeConfig } from './normalizeConfig'
+import isPlainObject from './isPlainObject'
+import { cloneDeep } from './cloneDeep'
+import { parseColorFormat } from './pluginUtils'
+import { withAlphaValue } from './withAlphaVariable'
+import toColorValue from './toColorValue'
+
+function isFunction(input) {
+  return typeof input === 'function'
+}
+
+function mergeWith(target, ...sources) {
+  let customizer = sources.pop()
+
+  for (let source of sources) {
+    for (let k in source) {
+      let merged = customizer(target[k], source[k])
+
+      if (merged === undefined) {
+        if (isPlainObject(target[k]) && isPlainObject(source[k])) {
+          target[k] = mergeWith({}, target[k], source[k], customizer)
+        } else {
+          target[k] = source[k]
+        }
+      } else {
+        target[k] = merged
+      }
+    }
+  }
+
+  return target
+}
+
+const configUtils = {
+  colors,
+  negative(scale) {
+    // TODO: Log that this function isn't really needed anymore?
+    return Object.keys(scale)
+      .filter((key) => scale[key] !== '0')
+      .reduce((negativeScale, key) => {
+        let negativeValue = negateValue(scale[key])
+
+        if (negativeValue !== undefined) {
+          negativeScale[`-${key}`] = negativeValue
+        }
+
+        return negativeScale
+      }, {})
+  },
+  breakpoints(screens) {
+    return Object.keys(screens)
+      .filter((key) => typeof screens[key] === 'string')
+      .reduce(
+        (breakpoints, key) => ({
+          ...breakpoints,
+          [`screen-${key}`]: screens[key],
+        }),
+        {}
+      )
+  },
+}
+
+function value(valueToResolve, ...args) {
+  return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve
+}
+
+function collectExtends(items) {
+  return items.reduce((merged, { extend }) => {
+    return mergeWith(merged, extend, (mergedValue, extendValue) => {
+      if (mergedValue === undefined) {
+        return [extendValue]
+      }
+
+      if (Array.isArray(mergedValue)) {
+        return [extendValue, ...mergedValue]
+      }
+
+      return [extendValue, mergedValue]
+    })
+  }, {})
+}
+
+function mergeThemes(themes) {
+  return {
+    ...themes.reduce((merged, theme) => defaults(merged, theme), {}),
+
+    // In order to resolve n config objects, we combine all of their `extend` properties
+    // into arrays instead of objects so they aren't overridden.
+    extend: collectExtends(themes),
+  }
+}
+
+function mergeExtensionCustomizer(merged, value) {
+  // When we have an array of objects, we do want to merge it
+  if (Array.isArray(merged) && isPlainObject(merged[0])) {
+    return merged.concat(value)
+  }
+
+  // When the incoming value is an array, and the existing config is an object, prepend the existing object
+  if (Array.isArray(value) && isPlainObject(value[0]) && isPlainObject(merged)) {
+    return [merged, ...value]
+  }
+
+  // Override arrays (for example for font-families, box-shadows, ...)
+  if (Array.isArray(value)) {
+    return value
+  }
+
+  // Execute default behaviour
+  return undefined
+}
+
+function mergeExtensions({ extend, ...theme }) {
+  return mergeWith(theme, extend, (themeValue, extensions) => {
+    // The `extend` property is an array, so we need to check if it contains any functions
+    if (!isFunction(themeValue) && !extensions.some(isFunction)) {
+      return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer)
+    }
+
+    return (resolveThemePath, utils) =>
+      mergeWith(
+        {},
+        ...[themeValue, ...extensions].map((e) => value(e, resolveThemePath, utils)),
+        mergeExtensionCustomizer
+      )
+  })
+}
+
+/**
+ *
+ * @param {string} key
+ * @return {Iterable<string[] & {alpha: string | undefined}>}
+ */
+function* toPaths(key) {
+  let path = toPath(key)
+
+  if (path.length === 0) {
+    return
+  }
+
+  yield path
+
+  if (Array.isArray(key)) {
+    return
+  }
+
+  let pattern = /^(.*?)\s*\/\s*([^/]+)$/
+  let matches = key.match(pattern)
+
+  if (matches !== null) {
+    let [, prefix, alpha] = matches
+
+    let newPath = toPath(prefix)
+    newPath.alpha = alpha
+
+    yield newPath
+  }
+}
+
+function resolveFunctionKeys(object) {
+  // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]
+
+  const resolvePath = (key, defaultValue) => {
+    for (const path of toPaths(key)) {
+      let index = 0
+      let val = object
+
+      while (val !== undefined && val !== null && index < path.length) {
+        val = val[path[index++]]
+
+        let shouldResolveAsFn =
+          isFunction(val) && (path.alpha === undefined || index <= path.length - 1)
+
+        val = shouldResolveAsFn ? val(resolvePath, configUtils) : val
+      }
+
+      if (val !== undefined) {
+        if (path.alpha !== undefined) {
+          let normalized = parseColorFormat(val)
+
+          return withAlphaValue(normalized, path.alpha, toColorValue(normalized))
+        }
+
+        if (isPlainObject(val)) {
+          return cloneDeep(val)
+        }
+
+        return val
+      }
+    }
+
+    return defaultValue
+  }
+
+  Object.assign(resolvePath, {
+    theme: resolvePath,
+    ...configUtils,
+  })
+
+  return Object.keys(object).reduce((resolved, key) => {
+    resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key]
+
+    return resolved
+  }, {})
+}
+
+function extractPluginConfigs(configs) {
+  let allConfigs = []
+
+  configs.forEach((config) => {
+    allConfigs = [...allConfigs, config]
+
+    const plugins = config?.plugins ?? []
+
+    if (plugins.length === 0) {
+      return
+    }
+
+    plugins.forEach((plugin) => {
+      if (plugin.__isOptionsFunction) {
+        plugin = plugin()
+      }
+      allConfigs = [...allConfigs, ...extractPluginConfigs([plugin?.config ?? {}])]
+    })
+  })
+
+  return allConfigs
+}
+
+function resolveCorePlugins(corePluginConfigs) {
+  const result = [...corePluginConfigs].reduceRight((resolved, corePluginConfig) => {
+    if (isFunction(corePluginConfig)) {
+      return corePluginConfig({ corePlugins: resolved })
+    }
+    return configurePlugins(corePluginConfig, resolved)
+  }, corePluginList)
+
+  return result
+}
+
+function resolvePluginLists(pluginLists) {
+  const result = [...pluginLists].reduceRight((resolved, pluginList) => {
+    return [...resolved, ...pluginList]
+  }, [])
+
+  return result
+}
+
+export default function resolveConfig(configs) {
+  let allConfigs = [
+    ...extractPluginConfigs(configs),
+    {
+      prefix: '',
+      important: false,
+      separator: ':',
+    },
+  ]
+
+  return normalizeConfig(
+    defaults(
+      {
+        theme: resolveFunctionKeys(
+          mergeExtensions(mergeThemes(allConfigs.map((t) => t?.theme ?? {})))
+        ),
+        corePlugins: resolveCorePlugins(allConfigs.map((c) => c.corePlugins)),
+        plugins: resolvePluginLists(configs.map((c) => c?.plugins ?? [])),
+      },
+      ...allConfigs
+    )
+  )
+}
Index: frontend/node_modules/tailwindcss/src/util/resolveConfigPath.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/resolveConfigPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/resolveConfigPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,68 @@
+import fs from 'fs'
+import path from 'path'
+
+const defaultConfigFiles = [
+  './tailwind.config.js',
+  './tailwind.config.cjs',
+  './tailwind.config.mjs',
+  './tailwind.config.ts',
+  './tailwind.config.cts',
+  './tailwind.config.mts',
+]
+
+function isObject(value) {
+  return typeof value === 'object' && value !== null
+}
+
+function isEmpty(obj) {
+  return Object.keys(obj).length === 0
+}
+
+function isString(value) {
+  return typeof value === 'string' || value instanceof String
+}
+
+export default function resolveConfigPath(pathOrConfig) {
+  // require('tailwindcss')({ theme: ..., variants: ... })
+  if (isObject(pathOrConfig) && pathOrConfig.config === undefined && !isEmpty(pathOrConfig)) {
+    return null
+  }
+
+  // require('tailwindcss')({ config: 'custom-config.js' })
+  if (
+    isObject(pathOrConfig) &&
+    pathOrConfig.config !== undefined &&
+    isString(pathOrConfig.config)
+  ) {
+    return path.resolve(pathOrConfig.config)
+  }
+
+  // require('tailwindcss')({ config: { theme: ..., variants: ... } })
+  if (
+    isObject(pathOrConfig) &&
+    pathOrConfig.config !== undefined &&
+    isObject(pathOrConfig.config)
+  ) {
+    return null
+  }
+
+  // require('tailwindcss')('custom-config.js')
+  if (isString(pathOrConfig)) {
+    return path.resolve(pathOrConfig)
+  }
+
+  // require('tailwindcss')
+  return resolveDefaultConfigPath()
+}
+
+export function resolveDefaultConfigPath() {
+  for (const configFile of defaultConfigFiles) {
+    try {
+      const configPath = path.resolve(configFile)
+      fs.accessSync(configPath)
+      return configPath
+    } catch (err) {}
+  }
+
+  return null
+}
Index: frontend/node_modules/tailwindcss/src/util/responsive.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/responsive.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/responsive.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,10 @@
+import postcss from 'postcss'
+import cloneNodes from './cloneNodes'
+
+export default function responsive(rules) {
+  return postcss
+    .atRule({
+      name: 'responsive',
+    })
+    .append(cloneNodes(Array.isArray(rules) ? rules : [rules]))
+}
Index: frontend/node_modules/tailwindcss/src/util/splitAtTopLevelOnly.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/splitAtTopLevelOnly.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/splitAtTopLevelOnly.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,48 @@
+/**
+ * This splits a string on a top-level character.
+ *
+ * Regex doesn't support recursion (at least not the JS-flavored version).
+ * So we have to use a tiny state machine to keep track of paren placement.
+ *
+ * Expected behavior using commas:
+ * var(--a, 0 0 1px rgb(0, 0, 0)), 0 0 1px rgb(0, 0, 0)
+ *       ─┬─             ┬  ┬    ┬
+ *        x              x  x    ╰──────── Split because top-level
+ *        ╰──────────────┴──┴───────────── Ignored b/c inside >= 1 levels of parens
+ *
+ * @param {string} input
+ * @param {string} separator
+ */
+export function splitAtTopLevelOnly(input, separator) {
+  let stack = []
+  let parts = []
+  let lastPos = 0
+  let isEscaped = false
+
+  for (let idx = 0; idx < input.length; idx++) {
+    let char = input[idx]
+
+    if (stack.length === 0 && char === separator[0] && !isEscaped) {
+      if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {
+        parts.push(input.slice(lastPos, idx))
+        lastPos = idx + separator.length
+      }
+    }
+
+    isEscaped = isEscaped ? false : char === '\\'
+
+    if (char === '(' || char === '[' || char === '{') {
+      stack.push(char)
+    } else if (
+      (char === ')' && stack[stack.length - 1] === '(') ||
+      (char === ']' && stack[stack.length - 1] === '[') ||
+      (char === '}' && stack[stack.length - 1] === '{')
+    ) {
+      stack.pop()
+    }
+  }
+
+  parts.push(input.slice(lastPos))
+
+  return parts
+}
Index: frontend/node_modules/tailwindcss/src/util/tap.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/tap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/tap.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,4 @@
+export function tap(value, mutator) {
+  mutator(value)
+  return value
+}
Index: frontend/node_modules/tailwindcss/src/util/toColorValue.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/toColorValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/toColorValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+export default function toColorValue(maybeFunction) {
+  return typeof maybeFunction === 'function' ? maybeFunction({}) : maybeFunction
+}
Index: frontend/node_modules/tailwindcss/src/util/toPath.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/toPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/toPath.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,26 @@
+/**
+ * Parse a path string into an array of path segments.
+ *
+ * Square bracket notation `a[b]` may be used to "escape" dots that would otherwise be interpreted as path separators.
+ *
+ * Example:
+ * a -> ['a']
+ * a.b.c -> ['a', 'b', 'c']
+ * a[b].c -> ['a', 'b', 'c']
+ * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']
+ * a[b][c][d] -> ['a', 'b', 'c', 'd']
+ *
+ * @param {string|string[]} path
+ **/
+export function toPath(path) {
+  if (Array.isArray(path)) return path
+
+  let openBrackets = path.split('[').length - 1
+  let closedBrackets = path.split(']').length - 1
+
+  if (openBrackets !== closedBrackets) {
+    throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`)
+  }
+
+  return path.split(/\.(?![^\[]*\])|[\[\]]/g).filter(Boolean)
+}
Index: frontend/node_modules/tailwindcss/src/util/transformThemeValue.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/transformThemeValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/transformThemeValue.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,62 @@
+import postcss from 'postcss'
+import isPlainObject from './isPlainObject'
+
+export default function transformThemeValue(themeSection) {
+  if (['fontSize', 'outline'].includes(themeSection)) {
+    return (value) => {
+      if (typeof value === 'function') value = value({})
+      if (Array.isArray(value)) value = value[0]
+
+      return value
+    }
+  }
+
+  if (themeSection === 'fontFamily') {
+    return (value) => {
+      if (typeof value === 'function') value = value({})
+      let families = Array.isArray(value) && isPlainObject(value[1]) ? value[0] : value
+      return Array.isArray(families) ? families.join(', ') : families
+    }
+  }
+
+  if (
+    [
+      'boxShadow',
+      'transitionProperty',
+      'transitionDuration',
+      'transitionDelay',
+      'transitionTimingFunction',
+      'backgroundImage',
+      'backgroundSize',
+      'backgroundColor',
+      'cursor',
+      'animation',
+    ].includes(themeSection)
+  ) {
+    return (value) => {
+      if (typeof value === 'function') value = value({})
+      if (Array.isArray(value)) value = value.join(', ')
+
+      return value
+    }
+  }
+
+  // For backwards compatibility reasons, before we switched to underscores
+  // instead of commas for arbitrary values.
+  if (['gridTemplateColumns', 'gridTemplateRows', 'objectPosition'].includes(themeSection)) {
+    return (value) => {
+      if (typeof value === 'function') value = value({})
+      if (typeof value === 'string') value = postcss.list.comma(value).join(' ')
+
+      return value
+    }
+  }
+
+  return (value, opts = {}) => {
+    if (typeof value === 'function') {
+      value = value(opts)
+    }
+
+    return value
+  }
+}
Index: frontend/node_modules/tailwindcss/src/util/validateConfig.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/validateConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/validateConfig.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,26 @@
+import log from './log'
+
+export function validateConfig(config) {
+  if (config.content.files.length === 0) {
+    log.warn('content-problems', [
+      'The `content` option in your Tailwind CSS configuration is missing or empty.',
+      'Configure your content sources or your generated CSS will be missing styles.',
+      'https://tailwindcss.com/docs/content-configuration',
+    ])
+  }
+
+  // Warn if the line-clamp plugin is installed
+  try {
+    let plugin = require('@tailwindcss/line-clamp')
+    if (config.plugins.includes(plugin)) {
+      log.warn('line-clamp-in-core', [
+        'As of Tailwind CSS v3.3, the `@tailwindcss/line-clamp` plugin is now included by default.',
+        'Remove it from the `plugins` array in your configuration to eliminate this warning.',
+      ])
+
+      config.plugins = config.plugins.filter((p) => p !== plugin)
+    }
+  } catch {}
+
+  return config
+}
Index: frontend/node_modules/tailwindcss/src/util/validateFormalSyntax.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/validateFormalSyntax.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/validateFormalSyntax.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,34 @@
+import { length, percentage } from './dataTypes'
+import { splitAtTopLevelOnly } from './splitAtTopLevelOnly'
+
+/**
+ *
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/background-size#formal_syntax
+ *
+ * background-size =
+ *  <bg-size>#
+ *
+ * <bg-size> =
+ *   [ <length-percentage [0,∞]> | auto ]{1,2}  |
+ *   cover                                      |
+ *   contain
+ *
+ * <length-percentage> =
+ *   <length>      |
+ *   <percentage>
+ *
+ * @param {string} value
+ */
+export function backgroundSize(value) {
+  let keywordValues = ['cover', 'contain']
+  // the <length-percentage> type will probably be a css function
+  // so we have to use `splitAtTopLevelOnly`
+  return splitAtTopLevelOnly(value, ',').every((part) => {
+    let sizes = splitAtTopLevelOnly(part, '_').filter(Boolean)
+    if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true
+
+    if (sizes.length !== 1 && sizes.length !== 2) return false
+
+    return sizes.every((size) => length(size) || percentage(size) || size === 'auto')
+  })
+}
Index: frontend/node_modules/tailwindcss/src/util/withAlphaVariable.js
===================================================================
--- frontend/node_modules/tailwindcss/src/util/withAlphaVariable.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/util/withAlphaVariable.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,49 @@
+import { parseColor, formatColor } from './color'
+
+export function withAlphaValue(color, alphaValue, defaultValue) {
+  if (typeof color === 'function') {
+    return color({ opacityValue: alphaValue })
+  }
+
+  let parsed = parseColor(color, { loose: true })
+
+  if (parsed === null) {
+    return defaultValue
+  }
+
+  return formatColor({ ...parsed, alpha: alphaValue })
+}
+
+export default function withAlphaVariable({ color, property, variable }) {
+  let properties = [].concat(property)
+  if (typeof color === 'function') {
+    return {
+      [variable]: '1',
+      ...Object.fromEntries(
+        properties.map((p) => {
+          return [p, color({ opacityVariable: variable, opacityValue: `var(${variable}, 1)` })]
+        })
+      ),
+    }
+  }
+
+  const parsed = parseColor(color)
+
+  if (parsed === null) {
+    return Object.fromEntries(properties.map((p) => [p, color]))
+  }
+
+  if (parsed.alpha !== undefined) {
+    // Has an alpha value, return color as-is
+    return Object.fromEntries(properties.map((p) => [p, color]))
+  }
+
+  return {
+    [variable]: '1',
+    ...Object.fromEntries(
+      properties.map((p) => {
+        return [p, formatColor({ ...parsed, alpha: `var(${variable}, 1)` })]
+      })
+    ),
+  }
+}
Index: frontend/node_modules/tailwindcss/src/value-parser/LICENSE
===================================================================
--- frontend/node_modules/tailwindcss/src/value-parser/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/value-parser/LICENSE	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,22 @@
+Copyright (c) Bogdan Chadkin <trysound@yandex.ru>
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
Index: frontend/node_modules/tailwindcss/src/value-parser/README.md
===================================================================
--- frontend/node_modules/tailwindcss/src/value-parser/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/value-parser/README.md	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+# postcss-value-parser (forked + inlined)
+
+This is a customized version of of [PostCSS Value Parser](https://github.com/TrySound/postcss-value-parser) to fix some bugs around parsing CSS functions.
Index: frontend/node_modules/tailwindcss/src/value-parser/index.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/src/value-parser/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/value-parser/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,177 @@
+declare namespace postcssValueParser {
+  interface BaseNode {
+    /**
+     * The offset, inclusive, inside the CSS value at which the node starts.
+     */
+    sourceIndex: number
+
+    /**
+     * The offset, exclusive, inside the CSS value at which the node ends.
+     */
+    sourceEndIndex: number
+
+    /**
+     * The node's characteristic value
+     */
+    value: string
+  }
+
+  interface ClosableNode {
+    /**
+     * Whether the parsed CSS value ended before the node was properly closed
+     */
+    unclosed?: true
+  }
+
+  interface AdjacentAwareNode {
+    /**
+     * The token at the start of the node
+     */
+    before: string
+
+    /**
+     * The token at the end of the node
+     */
+    after: string
+  }
+
+  interface CommentNode extends BaseNode, ClosableNode {
+    type: 'comment'
+  }
+
+  interface DivNode extends BaseNode, AdjacentAwareNode {
+    type: 'div'
+  }
+
+  interface FunctionNode extends BaseNode, ClosableNode, AdjacentAwareNode {
+    type: 'function'
+
+    /**
+     * Nodes inside the function
+     */
+    nodes: Node[]
+  }
+
+  interface SpaceNode extends BaseNode {
+    type: 'space'
+  }
+
+  interface StringNode extends BaseNode, ClosableNode {
+    type: 'string'
+
+    /**
+     * The quote type delimiting the string
+     */
+    quote: '"' | "'"
+  }
+
+  interface UnicodeRangeNode extends BaseNode {
+    type: 'unicode-range'
+  }
+
+  interface WordNode extends BaseNode {
+    type: 'word'
+  }
+
+  /**
+   * Any node parsed from a CSS value
+   */
+  type Node =
+    | CommentNode
+    | DivNode
+    | FunctionNode
+    | SpaceNode
+    | StringNode
+    | UnicodeRangeNode
+    | WordNode
+
+  interface CustomStringifierCallback {
+    /**
+     * @param node The node to stringify
+     * @returns The serialized CSS representation of the node
+     */
+    (nodes: Node): string | undefined
+  }
+
+  interface WalkCallback {
+    /**
+     * @param node  The currently visited node
+     * @param index The index of the node in the series of parsed nodes
+     * @param nodes The series of parsed nodes
+     * @returns Returning `false` will prevent traversal of descendant nodes (only applies if `bubble` was set to `true` in the `walk()` call)
+     */
+    (node: Node, index: number, nodes: Node[]): void | boolean
+  }
+
+  /**
+   * A CSS dimension, decomposed into its numeric and unit parts
+   */
+  interface Dimension {
+    number: string
+    unit: string
+  }
+
+  /**
+   * A wrapper around a parsed CSS value that allows for inspecting and walking nodes
+   */
+  interface ParsedValue {
+    /**
+     * The series of parsed nodes
+     */
+    nodes: Node[]
+
+    /**
+     * Walk all parsed nodes, applying a callback
+     *
+     * @param callback A visitor callback that will be executed for each node
+     * @param bubble   When set to `true`, walking will be done inside-out instead of outside-in
+     */
+    walk(callback: WalkCallback, bubble?: boolean): this
+  }
+
+  interface ValueParser {
+    /**
+     * Decompose a CSS dimension into its numeric and unit part
+     *
+     * @param value The dimension to decompose
+     * @returns An object representing `number` and `unit` part of the dimension or `false` if the decomposing fails
+     */
+    unit(value: string): Dimension | false
+
+    /**
+     * Serialize a series of nodes into a CSS value
+     *
+     * @param nodes  The nodes to stringify
+     * @param custom A custom stringifier callback
+     * @returns The generated CSS value
+     */
+    stringify(nodes: Node | Node[], custom?: CustomStringifierCallback): string
+
+    /**
+     * Walk a series of nodes, applying a callback
+     *
+     * @param nodes    The nodes to walk
+     * @param callback A visitor callback that will be executed for each node
+     * @param bubble   When set to `true`, walking will be done inside-out instead of outside-in
+     */
+    walk(nodes: Node[], callback: WalkCallback, bubble?: boolean): void
+
+    /**
+     * Parse a CSS value into a series of nodes to operate on
+     *
+     * @param value The value to parse
+     */
+    new (value: string): ParsedValue
+
+    /**
+     * Parse a CSS value into a series of nodes to operate on
+     *
+     * @param value The value to parse
+     */
+    (value: string): ParsedValue
+  }
+}
+
+declare const postcssValueParser: postcssValueParser.ValueParser
+
+export = postcssValueParser
Index: frontend/node_modules/tailwindcss/src/value-parser/index.js
===================================================================
--- frontend/node_modules/tailwindcss/src/value-parser/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/value-parser/index.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,28 @@
+var parse = require('./parse')
+var walk = require('./walk')
+var stringify = require('./stringify')
+
+function ValueParser(value) {
+  if (this instanceof ValueParser) {
+    this.nodes = parse(value)
+    return this
+  }
+  return new ValueParser(value)
+}
+
+ValueParser.prototype.toString = function () {
+  return Array.isArray(this.nodes) ? stringify(this.nodes) : ''
+}
+
+ValueParser.prototype.walk = function (cb, bubble) {
+  walk(this.nodes, cb, bubble)
+  return this
+}
+
+ValueParser.unit = require('./unit')
+
+ValueParser.walk = walk
+
+ValueParser.stringify = stringify
+
+module.exports = ValueParser
Index: frontend/node_modules/tailwindcss/src/value-parser/parse.js
===================================================================
--- frontend/node_modules/tailwindcss/src/value-parser/parse.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/value-parser/parse.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,303 @@
+var openParentheses = '('.charCodeAt(0)
+var closeParentheses = ')'.charCodeAt(0)
+var singleQuote = "'".charCodeAt(0)
+var doubleQuote = '"'.charCodeAt(0)
+var backslash = '\\'.charCodeAt(0)
+var slash = '/'.charCodeAt(0)
+var comma = ','.charCodeAt(0)
+var colon = ':'.charCodeAt(0)
+var star = '*'.charCodeAt(0)
+var uLower = 'u'.charCodeAt(0)
+var uUpper = 'U'.charCodeAt(0)
+var plus = '+'.charCodeAt(0)
+var isUnicodeRange = /^[a-f0-9?-]+$/i
+
+module.exports = function (input) {
+  var tokens = []
+  var value = input
+
+  var next, quote, prev, token, escape, escapePos, whitespacePos, parenthesesOpenPos
+  var pos = 0
+  var code = value.charCodeAt(pos)
+  var max = value.length
+  var stack = [{ nodes: tokens }]
+  var balanced = 0
+  var parent
+
+  var name = ''
+  var before = ''
+  var after = ''
+
+  while (pos < max) {
+    // Whitespaces
+    if (code <= 32) {
+      next = pos
+      do {
+        next += 1
+        code = value.charCodeAt(next)
+      } while (code <= 32)
+      token = value.slice(pos, next)
+
+      prev = tokens[tokens.length - 1]
+      if (code === closeParentheses && balanced) {
+        after = token
+      } else if (prev && prev.type === 'div') {
+        prev.after = token
+        prev.sourceEndIndex += token.length
+      } else if (
+        code === comma ||
+        code === colon ||
+        (code === slash &&
+          value.charCodeAt(next + 1) !== star &&
+          (!parent || (parent && parent.type === 'function' && false)))
+      ) {
+        before = token
+      } else {
+        tokens.push({
+          type: 'space',
+          sourceIndex: pos,
+          sourceEndIndex: next,
+          value: token,
+        })
+      }
+
+      pos = next
+
+      // Quotes
+    } else if (code === singleQuote || code === doubleQuote) {
+      next = pos
+      quote = code === singleQuote ? "'" : '"'
+      token = {
+        type: 'string',
+        sourceIndex: pos,
+        quote: quote,
+      }
+      do {
+        escape = false
+        next = value.indexOf(quote, next + 1)
+        if (~next) {
+          escapePos = next
+          while (value.charCodeAt(escapePos - 1) === backslash) {
+            escapePos -= 1
+            escape = !escape
+          }
+        } else {
+          value += quote
+          next = value.length - 1
+          token.unclosed = true
+        }
+      } while (escape)
+      token.value = value.slice(pos + 1, next)
+      token.sourceEndIndex = token.unclosed ? next : next + 1
+      tokens.push(token)
+      pos = next + 1
+      code = value.charCodeAt(pos)
+
+      // Comments
+    } else if (code === slash && value.charCodeAt(pos + 1) === star) {
+      next = value.indexOf('*/', pos)
+
+      token = {
+        type: 'comment',
+        sourceIndex: pos,
+        sourceEndIndex: next + 2,
+      }
+
+      if (next === -1) {
+        token.unclosed = true
+        next = value.length
+        token.sourceEndIndex = next
+      }
+
+      token.value = value.slice(pos + 2, next)
+      tokens.push(token)
+
+      pos = next + 2
+      code = value.charCodeAt(pos)
+
+      // Operation within calc
+    } else if ((code === slash || code === star) && parent && parent.type === 'function' && true) {
+      token = value[pos]
+      tokens.push({
+        type: 'word',
+        sourceIndex: pos - before.length,
+        sourceEndIndex: pos + token.length,
+        value: token,
+      })
+      pos += 1
+      code = value.charCodeAt(pos)
+
+      // Dividers
+    } else if (code === slash || code === comma || code === colon) {
+      token = value[pos]
+
+      tokens.push({
+        type: 'div',
+        sourceIndex: pos - before.length,
+        sourceEndIndex: pos + token.length,
+        value: token,
+        before: before,
+        after: '',
+      })
+      before = ''
+
+      pos += 1
+      code = value.charCodeAt(pos)
+
+      // Open parentheses
+    } else if (openParentheses === code) {
+      // Whitespaces after open parentheses
+      next = pos
+      do {
+        next += 1
+        code = value.charCodeAt(next)
+      } while (code <= 32)
+      parenthesesOpenPos = pos
+      token = {
+        type: 'function',
+        sourceIndex: pos - name.length,
+        value: name,
+        before: value.slice(parenthesesOpenPos + 1, next),
+      }
+      pos = next
+
+      if (name === 'url' && code !== singleQuote && code !== doubleQuote) {
+        next -= 1
+        do {
+          escape = false
+          next = value.indexOf(')', next + 1)
+          if (~next) {
+            escapePos = next
+            while (value.charCodeAt(escapePos - 1) === backslash) {
+              escapePos -= 1
+              escape = !escape
+            }
+          } else {
+            value += ')'
+            next = value.length - 1
+            token.unclosed = true
+          }
+        } while (escape)
+        // Whitespaces before closed
+        whitespacePos = next
+        do {
+          whitespacePos -= 1
+          code = value.charCodeAt(whitespacePos)
+        } while (code <= 32)
+        if (parenthesesOpenPos < whitespacePos) {
+          if (pos !== whitespacePos + 1) {
+            token.nodes = [
+              {
+                type: 'word',
+                sourceIndex: pos,
+                sourceEndIndex: whitespacePos + 1,
+                value: value.slice(pos, whitespacePos + 1),
+              },
+            ]
+          } else {
+            token.nodes = []
+          }
+          if (token.unclosed && whitespacePos + 1 !== next) {
+            token.after = ''
+            token.nodes.push({
+              type: 'space',
+              sourceIndex: whitespacePos + 1,
+              sourceEndIndex: next,
+              value: value.slice(whitespacePos + 1, next),
+            })
+          } else {
+            token.after = value.slice(whitespacePos + 1, next)
+            token.sourceEndIndex = next
+          }
+        } else {
+          token.after = ''
+          token.nodes = []
+        }
+        pos = next + 1
+        token.sourceEndIndex = token.unclosed ? next : pos
+        code = value.charCodeAt(pos)
+        tokens.push(token)
+      } else {
+        balanced += 1
+        token.after = ''
+        token.sourceEndIndex = pos + 1
+        tokens.push(token)
+        stack.push(token)
+        tokens = token.nodes = []
+        parent = token
+      }
+      name = ''
+
+      // Close parentheses
+    } else if (closeParentheses === code && balanced) {
+      pos += 1
+      code = value.charCodeAt(pos)
+
+      parent.after = after
+      parent.sourceEndIndex += after.length
+      after = ''
+      balanced -= 1
+      stack[stack.length - 1].sourceEndIndex = pos
+      stack.pop()
+      parent = stack[balanced]
+      tokens = parent.nodes
+
+      // Words
+    } else {
+      next = pos
+      do {
+        if (code === backslash) {
+          next += 1
+        }
+        next += 1
+        code = value.charCodeAt(next)
+      } while (
+        next < max &&
+        !(
+          code <= 32 ||
+          code === singleQuote ||
+          code === doubleQuote ||
+          code === comma ||
+          code === colon ||
+          code === slash ||
+          code === openParentheses ||
+          (code === star && parent && parent.type === 'function' && true) ||
+          (code === slash && parent.type === 'function' && true) ||
+          (code === closeParentheses && balanced)
+        )
+      )
+      token = value.slice(pos, next)
+
+      if (openParentheses === code) {
+        name = token
+      } else if (
+        (uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) &&
+        plus === token.charCodeAt(1) &&
+        isUnicodeRange.test(token.slice(2))
+      ) {
+        tokens.push({
+          type: 'unicode-range',
+          sourceIndex: pos,
+          sourceEndIndex: next,
+          value: token,
+        })
+      } else {
+        tokens.push({
+          type: 'word',
+          sourceIndex: pos,
+          sourceEndIndex: next,
+          value: token,
+        })
+      }
+
+      pos = next
+    }
+  }
+
+  for (pos = stack.length - 1; pos; pos -= 1) {
+    stack[pos].unclosed = true
+    stack[pos].sourceEndIndex = value.length
+  }
+
+  return stack[0].nodes
+}
Index: frontend/node_modules/tailwindcss/src/value-parser/stringify.js
===================================================================
--- frontend/node_modules/tailwindcss/src/value-parser/stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/value-parser/stringify.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,41 @@
+function stringifyNode(node, custom) {
+  var type = node.type
+  var value = node.value
+  var buf
+  var customResult
+
+  if (custom && (customResult = custom(node)) !== undefined) {
+    return customResult
+  } else if (type === 'word' || type === 'space') {
+    return value
+  } else if (type === 'string') {
+    buf = node.quote || ''
+    return buf + value + (node.unclosed ? '' : buf)
+  } else if (type === 'comment') {
+    return '/*' + value + (node.unclosed ? '' : '*/')
+  } else if (type === 'div') {
+    return (node.before || '') + value + (node.after || '')
+  } else if (Array.isArray(node.nodes)) {
+    buf = stringify(node.nodes, custom)
+    if (type !== 'function') {
+      return buf
+    }
+    return value + '(' + (node.before || '') + buf + (node.after || '') + (node.unclosed ? '' : ')')
+  }
+  return value
+}
+
+function stringify(nodes, custom) {
+  var result, i
+
+  if (Array.isArray(nodes)) {
+    result = ''
+    for (i = nodes.length - 1; ~i; i -= 1) {
+      result = stringifyNode(nodes[i], custom) + result
+    }
+    return result
+  }
+  return stringifyNode(nodes, custom)
+}
+
+module.exports = stringify
Index: frontend/node_modules/tailwindcss/src/value-parser/unit.js
===================================================================
--- frontend/node_modules/tailwindcss/src/value-parser/unit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/value-parser/unit.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,118 @@
+var minus = '-'.charCodeAt(0)
+var plus = '+'.charCodeAt(0)
+var dot = '.'.charCodeAt(0)
+var exp = 'e'.charCodeAt(0)
+var EXP = 'E'.charCodeAt(0)
+
+// Check if three code points would start a number
+// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number
+function likeNumber(value) {
+  var code = value.charCodeAt(0)
+  var nextCode
+
+  if (code === plus || code === minus) {
+    nextCode = value.charCodeAt(1)
+
+    if (nextCode >= 48 && nextCode <= 57) {
+      return true
+    }
+
+    var nextNextCode = value.charCodeAt(2)
+
+    if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {
+      return true
+    }
+
+    return false
+  }
+
+  if (code === dot) {
+    nextCode = value.charCodeAt(1)
+
+    if (nextCode >= 48 && nextCode <= 57) {
+      return true
+    }
+
+    return false
+  }
+
+  if (code >= 48 && code <= 57) {
+    return true
+  }
+
+  return false
+}
+
+// Consume a number
+// https://www.w3.org/TR/css-syntax-3/#consume-number
+module.exports = function (value) {
+  var pos = 0
+  var length = value.length
+  var code
+  var nextCode
+  var nextNextCode
+
+  if (length === 0 || !likeNumber(value)) {
+    return false
+  }
+
+  code = value.charCodeAt(pos)
+
+  if (code === plus || code === minus) {
+    pos++
+  }
+
+  while (pos < length) {
+    code = value.charCodeAt(pos)
+
+    if (code < 48 || code > 57) {
+      break
+    }
+
+    pos += 1
+  }
+
+  code = value.charCodeAt(pos)
+  nextCode = value.charCodeAt(pos + 1)
+
+  if (code === dot && nextCode >= 48 && nextCode <= 57) {
+    pos += 2
+
+    while (pos < length) {
+      code = value.charCodeAt(pos)
+
+      if (code < 48 || code > 57) {
+        break
+      }
+
+      pos += 1
+    }
+  }
+
+  code = value.charCodeAt(pos)
+  nextCode = value.charCodeAt(pos + 1)
+  nextNextCode = value.charCodeAt(pos + 2)
+
+  if (
+    (code === exp || code === EXP) &&
+    ((nextCode >= 48 && nextCode <= 57) ||
+      ((nextCode === plus || nextCode === minus) && nextNextCode >= 48 && nextNextCode <= 57))
+  ) {
+    pos += nextCode === plus || nextCode === minus ? 3 : 2
+
+    while (pos < length) {
+      code = value.charCodeAt(pos)
+
+      if (code < 48 || code > 57) {
+        break
+      }
+
+      pos += 1
+    }
+  }
+
+  return {
+    number: value.slice(0, pos),
+    unit: value.slice(pos),
+  }
+}
Index: frontend/node_modules/tailwindcss/src/value-parser/walk.js
===================================================================
--- frontend/node_modules/tailwindcss/src/value-parser/walk.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/src/value-parser/walk.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,18 @@
+module.exports = function walk(nodes, cb, bubble) {
+  var i, max, node, result
+
+  for (i = 0, max = nodes.length; i < max; i += 1) {
+    node = nodes[i]
+    if (!bubble) {
+      result = cb(node, i, nodes)
+    }
+
+    if (result !== false && node.type === 'function' && Array.isArray(node.nodes)) {
+      walk(node.nodes, cb, bubble)
+    }
+
+    if (bubble) {
+      cb(node, i, nodes)
+    }
+  }
+}
Index: frontend/node_modules/tailwindcss/stubs/.npmignore
===================================================================
--- frontend/node_modules/tailwindcss/stubs/.npmignore	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/stubs/.npmignore	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+!*
Index: frontend/node_modules/tailwindcss/stubs/.prettierrc.json
===================================================================
--- frontend/node_modules/tailwindcss/stubs/.prettierrc.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/stubs/.prettierrc.json	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,6 @@
+{
+  "printWidth": 120,
+  "semi": false,
+  "singleQuote": true,
+  "trailingComma": "es5"
+}
Index: frontend/node_modules/tailwindcss/stubs/config.full.js
===================================================================
--- frontend/node_modules/tailwindcss/stubs/config.full.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/stubs/config.full.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1062 @@
+module.exports = {
+  content: [],
+  presets: [],
+  darkMode: 'media', // or 'class'
+  theme: {
+    accentColor: ({ theme }) => ({
+      ...theme('colors'),
+      auto: 'auto',
+    }),
+    animation: {
+      none: 'none',
+      spin: 'spin 1s linear infinite',
+      ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',
+      pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
+      bounce: 'bounce 1s infinite',
+    },
+    aria: {
+      busy: 'busy="true"',
+      checked: 'checked="true"',
+      disabled: 'disabled="true"',
+      expanded: 'expanded="true"',
+      hidden: 'hidden="true"',
+      pressed: 'pressed="true"',
+      readonly: 'readonly="true"',
+      required: 'required="true"',
+      selected: 'selected="true"',
+    },
+    aspectRatio: {
+      auto: 'auto',
+      square: '1 / 1',
+      video: '16 / 9',
+    },
+    backdropBlur: ({ theme }) => theme('blur'),
+    backdropBrightness: ({ theme }) => theme('brightness'),
+    backdropContrast: ({ theme }) => theme('contrast'),
+    backdropGrayscale: ({ theme }) => theme('grayscale'),
+    backdropHueRotate: ({ theme }) => theme('hueRotate'),
+    backdropInvert: ({ theme }) => theme('invert'),
+    backdropOpacity: ({ theme }) => theme('opacity'),
+    backdropSaturate: ({ theme }) => theme('saturate'),
+    backdropSepia: ({ theme }) => theme('sepia'),
+    backgroundColor: ({ theme }) => theme('colors'),
+    backgroundImage: {
+      none: 'none',
+      'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',
+      'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',
+      'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',
+      'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',
+      'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',
+      'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',
+      'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',
+      'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',
+    },
+    backgroundOpacity: ({ theme }) => theme('opacity'),
+    backgroundPosition: {
+      bottom: 'bottom',
+      center: 'center',
+      left: 'left',
+      'left-bottom': 'left bottom',
+      'left-top': 'left top',
+      right: 'right',
+      'right-bottom': 'right bottom',
+      'right-top': 'right top',
+      top: 'top',
+    },
+    backgroundSize: {
+      auto: 'auto',
+      cover: 'cover',
+      contain: 'contain',
+    },
+    blur: {
+      0: '0',
+      none: '',
+      sm: '4px',
+      DEFAULT: '8px',
+      md: '12px',
+      lg: '16px',
+      xl: '24px',
+      '2xl': '40px',
+      '3xl': '64px',
+    },
+    borderColor: ({ theme }) => ({
+      ...theme('colors'),
+      DEFAULT: theme('colors.gray.200', 'currentColor'),
+    }),
+    borderOpacity: ({ theme }) => theme('opacity'),
+    borderRadius: {
+      none: '0px',
+      sm: '0.125rem',
+      DEFAULT: '0.25rem',
+      md: '0.375rem',
+      lg: '0.5rem',
+      xl: '0.75rem',
+      '2xl': '1rem',
+      '3xl': '1.5rem',
+      full: '9999px',
+    },
+    borderSpacing: ({ theme }) => ({
+      ...theme('spacing'),
+    }),
+    borderWidth: {
+      DEFAULT: '1px',
+      0: '0px',
+      2: '2px',
+      4: '4px',
+      8: '8px',
+    },
+    boxShadow: {
+      sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',
+      DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
+      md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',
+      lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',
+      xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',
+      '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',
+      inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',
+      none: 'none',
+    },
+    boxShadowColor: ({ theme }) => theme('colors'),
+    brightness: {
+      0: '0',
+      50: '.5',
+      75: '.75',
+      90: '.9',
+      95: '.95',
+      100: '1',
+      105: '1.05',
+      110: '1.1',
+      125: '1.25',
+      150: '1.5',
+      200: '2',
+    },
+    caretColor: ({ theme }) => theme('colors'),
+    colors: ({ colors }) => ({
+      inherit: colors.inherit,
+      current: colors.current,
+      transparent: colors.transparent,
+      black: colors.black,
+      white: colors.white,
+      slate: colors.slate,
+      gray: colors.gray,
+      zinc: colors.zinc,
+      neutral: colors.neutral,
+      stone: colors.stone,
+      red: colors.red,
+      orange: colors.orange,
+      amber: colors.amber,
+      yellow: colors.yellow,
+      lime: colors.lime,
+      green: colors.green,
+      emerald: colors.emerald,
+      teal: colors.teal,
+      cyan: colors.cyan,
+      sky: colors.sky,
+      blue: colors.blue,
+      indigo: colors.indigo,
+      violet: colors.violet,
+      purple: colors.purple,
+      fuchsia: colors.fuchsia,
+      pink: colors.pink,
+      rose: colors.rose,
+    }),
+    columns: {
+      auto: 'auto',
+      1: '1',
+      2: '2',
+      3: '3',
+      4: '4',
+      5: '5',
+      6: '6',
+      7: '7',
+      8: '8',
+      9: '9',
+      10: '10',
+      11: '11',
+      12: '12',
+      '3xs': '16rem',
+      '2xs': '18rem',
+      xs: '20rem',
+      sm: '24rem',
+      md: '28rem',
+      lg: '32rem',
+      xl: '36rem',
+      '2xl': '42rem',
+      '3xl': '48rem',
+      '4xl': '56rem',
+      '5xl': '64rem',
+      '6xl': '72rem',
+      '7xl': '80rem',
+    },
+    container: {},
+    content: {
+      none: 'none',
+    },
+    contrast: {
+      0: '0',
+      50: '.5',
+      75: '.75',
+      100: '1',
+      125: '1.25',
+      150: '1.5',
+      200: '2',
+    },
+    cursor: {
+      auto: 'auto',
+      default: 'default',
+      pointer: 'pointer',
+      wait: 'wait',
+      text: 'text',
+      move: 'move',
+      help: 'help',
+      'not-allowed': 'not-allowed',
+      none: 'none',
+      'context-menu': 'context-menu',
+      progress: 'progress',
+      cell: 'cell',
+      crosshair: 'crosshair',
+      'vertical-text': 'vertical-text',
+      alias: 'alias',
+      copy: 'copy',
+      'no-drop': 'no-drop',
+      grab: 'grab',
+      grabbing: 'grabbing',
+      'all-scroll': 'all-scroll',
+      'col-resize': 'col-resize',
+      'row-resize': 'row-resize',
+      'n-resize': 'n-resize',
+      'e-resize': 'e-resize',
+      's-resize': 's-resize',
+      'w-resize': 'w-resize',
+      'ne-resize': 'ne-resize',
+      'nw-resize': 'nw-resize',
+      'se-resize': 'se-resize',
+      'sw-resize': 'sw-resize',
+      'ew-resize': 'ew-resize',
+      'ns-resize': 'ns-resize',
+      'nesw-resize': 'nesw-resize',
+      'nwse-resize': 'nwse-resize',
+      'zoom-in': 'zoom-in',
+      'zoom-out': 'zoom-out',
+    },
+    divideColor: ({ theme }) => theme('borderColor'),
+    divideOpacity: ({ theme }) => theme('borderOpacity'),
+    divideWidth: ({ theme }) => theme('borderWidth'),
+    dropShadow: {
+      sm: '0 1px 1px rgb(0 0 0 / 0.05)',
+      DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],
+      md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],
+      lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],
+      xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],
+      '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',
+      none: '0 0 #0000',
+    },
+    fill: ({ theme }) => ({
+      none: 'none',
+      ...theme('colors'),
+    }),
+    flex: {
+      1: '1 1 0%',
+      auto: '1 1 auto',
+      initial: '0 1 auto',
+      none: 'none',
+    },
+    flexBasis: ({ theme }) => ({
+      auto: 'auto',
+      ...theme('spacing'),
+      '1/2': '50%',
+      '1/3': '33.333333%',
+      '2/3': '66.666667%',
+      '1/4': '25%',
+      '2/4': '50%',
+      '3/4': '75%',
+      '1/5': '20%',
+      '2/5': '40%',
+      '3/5': '60%',
+      '4/5': '80%',
+      '1/6': '16.666667%',
+      '2/6': '33.333333%',
+      '3/6': '50%',
+      '4/6': '66.666667%',
+      '5/6': '83.333333%',
+      '1/12': '8.333333%',
+      '2/12': '16.666667%',
+      '3/12': '25%',
+      '4/12': '33.333333%',
+      '5/12': '41.666667%',
+      '6/12': '50%',
+      '7/12': '58.333333%',
+      '8/12': '66.666667%',
+      '9/12': '75%',
+      '10/12': '83.333333%',
+      '11/12': '91.666667%',
+      full: '100%',
+    }),
+    flexGrow: {
+      0: '0',
+      DEFAULT: '1',
+    },
+    flexShrink: {
+      0: '0',
+      DEFAULT: '1',
+    },
+    fontFamily: {
+      sans: [
+        'ui-sans-serif',
+        'system-ui',
+        'sans-serif',
+        '"Apple Color Emoji"',
+        '"Segoe UI Emoji"',
+        '"Segoe UI Symbol"',
+        '"Noto Color Emoji"',
+      ],
+      serif: ['ui-serif', 'Georgia', 'Cambria', '"Times New Roman"', 'Times', 'serif'],
+      mono: [
+        'ui-monospace',
+        'SFMono-Regular',
+        'Menlo',
+        'Monaco',
+        'Consolas',
+        '"Liberation Mono"',
+        '"Courier New"',
+        'monospace',
+      ],
+    },
+    fontSize: {
+      xs: ['0.75rem', { lineHeight: '1rem' }],
+      sm: ['0.875rem', { lineHeight: '1.25rem' }],
+      base: ['1rem', { lineHeight: '1.5rem' }],
+      lg: ['1.125rem', { lineHeight: '1.75rem' }],
+      xl: ['1.25rem', { lineHeight: '1.75rem' }],
+      '2xl': ['1.5rem', { lineHeight: '2rem' }],
+      '3xl': ['1.875rem', { lineHeight: '2.25rem' }],
+      '4xl': ['2.25rem', { lineHeight: '2.5rem' }],
+      '5xl': ['3rem', { lineHeight: '1' }],
+      '6xl': ['3.75rem', { lineHeight: '1' }],
+      '7xl': ['4.5rem', { lineHeight: '1' }],
+      '8xl': ['6rem', { lineHeight: '1' }],
+      '9xl': ['8rem', { lineHeight: '1' }],
+    },
+    fontWeight: {
+      thin: '100',
+      extralight: '200',
+      light: '300',
+      normal: '400',
+      medium: '500',
+      semibold: '600',
+      bold: '700',
+      extrabold: '800',
+      black: '900',
+    },
+    gap: ({ theme }) => theme('spacing'),
+    gradientColorStops: ({ theme }) => theme('colors'),
+    gradientColorStopPositions: {
+      '0%': '0%',
+      '5%': '5%',
+      '10%': '10%',
+      '15%': '15%',
+      '20%': '20%',
+      '25%': '25%',
+      '30%': '30%',
+      '35%': '35%',
+      '40%': '40%',
+      '45%': '45%',
+      '50%': '50%',
+      '55%': '55%',
+      '60%': '60%',
+      '65%': '65%',
+      '70%': '70%',
+      '75%': '75%',
+      '80%': '80%',
+      '85%': '85%',
+      '90%': '90%',
+      '95%': '95%',
+      '100%': '100%',
+    },
+    grayscale: {
+      0: '0',
+      DEFAULT: '100%',
+    },
+    gridAutoColumns: {
+      auto: 'auto',
+      min: 'min-content',
+      max: 'max-content',
+      fr: 'minmax(0, 1fr)',
+    },
+    gridAutoRows: {
+      auto: 'auto',
+      min: 'min-content',
+      max: 'max-content',
+      fr: 'minmax(0, 1fr)',
+    },
+    gridColumn: {
+      auto: 'auto',
+      'span-1': 'span 1 / span 1',
+      'span-2': 'span 2 / span 2',
+      'span-3': 'span 3 / span 3',
+      'span-4': 'span 4 / span 4',
+      'span-5': 'span 5 / span 5',
+      'span-6': 'span 6 / span 6',
+      'span-7': 'span 7 / span 7',
+      'span-8': 'span 8 / span 8',
+      'span-9': 'span 9 / span 9',
+      'span-10': 'span 10 / span 10',
+      'span-11': 'span 11 / span 11',
+      'span-12': 'span 12 / span 12',
+      'span-full': '1 / -1',
+    },
+    gridColumnEnd: {
+      auto: 'auto',
+      1: '1',
+      2: '2',
+      3: '3',
+      4: '4',
+      5: '5',
+      6: '6',
+      7: '7',
+      8: '8',
+      9: '9',
+      10: '10',
+      11: '11',
+      12: '12',
+      13: '13',
+    },
+    gridColumnStart: {
+      auto: 'auto',
+      1: '1',
+      2: '2',
+      3: '3',
+      4: '4',
+      5: '5',
+      6: '6',
+      7: '7',
+      8: '8',
+      9: '9',
+      10: '10',
+      11: '11',
+      12: '12',
+      13: '13',
+    },
+    gridRow: {
+      auto: 'auto',
+      'span-1': 'span 1 / span 1',
+      'span-2': 'span 2 / span 2',
+      'span-3': 'span 3 / span 3',
+      'span-4': 'span 4 / span 4',
+      'span-5': 'span 5 / span 5',
+      'span-6': 'span 6 / span 6',
+      'span-7': 'span 7 / span 7',
+      'span-8': 'span 8 / span 8',
+      'span-9': 'span 9 / span 9',
+      'span-10': 'span 10 / span 10',
+      'span-11': 'span 11 / span 11',
+      'span-12': 'span 12 / span 12',
+      'span-full': '1 / -1',
+    },
+    gridRowEnd: {
+      auto: 'auto',
+      1: '1',
+      2: '2',
+      3: '3',
+      4: '4',
+      5: '5',
+      6: '6',
+      7: '7',
+      8: '8',
+      9: '9',
+      10: '10',
+      11: '11',
+      12: '12',
+      13: '13',
+    },
+    gridRowStart: {
+      auto: 'auto',
+      1: '1',
+      2: '2',
+      3: '3',
+      4: '4',
+      5: '5',
+      6: '6',
+      7: '7',
+      8: '8',
+      9: '9',
+      10: '10',
+      11: '11',
+      12: '12',
+      13: '13',
+    },
+    gridTemplateColumns: {
+      none: 'none',
+      subgrid: 'subgrid',
+      1: 'repeat(1, minmax(0, 1fr))',
+      2: 'repeat(2, minmax(0, 1fr))',
+      3: 'repeat(3, minmax(0, 1fr))',
+      4: 'repeat(4, minmax(0, 1fr))',
+      5: 'repeat(5, minmax(0, 1fr))',
+      6: 'repeat(6, minmax(0, 1fr))',
+      7: 'repeat(7, minmax(0, 1fr))',
+      8: 'repeat(8, minmax(0, 1fr))',
+      9: 'repeat(9, minmax(0, 1fr))',
+      10: 'repeat(10, minmax(0, 1fr))',
+      11: 'repeat(11, minmax(0, 1fr))',
+      12: 'repeat(12, minmax(0, 1fr))',
+    },
+    gridTemplateRows: {
+      none: 'none',
+      subgrid: 'subgrid',
+      1: 'repeat(1, minmax(0, 1fr))',
+      2: 'repeat(2, minmax(0, 1fr))',
+      3: 'repeat(3, minmax(0, 1fr))',
+      4: 'repeat(4, minmax(0, 1fr))',
+      5: 'repeat(5, minmax(0, 1fr))',
+      6: 'repeat(6, minmax(0, 1fr))',
+      7: 'repeat(7, minmax(0, 1fr))',
+      8: 'repeat(8, minmax(0, 1fr))',
+      9: 'repeat(9, minmax(0, 1fr))',
+      10: 'repeat(10, minmax(0, 1fr))',
+      11: 'repeat(11, minmax(0, 1fr))',
+      12: 'repeat(12, minmax(0, 1fr))',
+    },
+    height: ({ theme }) => ({
+      auto: 'auto',
+      ...theme('spacing'),
+      '1/2': '50%',
+      '1/3': '33.333333%',
+      '2/3': '66.666667%',
+      '1/4': '25%',
+      '2/4': '50%',
+      '3/4': '75%',
+      '1/5': '20%',
+      '2/5': '40%',
+      '3/5': '60%',
+      '4/5': '80%',
+      '1/6': '16.666667%',
+      '2/6': '33.333333%',
+      '3/6': '50%',
+      '4/6': '66.666667%',
+      '5/6': '83.333333%',
+      full: '100%',
+      screen: '100vh',
+      svh: '100svh',
+      lvh: '100lvh',
+      dvh: '100dvh',
+      min: 'min-content',
+      max: 'max-content',
+      fit: 'fit-content',
+    }),
+    hueRotate: {
+      0: '0deg',
+      15: '15deg',
+      30: '30deg',
+      60: '60deg',
+      90: '90deg',
+      180: '180deg',
+    },
+    inset: ({ theme }) => ({
+      auto: 'auto',
+      ...theme('spacing'),
+      '1/2': '50%',
+      '1/3': '33.333333%',
+      '2/3': '66.666667%',
+      '1/4': '25%',
+      '2/4': '50%',
+      '3/4': '75%',
+      full: '100%',
+    }),
+    invert: {
+      0: '0',
+      DEFAULT: '100%',
+    },
+    keyframes: {
+      spin: {
+        to: {
+          transform: 'rotate(360deg)',
+        },
+      },
+      ping: {
+        '75%, 100%': {
+          transform: 'scale(2)',
+          opacity: '0',
+        },
+      },
+      pulse: {
+        '50%': {
+          opacity: '.5',
+        },
+      },
+      bounce: {
+        '0%, 100%': {
+          transform: 'translateY(-25%)',
+          animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',
+        },
+        '50%': {
+          transform: 'none',
+          animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',
+        },
+      },
+    },
+    letterSpacing: {
+      tighter: '-0.05em',
+      tight: '-0.025em',
+      normal: '0em',
+      wide: '0.025em',
+      wider: '0.05em',
+      widest: '0.1em',
+    },
+    lineHeight: {
+      none: '1',
+      tight: '1.25',
+      snug: '1.375',
+      normal: '1.5',
+      relaxed: '1.625',
+      loose: '2',
+      3: '.75rem',
+      4: '1rem',
+      5: '1.25rem',
+      6: '1.5rem',
+      7: '1.75rem',
+      8: '2rem',
+      9: '2.25rem',
+      10: '2.5rem',
+    },
+    listStyleType: {
+      none: 'none',
+      disc: 'disc',
+      decimal: 'decimal',
+    },
+    listStyleImage: {
+      none: 'none',
+    },
+    margin: ({ theme }) => ({
+      auto: 'auto',
+      ...theme('spacing'),
+    }),
+    lineClamp: {
+      1: '1',
+      2: '2',
+      3: '3',
+      4: '4',
+      5: '5',
+      6: '6',
+    },
+    maxHeight: ({ theme }) => ({
+      ...theme('spacing'),
+      none: 'none',
+      full: '100%',
+      screen: '100vh',
+      svh: '100svh',
+      lvh: '100lvh',
+      dvh: '100dvh',
+      min: 'min-content',
+      max: 'max-content',
+      fit: 'fit-content',
+    }),
+    maxWidth: ({ theme, breakpoints }) => ({
+      ...theme('spacing'),
+      none: 'none',
+      xs: '20rem',
+      sm: '24rem',
+      md: '28rem',
+      lg: '32rem',
+      xl: '36rem',
+      '2xl': '42rem',
+      '3xl': '48rem',
+      '4xl': '56rem',
+      '5xl': '64rem',
+      '6xl': '72rem',
+      '7xl': '80rem',
+      full: '100%',
+      min: 'min-content',
+      max: 'max-content',
+      fit: 'fit-content',
+      prose: '65ch',
+      ...breakpoints(theme('screens')),
+    }),
+    minHeight: ({ theme }) => ({
+      ...theme('spacing'),
+      full: '100%',
+      screen: '100vh',
+      svh: '100svh',
+      lvh: '100lvh',
+      dvh: '100dvh',
+      min: 'min-content',
+      max: 'max-content',
+      fit: 'fit-content',
+    }),
+    minWidth: ({ theme }) => ({
+      ...theme('spacing'),
+      full: '100%',
+      min: 'min-content',
+      max: 'max-content',
+      fit: 'fit-content',
+    }),
+    objectPosition: {
+      bottom: 'bottom',
+      center: 'center',
+      left: 'left',
+      'left-bottom': 'left bottom',
+      'left-top': 'left top',
+      right: 'right',
+      'right-bottom': 'right bottom',
+      'right-top': 'right top',
+      top: 'top',
+    },
+    opacity: {
+      0: '0',
+      5: '0.05',
+      10: '0.1',
+      15: '0.15',
+      20: '0.2',
+      25: '0.25',
+      30: '0.3',
+      35: '0.35',
+      40: '0.4',
+      45: '0.45',
+      50: '0.5',
+      55: '0.55',
+      60: '0.6',
+      65: '0.65',
+      70: '0.7',
+      75: '0.75',
+      80: '0.8',
+      85: '0.85',
+      90: '0.9',
+      95: '0.95',
+      100: '1',
+    },
+    order: {
+      first: '-9999',
+      last: '9999',
+      none: '0',
+      1: '1',
+      2: '2',
+      3: '3',
+      4: '4',
+      5: '5',
+      6: '6',
+      7: '7',
+      8: '8',
+      9: '9',
+      10: '10',
+      11: '11',
+      12: '12',
+    },
+    outlineColor: ({ theme }) => theme('colors'),
+    outlineOffset: {
+      0: '0px',
+      1: '1px',
+      2: '2px',
+      4: '4px',
+      8: '8px',
+    },
+    outlineWidth: {
+      0: '0px',
+      1: '1px',
+      2: '2px',
+      4: '4px',
+      8: '8px',
+    },
+    padding: ({ theme }) => theme('spacing'),
+    placeholderColor: ({ theme }) => theme('colors'),
+    placeholderOpacity: ({ theme }) => theme('opacity'),
+    ringColor: ({ theme }) => ({
+      DEFAULT: theme('colors.blue.500', '#3b82f6'),
+      ...theme('colors'),
+    }),
+    ringOffsetColor: ({ theme }) => theme('colors'),
+    ringOffsetWidth: {
+      0: '0px',
+      1: '1px',
+      2: '2px',
+      4: '4px',
+      8: '8px',
+    },
+    ringOpacity: ({ theme }) => ({
+      DEFAULT: '0.5',
+      ...theme('opacity'),
+    }),
+    ringWidth: {
+      DEFAULT: '3px',
+      0: '0px',
+      1: '1px',
+      2: '2px',
+      4: '4px',
+      8: '8px',
+    },
+    rotate: {
+      0: '0deg',
+      1: '1deg',
+      2: '2deg',
+      3: '3deg',
+      6: '6deg',
+      12: '12deg',
+      45: '45deg',
+      90: '90deg',
+      180: '180deg',
+    },
+    saturate: {
+      0: '0',
+      50: '.5',
+      100: '1',
+      150: '1.5',
+      200: '2',
+    },
+    scale: {
+      0: '0',
+      50: '.5',
+      75: '.75',
+      90: '.9',
+      95: '.95',
+      100: '1',
+      105: '1.05',
+      110: '1.1',
+      125: '1.25',
+      150: '1.5',
+    },
+    screens: {
+      sm: '640px',
+      md: '768px',
+      lg: '1024px',
+      xl: '1280px',
+      '2xl': '1536px',
+    },
+    scrollMargin: ({ theme }) => ({
+      ...theme('spacing'),
+    }),
+    scrollPadding: ({ theme }) => theme('spacing'),
+    sepia: {
+      0: '0',
+      DEFAULT: '100%',
+    },
+    skew: {
+      0: '0deg',
+      1: '1deg',
+      2: '2deg',
+      3: '3deg',
+      6: '6deg',
+      12: '12deg',
+    },
+    space: ({ theme }) => ({
+      ...theme('spacing'),
+    }),
+    spacing: {
+      px: '1px',
+      0: '0px',
+      0.5: '0.125rem',
+      1: '0.25rem',
+      1.5: '0.375rem',
+      2: '0.5rem',
+      2.5: '0.625rem',
+      3: '0.75rem',
+      3.5: '0.875rem',
+      4: '1rem',
+      5: '1.25rem',
+      6: '1.5rem',
+      7: '1.75rem',
+      8: '2rem',
+      9: '2.25rem',
+      10: '2.5rem',
+      11: '2.75rem',
+      12: '3rem',
+      14: '3.5rem',
+      16: '4rem',
+      20: '5rem',
+      24: '6rem',
+      28: '7rem',
+      32: '8rem',
+      36: '9rem',
+      40: '10rem',
+      44: '11rem',
+      48: '12rem',
+      52: '13rem',
+      56: '14rem',
+      60: '15rem',
+      64: '16rem',
+      72: '18rem',
+      80: '20rem',
+      96: '24rem',
+    },
+    stroke: ({ theme }) => ({
+      none: 'none',
+      ...theme('colors'),
+    }),
+    strokeWidth: {
+      0: '0',
+      1: '1',
+      2: '2',
+    },
+    supports: {},
+    data: {},
+    textColor: ({ theme }) => theme('colors'),
+    textDecorationColor: ({ theme }) => theme('colors'),
+    textDecorationThickness: {
+      auto: 'auto',
+      'from-font': 'from-font',
+      0: '0px',
+      1: '1px',
+      2: '2px',
+      4: '4px',
+      8: '8px',
+    },
+    textIndent: ({ theme }) => ({
+      ...theme('spacing'),
+    }),
+    textOpacity: ({ theme }) => theme('opacity'),
+    textUnderlineOffset: {
+      auto: 'auto',
+      0: '0px',
+      1: '1px',
+      2: '2px',
+      4: '4px',
+      8: '8px',
+    },
+    transformOrigin: {
+      center: 'center',
+      top: 'top',
+      'top-right': 'top right',
+      right: 'right',
+      'bottom-right': 'bottom right',
+      bottom: 'bottom',
+      'bottom-left': 'bottom left',
+      left: 'left',
+      'top-left': 'top left',
+    },
+    transitionDelay: {
+      0: '0s',
+      75: '75ms',
+      100: '100ms',
+      150: '150ms',
+      200: '200ms',
+      300: '300ms',
+      500: '500ms',
+      700: '700ms',
+      1000: '1000ms',
+    },
+    transitionDuration: {
+      DEFAULT: '150ms',
+      0: '0s',
+      75: '75ms',
+      100: '100ms',
+      150: '150ms',
+      200: '200ms',
+      300: '300ms',
+      500: '500ms',
+      700: '700ms',
+      1000: '1000ms',
+    },
+    transitionProperty: {
+      none: 'none',
+      all: 'all',
+      DEFAULT:
+        'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',
+      colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',
+      opacity: 'opacity',
+      shadow: 'box-shadow',
+      transform: 'transform',
+    },
+    transitionTimingFunction: {
+      DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',
+      linear: 'linear',
+      in: 'cubic-bezier(0.4, 0, 1, 1)',
+      out: 'cubic-bezier(0, 0, 0.2, 1)',
+      'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
+    },
+    translate: ({ theme }) => ({
+      ...theme('spacing'),
+      '1/2': '50%',
+      '1/3': '33.333333%',
+      '2/3': '66.666667%',
+      '1/4': '25%',
+      '2/4': '50%',
+      '3/4': '75%',
+      full: '100%',
+    }),
+    size: ({ theme }) => ({
+      auto: 'auto',
+      ...theme('spacing'),
+      '1/2': '50%',
+      '1/3': '33.333333%',
+      '2/3': '66.666667%',
+      '1/4': '25%',
+      '2/4': '50%',
+      '3/4': '75%',
+      '1/5': '20%',
+      '2/5': '40%',
+      '3/5': '60%',
+      '4/5': '80%',
+      '1/6': '16.666667%',
+      '2/6': '33.333333%',
+      '3/6': '50%',
+      '4/6': '66.666667%',
+      '5/6': '83.333333%',
+      '1/12': '8.333333%',
+      '2/12': '16.666667%',
+      '3/12': '25%',
+      '4/12': '33.333333%',
+      '5/12': '41.666667%',
+      '6/12': '50%',
+      '7/12': '58.333333%',
+      '8/12': '66.666667%',
+      '9/12': '75%',
+      '10/12': '83.333333%',
+      '11/12': '91.666667%',
+      full: '100%',
+      min: 'min-content',
+      max: 'max-content',
+      fit: 'fit-content',
+    }),
+    width: ({ theme }) => ({
+      auto: 'auto',
+      ...theme('spacing'),
+      '1/2': '50%',
+      '1/3': '33.333333%',
+      '2/3': '66.666667%',
+      '1/4': '25%',
+      '2/4': '50%',
+      '3/4': '75%',
+      '1/5': '20%',
+      '2/5': '40%',
+      '3/5': '60%',
+      '4/5': '80%',
+      '1/6': '16.666667%',
+      '2/6': '33.333333%',
+      '3/6': '50%',
+      '4/6': '66.666667%',
+      '5/6': '83.333333%',
+      '1/12': '8.333333%',
+      '2/12': '16.666667%',
+      '3/12': '25%',
+      '4/12': '33.333333%',
+      '5/12': '41.666667%',
+      '6/12': '50%',
+      '7/12': '58.333333%',
+      '8/12': '66.666667%',
+      '9/12': '75%',
+      '10/12': '83.333333%',
+      '11/12': '91.666667%',
+      full: '100%',
+      screen: '100vw',
+      svw: '100svw',
+      lvw: '100lvw',
+      dvw: '100dvw',
+      min: 'min-content',
+      max: 'max-content',
+      fit: 'fit-content',
+    }),
+    willChange: {
+      auto: 'auto',
+      scroll: 'scroll-position',
+      contents: 'contents',
+      transform: 'transform',
+    },
+    zIndex: {
+      auto: 'auto',
+      0: '0',
+      10: '10',
+      20: '20',
+      30: '30',
+      40: '40',
+      50: '50',
+    },
+  },
+  plugins: [],
+}
Index: frontend/node_modules/tailwindcss/stubs/config.simple.js
===================================================================
--- frontend/node_modules/tailwindcss/stubs/config.simple.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/stubs/config.simple.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,7 @@
+module.exports = {
+  content: [],
+  theme: {
+    extend: {},
+  },
+  plugins: [],
+}
Index: frontend/node_modules/tailwindcss/stubs/postcss.config.cjs
===================================================================
--- frontend/node_modules/tailwindcss/stubs/postcss.config.cjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/stubs/postcss.config.cjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,6 @@
+module.exports = {
+  plugins: {
+    tailwindcss: {},
+    autoprefixer: {},
+  },
+}
Index: frontend/node_modules/tailwindcss/stubs/postcss.config.js
===================================================================
--- frontend/node_modules/tailwindcss/stubs/postcss.config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/stubs/postcss.config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,6 @@
+export default {
+  plugins: {
+    tailwindcss: {},
+    autoprefixer: {},
+  },
+}
Index: frontend/node_modules/tailwindcss/stubs/tailwind.config.cjs
===================================================================
--- frontend/node_modules/tailwindcss/stubs/tailwind.config.cjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/stubs/tailwind.config.cjs	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = __CONFIG__
Index: frontend/node_modules/tailwindcss/stubs/tailwind.config.js
===================================================================
--- frontend/node_modules/tailwindcss/stubs/tailwind.config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/stubs/tailwind.config.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,2 @@
+/** @type {import('tailwindcss').Config} */
+export default __CONFIG__
Index: frontend/node_modules/tailwindcss/stubs/tailwind.config.ts
===================================================================
--- frontend/node_modules/tailwindcss/stubs/tailwind.config.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/stubs/tailwind.config.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,3 @@
+import type { Config } from 'tailwindcss'
+
+export default __CONFIG__ satisfies Config
Index: frontend/node_modules/tailwindcss/tailwind.css
===================================================================
--- frontend/node_modules/tailwindcss/tailwind.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/tailwind.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,5 @@
+@tailwind base;
+
+@tailwind components;
+
+@tailwind utilities;
Index: frontend/node_modules/tailwindcss/types/config.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/types/config.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/types/config.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,379 @@
+import type { CorePluginList } from './generated/corePluginList'
+import type { DefaultColors } from './generated/colors'
+
+// Helpers
+type Expand<T> = T extends object
+  ? T extends infer O
+    ? { [K in keyof O]: Expand<O[K]> }
+    : never
+  : T
+type KeyValuePair<K extends keyof any = string, V = string> = Record<K, V>
+interface RecursiveKeyValuePair<K extends keyof any = string, V = string> {
+  [key: string]: V | RecursiveKeyValuePair<K, V>
+}
+export type ResolvableTo<T> = T | ((utils: PluginUtils) => T)
+type CSSRuleObject = RecursiveKeyValuePair<string, null | string | string[]>
+
+interface PluginUtils {
+  colors: DefaultColors
+  theme(path: string, defaultValue?: unknown): any
+  breakpoints<I = Record<string, unknown>, O = I>(arg: I): O
+  rgb(arg: string): (arg: Partial<{ opacityVariable: string; opacityValue: number }>) => string
+  hsl(arg: string): (arg: Partial<{ opacityVariable: string; opacityValue: number }>) => string
+}
+
+// Content related config
+type FilePath = string
+type RawFile = { raw: string; extension?: string }
+type ExtractorFn = (content: string) => string[]
+type TransformerFn = (content: string) => string
+type ContentConfig =
+  | (FilePath | RawFile)[]
+  | {
+      files: (FilePath | RawFile)[]
+      relative?: boolean
+      extract?: ExtractorFn | { [extension: string]: ExtractorFn }
+      transform?: TransformerFn | { [extension: string]: TransformerFn }
+    }
+
+// Important related config
+type ImportantConfig = boolean | string
+
+// Prefix related config
+type PrefixConfig = string
+
+// Separator related config
+type SeparatorConfig = string
+
+// Safelist related config
+type SafelistConfig = string | { pattern: RegExp; variants?: string[] }
+
+// Blocklist related config
+type BlocklistConfig = string
+
+// Presets related config
+type PresetsConfig = Partial<Config>
+
+// Future related config
+type FutureConfigValues =
+  | 'hoverOnlyWhenSupported'
+  | 'respectDefaultRingColorOpacity'
+  | 'disableColorOpacityUtilitiesByDefault'
+  | 'relativeContentPathsByDefault'
+type FutureConfig = Expand<'all' | Partial<Record<FutureConfigValues, boolean>>> | []
+
+// Experimental related config
+type ExperimentalConfigValues = 'optimizeUniversalDefaults' | 'matchVariant'
+type ExperimentalConfig = Expand<'all' | Partial<Record<ExperimentalConfigValues, boolean>>> | []
+
+// DarkMode related config
+type DarkModeConfig =
+  // Use the `media` query strategy.
+  | 'media'
+  // Use the `class` strategy, which requires a `.dark` class on the `html`.
+  | 'class'
+  // Use the `class` strategy with a custom class instead of `.dark`.
+  | ['class', string]
+  // Use the `selector` strategy — same as `class` but uses `:where()` for more predicable behavior
+  | 'selector'
+  // Use the `selector` strategy with a custom selector instead of `.dark`.
+  | ['selector', string]
+  // Use the `variant` strategy, which allows you to completely customize the selector
+  // It takes a string or an array of strings, which are passed directly to `addVariant()`
+  | ['variant', string | string[]]
+
+type Screen = { raw: string } | { min: string } | { max: string } | { min: string; max: string }
+type ScreensConfig = string[] | KeyValuePair<string, string | Screen | Screen[]>
+
+// Theme related config
+export interface ThemeConfig {
+  // Responsiveness
+  screens: ResolvableTo<ScreensConfig>
+  supports: ResolvableTo<Record<string, string>>
+  data: ResolvableTo<Record<string, string>>
+
+  // Reusable base configs
+  colors: ResolvableTo<RecursiveKeyValuePair>
+  spacing: ResolvableTo<KeyValuePair>
+
+  // Components
+  container: ResolvableTo<
+    Partial<{
+      screens: ScreensConfig
+      center: boolean
+      padding: string | Record<string, string>
+    }>
+  >
+
+  // Utilities
+  inset: ThemeConfig['spacing']
+  zIndex: ResolvableTo<KeyValuePair>
+  order: ResolvableTo<KeyValuePair>
+  gridColumn: ResolvableTo<KeyValuePair>
+  gridColumnStart: ResolvableTo<KeyValuePair>
+  gridColumnEnd: ResolvableTo<KeyValuePair>
+  gridRow: ResolvableTo<KeyValuePair>
+  gridRowStart: ResolvableTo<KeyValuePair>
+  gridRowEnd: ResolvableTo<KeyValuePair>
+  margin: ThemeConfig['spacing']
+  aspectRatio: ResolvableTo<KeyValuePair>
+  height: ThemeConfig['spacing']
+  maxHeight: ThemeConfig['spacing']
+  minHeight: ResolvableTo<KeyValuePair>
+  width: ThemeConfig['spacing']
+  maxWidth: ResolvableTo<KeyValuePair>
+  minWidth: ResolvableTo<KeyValuePair>
+  flex: ResolvableTo<KeyValuePair>
+  flexShrink: ResolvableTo<KeyValuePair>
+  flexGrow: ResolvableTo<KeyValuePair>
+  flexBasis: ThemeConfig['spacing']
+  borderSpacing: ThemeConfig['spacing']
+  transformOrigin: ResolvableTo<KeyValuePair>
+  translate: ThemeConfig['spacing']
+  rotate: ResolvableTo<KeyValuePair>
+  skew: ResolvableTo<KeyValuePair>
+  scale: ResolvableTo<KeyValuePair>
+  animation: ResolvableTo<KeyValuePair>
+  keyframes: ResolvableTo<KeyValuePair<string, KeyValuePair<string, KeyValuePair>>>
+  cursor: ResolvableTo<KeyValuePair>
+  scrollMargin: ThemeConfig['spacing']
+  scrollPadding: ThemeConfig['spacing']
+  listStyleType: ResolvableTo<KeyValuePair>
+  columns: ResolvableTo<KeyValuePair>
+  gridAutoColumns: ResolvableTo<KeyValuePair>
+  gridAutoRows: ResolvableTo<KeyValuePair>
+  gridTemplateColumns: ResolvableTo<KeyValuePair>
+  gridTemplateRows: ResolvableTo<KeyValuePair>
+  gap: ThemeConfig['spacing']
+  space: ThemeConfig['spacing']
+  divideWidth: ThemeConfig['borderWidth']
+  divideColor: ThemeConfig['borderColor']
+  divideOpacity: ThemeConfig['borderOpacity']
+  borderRadius: ResolvableTo<KeyValuePair>
+  borderWidth: ResolvableTo<KeyValuePair>
+  borderColor: ThemeConfig['colors']
+  borderOpacity: ThemeConfig['opacity']
+  backgroundColor: ThemeConfig['colors']
+  backgroundOpacity: ThemeConfig['opacity']
+  backgroundImage: ResolvableTo<KeyValuePair>
+  gradientColorStops: ThemeConfig['colors']
+  backgroundSize: ResolvableTo<KeyValuePair>
+  backgroundPosition: ResolvableTo<KeyValuePair>
+  fill: ThemeConfig['colors']
+  stroke: ThemeConfig['colors']
+  strokeWidth: ResolvableTo<KeyValuePair>
+  objectPosition: ResolvableTo<KeyValuePair>
+  padding: ThemeConfig['spacing']
+  textIndent: ThemeConfig['spacing']
+  fontFamily: ResolvableTo<
+    KeyValuePair<
+      string,
+      | string
+      | string[]
+      | [
+          fontFamily: string | string[],
+          configuration: Partial<{
+            fontFeatureSettings: string
+            fontVariationSettings: string
+          }>
+        ]
+    >
+  >
+  fontSize: ResolvableTo<
+    KeyValuePair<
+      string,
+      | string
+      | [fontSize: string, lineHeight: string]
+      | [
+          fontSize: string,
+          configuration: Partial<{
+            lineHeight: string
+            letterSpacing: string
+            fontWeight: string | number
+          }>
+        ]
+    >
+  >
+  fontWeight: ResolvableTo<KeyValuePair>
+  lineHeight: ResolvableTo<KeyValuePair>
+  letterSpacing: ResolvableTo<KeyValuePair>
+  textColor: ThemeConfig['colors']
+  textOpacity: ThemeConfig['opacity']
+  textDecorationColor: ThemeConfig['colors']
+  textDecorationThickness: ResolvableTo<KeyValuePair>
+  textUnderlineOffset: ResolvableTo<KeyValuePair>
+  placeholderColor: ThemeConfig['colors']
+  placeholderOpacity: ThemeConfig['opacity']
+  caretColor: ThemeConfig['colors']
+  accentColor: ThemeConfig['colors']
+  opacity: ResolvableTo<KeyValuePair>
+  boxShadow: ResolvableTo<KeyValuePair<string, string | string[]>>
+  boxShadowColor: ThemeConfig['colors']
+  outlineWidth: ResolvableTo<KeyValuePair>
+  outlineOffset: ResolvableTo<KeyValuePair>
+  outlineColor: ThemeConfig['colors']
+  ringWidth: ResolvableTo<KeyValuePair>
+  ringColor: ThemeConfig['colors']
+  ringOpacity: ThemeConfig['opacity']
+  ringOffsetWidth: ResolvableTo<KeyValuePair>
+  ringOffsetColor: ThemeConfig['colors']
+  blur: ResolvableTo<KeyValuePair>
+  brightness: ResolvableTo<KeyValuePair>
+  contrast: ResolvableTo<KeyValuePair>
+  dropShadow: ResolvableTo<KeyValuePair<string, string | string[]>>
+  grayscale: ResolvableTo<KeyValuePair>
+  hueRotate: ResolvableTo<KeyValuePair>
+  invert: ResolvableTo<KeyValuePair>
+  saturate: ResolvableTo<KeyValuePair>
+  sepia: ResolvableTo<KeyValuePair>
+  backdropBlur: ThemeConfig['blur']
+  backdropBrightness: ThemeConfig['brightness']
+  backdropContrast: ThemeConfig['contrast']
+  backdropGrayscale: ThemeConfig['grayscale']
+  backdropHueRotate: ThemeConfig['hueRotate']
+  backdropInvert: ThemeConfig['invert']
+  backdropOpacity: ThemeConfig['opacity']
+  backdropSaturate: ThemeConfig['saturate']
+  backdropSepia: ThemeConfig['sepia']
+  transitionProperty: ResolvableTo<KeyValuePair>
+  transitionTimingFunction: ResolvableTo<KeyValuePair>
+  transitionDelay: ResolvableTo<KeyValuePair>
+  transitionDuration: ResolvableTo<KeyValuePair>
+  willChange: ResolvableTo<KeyValuePair>
+  content: ResolvableTo<KeyValuePair>
+}
+
+interface CustomThemeConfig extends ThemeConfig {
+  [key: string]: any
+}
+
+// Core plugins related config
+type CorePluginsConfig = CorePluginList[] | Expand<Partial<Record<CorePluginList, boolean>>>
+
+// Plugins related config
+type ValueType =
+  | 'any'
+  | 'color'
+  | 'url'
+  | 'image'
+  | 'length'
+  | 'percentage'
+  | 'position'
+  | 'lookup'
+  | 'generic-name'
+  | 'family-name'
+  | 'number'
+  | 'line-width'
+  | 'absolute-size'
+  | 'relative-size'
+  | 'shadow'
+export interface PluginAPI {
+  // for registering new static utility styles
+  addUtilities(
+    utilities: CSSRuleObject | CSSRuleObject[],
+    options?: Partial<{
+      respectPrefix: boolean
+      respectImportant: boolean
+    }>
+  ): void
+  // for registering new dynamic utility styles
+  matchUtilities<T = string, U = string>(
+    utilities: KeyValuePair<
+      string,
+      (value: T | string, extra: { modifier: U | string | null }) => CSSRuleObject | null
+    >,
+    options?: Partial<{
+      respectPrefix: boolean
+      respectImportant: boolean
+      type: ValueType | ValueType[]
+      values: KeyValuePair<string, T>
+      modifiers: 'any' | KeyValuePair<string, U>
+      supportsNegativeValues: boolean
+    }>
+  ): void
+  // for registering new static component styles
+  addComponents(
+    components: CSSRuleObject | CSSRuleObject[],
+    options?: Partial<{
+      respectPrefix: boolean
+      respectImportant: boolean
+    }>
+  ): void
+  // for registering new dynamic component styles
+  matchComponents<T = string, U = string>(
+    components: KeyValuePair<
+      string,
+      (value: T | string, extra: { modifier: U | string | null }) => CSSRuleObject | null
+    >,
+    options?: Partial<{
+      respectPrefix: boolean
+      respectImportant: boolean
+      type: ValueType | ValueType[]
+      values: KeyValuePair<string, T>
+      modifiers: 'any' | KeyValuePair<string, U>
+      supportsNegativeValues: boolean
+    }>
+  ): void
+  // for registering new base styles
+  addBase(base: CSSRuleObject | CSSRuleObject[]): void
+  // for registering custom variants
+  addVariant(name: string, definition: string | string[] | (() => string) | (() => string)[]): void
+  matchVariant<T = string>(
+    name: string,
+    cb: (value: T | string, extra: { modifier: string | null }) => string | string[],
+    options?: {
+      values?: KeyValuePair<string, T>
+      sort?(
+        a: { value: T | string; modifier: string | null },
+        b: { value: T | string; modifier: string | null }
+      ): number
+    }
+  ): void
+  // for looking up values in the user’s theme configuration
+  theme: <TDefaultValue = Config['theme']>(
+    path?: string,
+    defaultValue?: TDefaultValue
+  ) => TDefaultValue
+  // for looking up values in the user’s Tailwind configuration
+  config: <TDefaultValue = Config>(path?: string, defaultValue?: TDefaultValue) => TDefaultValue
+  // for checking if a core plugin is enabled
+  corePlugins(path: string): boolean
+  // for manually escaping strings meant to be used in class names
+  e: (className: string) => string
+}
+export type PluginCreator = (api: PluginAPI) => void
+export type PluginsConfig = (
+  | PluginCreator
+  | { handler: PluginCreator; config?: Partial<Config> | undefined }
+  | {
+      (options: any): {
+        handler: PluginCreator;
+        config?: Partial<Config> | undefined;
+      };
+      __isOptionsFunction: true
+    }
+)[]
+
+// Top level config related
+interface RequiredConfig {
+  content: ContentConfig
+}
+
+interface OptionalConfig {
+  important: Partial<ImportantConfig>
+  prefix: Partial<PrefixConfig>
+  separator: Partial<SeparatorConfig>
+  safelist: Array<SafelistConfig>
+  blocklist: Array<BlocklistConfig>
+  presets: Array<PresetsConfig>
+  future: Partial<FutureConfig>
+  experimental: Partial<ExperimentalConfig>
+  darkMode: Partial<DarkModeConfig>
+  theme: Partial<CustomThemeConfig & { extend: Partial<CustomThemeConfig> }>
+  corePlugins: Partial<CorePluginsConfig>
+  plugins: Partial<PluginsConfig>
+  // Custom
+  [key: string]: any
+}
+
+export type Config = RequiredConfig & Partial<OptionalConfig>
Index: frontend/node_modules/tailwindcss/types/generated/colors.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/types/generated/colors.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/types/generated/colors.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,298 @@
+export interface DefaultColors {
+  inherit: 'inherit'
+  current: 'currentColor'
+  transparent: 'transparent'
+  black: '#000'
+  white: '#fff'
+  slate: {
+    '50': '#f8fafc'
+    '100': '#f1f5f9'
+    '200': '#e2e8f0'
+    '300': '#cbd5e1'
+    '400': '#94a3b8'
+    '500': '#64748b'
+    '600': '#475569'
+    '700': '#334155'
+    '800': '#1e293b'
+    '900': '#0f172a'
+    '950': '#020617'
+  }
+  gray: {
+    '50': '#f9fafb'
+    '100': '#f3f4f6'
+    '200': '#e5e7eb'
+    '300': '#d1d5db'
+    '400': '#9ca3af'
+    '500': '#6b7280'
+    '600': '#4b5563'
+    '700': '#374151'
+    '800': '#1f2937'
+    '900': '#111827'
+    '950': '#030712'
+  }
+  zinc: {
+    '50': '#fafafa'
+    '100': '#f4f4f5'
+    '200': '#e4e4e7'
+    '300': '#d4d4d8'
+    '400': '#a1a1aa'
+    '500': '#71717a'
+    '600': '#52525b'
+    '700': '#3f3f46'
+    '800': '#27272a'
+    '900': '#18181b'
+    '950': '#09090b'
+  }
+  neutral: {
+    '50': '#fafafa'
+    '100': '#f5f5f5'
+    '200': '#e5e5e5'
+    '300': '#d4d4d4'
+    '400': '#a3a3a3'
+    '500': '#737373'
+    '600': '#525252'
+    '700': '#404040'
+    '800': '#262626'
+    '900': '#171717'
+    '950': '#0a0a0a'
+  }
+  stone: {
+    '50': '#fafaf9'
+    '100': '#f5f5f4'
+    '200': '#e7e5e4'
+    '300': '#d6d3d1'
+    '400': '#a8a29e'
+    '500': '#78716c'
+    '600': '#57534e'
+    '700': '#44403c'
+    '800': '#292524'
+    '900': '#1c1917'
+    '950': '#0c0a09'
+  }
+  red: {
+    '50': '#fef2f2'
+    '100': '#fee2e2'
+    '200': '#fecaca'
+    '300': '#fca5a5'
+    '400': '#f87171'
+    '500': '#ef4444'
+    '600': '#dc2626'
+    '700': '#b91c1c'
+    '800': '#991b1b'
+    '900': '#7f1d1d'
+    '950': '#450a0a'
+  }
+  orange: {
+    '50': '#fff7ed'
+    '100': '#ffedd5'
+    '200': '#fed7aa'
+    '300': '#fdba74'
+    '400': '#fb923c'
+    '500': '#f97316'
+    '600': '#ea580c'
+    '700': '#c2410c'
+    '800': '#9a3412'
+    '900': '#7c2d12'
+    '950': '#431407'
+  }
+  amber: {
+    '50': '#fffbeb'
+    '100': '#fef3c7'
+    '200': '#fde68a'
+    '300': '#fcd34d'
+    '400': '#fbbf24'
+    '500': '#f59e0b'
+    '600': '#d97706'
+    '700': '#b45309'
+    '800': '#92400e'
+    '900': '#78350f'
+    '950': '#451a03'
+  }
+  yellow: {
+    '50': '#fefce8'
+    '100': '#fef9c3'
+    '200': '#fef08a'
+    '300': '#fde047'
+    '400': '#facc15'
+    '500': '#eab308'
+    '600': '#ca8a04'
+    '700': '#a16207'
+    '800': '#854d0e'
+    '900': '#713f12'
+    '950': '#422006'
+  }
+  lime: {
+    '50': '#f7fee7'
+    '100': '#ecfccb'
+    '200': '#d9f99d'
+    '300': '#bef264'
+    '400': '#a3e635'
+    '500': '#84cc16'
+    '600': '#65a30d'
+    '700': '#4d7c0f'
+    '800': '#3f6212'
+    '900': '#365314'
+    '950': '#1a2e05'
+  }
+  green: {
+    '50': '#f0fdf4'
+    '100': '#dcfce7'
+    '200': '#bbf7d0'
+    '300': '#86efac'
+    '400': '#4ade80'
+    '500': '#22c55e'
+    '600': '#16a34a'
+    '700': '#15803d'
+    '800': '#166534'
+    '900': '#14532d'
+    '950': '#052e16'
+  }
+  emerald: {
+    '50': '#ecfdf5'
+    '100': '#d1fae5'
+    '200': '#a7f3d0'
+    '300': '#6ee7b7'
+    '400': '#34d399'
+    '500': '#10b981'
+    '600': '#059669'
+    '700': '#047857'
+    '800': '#065f46'
+    '900': '#064e3b'
+    '950': '#022c22'
+  }
+  teal: {
+    '50': '#f0fdfa'
+    '100': '#ccfbf1'
+    '200': '#99f6e4'
+    '300': '#5eead4'
+    '400': '#2dd4bf'
+    '500': '#14b8a6'
+    '600': '#0d9488'
+    '700': '#0f766e'
+    '800': '#115e59'
+    '900': '#134e4a'
+    '950': '#042f2e'
+  }
+  cyan: {
+    '50': '#ecfeff'
+    '100': '#cffafe'
+    '200': '#a5f3fc'
+    '300': '#67e8f9'
+    '400': '#22d3ee'
+    '500': '#06b6d4'
+    '600': '#0891b2'
+    '700': '#0e7490'
+    '800': '#155e75'
+    '900': '#164e63'
+    '950': '#083344'
+  }
+  sky: {
+    '50': '#f0f9ff'
+    '100': '#e0f2fe'
+    '200': '#bae6fd'
+    '300': '#7dd3fc'
+    '400': '#38bdf8'
+    '500': '#0ea5e9'
+    '600': '#0284c7'
+    '700': '#0369a1'
+    '800': '#075985'
+    '900': '#0c4a6e'
+    '950': '#082f49'
+  }
+  blue: {
+    '50': '#eff6ff'
+    '100': '#dbeafe'
+    '200': '#bfdbfe'
+    '300': '#93c5fd'
+    '400': '#60a5fa'
+    '500': '#3b82f6'
+    '600': '#2563eb'
+    '700': '#1d4ed8'
+    '800': '#1e40af'
+    '900': '#1e3a8a'
+    '950': '#172554'
+  }
+  indigo: {
+    '50': '#eef2ff'
+    '100': '#e0e7ff'
+    '200': '#c7d2fe'
+    '300': '#a5b4fc'
+    '400': '#818cf8'
+    '500': '#6366f1'
+    '600': '#4f46e5'
+    '700': '#4338ca'
+    '800': '#3730a3'
+    '900': '#312e81'
+    '950': '#1e1b4b'
+  }
+  violet: {
+    '50': '#f5f3ff'
+    '100': '#ede9fe'
+    '200': '#ddd6fe'
+    '300': '#c4b5fd'
+    '400': '#a78bfa'
+    '500': '#8b5cf6'
+    '600': '#7c3aed'
+    '700': '#6d28d9'
+    '800': '#5b21b6'
+    '900': '#4c1d95'
+    '950': '#2e1065'
+  }
+  purple: {
+    '50': '#faf5ff'
+    '100': '#f3e8ff'
+    '200': '#e9d5ff'
+    '300': '#d8b4fe'
+    '400': '#c084fc'
+    '500': '#a855f7'
+    '600': '#9333ea'
+    '700': '#7e22ce'
+    '800': '#6b21a8'
+    '900': '#581c87'
+    '950': '#3b0764'
+  }
+  fuchsia: {
+    '50': '#fdf4ff'
+    '100': '#fae8ff'
+    '200': '#f5d0fe'
+    '300': '#f0abfc'
+    '400': '#e879f9'
+    '500': '#d946ef'
+    '600': '#c026d3'
+    '700': '#a21caf'
+    '800': '#86198f'
+    '900': '#701a75'
+    '950': '#4a044e'
+  }
+  pink: {
+    '50': '#fdf2f8'
+    '100': '#fce7f3'
+    '200': '#fbcfe8'
+    '300': '#f9a8d4'
+    '400': '#f472b6'
+    '500': '#ec4899'
+    '600': '#db2777'
+    '700': '#be185d'
+    '800': '#9d174d'
+    '900': '#831843'
+    '950': '#500724'
+  }
+  rose: {
+    '50': '#fff1f2'
+    '100': '#ffe4e6'
+    '200': '#fecdd3'
+    '300': '#fda4af'
+    '400': '#fb7185'
+    '500': '#f43f5e'
+    '600': '#e11d48'
+    '700': '#be123c'
+    '800': '#9f1239'
+    '900': '#881337'
+    '950': '#4c0519'
+  }
+  /** @deprecated As of Tailwind CSS v2.2, `lightBlue` has been renamed to `sky`. Update your configuration file to silence this warning. */ lightBlue: DefaultColors['sky']
+  /** @deprecated As of Tailwind CSS v3.0, `warmGray` has been renamed to `stone`. Update your configuration file to silence this warning. */ warmGray: DefaultColors['stone']
+  /** @deprecated As of Tailwind CSS v3.0, `trueGray` has been renamed to `neutral`. Update your configuration file to silence this warning. */ trueGray: DefaultColors['neutral']
+  /** @deprecated As of Tailwind CSS v3.0, `coolGray` has been renamed to `gray`. Update your configuration file to silence this warning. */ coolGray: DefaultColors['gray']
+  /** @deprecated As of Tailwind CSS v3.0, `blueGray` has been renamed to `slate`. Update your configuration file to silence this warning. */ blueGray: DefaultColors['slate']
+}
Index: frontend/node_modules/tailwindcss/types/generated/corePluginList.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/types/generated/corePluginList.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/types/generated/corePluginList.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+export type CorePluginList = 'preflight' | 'container' | 'accessibility' | 'pointerEvents' | 'visibility' | 'position' | 'inset' | 'isolation' | 'zIndex' | 'order' | 'gridColumn' | 'gridColumnStart' | 'gridColumnEnd' | 'gridRow' | 'gridRowStart' | 'gridRowEnd' | 'float' | 'clear' | 'margin' | 'boxSizing' | 'lineClamp' | 'display' | 'aspectRatio' | 'size' | 'height' | 'maxHeight' | 'minHeight' | 'width' | 'minWidth' | 'maxWidth' | 'flex' | 'flexShrink' | 'flexGrow' | 'flexBasis' | 'tableLayout' | 'captionSide' | 'borderCollapse' | 'borderSpacing' | 'transformOrigin' | 'translate' | 'rotate' | 'skew' | 'scale' | 'transform' | 'animation' | 'cursor' | 'touchAction' | 'userSelect' | 'resize' | 'scrollSnapType' | 'scrollSnapAlign' | 'scrollSnapStop' | 'scrollMargin' | 'scrollPadding' | 'listStylePosition' | 'listStyleType' | 'listStyleImage' | 'appearance' | 'columns' | 'breakBefore' | 'breakInside' | 'breakAfter' | 'gridAutoColumns' | 'gridAutoFlow' | 'gridAutoRows' | 'gridTemplateColumns' | 'gridTemplateRows' | 'flexDirection' | 'flexWrap' | 'placeContent' | 'placeItems' | 'alignContent' | 'alignItems' | 'justifyContent' | 'justifyItems' | 'gap' | 'space' | 'divideWidth' | 'divideStyle' | 'divideColor' | 'divideOpacity' | 'placeSelf' | 'alignSelf' | 'justifySelf' | 'overflow' | 'overscrollBehavior' | 'scrollBehavior' | 'textOverflow' | 'hyphens' | 'whitespace' | 'textWrap' | 'wordBreak' | 'borderRadius' | 'borderWidth' | 'borderStyle' | 'borderColor' | 'borderOpacity' | 'backgroundColor' | 'backgroundOpacity' | 'backgroundImage' | 'gradientColorStops' | 'boxDecorationBreak' | 'backgroundSize' | 'backgroundAttachment' | 'backgroundClip' | 'backgroundPosition' | 'backgroundRepeat' | 'backgroundOrigin' | 'fill' | 'stroke' | 'strokeWidth' | 'objectFit' | 'objectPosition' | 'padding' | 'textAlign' | 'textIndent' | 'verticalAlign' | 'fontFamily' | 'fontSize' | 'fontWeight' | 'textTransform' | 'fontStyle' | 'fontVariantNumeric' | 'lineHeight' | 'letterSpacing' | 'textColor' | 'textOpacity' | 'textDecoration' | 'textDecorationColor' | 'textDecorationStyle' | 'textDecorationThickness' | 'textUnderlineOffset' | 'fontSmoothing' | 'placeholderColor' | 'placeholderOpacity' | 'caretColor' | 'accentColor' | 'opacity' | 'backgroundBlendMode' | 'mixBlendMode' | 'boxShadow' | 'boxShadowColor' | 'outlineStyle' | 'outlineWidth' | 'outlineOffset' | 'outlineColor' | 'ringWidth' | 'ringColor' | 'ringOpacity' | 'ringOffsetWidth' | 'ringOffsetColor' | 'blur' | 'brightness' | 'contrast' | 'dropShadow' | 'grayscale' | 'hueRotate' | 'invert' | 'saturate' | 'sepia' | 'filter' | 'backdropBlur' | 'backdropBrightness' | 'backdropContrast' | 'backdropGrayscale' | 'backdropHueRotate' | 'backdropInvert' | 'backdropOpacity' | 'backdropSaturate' | 'backdropSepia' | 'backdropFilter' | 'transitionProperty' | 'transitionDelay' | 'transitionDuration' | 'transitionTimingFunction' | 'willChange' | 'contain' | 'content' | 'forcedColorAdjust'
Index: frontend/node_modules/tailwindcss/types/generated/default-theme.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/types/generated/default-theme.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/types/generated/default-theme.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,397 @@
+type CSSDeclarationList = Record<string, string>
+export type DefaultTheme = {
+  animation: Record<'none' | 'spin' | 'ping' | 'pulse' | 'bounce', string>
+  aria: Record<
+    | 'busy'
+    | 'checked'
+    | 'disabled'
+    | 'expanded'
+    | 'hidden'
+    | 'pressed'
+    | 'readonly'
+    | 'required'
+    | 'selected',
+    string
+  >
+  aspectRatio: Record<'auto' | 'square' | 'video', string>
+  backgroundImage: Record<
+    | 'none'
+    | 'gradient-to-t'
+    | 'gradient-to-tr'
+    | 'gradient-to-r'
+    | 'gradient-to-br'
+    | 'gradient-to-b'
+    | 'gradient-to-bl'
+    | 'gradient-to-l'
+    | 'gradient-to-tl',
+    string
+  >
+  backgroundPosition: Record<
+    | 'bottom'
+    | 'center'
+    | 'left'
+    | 'left-bottom'
+    | 'left-top'
+    | 'right'
+    | 'right-bottom'
+    | 'right-top'
+    | 'top',
+    string
+  >
+  backgroundSize: Record<'auto' | 'cover' | 'contain', string>
+  blur: Record<'0' | 'none' | 'sm' | 'DEFAULT' | 'md' | 'lg' | 'xl' | '2xl' | '3xl', string>
+  borderRadius: Record<
+    'none' | 'sm' | 'DEFAULT' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full',
+    string
+  >
+  borderWidth: Record<'0' | '2' | '4' | '8' | 'DEFAULT', string>
+  boxShadow: Record<'sm' | 'DEFAULT' | 'md' | 'lg' | 'xl' | '2xl' | 'inner' | 'none', string>
+  brightness: Record<
+    '0' | '50' | '75' | '90' | '95' | '100' | '105' | '110' | '125' | '150' | '200',
+    string
+  >
+  columns: Record<
+    | '1'
+    | '2'
+    | '3'
+    | '4'
+    | '5'
+    | '6'
+    | '7'
+    | '8'
+    | '9'
+    | '10'
+    | '11'
+    | '12'
+    | 'auto'
+    | '3xs'
+    | '2xs'
+    | 'xs'
+    | 'sm'
+    | 'md'
+    | 'lg'
+    | 'xl'
+    | '2xl'
+    | '3xl'
+    | '4xl'
+    | '5xl'
+    | '6xl'
+    | '7xl',
+    string
+  >
+  content: Record<'none', string>
+  contrast: Record<'0' | '50' | '75' | '100' | '125' | '150' | '200', string>
+  cursor: Record<
+    | 'auto'
+    | 'default'
+    | 'pointer'
+    | 'wait'
+    | 'text'
+    | 'move'
+    | 'help'
+    | 'not-allowed'
+    | 'none'
+    | 'context-menu'
+    | 'progress'
+    | 'cell'
+    | 'crosshair'
+    | 'vertical-text'
+    | 'alias'
+    | 'copy'
+    | 'no-drop'
+    | 'grab'
+    | 'grabbing'
+    | 'all-scroll'
+    | 'col-resize'
+    | 'row-resize'
+    | 'n-resize'
+    | 'e-resize'
+    | 's-resize'
+    | 'w-resize'
+    | 'ne-resize'
+    | 'nw-resize'
+    | 'se-resize'
+    | 'sw-resize'
+    | 'ew-resize'
+    | 'ns-resize'
+    | 'nesw-resize'
+    | 'nwse-resize'
+    | 'zoom-in'
+    | 'zoom-out',
+    string
+  >
+  dropShadow: Record<'sm' | 'DEFAULT' | 'md' | 'lg' | 'xl' | '2xl' | 'none', string | string[]>
+  flex: Record<'1' | 'auto' | 'initial' | 'none', string>
+  flexGrow: Record<'0' | 'DEFAULT', string>
+  flexShrink: Record<'0' | 'DEFAULT', string>
+  fontFamily: Record<'sans' | 'serif' | 'mono', string[]>
+  fontSize: Record<
+    | 'xs'
+    | 'sm'
+    | 'base'
+    | 'lg'
+    | 'xl'
+    | '2xl'
+    | '3xl'
+    | '4xl'
+    | '5xl'
+    | '6xl'
+    | '7xl'
+    | '8xl'
+    | '9xl',
+    [string, { lineHeight: string }]
+  >
+  fontWeight: Record<
+    | 'thin'
+    | 'extralight'
+    | 'light'
+    | 'normal'
+    | 'medium'
+    | 'semibold'
+    | 'bold'
+    | 'extrabold'
+    | 'black',
+    string
+  >
+  gradientColorStopPositions: Record<
+    | '0%'
+    | '5%'
+    | '10%'
+    | '15%'
+    | '20%'
+    | '25%'
+    | '30%'
+    | '35%'
+    | '40%'
+    | '45%'
+    | '50%'
+    | '55%'
+    | '60%'
+    | '65%'
+    | '70%'
+    | '75%'
+    | '80%'
+    | '85%'
+    | '90%'
+    | '95%'
+    | '100%',
+    string
+  >
+  grayscale: Record<'0' | 'DEFAULT', string>
+  gridAutoColumns: Record<'auto' | 'min' | 'max' | 'fr', string>
+  gridAutoRows: Record<'auto' | 'min' | 'max' | 'fr', string>
+  gridColumn: Record<
+    | 'auto'
+    | 'span-1'
+    | 'span-2'
+    | 'span-3'
+    | 'span-4'
+    | 'span-5'
+    | 'span-6'
+    | 'span-7'
+    | 'span-8'
+    | 'span-9'
+    | 'span-10'
+    | 'span-11'
+    | 'span-12'
+    | 'span-full',
+    string
+  >
+  gridColumnEnd: Record<
+    '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '13' | 'auto',
+    string
+  >
+  gridColumnStart: Record<
+    '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '13' | 'auto',
+    string
+  >
+  gridRow: Record<
+    | 'auto'
+    | 'span-1'
+    | 'span-2'
+    | 'span-3'
+    | 'span-4'
+    | 'span-5'
+    | 'span-6'
+    | 'span-7'
+    | 'span-8'
+    | 'span-9'
+    | 'span-10'
+    | 'span-11'
+    | 'span-12'
+    | 'span-full',
+    string
+  >
+  gridRowEnd: Record<
+    '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '13' | 'auto',
+    string
+  >
+  gridRowStart: Record<
+    '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '13' | 'auto',
+    string
+  >
+  gridTemplateColumns: Record<
+    '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | 'none' | 'subgrid',
+    string
+  >
+  gridTemplateRows: Record<
+    '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | 'none' | 'subgrid',
+    string
+  >
+  hueRotate: Record<'0' | '15' | '30' | '60' | '90' | '180', string>
+  invert: Record<'0' | 'DEFAULT', string>
+  keyframes: Record<'spin' | 'ping' | 'pulse' | 'bounce', Record<string, CSSDeclarationList>>
+  letterSpacing: Record<'tighter' | 'tight' | 'normal' | 'wide' | 'wider' | 'widest', string>
+  lineHeight: Record<
+    | '3'
+    | '4'
+    | '5'
+    | '6'
+    | '7'
+    | '8'
+    | '9'
+    | '10'
+    | 'none'
+    | 'tight'
+    | 'snug'
+    | 'normal'
+    | 'relaxed'
+    | 'loose',
+    string
+  >
+  listStyleType: Record<'none' | 'disc' | 'decimal', string>
+  listStyleImage: Record<'none', string>
+  lineClamp: Record<'1' | '2' | '3' | '4' | '5' | '6', string>
+  objectPosition: Record<
+    | 'bottom'
+    | 'center'
+    | 'left'
+    | 'left-bottom'
+    | 'left-top'
+    | 'right'
+    | 'right-bottom'
+    | 'right-top'
+    | 'top',
+    string
+  >
+  opacity: Record<
+    | '0'
+    | '5'
+    | '10'
+    | '15'
+    | '20'
+    | '25'
+    | '30'
+    | '35'
+    | '40'
+    | '45'
+    | '50'
+    | '55'
+    | '60'
+    | '65'
+    | '70'
+    | '75'
+    | '80'
+    | '85'
+    | '90'
+    | '95'
+    | '100',
+    string
+  >
+  order: Record<
+    | '1'
+    | '2'
+    | '3'
+    | '4'
+    | '5'
+    | '6'
+    | '7'
+    | '8'
+    | '9'
+    | '10'
+    | '11'
+    | '12'
+    | 'first'
+    | 'last'
+    | 'none',
+    string
+  >
+  outlineOffset: Record<'0' | '1' | '2' | '4' | '8', string>
+  outlineWidth: Record<'0' | '1' | '2' | '4' | '8', string>
+  ringOffsetWidth: Record<'0' | '1' | '2' | '4' | '8', string>
+  ringWidth: Record<'0' | '1' | '2' | '4' | '8' | 'DEFAULT', string>
+  rotate: Record<'0' | '1' | '2' | '3' | '6' | '12' | '45' | '90' | '180', string>
+  saturate: Record<'0' | '50' | '100' | '150' | '200', string>
+  scale: Record<'0' | '50' | '75' | '90' | '95' | '100' | '105' | '110' | '125' | '150', string>
+  screens: Record<'sm' | 'md' | 'lg' | 'xl' | '2xl', string>
+  sepia: Record<'0' | 'DEFAULT', string>
+  skew: Record<'0' | '1' | '2' | '3' | '6' | '12', string>
+  spacing: Record<
+    | '0'
+    | '1'
+    | '2'
+    | '3'
+    | '4'
+    | '5'
+    | '6'
+    | '7'
+    | '8'
+    | '9'
+    | '10'
+    | '11'
+    | '12'
+    | '14'
+    | '16'
+    | '20'
+    | '24'
+    | '28'
+    | '32'
+    | '36'
+    | '40'
+    | '44'
+    | '48'
+    | '52'
+    | '56'
+    | '60'
+    | '64'
+    | '72'
+    | '80'
+    | '96'
+    | 'px'
+    | '0.5'
+    | '1.5'
+    | '2.5'
+    | '3.5',
+    string
+  >
+  strokeWidth: Record<'0' | '1' | '2', string>
+  textDecorationThickness: Record<'0' | '1' | '2' | '4' | '8' | 'auto' | 'from-font', string>
+  textUnderlineOffset: Record<'0' | '1' | '2' | '4' | '8' | 'auto', string>
+  transformOrigin: Record<
+    | 'center'
+    | 'top'
+    | 'top-right'
+    | 'right'
+    | 'bottom-right'
+    | 'bottom'
+    | 'bottom-left'
+    | 'left'
+    | 'top-left',
+    string
+  >
+  transitionDelay: Record<
+    '0' | '75' | '100' | '150' | '200' | '300' | '500' | '700' | '1000',
+    string
+  >
+  transitionDuration: Record<
+    '0' | '75' | '100' | '150' | '200' | '300' | '500' | '700' | '1000' | 'DEFAULT',
+    string
+  >
+  transitionProperty: Record<
+    'none' | 'all' | 'DEFAULT' | 'colors' | 'opacity' | 'shadow' | 'transform',
+    string
+  >
+  transitionTimingFunction: Record<'DEFAULT' | 'linear' | 'in' | 'out' | 'in-out', string>
+  willChange: Record<'auto' | 'scroll' | 'contents' | 'transform', string>
+  zIndex: Record<'0' | '10' | '20' | '30' | '40' | '50' | 'auto', string>
+}
Index: frontend/node_modules/tailwindcss/types/index.d.ts
===================================================================
--- frontend/node_modules/tailwindcss/types/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/types/index.d.ts	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,11 @@
+import type { PluginCreator } from 'postcss'
+import type { Config } from './config.d'
+
+declare const plugin: PluginCreator<string | Config | { config: string | Config }>
+
+declare type _Config = Config
+declare namespace plugin {
+  export type { _Config as Config }
+}
+
+export = plugin
Index: frontend/node_modules/tailwindcss/utilities.css
===================================================================
--- frontend/node_modules/tailwindcss/utilities.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/utilities.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+@tailwind utilities;
Index: frontend/node_modules/tailwindcss/variants.css
===================================================================
--- frontend/node_modules/tailwindcss/variants.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/tailwindcss/variants.css	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,1 @@
+@tailwind variants;
