(function (e, t) {
  const r = t(e);
  if (typeof exports === "object" && typeof exports["nodeName"] !== "string") {
    module.exports = r;
  } else {
    e["_hyperscript"] = r;
    if ("document" in e) e["_hyperscript"].browserInit();
  }
})(typeof self !== "undefined" ? self : this, (e) => {
  "use strict";
  const t = {
    dynamicResolvers: [
      function (e, t) {
        if (e === "Fixed") {
          return Number(t).toFixed();
        } else if (e.indexOf("Fixed:") === 0) {
          let r = e.split(":")[1];
          return Number(t).toFixed(parseInt(r));
        }
      },
    ],
    String: function (e) {
      if (e.toString) {
        return e.toString();
      } else {
        return "" + e;
      }
    },
    Int: function (e) {
      return parseInt(e);
    },
    Float: function (e) {
      return parseFloat(e);
    },
    Number: function (e) {
      return Number(e);
    },
    Date: function (e) {
      return new Date(e);
    },
    Array: function (e) {
      return Array.from(e);
    },
    JSON: function (e) {
      return JSON.stringify(e);
    },
    Object: function (e) {
      if (e instanceof String) {
        e = e.toString();
      }
      if (typeof e === "string") {
        return JSON.parse(e);
      } else {
        return Object.assign({}, e);
      }
    },
  };
  const r = {
    attributes: "_, script, data-script",
    defaultTransition: "all 500ms ease-in",
    disableSelector: "[disable-scripting], [data-disable-scripting]",
    hideShowStrategies: {},
    conversions: t,
  };
  class n {
    static OP_TABLE = {
      "+": "PLUS",
      "-": "MINUS",
      "*": "MULTIPLY",
      "/": "DIVIDE",
      ".": "PERIOD",
      "..": "ELLIPSIS",
      "\\": "BACKSLASH",
      ":": "COLON",
      "%": "PERCENT",
      "|": "PIPE",
      "!": "EXCLAMATION",
      "?": "QUESTION",
      "#": "POUND",
      "&": "AMPERSAND",
      $: "DOLLAR",
      ";": "SEMI",
      ",": "COMMA",
      "(": "L_PAREN",
      ")": "R_PAREN",
      "<": "L_ANG",
      ">": "R_ANG",
      "<=": "LTE_ANG",
      ">=": "GTE_ANG",
      "==": "EQ",
      "===": "EQQ",
      "!=": "NEQ",
      "!==": "NEQQ",
      "{": "L_BRACE",
      "}": "R_BRACE",
      "[": "L_BRACKET",
      "]": "R_BRACKET",
      "=": "EQUALS",
    };
    static isValidCSSClassChar(e) {
      return (
        n.isAlpha(e) || n.isNumeric(e) || e === "-" || e === "_" || e === ":"
      );
    }
    static isValidCSSIDChar(e) {
      return (
        n.isAlpha(e) || n.isNumeric(e) || e === "-" || e === "_" || e === ":"
      );
    }
    static isWhitespace(e) {
      return e === " " || e === "\t" || n.isNewline(e);
    }
    static positionString(e) {
      return "[Line: " + e.line + ", Column: " + e.column + "]";
    }
    static isNewline(e) {
      return e === "\r" || e === "\n";
    }
    static isNumeric(e) {
      return e >= "0" && e <= "9";
    }
    static isAlpha(e) {
      return (e >= "a" && e <= "z") || (e >= "A" && e <= "Z");
    }
    static isIdentifierChar(e, t) {
      return e === "_" || e === "$";
    }
    static isReservedChar(e) {
      return e === "`" || e === "^";
    }
    static isValidSingleQuoteStringStart(e) {
      if (e.length > 0) {
        var t = e[e.length - 1];
        if (
          t.type === "IDENTIFIER" ||
          t.type === "CLASS_REF" ||
          t.type === "ID_REF"
        ) {
          return false;
        }
        if (t.op && (t.value === ">" || t.value === ")")) {
          return false;
        }
      }
      return true;
    }
    static tokenize(e, t) {
      var r = [];
      var a = e;
      var o = 0;
      var s = 0;
      var u = 1;
      var l = "<START>";
      var c = 0;
      function f() {
        return t && c === 0;
      }
      while (o < a.length) {
        if (
          (q() === "-" &&
            N() === "-" &&
            (n.isWhitespace(I(2)) || I(2) === "" || I(2) === "-")) ||
          (q() === "/" &&
            N() === "/" &&
            (n.isWhitespace(I(2)) || I(2) === "" || I(2) === "/"))
        ) {
          h();
        } else if (
          q() === "/" &&
          N() === "*" &&
          (n.isWhitespace(I(2)) || I(2) === "" || I(2) === "*")
        ) {
          v();
        } else {
          if (n.isWhitespace(q())) {
            r.push(A());
          } else if (
            !R() &&
            q() === "." &&
            (n.isAlpha(N()) || N() === "{" || N() === "-")
          ) {
            r.push(d());
          } else if (!R() && q() === "#" && (n.isAlpha(N()) || N() === "{")) {
            r.push(k());
          } else if (q() === "[" && N() === "@") {
            r.push(E());
          } else if (q() === "@") {
            r.push(T());
          } else if (q() === "*" && n.isAlpha(N())) {
            r.push(y());
          } else if (n.isAlpha(q()) || (!f() && n.isIdentifierChar(q()))) {
            r.push(x());
          } else if (n.isNumeric(q())) {
            r.push(g());
          } else if (!f() && (q() === '"' || q() === "`")) {
            r.push(w());
          } else if (!f() && q() === "'") {
            if (n.isValidSingleQuoteStringStart(r)) {
              r.push(w());
            } else {
              r.push(b());
            }
          } else if (n.OP_TABLE[q()]) {
            if (l === "$" && q() === "{") {
              c++;
            }
            if (q() === "}") {
              c--;
            }
            r.push(b());
          } else if (f() || n.isReservedChar(q())) {
            r.push(p("RESERVED", C()));
          } else {
            if (o < a.length) {
              throw Error("Unknown token: " + q() + " ");
            }
          }
        }
      }
      return new i(r, [], a);
      function m(e, t) {
        var r = p(e, t);
        r.op = true;
        return r;
      }
      function p(e, t) {
        return {
          type: e,
          value: t || "",
          start: o,
          end: o + 1,
          column: s,
          line: u,
        };
      }
      function h() {
        while (q() && !n.isNewline(q())) {
          C();
        }
        C();
      }
      function v() {
        while (q() && !(q() === "*" && N() === "/")) {
          C();
        }
        C();
        C();
      }
      function d() {
        var e = p("CLASS_REF");
        var t = C();
        if (q() === "{") {
          e.template = true;
          t += C();
          while (q() && q() !== "}") {
            t += C();
          }
          if (q() !== "}") {
            throw Error("Unterminated class reference");
          } else {
            t += C();
          }
        } else {
          while (n.isValidCSSClassChar(q())) {
            t += C();
          }
        }
        e.value = t;
        e.end = o;
        return e;
      }
      function E() {
        var e = p("ATTRIBUTE_REF");
        var t = C();
        while (o < a.length && q() !== "]") {
          t += C();
        }
        if (q() === "]") {
          t += C();
        }
        e.value = t;
        e.end = o;
        return e;
      }
      function T() {
        var e = p("ATTRIBUTE_REF");
        var t = C();
        while (n.isValidCSSIDChar(q())) {
          t += C();
        }
        if (q() === "=") {
          t += C();
          if (q() === '"' || q() === "'") {
            let e = w();
            t += e.value;
          } else if (
            n.isAlpha(q()) ||
            n.isNumeric(q()) ||
            n.isIdentifierChar(q())
          ) {
            let e = x();
            t += e.value;
          }
        }
        e.value = t;
        e.end = o;
        return e;
      }
      function y() {
        var e = p("STYLE_REF");
        var t = C();
        while (n.isAlpha(q()) || q() === "-") {
          t += C();
        }
        e.value = t;
        e.end = o;
        return e;
      }
      function k() {
        var e = p("ID_REF");
        var t = C();
        if (q() === "{") {
          e.template = true;
          t += C();
          while (q() && q() !== "}") {
            t += C();
          }
          if (q() !== "}") {
            throw Error("Unterminated id reference");
          } else {
            C();
          }
        } else {
          while (n.isValidCSSIDChar(q())) {
            t += C();
          }
        }
        e.value = t;
        e.end = o;
        return e;
      }
      function x() {
        var e = p("IDENTIFIER");
        var t = C();
        while (n.isAlpha(q()) || n.isNumeric(q()) || n.isIdentifierChar(q())) {
          t += C();
        }
        if (q() === "!" && t === "beep") {
          t += C();
        }
        e.value = t;
        e.end = o;
        return e;
      }
      function g() {
        var e = p("NUMBER");
        var t = C();
        while (n.isNumeric(q())) {
          t += C();
        }
        if (q() === "." && n.isNumeric(N())) {
          t += C();
        }
        while (n.isNumeric(q())) {
          t += C();
        }
        if (q() === "e" || q() === "E") {
          if (n.isNumeric(N())) {
            t += C();
          } else if (N() === "-") {
            t += C();
            t += C();
          }
        }
        while (n.isNumeric(q())) {
          t += C();
        }
        e.value = t;
        e.end = o;
        return e;
      }
      function b() {
        var e = m();
        var t = C();
        while (q() && n.OP_TABLE[t + q()]) {
          t += C();
        }
        e.type = n.OP_TABLE[t];
        e.value = t;
        e.end = o;
        return e;
      }
      function w() {
        var e = p("STRING");
        var t = C();
        var r = "";
        while (q() && q() !== t) {
          if (q() === "\\") {
            C();
            let t = C();
            if (t === "b") {
              r += "\b";
            } else if (t === "f") {
              r += "\f";
            } else if (t === "n") {
              r += "\n";
            } else if (t === "r") {
              r += "\r";
            } else if (t === "t") {
              r += "\t";
            } else if (t === "v") {
              r += "\v";
            } else if (t === "x") {
              const t = S();
              if (Number.isNaN(t)) {
                throw Error(
                  "Invalid hexadecimal escape at " + n.positionString(e),
                );
              }
              r += String.fromCharCode(t);
            } else {
              r += t;
            }
          } else {
            r += C();
          }
        }
        if (q() !== t) {
          throw Error("Unterminated string at " + n.positionString(e));
        } else {
          C();
        }
        e.value = r;
        e.end = o;
        e.template = t === "`";
        return e;
      }
      function S() {
        const e = 16;
        if (!q()) {
          return NaN;
        }
        let t = e * Number.parseInt(C(), e);
        if (!q()) {
          return NaN;
        }
        t += Number.parseInt(C(), e);
        return t;
      }
      function q() {
        return a.charAt(o);
      }
      function N() {
        return a.charAt(o + 1);
      }
      function I(e = 1) {
        return a.charAt(o + e);
      }
      function C() {
        l = q();
        o++;
        s++;
        return l;
      }
      function R() {
        return (
          n.isAlpha(l) ||
          n.isNumeric(l) ||
          l === ")" ||
          l === '"' ||
          l === "'" ||
          l === "`" ||
          l === "}" ||
          l === "]"
        );
      }
      function A() {
        var e = p("WHITESPACE");
        var t = "";
        while (q() && n.isWhitespace(q())) {
          if (n.isNewline(q())) {
            s = 0;
            u++;
          }
          t += C();
        }
        e.value = t;
        e.end = o;
        return e;
      }
    }
    tokenize(e, t) {
      return n.tokenize(e, t);
    }
  }
  class i {
    constructor(e, t, r) {
      this.tokens = e;
      this.consumed = t;
      this.source = r;
      this.consumeWhitespace();
    }
    get list() {
      return this.tokens;
    }
    _lastConsumed = null;
    consumeWhitespace() {
      while (this.token(0, true).type === "WHITESPACE") {
        this.consumed.push(this.tokens.shift());
      }
    }
    raiseError(e, t) {
      a.raiseParseError(e, t);
    }
    requireOpToken(e) {
      var t = this.matchOpToken(e);
      if (t) {
        return t;
      } else {
        this.raiseError(
          this,
          "Expected '" + e + "' but found '" + this.currentToken().value + "'",
        );
      }
    }
    matchAnyOpToken(e, t, r) {
      for (var n = 0; n < arguments.length; n++) {
        var i = arguments[n];
        var a = this.matchOpToken(i);
        if (a) {
          return a;
        }
      }
    }
    matchAnyToken(e, t, r) {
      for (var n = 0; n < arguments.length; n++) {
        var i = arguments[n];
        var a = this.matchToken(i);
        if (a) {
          return a;
        }
      }
    }
    matchOpToken(e) {
      if (
        this.currentToken() &&
        this.currentToken().op &&
        this.currentToken().value === e
      ) {
        return this.consumeToken();
      }
    }
    requireTokenType(e, t, r, n) {
      var i = this.matchTokenType(e, t, r, n);
      if (i) {
        return i;
      } else {
        this.raiseError(this, "Expected one of " + JSON.stringify([e, t, r]));
      }
    }
    matchTokenType(e, t, r, n) {
      if (
        this.currentToken() &&
        this.currentToken().type &&
        [e, t, r, n].indexOf(this.currentToken().type) >= 0
      ) {
        return this.consumeToken();
      }
    }
    requireToken(e, t) {
      var r = this.matchToken(e, t);
      if (r) {
        return r;
      } else {
        this.raiseError(
          this,
          "Expected '" + e + "' but found '" + this.currentToken().value + "'",
        );
      }
    }
    peekToken(e, t, r) {
      t = t || 0;
      r = r || "IDENTIFIER";
      if (
        this.tokens[t] &&
        this.tokens[t].value === e &&
        this.tokens[t].type === r
      ) {
        return this.tokens[t];
      }
    }
    matchToken(e, t) {
      if (this.follows.indexOf(e) !== -1) {
        return;
      }
      t = t || "IDENTIFIER";
      if (
        this.currentToken() &&
        this.currentToken().value === e &&
        this.currentToken().type === t
      ) {
        return this.consumeToken();
      }
    }
    consumeToken() {
      var e = this.tokens.shift();
      this.consumed.push(e);
      this._lastConsumed = e;
      this.consumeWhitespace();
      return e;
    }
    consumeUntil(e, t) {
      var r = [];
      var n = this.token(0, true);
      while (
        (t == null || n.type !== t) &&
        (e == null || n.value !== e) &&
        n.type !== "EOF"
      ) {
        var i = this.tokens.shift();
        this.consumed.push(i);
        r.push(n);
        n = this.token(0, true);
      }
      this.consumeWhitespace();
      return r;
    }
    lastWhitespace() {
      if (
        this.consumed[this.consumed.length - 1] &&
        this.consumed[this.consumed.length - 1].type === "WHITESPACE"
      ) {
        return this.consumed[this.consumed.length - 1].value;
      } else {
        return "";
      }
    }
    consumeUntilWhitespace() {
      return this.consumeUntil(null, "WHITESPACE");
    }
    hasMore() {
      return this.tokens.length > 0;
    }
    token(e, t) {
      var r;
      var n = 0;
      do {
        if (!t) {
          while (this.tokens[n] && this.tokens[n].type === "WHITESPACE") {
            n++;
          }
        }
        r = this.tokens[n];
        e--;
        n++;
      } while (e > -1);
      if (r) {
        return r;
      } else {
        return { type: "EOF", value: "<<<EOF>>>" };
      }
    }
    currentToken() {
      return this.token(0);
    }
    lastMatch() {
      return this._lastConsumed;
    }
    static sourceFor = function () {
      return this.programSource.substring(
        this.startToken.start,
        this.endToken.end,
      );
    };
    static lineFor = function () {
      return this.programSource.split("\n")[this.startToken.line - 1];
    };
    follows = [];
    pushFollow(e) {
      this.follows.push(e);
    }
    popFollow() {
      this.follows.pop();
    }
    clearFollows() {
      var e = this.follows;
      this.follows = [];
      return e;
    }
    restoreFollows(e) {
      this.follows = e;
    }
  }
  class a {
    constructor(e) {
      this.runtime = e;
      this.possessivesDisabled = false;
      this.addGrammarElement("feature", function (e, t, r) {
        if (r.matchOpToken("(")) {
          var n = e.requireElement("feature", r);
          r.requireOpToken(")");
          return n;
        }
        var i = e.FEATURES[r.currentToken().value || ""];
        if (i) {
          return i(e, t, r);
        }
      });
      this.addGrammarElement("command", function (e, t, r) {
        if (r.matchOpToken("(")) {
          const t = e.requireElement("command", r);
          r.requireOpToken(")");
          return t;
        }
        var n = e.COMMANDS[r.currentToken().value || ""];
        let i;
        if (n) {
          i = n(e, t, r);
        } else if (r.currentToken().type === "IDENTIFIER") {
          i = e.parseElement("pseudoCommand", r);
        }
        if (i) {
          return e.parseElement("indirectStatement", r, i);
        }
        return i;
      });
      this.addGrammarElement("commandList", function (e, t, r) {
        if (r.hasMore()) {
          var n = e.parseElement("command", r);
          if (n) {
            r.matchToken("then");
            const t = e.parseElement("commandList", r);
            if (t) n.next = t;
            return n;
          }
        }
        return {
          type: "emptyCommandListCommand",
          op: function (e) {
            return t.findNext(this, e);
          },
          execute: function (e) {
            return t.unifiedExec(this, e);
          },
        };
      });
      this.addGrammarElement("leaf", function (e, t, r) {
        var n = e.parseAnyOf(e.LEAF_EXPRESSIONS, r);
        if (n == null) {
          return e.parseElement("symbol", r);
        }
        return n;
      });
      this.addGrammarElement("indirectExpression", function (e, t, r, n) {
        for (var i = 0; i < e.INDIRECT_EXPRESSIONS.length; i++) {
          var a = e.INDIRECT_EXPRESSIONS[i];
          n.endToken = r.lastMatch();
          var o = e.parseElement(a, r, n);
          if (o) {
            return o;
          }
        }
        return n;
      });
      this.addGrammarElement("indirectStatement", function (e, t, r, n) {
        if (r.matchToken("unless")) {
          n.endToken = r.lastMatch();
          var i = e.requireElement("expression", r);
          var a = {
            type: "unlessStatementModifier",
            args: [i],
            op: function (e, t) {
              if (t) {
                return this.next;
              } else {
                return n;
              }
            },
            execute: function (e) {
              return t.unifiedExec(this, e);
            },
          };
          n.parent = a;
          return a;
        }
        return n;
      });
      this.addGrammarElement("primaryExpression", function (e, t, r) {
        var n = e.parseElement("leaf", r);
        if (n) {
          return e.parseElement("indirectExpression", r, n);
        }
        e.raiseParseError(r, "Unexpected value: " + r.currentToken().value);
      });
    }
    use(e) {
      e(this);
      return this;
    }
    GRAMMAR = {};
    COMMANDS = {};
    FEATURES = {};
    LEAF_EXPRESSIONS = [];
    INDIRECT_EXPRESSIONS = [];
    initElt(e, t, r) {
      e.startToken = t;
      e.sourceFor = i.sourceFor;
      e.lineFor = i.lineFor;
      e.programSource = r.source;
    }
    parseElement(e, t, r = undefined) {
      var n = this.GRAMMAR[e];
      if (n) {
        var i = t.currentToken();
        var a = n(this, this.runtime, t, r);
        if (a) {
          this.initElt(a, i, t);
          a.endToken = a.endToken || t.lastMatch();
          var r = a.root;
          while (r != null) {
            this.initElt(r, i, t);
            r = r.root;
          }
        }
        return a;
      }
    }
    requireElement(e, t, r, n) {
      var i = this.parseElement(e, t, n);
      if (!i) a.raiseParseError(t, r || "Expected " + e);
      return i;
    }
    parseAnyOf(e, t) {
      for (var r = 0; r < e.length; r++) {
        var n = e[r];
        var i = this.parseElement(n, t);
        if (i) {
          return i;
        }
      }
    }
    addGrammarElement(e, t) {
      this.GRAMMAR[e] = t;
    }
    addCommand(e, t) {
      var r = e + "Command";
      var n = function (e, n, i) {
        const a = t(e, n, i);
        if (a) {
          a.type = r;
          a.execute = function (e) {
            e.meta.command = a;
            return n.unifiedExec(this, e);
          };
          return a;
        }
      };
      this.GRAMMAR[r] = n;
      this.COMMANDS[e] = n;
    }
    addFeature(e, t) {
      var r = e + "Feature";
      var n = function (n, i, a) {
        var o = t(n, i, a);
        if (o) {
          o.isFeature = true;
          o.keyword = e;
          o.type = r;
          return o;
        }
      };
      this.GRAMMAR[r] = n;
      this.FEATURES[e] = n;
    }
    addLeafExpression(e, t) {
      this.LEAF_EXPRESSIONS.push(e);
      this.addGrammarElement(e, t);
    }
    addIndirectExpression(e, t) {
      this.INDIRECT_EXPRESSIONS.push(e);
      this.addGrammarElement(e, t);
    }
    static createParserContext(e) {
      var t = e.currentToken();
      var r = e.source;
      var n = r.split("\n");
      var i = t && t.line ? t.line - 1 : n.length - 1;
      var a = n[i];
      var o = t && t.line ? t.column : a.length - 1;
      return a + "\n" + " ".repeat(o) + "^^\n\n";
    }
    static raiseParseError(e, t) {
      t =
        (t || "Unexpected Token : " + e.currentToken().value) +
        "\n\n" +
        a.createParserContext(e);
      var r = new Error(t);
      r["tokens"] = e;
      throw r;
    }
    raiseParseError(e, t) {
      a.raiseParseError(e, t);
    }
    parseHyperScript(e) {
      var t = this.parseElement("hyperscript", e);
      if (e.hasMore()) this.raiseParseError(e);
      if (t) return t;
    }
    setParent(e, t) {
      if (typeof e === "object") {
        e.parent = t;
        if (typeof t === "object") {
          t.children = t.children || new Set();
          t.children.add(e);
        }
        this.setParent(e.next, t);
      }
    }
    commandStart(e) {
      return this.COMMANDS[e.value || ""];
    }
    featureStart(e) {
      return this.FEATURES[e.value || ""];
    }
    commandBoundary(e) {
      if (
        e.value == "end" ||
        e.value == "then" ||
        e.value == "else" ||
        e.value == "otherwise" ||
        e.value == ")" ||
        this.commandStart(e) ||
        this.featureStart(e) ||
        e.type == "EOF"
      ) {
        return true;
      }
      return false;
    }
    parseStringTemplate(e) {
      var t = [""];
      do {
        t.push(e.lastWhitespace());
        if (e.currentToken().value === "$") {
          e.consumeToken();
          var r = e.matchOpToken("{");
          t.push(this.requireElement("expression", e));
          if (r) {
            e.requireOpToken("}");
          }
          t.push("");
        } else if (e.currentToken().value === "\\") {
          e.consumeToken();
          e.consumeToken();
        } else {
          var n = e.consumeToken();
          t[t.length - 1] += n ? n.value : "";
        }
      } while (e.hasMore());
      t.push(e.lastWhitespace());
      return t;
    }
    ensureTerminated(e) {
      const t = this.runtime;
      var r = {
        type: "implicitReturn",
        op: function (e) {
          e.meta.returned = true;
          if (e.meta.resolve) {
            e.meta.resolve();
          }
          return t.HALT;
        },
        execute: function (e) {},
      };
      var n = e;
      while (n.next) {
        n = n.next;
      }
      n.next = r;
    }
  }
  class o {
    constructor(e, t) {
      this.lexer = e ?? new n();
      this.parser = t ?? new a(this).use(T).use(y);
      this.parser.runtime = this;
    }
    matchesSelector(e, t) {
      var r =
        e.matches ||
        e.matchesSelector ||
        e.msMatchesSelector ||
        e.mozMatchesSelector ||
        e.webkitMatchesSelector ||
        e.oMatchesSelector;
      return r && r.call(e, t);
    }
    makeEvent(t, r) {
      var n;
      if (e.Event && typeof e.Event === "function") {
        n = new Event(t, { bubbles: true, cancelable: true });
        n["detail"] = r;
      } else {
        n = document.createEvent("CustomEvent");
        n.initCustomEvent(t, true, true, r);
      }
      return n;
    }
    triggerEvent(e, t, r, n) {
      r = r || {};
      r["sender"] = n;
      var i = this.makeEvent(t, r);
      var a = e.dispatchEvent(i);
      return a;
    }
    isArrayLike(e) {
      return (
        Array.isArray(e) ||
        (typeof NodeList !== "undefined" &&
          (e instanceof NodeList || e instanceof HTMLCollection))
      );
    }
    isIterable(e) {
      return (
        typeof e === "object" &&
        Symbol.iterator in e &&
        typeof e[Symbol.iterator] === "function"
      );
    }
    shouldAutoIterate(e) {
      return (e != null && e[p]) || this.isArrayLike(e);
    }
    forEach(e, t) {
      if (e == null) {
      } else if (this.isIterable(e)) {
        for (const r of e) {
          t(r);
        }
      } else if (this.isArrayLike(e)) {
        for (var r = 0; r < e.length; r++) {
          t(e[r]);
        }
      } else {
        t(e);
      }
    }
    implicitLoop(e, t) {
      if (this.shouldAutoIterate(e)) {
        for (const r of e) t(r);
      } else {
        t(e);
      }
    }
    wrapArrays(e) {
      var t = [];
      for (var r = 0; r < e.length; r++) {
        var n = e[r];
        if (Array.isArray(n)) {
          t.push(Promise.all(n));
        } else {
          t.push(n);
        }
      }
      return t;
    }
    unwrapAsyncs(e) {
      for (var t = 0; t < e.length; t++) {
        var r = e[t];
        if (r.asyncWrapper) {
          e[t] = r.value;
        }
        if (Array.isArray(r)) {
          for (var n = 0; n < r.length; n++) {
            var i = r[n];
            if (i.asyncWrapper) {
              r[n] = i.value;
            }
          }
        }
      }
    }
    static HALT = {};
    HALT = o.HALT;
    unifiedExec(e, t) {
      while (true) {
        try {
          var r = this.unifiedEval(e, t);
        } catch (n) {
          if (t.meta.handlingFinally) {
            console.error(" Exception in finally block: ", n);
            r = o.HALT;
          } else {
            this.registerHyperTrace(t, n);
            if (t.meta.errorHandler && !t.meta.handlingError) {
              t.meta.handlingError = true;
              t.locals[t.meta.errorSymbol] = n;
              e = t.meta.errorHandler;
              continue;
            } else {
              t.meta.currentException = n;
              r = o.HALT;
            }
          }
        }
        if (r == null) {
          console.error(
            e,
            " did not return a next element to execute! context: ",
            t,
          );
          return;
        } else if (r.then) {
          r.then((e) => {
            this.unifiedExec(e, t);
          }).catch((e) => {
            this.unifiedExec(
              {
                op: function () {
                  throw e;
                },
              },
              t,
            );
          });
          return;
        } else if (r === o.HALT) {
          if (t.meta.finallyHandler && !t.meta.handlingFinally) {
            t.meta.handlingFinally = true;
            e = t.meta.finallyHandler;
          } else {
            if (t.meta.onHalt) {
              t.meta.onHalt();
            }
            if (t.meta.currentException) {
              if (t.meta.reject) {
                t.meta.reject(t.meta.currentException);
                return;
              } else {
                throw t.meta.currentException;
              }
            } else {
              return;
            }
          }
        } else {
          e = r;
        }
      }
    }
    unifiedEval(e, t) {
      var r = [t];
      var n = false;
      var i = false;
      if (e.args) {
        for (var a = 0; a < e.args.length; a++) {
          var o = e.args[a];
          if (o == null) {
            r.push(null);
          } else if (Array.isArray(o)) {
            var s = [];
            for (var u = 0; u < o.length; u++) {
              var l = o[u];
              var c = l ? l.evaluate(t) : null;
              if (c) {
                if (c.then) {
                  n = true;
                } else if (c.asyncWrapper) {
                  i = true;
                }
              }
              s.push(c);
            }
            r.push(s);
          } else if (o.evaluate) {
            var c = o.evaluate(t);
            if (c) {
              if (c.then) {
                n = true;
              } else if (c.asyncWrapper) {
                i = true;
              }
            }
            r.push(c);
          } else {
            r.push(o);
          }
        }
      }
      if (n) {
        return new Promise((t, n) => {
          r = this.wrapArrays(r);
          Promise.all(r)
            .then(function (r) {
              if (i) {
                this.unwrapAsyncs(r);
              }
              try {
                var a = e.op.apply(e, r);
                t(a);
              } catch (e) {
                n(e);
              }
            })
            .catch(function (e) {
              n(e);
            });
        });
      } else {
        if (i) {
          this.unwrapAsyncs(r);
        }
        return e.op.apply(e, r);
      }
    }
    _scriptAttrs = null;
    getScriptAttributes() {
      if (this._scriptAttrs == null) {
        this._scriptAttrs = r.attributes.replace(/ /g, "").split(",");
      }
      return this._scriptAttrs;
    }
    getScript(e) {
      for (var t = 0; t < this.getScriptAttributes().length; t++) {
        var r = this.getScriptAttributes()[t];
        if (e.hasAttribute && e.hasAttribute(r)) {
          return e.getAttribute(r);
        }
      }
      if (e instanceof HTMLScriptElement && e.type === "text/hyperscript") {
        return e.innerText;
      }
      return null;
    }
    hyperscriptFeaturesMap = new WeakMap();
    getHyperscriptFeatures(e) {
      var t = this.hyperscriptFeaturesMap.get(e);
      if (typeof t === "undefined") {
        if (e) {
          this.hyperscriptFeaturesMap.set(e, (t = {}));
        }
      }
      return t;
    }
    addFeatures(e, t) {
      if (e) {
        Object.assign(t.locals, this.getHyperscriptFeatures(e));
        this.addFeatures(e.parentElement, t);
      }
    }
    makeContext(e, t, r, n) {
      return new f(e, t, r, n, this);
    }
    getScriptSelector() {
      return this.getScriptAttributes()
        .map(function (e) {
          return "[" + e + "]";
        })
        .join(", ");
    }
    convertValue(e, r) {
      var n = t.dynamicResolvers;
      for (var i = 0; i < n.length; i++) {
        var a = n[i];
        var o = a(r, e);
        if (o !== undefined) {
          return o;
        }
      }
      if (e == null) {
        return null;
      }
      var s = t[r];
      if (s) {
        return s(e);
      }
      throw "Unknown conversion : " + r;
    }
    parse(e) {
      const t = this.lexer,
        r = this.parser;
      var n = t.tokenize(e);
      if (this.parser.commandStart(n.currentToken())) {
        var i = r.requireElement("commandList", n);
        if (n.hasMore()) r.raiseParseError(n);
        r.ensureTerminated(i);
        return i;
      } else if (r.featureStart(n.currentToken())) {
        var a = r.requireElement("hyperscript", n);
        if (n.hasMore()) r.raiseParseError(n);
        return a;
      } else {
        var o = r.requireElement("expression", n);
        if (n.hasMore()) r.raiseParseError(n);
        return o;
      }
    }
    evaluateNoPromise(e, t) {
      let r = e.evaluate(t);
      if (r.next) {
        throw new Error(
          i.sourceFor.call(e) +
            " returned a Promise in a context that they are not allowed.",
        );
      }
      return r;
    }
    evaluate(t, r, n) {
      class i extends EventTarget {
        constructor(e) {
          super();
          this.module = e;
        }
        toString() {
          return this.module.id;
        }
      }
      var a = "document" in e ? e.document.body : new i(n && n.module);
      r = Object.assign(this.makeContext(a, null, a, null), r || {});
      var o = this.parse(t);
      if (o.execute) {
        o.execute(r);
        if (typeof r.meta.returnValue !== "undefined") {
          return r.meta.returnValue;
        } else {
          return r.result;
        }
      } else if (o.apply) {
        o.apply(a, a, n);
        return this.getHyperscriptFeatures(a);
      } else {
        return o.evaluate(r);
      }
      function s() {
        return {};
      }
    }
    processNode(e) {
      var t = this.getScriptSelector();
      if (this.matchesSelector(e, t)) {
        this.initElement(e, e);
      }
      if (e instanceof HTMLScriptElement && e.type === "text/hyperscript") {
        this.initElement(e, document.body);
      }
      if (e.querySelectorAll) {
        this.forEach(
          e.querySelectorAll(t + ", [type='text/hyperscript']"),
          (e) => {
            this.initElement(
              e,
              e instanceof HTMLScriptElement && e.type === "text/hyperscript"
                ? document.body
                : e,
            );
          },
        );
      }
    }
    initElement(e, t) {
      if (e.closest && e.closest(r.disableSelector)) {
        return;
      }
      var n = this.getInternalData(e);
      if (!n.initialized) {
        var i = this.getScript(e);
        if (i) {
          try {
            n.initialized = true;
            n.script = i;
            const r = this.lexer,
              s = this.parser;
            var a = r.tokenize(i);
            var o = s.parseHyperScript(a);
            if (!o) return;
            o.apply(t || e, e);
            setTimeout(() => {
              this.triggerEvent(t || e, "load", { hyperscript: true });
            }, 1);
          } catch (t) {
            this.triggerEvent(e, "exception", { error: t });
            console.error(
              "hyperscript errors were found on the following element:",
              e,
              "\n\n",
              t.message,
              t.stack,
            );
          }
        }
      }
    }
    internalDataMap = new WeakMap();
    getInternalData(e) {
      var t = this.internalDataMap.get(e);
      if (typeof t === "undefined") {
        this.internalDataMap.set(e, (t = {}));
      }
      return t;
    }
    typeCheck(e, t, r) {
      if (e == null && r) {
        return true;
      }
      var n = Object.prototype.toString.call(e).slice(8, -1);
      return n === t;
    }
    getElementScope(e) {
      var t = e.meta && e.meta.owner;
      if (t) {
        var r = this.getInternalData(t);
        var n = "elementScope";
        if (e.meta.feature && e.meta.feature.behavior) {
          n = e.meta.feature.behavior + "Scope";
        }
        var i = h(r, n);
        return i;
      } else {
        return {};
      }
    }
    isReservedWord(e) {
      return [
        "meta",
        "it",
        "result",
        "locals",
        "event",
        "target",
        "detail",
        "sender",
        "body",
      ].includes(e);
    }
    isHyperscriptContext(e) {
      return e instanceof f;
    }
    resolveSymbol(t, r, n) {
      if (t === "me" || t === "my" || t === "I") {
        return r.me;
      }
      if (t === "it" || t === "its" || t === "result") {
        return r.result;
      }
      if (t === "you" || t === "your" || t === "yourself") {
        return r.you;
      } else {
        if (n === "global") {
          return e[t];
        } else if (n === "element") {
          var i = this.getElementScope(r);
          return i[t];
        } else if (n === "local") {
          return r.locals[t];
        } else {
          if (r.meta && r.meta.context) {
            var a = r.meta.context[t];
            if (typeof a !== "undefined") {
              return a;
            }
            if (r.meta.context.detail) {
              a = r.meta.context.detail[t];
              if (typeof a !== "undefined") {
                return a;
              }
            }
          }
          if (this.isHyperscriptContext(r) && !this.isReservedWord(t)) {
            var o = r.locals[t];
          } else {
            var o = r[t];
          }
          if (typeof o !== "undefined") {
            return o;
          } else {
            var i = this.getElementScope(r);
            o = i[t];
            if (typeof o !== "undefined") {
              return o;
            } else {
              return e[t];
            }
          }
        }
      }
    }
    setSymbol(t, r, n, i) {
      if (n === "global") {
        e[t] = i;
      } else if (n === "element") {
        var a = this.getElementScope(r);
        a[t] = i;
      } else if (n === "local") {
        r.locals[t] = i;
      } else {
        if (
          this.isHyperscriptContext(r) &&
          !this.isReservedWord(t) &&
          typeof r.locals[t] !== "undefined"
        ) {
          r.locals[t] = i;
        } else {
          var a = this.getElementScope(r);
          var o = a[t];
          if (typeof o !== "undefined") {
            a[t] = i;
          } else {
            if (this.isHyperscriptContext(r) && !this.isReservedWord(t)) {
              r.locals[t] = i;
            } else {
              r[t] = i;
            }
          }
        }
      }
    }
    findNext(e, t) {
      if (e) {
        if (e.resolveNext) {
          return e.resolveNext(t);
        } else if (e.next) {
          return e.next;
        } else {
          return this.findNext(e.parent, t);
        }
      }
    }
    flatGet(e, t, r) {
      if (e != null) {
        var n = r(e, t);
        if (typeof n !== "undefined") {
          return n;
        }
        if (this.shouldAutoIterate(e)) {
          var i = [];
          for (var a of e) {
            var o = r(a, t);
            i.push(o);
          }
          return i;
        }
      }
    }
    resolveProperty(e, t) {
      return this.flatGet(e, t, (e, t) => e[t]);
    }
    resolveAttribute(e, t) {
      return this.flatGet(e, t, (e, t) => e.getAttribute && e.getAttribute(t));
    }
    resolveStyle(e, t) {
      return this.flatGet(e, t, (e, t) => e.style && e.style[t]);
    }
    resolveComputedStyle(e, t) {
      return this.flatGet(e, t, (e, t) =>
        getComputedStyle(e).getPropertyValue(t),
      );
    }
    assignToNamespace(t, r, n, i) {
      let a;
      if (typeof document !== "undefined" && t === document.body) {
        a = e;
      } else {
        a = this.getHyperscriptFeatures(t);
      }
      var o;
      while ((o = r.shift()) !== undefined) {
        var s = a[o];
        if (s == null) {
          s = {};
          a[o] = s;
        }
        a = s;
      }
      a[n] = i;
    }
    getHyperTrace(e, t) {
      var r = [];
      var n = e;
      while (n.meta.caller) {
        n = n.meta.caller;
      }
      if (n.meta.traceMap) {
        return n.meta.traceMap.get(t, r);
      }
    }
    registerHyperTrace(e, t) {
      var r = [];
      var n = null;
      while (e != null) {
        r.push(e);
        n = e;
        e = e.meta.caller;
      }
      if (n.meta.traceMap == null) {
        n.meta.traceMap = new Map();
      }
      if (!n.meta.traceMap.get(t)) {
        var i = {
          trace: r,
          print: function (e) {
            e = e || console.error;
            e("hypertrace /// ");
            var t = 0;
            for (var n = 0; n < r.length; n++) {
              t = Math.max(t, r[n].meta.feature.displayName.length);
            }
            for (var n = 0; n < r.length; n++) {
              var i = r[n];
              e(
                "  ->",
                i.meta.feature.displayName.padEnd(t + 2),
                "-",
                i.meta.owner,
              );
            }
          },
        };
        n.meta.traceMap.set(t, i);
      }
    }
    escapeSelector(e) {
      return e.replace(/:/g, function (e) {
        return "\\" + e;
      });
    }
    nullCheck(e, t) {
      if (e == null) {
        throw new Error("'" + t.sourceFor() + "' is null");
      }
    }
    isEmpty(e) {
      return e == undefined || e.length === 0;
    }
    doesExist(e) {
      if (e == null) {
        return false;
      }
      if (this.shouldAutoIterate(e)) {
        for (const t of e) {
          return true;
        }
        return false;
      }
      return true;
    }
    getRootNode(e) {
      if (e && e instanceof Node) {
        var t = e.getRootNode();
        if (t instanceof Document || t instanceof ShadowRoot) return t;
      }
      return document;
    }
    getEventQueueFor(e, t) {
      let r = this.getInternalData(e);
      var n = r.eventQueues;
      if (n == null) {
        n = new Map();
        r.eventQueues = n;
      }
      var i = n.get(t);
      if (i == null) {
        i = { queue: [], executing: false };
        n.set(t, i);
      }
      return i;
    }
    beepValueToConsole(e, t, r) {
      if (
        this.triggerEvent(e, "hyperscript:beep", {
          element: e,
          expression: t,
          value: r,
        })
      ) {
        var n;
        if (r) {
          if (r instanceof m) {
            n = "ElementCollection";
          } else if (r.constructor) {
            n = r.constructor.name;
          } else {
            n = "unknown";
          }
        } else {
          n = "object (null)";
        }
        var a = r;
        if (n === "String") {
          a = '"' + a + '"';
        } else if (r instanceof m) {
          a = Array.from(r);
        }
        console.log(
          "///_ BEEP! The expression (" +
            i.sourceFor.call(t).replace("beep! ", "") +
            ") evaluates to:",
          a,
          "of type " + n,
        );
      }
    }
    hyperscriptUrl =
      "document" in e && document.currentScript
        ? document.currentScript.src
        : null;
  }
  function s() {
    let e = document.cookie.split("; ").map((e) => {
      let t = e.split("=");
      return { name: t[0], value: decodeURIComponent(t[1]) };
    });
    return e;
  }
  function u(e) {
    document.cookie = e + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
  }
  function l() {
    for (const e of s()) {
      u(e.name);
    }
  }
  const c = new Proxy(
    {},
    {
      get(e, t) {
        if (t === "then" || t === "asyncWrapper") {
          return null;
        } else if (t === "length") {
          return s().length;
        } else if (t === "clear") {
          return u;
        } else if (t === "clearAll") {
          return l;
        } else if (typeof t === "string") {
          if (!isNaN(t)) {
            return s()[parseInt(t)];
          } else {
            let e = document.cookie
              .split("; ")
              .find((e) => e.startsWith(t + "="))
              ?.split("=")[1];
            if (e) {
              return decodeURIComponent(e);
            }
          }
        } else if (t === Symbol.iterator) {
          return s()[t];
        }
      },
      set(e, t, r) {
        var n = null;
        if ("string" === typeof r) {
          n = encodeURIComponent(r);
          n += ";samesite=lax";
        } else {
          n = encodeURIComponent(r.value);
          if (r.expires) {
            n += ";expires=" + r.maxAge;
          }
          if (r.maxAge) {
            n += ";max-age=" + r.maxAge;
          }
          if (r.partitioned) {
            n += ";partitioned=" + r.partitioned;
          }
          if (r.path) {
            n += ";path=" + r.path;
          }
          if (r.samesite) {
            n += ";samesite=" + r.path;
          }
          if (r.secure) {
            n += ";secure=" + r.path;
          }
        }
        document.cookie = t + "=" + n;
        return true;
      },
    },
  );
  class f {
    constructor(t, r, n, i, a) {
      this.meta = {
        parser: a.parser,
        lexer: a.lexer,
        runtime: a,
        owner: t,
        feature: r,
        iterators: {},
        ctx: this,
      };
      this.locals = { cookies: c };
      (this.me = n), (this.you = undefined);
      this.result = undefined;
      this.event = i;
      this.target = i ? i.target : null;
      this.detail = i ? i.detail : null;
      this.sender = i ? (i.detail ? i.detail.sender : null) : null;
      this.body = "document" in e ? document.body : null;
      a.addFeatures(t, this);
    }
  }
  class m {
    constructor(e, t, r) {
      this._css = e;
      this.relativeToElement = t;
      this.escape = r;
      this[p] = true;
    }
    get css() {
      if (this.escape) {
        return o.prototype.escapeSelector(this._css);
      } else {
        return this._css;
      }
    }
    get className() {
      return this._css.substr(1);
    }
    get id() {
      return this.className();
    }
    contains(e) {
      for (let t of this) {
        if (t.contains(e)) {
          return true;
        }
      }
      return false;
    }
    get length() {
      return this.selectMatches().length;
    }
    [Symbol.iterator]() {
      let e = this.selectMatches();
      return e[Symbol.iterator]();
    }
    selectMatches() {
      let e = o.prototype
        .getRootNode(this.relativeToElement)
        .querySelectorAll(this.css);
      return e;
    }
  }
  const p = Symbol();
  function h(e, t) {
    var r = e[t];
    if (r) {
      return r;
    } else {
      var n = {};
      e[t] = n;
      return n;
    }
  }
  function v(e) {
    try {
      return JSON.parse(e);
    } catch (e) {
      d(e);
      return null;
    }
  }
  function d(e) {
    if (console.error) {
      console.error(e);
    } else if (console.log) {
      console.log("ERROR: ", e);
    }
  }
  function E(e, t) {
    return new (e.bind.apply(e, [e].concat(t)))();
  }
  function T(t) {
    t.addLeafExpression("parenthesized", function (e, t, r) {
      if (r.matchOpToken("(")) {
        var n = r.clearFollows();
        try {
          var i = e.requireElement("expression", r);
        } finally {
          r.restoreFollows(n);
        }
        r.requireOpToken(")");
        return i;
      }
    });
    t.addLeafExpression("string", function (e, t, r) {
      var i = r.matchTokenType("STRING");
      if (!i) return;
      var a = i.value;
      var o;
      if (i.template) {
        var s = n.tokenize(a, true);
        o = e.parseStringTemplate(s);
      } else {
        o = [];
      }
      return {
        type: "string",
        token: i,
        args: o,
        op: function (e) {
          var t = "";
          for (var r = 1; r < arguments.length; r++) {
            var n = arguments[r];
            if (n !== undefined) {
              t += n;
            }
          }
          return t;
        },
        evaluate: function (e) {
          if (o.length === 0) {
            return a;
          } else {
            return t.unifiedEval(this, e);
          }
        },
      };
    });
    t.addGrammarElement("nakedString", function (e, t, r) {
      if (r.hasMore()) {
        var n = r.consumeUntilWhitespace();
        r.matchTokenType("WHITESPACE");
        return {
          type: "nakedString",
          tokens: n,
          evaluate: function (e) {
            return n
              .map(function (e) {
                return e.value;
              })
              .join("");
          },
        };
      }
    });
    t.addLeafExpression("number", function (e, t, r) {
      var n = r.matchTokenType("NUMBER");
      if (!n) return;
      var i = n;
      var a = parseFloat(n.value);
      return {
        type: "number",
        value: a,
        numberToken: i,
        evaluate: function () {
          return a;
        },
      };
    });
    t.addLeafExpression("idRef", function (e, t, r) {
      var i = r.matchTokenType("ID_REF");
      if (!i) return;
      if (!i.value) return;
      if (i.template) {
        var a = i.value.substring(2);
        var o = n.tokenize(a);
        var s = e.requireElement("expression", o);
        return {
          type: "idRefTemplate",
          args: [s],
          op: function (e, r) {
            return t.getRootNode(e.me).getElementById(r);
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      } else {
        const e = i.value.substring(1);
        return {
          type: "idRef",
          css: i.value,
          value: e,
          evaluate: function (r) {
            return t.getRootNode(r.me).getElementById(e);
          },
        };
      }
    });
    t.addLeafExpression("classRef", function (e, t, r) {
      var i = r.matchTokenType("CLASS_REF");
      if (!i) return;
      if (!i.value) return;
      if (i.template) {
        var a = i.value.substring(2);
        var o = n.tokenize(a);
        var s = e.requireElement("expression", o);
        return {
          type: "classRefTemplate",
          args: [s],
          op: function (e, t) {
            return new m("." + t, e.me, true);
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      } else {
        const e = i.value;
        return {
          type: "classRef",
          css: e,
          evaluate: function (t) {
            return new m(e, t.me, true);
          },
        };
      }
    });
    class r extends m {
      constructor(e, t, r) {
        super(e, t);
        this.templateParts = r;
        this.elements = r.filter((e) => e instanceof Element);
      }
      get css() {
        let e = "",
          t = 0;
        for (const r of this.templateParts) {
          if (r instanceof Element) {
            e += "[data-hs-query-id='" + t++ + "']";
          } else e += r;
        }
        return e;
      }
      [Symbol.iterator]() {
        this.elements.forEach((e, t) => (e.dataset.hsQueryId = t));
        const e = super[Symbol.iterator]();
        this.elements.forEach((e) => e.removeAttribute("data-hs-query-id"));
        return e;
      }
    }
    t.addLeafExpression("queryRef", function (e, t, i) {
      var a = i.matchOpToken("<");
      if (!a) return;
      var o = i.consumeUntil("/");
      i.requireOpToken("/");
      i.requireOpToken(">");
      var s = o
        .map(function (e) {
          if (e.type === "STRING") {
            return '"' + e.value + '"';
          } else {
            return e.value;
          }
        })
        .join("");
      var u, l, c;
      if (s.indexOf("$") >= 0) {
        u = true;
        l = n.tokenize(s, true);
        c = e.parseStringTemplate(l);
      }
      return {
        type: "queryRef",
        css: s,
        args: c,
        op: function (e, ...t) {
          if (u) {
            return new r(s, e.me, t);
          } else {
            return new m(s, e.me);
          }
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addLeafExpression("attributeRef", function (e, t, r) {
      var n = r.matchTokenType("ATTRIBUTE_REF");
      if (!n) return;
      if (!n.value) return;
      var i = n.value;
      if (i.indexOf("[") === 0) {
        var a = i.substring(2, i.length - 1);
      } else {
        var a = i.substring(1);
      }
      var o = "[" + a + "]";
      var s = a.split("=");
      var u = s[0];
      var l = s[1];
      if (l) {
        if (l.indexOf('"') === 0) {
          l = l.substring(1, l.length - 1);
        }
      }
      return {
        type: "attributeRef",
        name: u,
        css: o,
        value: l,
        op: function (e) {
          var t = e.you || e.me;
          if (t) {
            return t.getAttribute(u);
          }
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addLeafExpression("styleRef", function (e, t, r) {
      var n = r.matchTokenType("STYLE_REF");
      if (!n) return;
      if (!n.value) return;
      var i = n.value.substr(1);
      if (i.startsWith("computed-")) {
        i = i.substr("computed-".length);
        return {
          type: "computedStyleRef",
          name: i,
          op: function (e) {
            var r = e.you || e.me;
            if (r) {
              return t.resolveComputedStyle(r, i);
            }
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      } else {
        return {
          type: "styleRef",
          name: i,
          op: function (e) {
            var r = e.you || e.me;
            if (r) {
              return t.resolveStyle(r, i);
            }
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      }
    });
    t.addGrammarElement("objectKey", function (e, t, r) {
      var n;
      if ((n = r.matchTokenType("STRING"))) {
        return {
          type: "objectKey",
          key: n.value,
          evaluate: function () {
            return n.value;
          },
        };
      } else if (r.matchOpToken("[")) {
        var i = e.parseElement("expression", r);
        r.requireOpToken("]");
        return {
          type: "objectKey",
          expr: i,
          args: [i],
          op: function (e, t) {
            return t;
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      } else {
        var a = "";
        do {
          n = r.matchTokenType("IDENTIFIER") || r.matchOpToken("-");
          if (n) a += n.value;
        } while (n);
        return {
          type: "objectKey",
          key: a,
          evaluate: function () {
            return a;
          },
        };
      }
    });
    t.addLeafExpression("objectLiteral", function (e, t, r) {
      if (!r.matchOpToken("{")) return;
      var n = [];
      var i = [];
      if (!r.matchOpToken("}")) {
        do {
          var a = e.requireElement("objectKey", r);
          r.requireOpToken(":");
          var o = e.requireElement("expression", r);
          i.push(o);
          n.push(a);
        } while (r.matchOpToken(","));
        r.requireOpToken("}");
      }
      return {
        type: "objectLiteral",
        args: [n, i],
        op: function (e, t, r) {
          var n = {};
          for (var i = 0; i < t.length; i++) {
            n[t[i]] = r[i];
          }
          return n;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addGrammarElement("nakedNamedArgumentList", function (e, t, r) {
      var n = [];
      var i = [];
      if (r.currentToken().type === "IDENTIFIER") {
        do {
          var a = r.requireTokenType("IDENTIFIER");
          r.requireOpToken(":");
          var o = e.requireElement("expression", r);
          i.push(o);
          n.push({ name: a, value: o });
        } while (r.matchOpToken(","));
      }
      return {
        type: "namedArgumentList",
        fields: n,
        args: [i],
        op: function (e, t) {
          var r = { _namedArgList_: true };
          for (var i = 0; i < t.length; i++) {
            var a = n[i];
            r[a.name.value] = t[i];
          }
          return r;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addGrammarElement("namedArgumentList", function (e, t, r) {
      if (!r.matchOpToken("(")) return;
      var n = e.requireElement("nakedNamedArgumentList", r);
      r.requireOpToken(")");
      return n;
    });
    t.addGrammarElement("symbol", function (e, t, r) {
      var n = "default";
      if (r.matchToken("global")) {
        n = "global";
      } else if (r.matchToken("element") || r.matchToken("module")) {
        n = "element";
        if (r.matchOpToken("'")) {
          r.requireToken("s");
        }
      } else if (r.matchToken("local")) {
        n = "local";
      }
      let i = r.matchOpToken(":");
      let a = r.matchTokenType("IDENTIFIER");
      if (a && a.value) {
        var o = a.value;
        if (i) {
          o = ":" + o;
        }
        if (n === "default") {
          if (o.indexOf("$") === 0) {
            n = "global";
          }
          if (o.indexOf(":") === 0) {
            n = "element";
          }
        }
        return {
          type: "symbol",
          token: a,
          scope: n,
          name: o,
          evaluate: function (e) {
            return t.resolveSymbol(o, e, n);
          },
        };
      }
    });
    t.addGrammarElement("implicitMeTarget", function (e, t, r) {
      return {
        type: "implicitMeTarget",
        evaluate: function (e) {
          return e.you || e.me;
        },
      };
    });
    t.addLeafExpression("boolean", function (e, t, r) {
      var n = r.matchToken("true") || r.matchToken("false");
      if (!n) return;
      const i = n.value === "true";
      return {
        type: "boolean",
        evaluate: function (e) {
          return i;
        },
      };
    });
    t.addLeafExpression("null", function (e, t, r) {
      if (r.matchToken("null")) {
        return {
          type: "null",
          evaluate: function (e) {
            return null;
          },
        };
      }
    });
    t.addLeafExpression("arrayLiteral", function (e, t, r) {
      if (!r.matchOpToken("[")) return;
      var n = [];
      if (!r.matchOpToken("]")) {
        do {
          var i = e.requireElement("expression", r);
          n.push(i);
        } while (r.matchOpToken(","));
        r.requireOpToken("]");
      }
      return {
        type: "arrayLiteral",
        values: n,
        args: [n],
        op: function (e, t) {
          return t;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addLeafExpression("blockLiteral", function (e, t, r) {
      if (!r.matchOpToken("\\")) return;
      var n = [];
      var i = r.matchTokenType("IDENTIFIER");
      if (i) {
        n.push(i);
        while (r.matchOpToken(",")) {
          n.push(r.requireTokenType("IDENTIFIER"));
        }
      }
      r.requireOpToken("-");
      r.requireOpToken(">");
      var a = e.requireElement("expression", r);
      return {
        type: "blockLiteral",
        args: n,
        expr: a,
        evaluate: function (e) {
          var t = function () {
            for (var t = 0; t < n.length; t++) {
              e.locals[n[t].value] = arguments[t];
            }
            return a.evaluate(e);
          };
          return t;
        },
      };
    });
    t.addIndirectExpression("propertyAccess", function (e, t, r, n) {
      if (!r.matchOpToken(".")) return;
      var i = r.requireTokenType("IDENTIFIER");
      var a = {
        type: "propertyAccess",
        root: n,
        prop: i,
        args: [n],
        op: function (e, r) {
          var n = t.resolveProperty(r, i.value);
          return n;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
      return e.parseElement("indirectExpression", r, a);
    });
    t.addIndirectExpression("of", function (e, t, r, n) {
      if (!r.matchToken("of")) return;
      var i = e.requireElement("unaryExpression", r);
      var a = null;
      var o = n;
      while (o.root) {
        a = o;
        o = o.root;
      }
      if (
        o.type !== "symbol" &&
        o.type !== "attributeRef" &&
        o.type !== "styleRef" &&
        o.type !== "computedStyleRef"
      ) {
        e.raiseParseError(
          r,
          "Cannot take a property of a non-symbol: " + o.type,
        );
      }
      var s = o.type === "attributeRef";
      var u = o.type === "styleRef" || o.type === "computedStyleRef";
      if (s || u) {
        var l = o;
      }
      var c = o.name;
      var f = {
        type: "ofExpression",
        prop: o.token,
        root: i,
        attribute: l,
        expression: n,
        args: [i],
        op: function (e, r) {
          if (s) {
            return t.resolveAttribute(r, c);
          } else if (u) {
            if (o.type === "computedStyleRef") {
              return t.resolveComputedStyle(r, c);
            } else {
              return t.resolveStyle(r, c);
            }
          } else {
            return t.resolveProperty(r, c);
          }
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
      if (o.type === "attributeRef") {
        f.attribute = o;
      }
      if (a) {
        a.root = f;
        a.args = [f];
      } else {
        n = f;
      }
      return e.parseElement("indirectExpression", r, n);
    });
    t.addIndirectExpression("possessive", function (e, t, r, n) {
      if (e.possessivesDisabled) {
        return;
      }
      var i = r.matchOpToken("'");
      if (
        i ||
        (n.type === "symbol" &&
          (n.name === "my" || n.name === "its" || n.name === "your") &&
          (r.currentToken().type === "IDENTIFIER" ||
            r.currentToken().type === "ATTRIBUTE_REF" ||
            r.currentToken().type === "STYLE_REF"))
      ) {
        if (i) {
          r.requireToken("s");
        }
        var a, o, s;
        a = e.parseElement("attributeRef", r);
        if (a == null) {
          o = e.parseElement("styleRef", r);
          if (o == null) {
            s = r.requireTokenType("IDENTIFIER");
          }
        }
        var u = {
          type: "possessive",
          root: n,
          attribute: a || o,
          prop: s,
          args: [n],
          op: function (e, r) {
            if (a) {
              var n = t.resolveAttribute(r, a.name);
            } else if (o) {
              var n;
              if (o.type === "computedStyleRef") {
                n = t.resolveComputedStyle(r, o["name"]);
              } else {
                n = t.resolveStyle(r, o["name"]);
              }
            } else {
              var n = t.resolveProperty(r, s.value);
            }
            return n;
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
        return e.parseElement("indirectExpression", r, u);
      }
    });
    t.addIndirectExpression("inExpression", function (e, t, r, n) {
      if (!r.matchToken("in")) return;
      var i = e.requireElement("unaryExpression", r);
      var a = {
        type: "inExpression",
        root: n,
        args: [n, i],
        op: function (e, r, n) {
          var i = [];
          if (r.css) {
            t.implicitLoop(n, function (e) {
              var t = e.querySelectorAll(r.css);
              for (var n = 0; n < t.length; n++) {
                i.push(t[n]);
              }
            });
          } else if (r instanceof Element) {
            var a = false;
            t.implicitLoop(n, function (e) {
              if (e.contains(r)) {
                a = true;
              }
            });
            if (a) {
              return r;
            }
          } else {
            t.implicitLoop(r, function (e) {
              t.implicitLoop(n, function (t) {
                if (e === t) {
                  i.push(e);
                }
              });
            });
          }
          return i;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
      return e.parseElement("indirectExpression", r, a);
    });
    t.addIndirectExpression("asExpression", function (e, t, r, n) {
      if (!r.matchToken("as")) return;
      r.matchToken("a") || r.matchToken("an");
      var i = e.requireElement("dotOrColonPath", r).evaluate();
      var a = {
        type: "asExpression",
        root: n,
        args: [n],
        op: function (e, r) {
          return t.convertValue(r, i);
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
      return e.parseElement("indirectExpression", r, a);
    });
    t.addIndirectExpression("functionCall", function (e, t, r, n) {
      if (!r.matchOpToken("(")) return;
      var i = [];
      if (!r.matchOpToken(")")) {
        do {
          i.push(e.requireElement("expression", r));
        } while (r.matchOpToken(","));
        r.requireOpToken(")");
      }
      if (n.root) {
        var a = {
          type: "functionCall",
          root: n,
          argExressions: i,
          args: [n.root, i],
          op: function (e, r, i) {
            t.nullCheck(r, n.root);
            var a = r[n.prop.value];
            t.nullCheck(a, n);
            if (a.hyperfunc) {
              i.push(e);
            }
            return a.apply(r, i);
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      } else {
        var a = {
          type: "functionCall",
          root: n,
          argExressions: i,
          args: [n, i],
          op: function (e, r, i) {
            t.nullCheck(r, n);
            if (r.hyperfunc) {
              i.push(e);
            }
            var a = r.apply(null, i);
            return a;
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      }
      return e.parseElement("indirectExpression", r, a);
    });
    t.addIndirectExpression("attributeRefAccess", function (e, t, r, n) {
      var i = e.parseElement("attributeRef", r);
      if (!i) return;
      var a = {
        type: "attributeRefAccess",
        root: n,
        attribute: i,
        args: [n],
        op: function (e, r) {
          var n = t.resolveAttribute(r, i.name);
          return n;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
      return a;
    });
    t.addIndirectExpression("arrayIndex", function (e, t, r, n) {
      if (!r.matchOpToken("[")) return;
      var i = false;
      var a = false;
      var o = null;
      var s = null;
      if (r.matchOpToken("..")) {
        i = true;
        o = e.requireElement("expression", r);
      } else {
        o = e.requireElement("expression", r);
        if (r.matchOpToken("..")) {
          a = true;
          var u = r.currentToken();
          if (u.type !== "R_BRACKET") {
            s = e.parseElement("expression", r);
          }
        }
      }
      r.requireOpToken("]");
      var l = {
        type: "arrayIndex",
        root: n,
        prop: o,
        firstIndex: o,
        secondIndex: s,
        args: [n, o, s],
        op: function (e, t, r, n) {
          if (t == null) {
            return null;
          }
          if (i) {
            if (r < 0) {
              r = t.length + r;
            }
            return t.slice(0, r + 1);
          } else if (a) {
            if (n != null) {
              if (n < 0) {
                n = t.length + n;
              }
              return t.slice(r, n + 1);
            } else {
              return t.slice(r);
            }
          } else {
            return t[r];
          }
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
      return e.parseElement("indirectExpression", r, l);
    });
    var a = [
      "em",
      "ex",
      "cap",
      "ch",
      "ic",
      "rem",
      "lh",
      "rlh",
      "vw",
      "vh",
      "vi",
      "vb",
      "vmin",
      "vmax",
      "cm",
      "mm",
      "Q",
      "pc",
      "pt",
      "px",
    ];
    t.addGrammarElement("postfixExpression", function (e, t, r) {
      var n = e.parseElement("primaryExpression", r);
      let i = r.matchAnyToken.apply(r, a) || r.matchOpToken("%");
      if (i) {
        return {
          type: "stringPostfix",
          postfix: i.value,
          args: [n],
          op: function (e, t) {
            return "" + t + i.value;
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      }
      var o = null;
      if (r.matchToken("s") || r.matchToken("seconds")) {
        o = 1e3;
      } else if (r.matchToken("ms") || r.matchToken("milliseconds")) {
        o = 1;
      }
      if (o) {
        return {
          type: "timeExpression",
          time: n,
          factor: o,
          args: [n],
          op: function (e, t) {
            return t * o;
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      }
      if (r.matchOpToken(":")) {
        var s = r.requireTokenType("IDENTIFIER");
        if (!s.value) return;
        var u = !r.matchOpToken("!");
        return {
          type: "typeCheck",
          typeName: s,
          nullOk: u,
          args: [n],
          op: function (e, r) {
            var n = t.typeCheck(r, this.typeName.value, u);
            if (n) {
              return r;
            } else {
              throw new Error("Typecheck failed!  Expected: " + s.value);
            }
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      } else {
        return n;
      }
    });
    t.addGrammarElement("logicalNot", function (e, t, r) {
      if (!r.matchToken("not")) return;
      var n = e.requireElement("unaryExpression", r);
      return {
        type: "logicalNot",
        root: n,
        args: [n],
        op: function (e, t) {
          return !t;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addGrammarElement("noExpression", function (e, t, r) {
      if (!r.matchToken("no")) return;
      var n = e.requireElement("unaryExpression", r);
      return {
        type: "noExpression",
        root: n,
        args: [n],
        op: function (e, r) {
          return t.isEmpty(r);
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addLeafExpression("some", function (e, t, r) {
      if (!r.matchToken("some")) return;
      var n = e.requireElement("expression", r);
      return {
        type: "noExpression",
        root: n,
        args: [n],
        op: function (e, r) {
          return !t.isEmpty(r);
        },
        evaluate(e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addGrammarElement("negativeNumber", function (e, t, r) {
      if (!r.matchOpToken("-")) return;
      var n = e.requireElement("unaryExpression", r);
      return {
        type: "negativeNumber",
        root: n,
        args: [n],
        op: function (e, t) {
          return -1 * t;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addGrammarElement("unaryExpression", function (e, t, r) {
      r.matchToken("the");
      return e.parseAnyOf(
        [
          "beepExpression",
          "logicalNot",
          "relativePositionalExpression",
          "positionalExpression",
          "noExpression",
          "negativeNumber",
          "postfixExpression",
        ],
        r,
      );
    });
    t.addGrammarElement("beepExpression", function (e, t, r) {
      if (!r.matchToken("beep!")) return;
      var n = e.parseElement("unaryExpression", r);
      if (n) {
        n["booped"] = true;
        var i = n.evaluate;
        n.evaluate = function (e) {
          let r = i.apply(n, arguments);
          let a = e.me;
          t.beepValueToConsole(a, n, r);
          return r;
        };
        return n;
      }
    });
    var s = function (e, t, r, n) {
      var i = t.querySelectorAll(r);
      for (var a = 0; a < i.length; a++) {
        var o = i[a];
        if (o.compareDocumentPosition(e) === Node.DOCUMENT_POSITION_PRECEDING) {
          return o;
        }
      }
      if (n) {
        return i[0];
      }
    };
    var u = function (e, t, r, n) {
      var i = t.querySelectorAll(r);
      for (var a = i.length - 1; a >= 0; a--) {
        var o = i[a];
        if (o.compareDocumentPosition(e) === Node.DOCUMENT_POSITION_FOLLOWING) {
          return o;
        }
      }
      if (n) {
        return i[i.length - 1];
      }
    };
    var l = function (e, t, r, n) {
      var i = [];
      o.prototype.forEach(t, function (t) {
        if (t.matches(r) || t === e) {
          i.push(t);
        }
      });
      for (var a = 0; a < i.length - 1; a++) {
        var s = i[a];
        if (s === e) {
          return i[a + 1];
        }
      }
      if (n) {
        var u = i[0];
        if (u && u.matches(r)) {
          return u;
        }
      }
    };
    var c = function (e, t, r, n) {
      return l(e, Array.from(t).reverse(), r, n);
    };
    t.addGrammarElement("relativePositionalExpression", function (e, t, r) {
      var n = r.matchAnyToken("next", "previous");
      if (!n) return;
      var a = n.value === "next";
      var o = e.parseElement("expression", r);
      if (r.matchToken("from")) {
        r.pushFollow("in");
        try {
          var f = e.requireElement("unaryExpression", r);
        } finally {
          r.popFollow();
        }
      } else {
        var f = e.requireElement("implicitMeTarget", r);
      }
      var m = false;
      var p;
      if (r.matchToken("in")) {
        m = true;
        var h = e.requireElement("unaryExpression", r);
      } else if (r.matchToken("within")) {
        p = e.requireElement("unaryExpression", r);
      } else {
        p = document.body;
      }
      var v = false;
      if (r.matchToken("with")) {
        r.requireToken("wrapping");
        v = true;
      }
      return {
        type: "relativePositionalExpression",
        from: f,
        forwardSearch: a,
        inSearch: m,
        wrapping: v,
        inElt: h,
        withinElt: p,
        operator: n.value,
        args: [o, f, h, p],
        op: function (e, t, r, n, f) {
          var p = t.css;
          if (p == null) {
            throw (
              "Expected a CSS value to be returned by " + i.sourceFor.apply(o)
            );
          }
          if (m) {
            if (n) {
              if (a) {
                return l(r, n, p, v);
              } else {
                return c(r, n, p, v);
              }
            }
          } else {
            if (f) {
              if (a) {
                return s(r, f, p, v);
              } else {
                return u(r, f, p, v);
              }
            }
          }
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addGrammarElement("positionalExpression", function (e, t, r) {
      var n = r.matchAnyToken("first", "last", "random");
      if (!n) return;
      r.matchAnyToken("in", "from", "of");
      var i = e.requireElement("unaryExpression", r);
      const a = n.value;
      return {
        type: "positionalExpression",
        rhs: i,
        operator: n.value,
        args: [i],
        op: function (e, t) {
          if (t && !Array.isArray(t)) {
            if (t.children) {
              t = t.children;
            } else {
              t = Array.from(t);
            }
          }
          if (t) {
            if (a === "first") {
              return t[0];
            } else if (a === "last") {
              return t[t.length - 1];
            } else if (a === "random") {
              return t[Math.floor(Math.random() * t.length)];
            }
          }
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    t.addGrammarElement("mathOperator", function (e, t, r) {
      var n = e.parseElement("unaryExpression", r);
      var i,
        a = null;
      i = r.matchAnyOpToken("+", "-", "*", "/") || r.matchToken("mod");
      while (i) {
        a = a || i;
        var o = i.value;
        if (a.value !== o) {
          e.raiseParseError(
            r,
            "You must parenthesize math operations with different operators",
          );
        }
        var s = e.parseElement("unaryExpression", r);
        n = {
          type: "mathOperator",
          lhs: n,
          rhs: s,
          operator: o,
          args: [n, s],
          op: function (e, t, r) {
            if (o === "+") {
              return t + r;
            } else if (o === "-") {
              return t - r;
            } else if (o === "*") {
              return t * r;
            } else if (o === "/") {
              return t / r;
            } else if (o === "mod") {
              return t % r;
            }
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
        i = r.matchAnyOpToken("+", "-", "*", "/") || r.matchToken("mod");
      }
      return n;
    });
    t.addGrammarElement("mathExpression", function (e, t, r) {
      return e.parseAnyOf(["mathOperator", "unaryExpression"], r);
    });
    function f(e, t, r) {
      if (t["contains"]) {
        return t.contains(r);
      } else if (t["includes"]) {
        return t.includes(r);
      } else {
        throw Error(
          "The value of " +
            e.sourceFor() +
            " does not have a contains or includes method on it",
        );
      }
    }
    function p(e, t, r) {
      if (t["match"]) {
        return !!t.match(r);
      } else if (t["matches"]) {
        return t.matches(r);
      } else {
        throw Error(
          "The value of " +
            e.sourceFor() +
            " does not have a match or matches method on it",
        );
      }
    }
    t.addGrammarElement("comparisonOperator", function (e, t, r) {
      var n = e.parseElement("mathExpression", r);
      var i = r.matchAnyOpToken("<", ">", "<=", ">=", "==", "===", "!=", "!==");
      var a = i ? i.value : null;
      var o = true;
      var s = false;
      if (a == null) {
        if (r.matchToken("is") || r.matchToken("am")) {
          if (r.matchToken("not")) {
            if (r.matchToken("in")) {
              a = "not in";
            } else if (r.matchToken("a")) {
              a = "not a";
              s = true;
            } else if (r.matchToken("empty")) {
              a = "not empty";
              o = false;
            } else {
              if (r.matchToken("really")) {
                a = "!==";
              } else {
                a = "!=";
              }
              if (r.matchToken("equal")) {
                r.matchToken("to");
              }
            }
          } else if (r.matchToken("in")) {
            a = "in";
          } else if (r.matchToken("a")) {
            a = "a";
            s = true;
          } else if (r.matchToken("empty")) {
            a = "empty";
            o = false;
          } else if (r.matchToken("less")) {
            r.requireToken("than");
            if (r.matchToken("or")) {
              r.requireToken("equal");
              r.requireToken("to");
              a = "<=";
            } else {
              a = "<";
            }
          } else if (r.matchToken("greater")) {
            r.requireToken("than");
            if (r.matchToken("or")) {
              r.requireToken("equal");
              r.requireToken("to");
              a = ">=";
            } else {
              a = ">";
            }
          } else {
            if (r.matchToken("really")) {
              a = "===";
            } else {
              a = "==";
            }
            if (r.matchToken("equal")) {
              r.matchToken("to");
            }
          }
        } else if (r.matchToken("equals")) {
          a = "==";
        } else if (r.matchToken("really")) {
          r.requireToken("equals");
          a = "===";
        } else if (r.matchToken("exist") || r.matchToken("exists")) {
          a = "exist";
          o = false;
        } else if (r.matchToken("matches") || r.matchToken("match")) {
          a = "match";
        } else if (r.matchToken("contains") || r.matchToken("contain")) {
          a = "contain";
        } else if (r.matchToken("includes") || r.matchToken("include")) {
          a = "include";
        } else if (r.matchToken("do") || r.matchToken("does")) {
          r.requireToken("not");
          if (r.matchToken("matches") || r.matchToken("match")) {
            a = "not match";
          } else if (r.matchToken("contains") || r.matchToken("contain")) {
            a = "not contain";
          } else if (r.matchToken("exist") || r.matchToken("exist")) {
            a = "not exist";
            o = false;
          } else if (r.matchToken("include")) {
            a = "not include";
          } else {
            e.raiseParseError(r, "Expected matches or contains");
          }
        }
      }
      if (a) {
        var u, l, c;
        if (s) {
          u = r.requireTokenType("IDENTIFIER");
          l = !r.matchOpToken("!");
        } else if (o) {
          c = e.requireElement("mathExpression", r);
          if (a === "match" || a === "not match") {
            c = c.css ? c.css : c;
          }
        }
        var m = n;
        n = {
          type: "comparisonOperator",
          operator: a,
          typeName: u,
          nullOk: l,
          lhs: n,
          rhs: c,
          args: [n, c],
          op: function (e, r, n) {
            if (a === "==") {
              return r == n;
            } else if (a === "!=") {
              return r != n;
            }
            if (a === "===") {
              return r === n;
            } else if (a === "!==") {
              return r !== n;
            }
            if (a === "match") {
              return r != null && p(m, r, n);
            }
            if (a === "not match") {
              return r == null || !p(m, r, n);
            }
            if (a === "in") {
              return n != null && f(c, n, r);
            }
            if (a === "not in") {
              return n == null || !f(c, n, r);
            }
            if (a === "contain") {
              return r != null && f(m, r, n);
            }
            if (a === "not contain") {
              return r == null || !f(m, r, n);
            }
            if (a === "include") {
              return r != null && f(m, r, n);
            }
            if (a === "not include") {
              return r == null || !f(m, r, n);
            }
            if (a === "===") {
              return r === n;
            } else if (a === "!==") {
              return r !== n;
            } else if (a === "<") {
              return r < n;
            } else if (a === ">") {
              return r > n;
            } else if (a === "<=") {
              return r <= n;
            } else if (a === ">=") {
              return r >= n;
            } else if (a === "empty") {
              return t.isEmpty(r);
            } else if (a === "not empty") {
              return !t.isEmpty(r);
            } else if (a === "exist") {
              return t.doesExist(r);
            } else if (a === "not exist") {
              return !t.doesExist(r);
            } else if (a === "a") {
              return t.typeCheck(r, u.value, l);
            } else if (a === "not a") {
              return !t.typeCheck(r, u.value, l);
            } else {
              throw "Unknown comparison : " + a;
            }
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
      }
      return n;
    });
    t.addGrammarElement("comparisonExpression", function (e, t, r) {
      return e.parseAnyOf(["comparisonOperator", "mathExpression"], r);
    });
    t.addGrammarElement("logicalOperator", function (e, t, r) {
      var n = e.parseElement("comparisonExpression", r);
      var i,
        a = null;
      i = r.matchToken("and") || r.matchToken("or");
      while (i) {
        a = a || i;
        if (a.value !== i.value) {
          e.raiseParseError(
            r,
            "You must parenthesize logical operations with different operators",
          );
        }
        var o = e.requireElement("comparisonExpression", r);
        const s = i.value;
        n = {
          type: "logicalOperator",
          operator: s,
          lhs: n,
          rhs: o,
          args: [n, o],
          op: function (e, t, r) {
            if (s === "and") {
              return t && r;
            } else {
              return t || r;
            }
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
        i = r.matchToken("and") || r.matchToken("or");
      }
      return n;
    });
    t.addGrammarElement("logicalExpression", function (e, t, r) {
      return e.parseAnyOf(["logicalOperator", "mathExpression"], r);
    });
    t.addGrammarElement("asyncExpression", function (e, t, r) {
      if (r.matchToken("async")) {
        var n = e.requireElement("logicalExpression", r);
        var i = {
          type: "asyncExpression",
          value: n,
          evaluate: function (e) {
            return { asyncWrapper: true, value: this.value.evaluate(e) };
          },
        };
        return i;
      } else {
        return e.parseElement("logicalExpression", r);
      }
    });
    t.addGrammarElement("expression", function (e, t, r) {
      r.matchToken("the");
      return e.parseElement("asyncExpression", r);
    });
    t.addGrammarElement("assignableExpression", function (e, t, r) {
      r.matchToken("the");
      var n = e.parseElement("primaryExpression", r);
      if (
        n &&
        (n.type === "symbol" ||
          n.type === "ofExpression" ||
          n.type === "propertyAccess" ||
          n.type === "attributeRefAccess" ||
          n.type === "attributeRef" ||
          n.type === "styleRef" ||
          n.type === "arrayIndex" ||
          n.type === "possessive")
      ) {
        return n;
      } else {
        e.raiseParseError(
          r,
          "A target expression must be writable.  The expression type '" +
            (n && n.type) +
            "' is not.",
        );
      }
      return n;
    });
    t.addGrammarElement("hyperscript", function (e, t, r) {
      var n = [];
      if (r.hasMore()) {
        while (
          e.featureStart(r.currentToken()) ||
          r.currentToken().value === "("
        ) {
          var i = e.requireElement("feature", r);
          n.push(i);
          r.matchToken("end");
        }
      }
      return {
        type: "hyperscript",
        features: n,
        apply: function (e, t, r) {
          for (const i of n) {
            i.install(e, t, r);
          }
        },
      };
    });
    var v = function (e) {
      var t = [];
      if (
        e.token(0).value === "(" &&
        (e.token(1).value === ")" ||
          e.token(2).value === "," ||
          e.token(2).value === ")")
      ) {
        e.matchOpToken("(");
        do {
          t.push(e.requireTokenType("IDENTIFIER"));
        } while (e.matchOpToken(","));
        e.requireOpToken(")");
      }
      return t;
    };
    t.addFeature("on", function (e, t, r) {
      if (!r.matchToken("on")) return;
      var n = false;
      if (r.matchToken("every")) {
        n = true;
      }
      var i = [];
      var a = null;
      do {
        var o = e.requireElement("eventName", r, "Expected event name");
        var s = o.evaluate();
        if (a) {
          a = a + " or " + s;
        } else {
          a = "on " + s;
        }
        var u = v(r);
        var l = null;
        if (r.matchOpToken("[")) {
          l = e.requireElement("expression", r);
          r.requireOpToken("]");
        }
        var c, f, m;
        if (r.currentToken().type === "NUMBER") {
          var p = r.consumeToken();
          if (!p.value) return;
          c = parseInt(p.value);
          if (r.matchToken("to")) {
            var h = r.consumeToken();
            if (!h.value) return;
            f = parseInt(h.value);
          } else if (r.matchToken("and")) {
            m = true;
            r.requireToken("on");
          }
        }
        var d, E;
        if (s === "intersection") {
          d = {};
          if (r.matchToken("with")) {
            d["with"] = e.requireElement("expression", r).evaluate();
          }
          if (r.matchToken("having")) {
            do {
              if (r.matchToken("margin")) {
                d["rootMargin"] = e.requireElement("stringLike", r).evaluate();
              } else if (r.matchToken("threshold")) {
                d["threshold"] = e.requireElement("expression", r).evaluate();
              } else {
                e.raiseParseError(
                  r,
                  "Unknown intersection config specification",
                );
              }
            } while (r.matchToken("and"));
          }
        } else if (s === "mutation") {
          E = {};
          if (r.matchToken("of")) {
            do {
              if (r.matchToken("anything")) {
                E["attributes"] = true;
                E["subtree"] = true;
                E["characterData"] = true;
                E["childList"] = true;
              } else if (r.matchToken("childList")) {
                E["childList"] = true;
              } else if (r.matchToken("attributes")) {
                E["attributes"] = true;
                E["attributeOldValue"] = true;
              } else if (r.matchToken("subtree")) {
                E["subtree"] = true;
              } else if (r.matchToken("characterData")) {
                E["characterData"] = true;
                E["characterDataOldValue"] = true;
              } else if (r.currentToken().type === "ATTRIBUTE_REF") {
                var T = r.consumeToken();
                if (E["attributeFilter"] == null) {
                  E["attributeFilter"] = [];
                }
                if (T.value.indexOf("@") == 0) {
                  E["attributeFilter"].push(T.value.substring(1));
                } else {
                  e.raiseParseError(
                    r,
                    "Only shorthand attribute references are allowed here",
                  );
                }
              } else {
                e.raiseParseError(r, "Unknown mutation config specification");
              }
            } while (r.matchToken("or"));
          } else {
            E["attributes"] = true;
            E["characterData"] = true;
            E["childList"] = true;
          }
        }
        var y = null;
        var k = false;
        if (r.matchToken("from")) {
          if (r.matchToken("elsewhere")) {
            k = true;
          } else {
            r.pushFollow("or");
            try {
              y = e.requireElement("expression", r);
            } finally {
              r.popFollow();
            }
            if (!y) {
              e.raiseParseError(
                r,
                'Expected either target value or "elsewhere".',
              );
            }
          }
        }
        if (y === null && k === false && r.matchToken("elsewhere")) {
          k = true;
        }
        if (r.matchToken("in")) {
          var x = e.parseElement("unaryExpression", r);
        }
        if (r.matchToken("debounced")) {
          r.requireToken("at");
          var g = e.requireElement("unaryExpression", r);
          var b = g.evaluate({});
        } else if (r.matchToken("throttled")) {
          r.requireToken("at");
          var g = e.requireElement("unaryExpression", r);
          var w = g.evaluate({});
        }
        i.push({
          execCount: 0,
          every: n,
          on: s,
          args: u,
          filter: l,
          from: y,
          inExpr: x,
          elsewhere: k,
          startCount: c,
          endCount: f,
          unbounded: m,
          debounceTime: b,
          throttleTime: w,
          mutationSpec: E,
          intersectionSpec: d,
          debounced: undefined,
          lastExec: undefined,
        });
      } while (r.matchToken("or"));
      var S = true;
      if (!n) {
        if (r.matchToken("queue")) {
          if (r.matchToken("all")) {
            var q = true;
            var S = false;
          } else if (r.matchToken("first")) {
            var N = true;
          } else if (r.matchToken("none")) {
            var I = true;
          } else {
            r.requireToken("last");
          }
        }
      }
      var C = e.requireElement("commandList", r);
      e.ensureTerminated(C);
      var R, A;
      if (r.matchToken("catch")) {
        R = r.requireTokenType("IDENTIFIER").value;
        A = e.requireElement("commandList", r);
        e.ensureTerminated(A);
      }
      if (r.matchToken("finally")) {
        var L = e.requireElement("commandList", r);
        e.ensureTerminated(L);
      }
      var O = {
        displayName: a,
        events: i,
        start: C,
        every: n,
        execCount: 0,
        errorHandler: A,
        errorSymbol: R,
        execute: function (e) {
          let r = t.getEventQueueFor(e.me, O);
          if (r.executing && n === false) {
            if (I || (N && r.queue.length > 0)) {
              return;
            }
            if (S) {
              r.queue.length = 0;
            }
            r.queue.push(e);
            return;
          }
          O.execCount++;
          r.executing = true;
          e.meta.onHalt = function () {
            r.executing = false;
            var e = r.queue.shift();
            if (e) {
              setTimeout(function () {
                O.execute(e);
              }, 1);
            }
          };
          e.meta.reject = function (r) {
            console.error(r.message ? r.message : r);
            var n = t.getHyperTrace(e, r);
            if (n) {
              n.print();
            }
            t.triggerEvent(e.me, "exception", { error: r });
          };
          C.execute(e);
        },
        install: function (e, r) {
          for (const r of O.events) {
            var n;
            if (r.elsewhere) {
              n = [document];
            } else if (r.from) {
              n = r.from.evaluate(t.makeContext(e, O, e, null));
            } else {
              n = [e];
            }
            t.implicitLoop(n, function (n) {
              var i = r.on;
              if (n == null) {
                console.warn(
                  "'%s' feature ignored because target does not exists:",
                  a,
                  e,
                );
                return;
              }
              if (r.mutationSpec) {
                i = "hyperscript:mutation";
                const e = new MutationObserver(function (e, r) {
                  if (!O.executing) {
                    t.triggerEvent(n, i, { mutationList: e, observer: r });
                  }
                });
                e.observe(n, r.mutationSpec);
              }
              if (r.intersectionSpec) {
                i = "hyperscript:intersection";
                const e = new IntersectionObserver(function (r) {
                  for (const o of r) {
                    var a = { observer: e };
                    a = Object.assign(a, o);
                    a["intersecting"] = o.isIntersecting;
                    t.triggerEvent(n, i, a);
                  }
                }, r.intersectionSpec);
                e.observe(n);
              }
              var o = n.addEventListener || n.on;
              o.call(n, i, function a(o) {
                if (
                  typeof Node !== "undefined" &&
                  e instanceof Node &&
                  n !== e &&
                  !e.isConnected
                ) {
                  n.removeEventListener(i, a);
                  return;
                }
                var s = t.makeContext(e, O, e, o);
                if (r.elsewhere && e.contains(o.target)) {
                  return;
                }
                if (r.from) {
                  s.result = n;
                }
                for (const e of r.args) {
                  let t = s.event[e.value];
                  if (t !== undefined) {
                    s.locals[e.value] = t;
                  } else if ("detail" in s.event) {
                    s.locals[e.value] = s.event["detail"][e.value];
                  }
                }
                s.meta.errorHandler = A;
                s.meta.errorSymbol = R;
                s.meta.finallyHandler = L;
                if (r.filter) {
                  var u = s.meta.context;
                  s.meta.context = s.event;
                  try {
                    var l = r.filter.evaluate(s);
                    if (l) {
                    } else {
                      return;
                    }
                  } finally {
                    s.meta.context = u;
                  }
                }
                if (r.inExpr) {
                  var c = o.target;
                  while (true) {
                    if (c.matches && c.matches(r.inExpr.css)) {
                      s.result = c;
                      break;
                    } else {
                      c = c.parentElement;
                      if (c == null) {
                        return;
                      }
                    }
                  }
                }
                r.execCount++;
                if (r.startCount) {
                  if (r.endCount) {
                    if (
                      r.execCount < r.startCount ||
                      r.execCount > r.endCount
                    ) {
                      return;
                    }
                  } else if (r.unbounded) {
                    if (r.execCount < r.startCount) {
                      return;
                    }
                  } else if (r.execCount !== r.startCount) {
                    return;
                  }
                }
                if (r.debounceTime) {
                  if (r.debounced) {
                    clearTimeout(r.debounced);
                  }
                  r.debounced = setTimeout(function () {
                    O.execute(s);
                  }, r.debounceTime);
                  return;
                }
                if (r.throttleTime) {
                  if (r.lastExec && Date.now() < r.lastExec + r.throttleTime) {
                    return;
                  } else {
                    r.lastExec = Date.now();
                  }
                }
                O.execute(s);
              });
            });
          }
        },
      };
      e.setParent(C, O);
      return O;
    });
    t.addFeature("def", function (e, t, r) {
      if (!r.matchToken("def")) return;
      var n = e.requireElement("dotOrColonPath", r);
      var i = n.evaluate();
      var a = i.split(".");
      var o = a.pop();
      var s = [];
      if (r.matchOpToken("(")) {
        if (r.matchOpToken(")")) {
        } else {
          do {
            s.push(r.requireTokenType("IDENTIFIER"));
          } while (r.matchOpToken(","));
          r.requireOpToken(")");
        }
      }
      var u = e.requireElement("commandList", r);
      var l, c;
      if (r.matchToken("catch")) {
        l = r.requireTokenType("IDENTIFIER").value;
        c = e.parseElement("commandList", r);
      }
      if (r.matchToken("finally")) {
        var f = e.requireElement("commandList", r);
        e.ensureTerminated(f);
      }
      var m = {
        displayName:
          o +
          "(" +
          s
            .map(function (e) {
              return e.value;
            })
            .join(", ") +
          ")",
        name: o,
        args: s,
        start: u,
        errorHandler: c,
        errorSymbol: l,
        finallyHandler: f,
        install: function (e, r) {
          var n = function () {
            var n = t.makeContext(r, m, e, null);
            n.meta.errorHandler = c;
            n.meta.errorSymbol = l;
            n.meta.finallyHandler = f;
            for (var i = 0; i < s.length; i++) {
              var a = s[i];
              var o = arguments[i];
              if (a) {
                n.locals[a.value] = o;
              }
            }
            n.meta.caller = arguments[s.length];
            if (n.meta.caller) {
              n.meta.callingCommand = n.meta.caller.meta.command;
            }
            var p,
              h = null;
            var v = new Promise(function (e, t) {
              p = e;
              h = t;
            });
            u.execute(n);
            if (n.meta.returned) {
              return n.meta.returnValue;
            } else {
              n.meta.resolve = p;
              n.meta.reject = h;
              return v;
            }
          };
          n.hyperfunc = true;
          n.hypername = i;
          t.assignToNamespace(e, a, o, n);
        },
      };
      e.ensureTerminated(u);
      if (c) {
        e.ensureTerminated(c);
      }
      e.setParent(u, m);
      return m;
    });
    t.addFeature("set", function (e, t, r) {
      let n = e.parseElement("setCommand", r);
      if (n) {
        if (n.target.scope !== "element") {
          e.raiseParseError(
            r,
            "variables declared at the feature level must be element scoped.",
          );
        }
        let i = {
          start: n,
          install: function (e, r) {
            n && n.execute(t.makeContext(e, i, e, null));
          },
        };
        e.ensureTerminated(n);
        return i;
      }
    });
    t.addFeature("init", function (e, t, r) {
      if (!r.matchToken("init")) return;
      var n = r.matchToken("immediately");
      var i = e.requireElement("commandList", r);
      var a = {
        start: i,
        install: function (e, r) {
          let o = function () {
            i && i.execute(t.makeContext(e, a, e, null));
          };
          if (n) {
            o();
          } else {
            setTimeout(o, 0);
          }
        },
      };
      e.ensureTerminated(i);
      e.setParent(i, a);
      return a;
    });
    t.addFeature("worker", function (e, t, r) {
      if (r.matchToken("worker")) {
        e.raiseParseError(
          r,
          "In order to use the 'worker' feature, include " +
            "the _hyperscript worker plugin. See " +
            "https://hyperscript.org/features/worker/ for " +
            "more info.",
        );
        return undefined;
      }
    });
    t.addFeature("behavior", function (t, r, n) {
      if (!n.matchToken("behavior")) return;
      var i = t.requireElement("dotOrColonPath", n).evaluate();
      var a = i.split(".");
      var o = a.pop();
      var s = [];
      if (n.matchOpToken("(") && !n.matchOpToken(")")) {
        do {
          s.push(n.requireTokenType("IDENTIFIER").value);
        } while (n.matchOpToken(","));
        n.requireOpToken(")");
      }
      var u = t.requireElement("hyperscript", n);
      for (var l = 0; l < u.features.length; l++) {
        var c = u.features[l];
        c.behavior = i;
      }
      return {
        install: function (t, n) {
          r.assignToNamespace(
            e.document && e.document.body,
            a,
            o,
            function (e, t, n) {
              var a = r.getInternalData(e);
              var o = h(a, i + "Scope");
              for (var l = 0; l < s.length; l++) {
                o[s[l]] = n[s[l]];
              }
              u.apply(e, t);
            },
          );
        },
      };
    });
    t.addFeature("install", function (t, r, n) {
      if (!n.matchToken("install")) return;
      var i = t.requireElement("dotOrColonPath", n).evaluate();
      var a = i.split(".");
      var o = t.parseElement("namedArgumentList", n);
      var s;
      return (s = {
        install: function (t, n) {
          r.unifiedEval(
            {
              args: [o],
              op: function (r, o) {
                var s = e;
                for (var u = 0; u < a.length; u++) {
                  s = s[a[u]];
                  if (typeof s !== "object" && typeof s !== "function")
                    throw new Error("No such behavior defined as " + i);
                }
                if (!(s instanceof Function))
                  throw new Error(i + " is not a behavior");
                s(t, n, o);
              },
            },
            r.makeContext(t, s, t, null),
          );
        },
      });
    });
    t.addGrammarElement("jsBody", function (e, t, r) {
      var n = r.currentToken().start;
      var i = r.currentToken();
      var a = [];
      var o = "";
      var s = false;
      while (r.hasMore()) {
        i = r.consumeToken();
        var u = r.token(0, true);
        if (u.type === "IDENTIFIER" && u.value === "end") {
          break;
        }
        if (s) {
          if (i.type === "IDENTIFIER" || i.type === "NUMBER") {
            o += i.value;
          } else {
            if (o !== "") a.push(o);
            o = "";
            s = false;
          }
        } else if (i.type === "IDENTIFIER" && i.value === "function") {
          s = true;
        }
      }
      var l = i.end + 1;
      return {
        type: "jsBody",
        exposedFunctionNames: a,
        jsSource: r.source.substring(n, l),
      };
    });
    t.addFeature("js", function (t, r, n) {
      if (!n.matchToken("js")) return;
      var i = t.requireElement("jsBody", n);
      var a =
        i.jsSource +
        "\nreturn { " +
        i.exposedFunctionNames
          .map(function (e) {
            return e + ":" + e;
          })
          .join(",") +
        " } ";
      var o = new Function(a);
      return {
        jsSource: a,
        function: o,
        exposedFunctionNames: i.exposedFunctionNames,
        install: function () {
          Object.assign(e, o());
        },
      };
    });
    t.addCommand("js", function (t, r, n) {
      if (!n.matchToken("js")) return;
      var i = [];
      if (n.matchOpToken("(")) {
        if (n.matchOpToken(")")) {
        } else {
          do {
            var a = n.requireTokenType("IDENTIFIER");
            i.push(a.value);
          } while (n.matchOpToken(","));
          n.requireOpToken(")");
        }
      }
      var o = t.requireElement("jsBody", n);
      n.matchToken("end");
      var s = E(Function, i.concat([o.jsSource]));
      var u = {
        jsSource: o.jsSource,
        function: s,
        inputs: i,
        op: function (t) {
          var n = [];
          i.forEach(function (e) {
            n.push(r.resolveSymbol(e, t, "default"));
          });
          var a = s.apply(e, n);
          if (a && typeof a.then === "function") {
            return new Promise(function (e) {
              a.then(function (n) {
                t.result = n;
                e(r.findNext(this, t));
              });
            });
          } else {
            t.result = a;
            return r.findNext(this, t);
          }
        },
      };
      return u;
    });
    t.addCommand("async", function (e, t, r) {
      if (!r.matchToken("async")) return;
      if (r.matchToken("do")) {
        var n = e.requireElement("commandList", r);
        var i = n;
        while (i.next) i = i.next;
        i.next = t.HALT;
        r.requireToken("end");
      } else {
        var n = e.requireElement("command", r);
      }
      var a = {
        body: n,
        op: function (e) {
          setTimeout(function () {
            n.execute(e);
          });
          return t.findNext(this, e);
        },
      };
      e.setParent(n, a);
      return a;
    });
    t.addCommand("tell", function (e, t, r) {
      var n = r.currentToken();
      if (!r.matchToken("tell")) return;
      var i = e.requireElement("expression", r);
      var a = e.requireElement("commandList", r);
      if (r.hasMore() && !e.featureStart(r.currentToken())) {
        r.requireToken("end");
      }
      var o = "tell_" + n.start;
      var s = {
        value: i,
        body: a,
        args: [i],
        resolveNext: function (e) {
          var r = e.meta.iterators[o];
          if (r.index < r.value.length) {
            e.you = r.value[r.index++];
            return a;
          } else {
            e.you = r.originalYou;
            if (this.next) {
              return this.next;
            } else {
              return t.findNext(this.parent, e);
            }
          }
        },
        op: function (e, t) {
          if (t == null) {
            t = [];
          } else if (!(Array.isArray(t) || t instanceof NodeList)) {
            t = [t];
          }
          e.meta.iterators[o] = { originalYou: e.you, index: 0, value: t };
          return this.resolveNext(e);
        },
      };
      e.setParent(a, s);
      return s;
    });
    t.addCommand("wait", function (e, t, r) {
      if (!r.matchToken("wait")) return;
      var n;
      if (r.matchToken("for")) {
        r.matchToken("a");
        var i = [];
        do {
          var a = r.token(0);
          if (a.type === "NUMBER" || a.type === "L_PAREN") {
            i.push({ time: e.requireElement("expression", r).evaluate() });
          } else {
            i.push({
              name: e
                .requireElement("dotOrColonPath", r, "Expected event name")
                .evaluate(),
              args: v(r),
            });
          }
        } while (r.matchToken("or"));
        if (r.matchToken("from")) {
          var o = e.requireElement("expression", r);
        }
        n = {
          event: i,
          on: o,
          args: [o],
          op: function (e, r) {
            var n = r ? r : e.me;
            if (!(n instanceof EventTarget))
              throw new Error(
                "Not a valid event target: " + this.on.sourceFor(),
              );
            return new Promise((r) => {
              var a = false;
              for (const s of i) {
                var o = (n) => {
                  e.result = n;
                  if (s.args) {
                    for (const t of s.args) {
                      e.locals[t.value] =
                        n[t.value] || (n.detail ? n.detail[t.value] : null);
                    }
                  }
                  if (!a) {
                    a = true;
                    r(t.findNext(this, e));
                  }
                };
                if (s.name) {
                  n.addEventListener(s.name, o, { once: true });
                } else if (s.time != null) {
                  setTimeout(o, s.time, s.time);
                }
              }
            });
          },
        };
        return n;
      } else {
        var s;
        if (r.matchToken("a")) {
          r.requireToken("tick");
          s = 0;
        } else {
          s = e.requireElement("expression", r);
        }
        n = {
          type: "waitCmd",
          time: s,
          args: [s],
          op: function (e, r) {
            return new Promise((n) => {
              setTimeout(() => {
                n(t.findNext(this, e));
              }, r);
            });
          },
          execute: function (e) {
            return t.unifiedExec(this, e);
          },
        };
        return n;
      }
    });
    t.addGrammarElement("dotOrColonPath", function (e, t, r) {
      var n = r.matchTokenType("IDENTIFIER");
      if (n) {
        var i = [n.value];
        var a = r.matchOpToken(".") || r.matchOpToken(":");
        if (a) {
          do {
            i.push(r.requireTokenType("IDENTIFIER", "NUMBER").value);
          } while (r.matchOpToken(a.value));
        }
        return {
          type: "dotOrColonPath",
          path: i,
          evaluate: function () {
            return i.join(a ? a.value : "");
          },
        };
      }
    });
    t.addGrammarElement("eventName", function (e, t, r) {
      var n;
      if ((n = r.matchTokenType("STRING"))) {
        return {
          evaluate: function () {
            return n.value;
          },
        };
      }
      return e.parseElement("dotOrColonPath", r);
    });
    function d(e, t, r, n) {
      var i = t.requireElement("eventName", n);
      var a = t.parseElement("namedArgumentList", n);
      if (
        (e === "send" && n.matchToken("to")) ||
        (e === "trigger" && n.matchToken("on"))
      ) {
        var o = t.requireElement("expression", n);
      } else {
        var o = t.requireElement("implicitMeTarget", n);
      }
      var s = {
        eventName: i,
        details: a,
        to: o,
        args: [o, i, a],
        op: function (e, t, n, i) {
          r.nullCheck(t, o);
          r.implicitLoop(t, function (t) {
            r.triggerEvent(t, n, i, e.me);
          });
          return r.findNext(s, e);
        },
      };
      return s;
    }
    t.addCommand("trigger", function (e, t, r) {
      if (r.matchToken("trigger")) {
        return d("trigger", e, t, r);
      }
    });
    t.addCommand("send", function (e, t, r) {
      if (r.matchToken("send")) {
        return d("send", e, t, r);
      }
    });
    var T = function (e, t, r, n) {
      if (n) {
        if (e.commandBoundary(r.currentToken())) {
          e.raiseParseError(
            r,
            "'return' commands must return a value.  If you do not wish to return a value, use 'exit' instead.",
          );
        } else {
          var i = e.requireElement("expression", r);
        }
      }
      var a = {
        value: i,
        args: [i],
        op: function (e, r) {
          var n = e.meta.resolve;
          e.meta.returned = true;
          e.meta.returnValue = r;
          if (n) {
            if (r) {
              n(r);
            } else {
              n();
            }
          }
          return t.HALT;
        },
      };
      return a;
    };
    t.addCommand("return", function (e, t, r) {
      if (r.matchToken("return")) {
        return T(e, t, r, true);
      }
    });
    t.addCommand("exit", function (e, t, r) {
      if (r.matchToken("exit")) {
        return T(e, t, r, false);
      }
    });
    t.addCommand("halt", function (e, t, r) {
      if (r.matchToken("halt")) {
        if (r.matchToken("the")) {
          r.requireToken("event");
          if (r.matchOpToken("'")) {
            r.requireToken("s");
          }
          var n = true;
        }
        if (r.matchToken("bubbling")) {
          var i = true;
        } else if (r.matchToken("default")) {
          var a = true;
        }
        var o = T(e, t, r, false);
        var s = {
          keepExecuting: true,
          bubbling: i,
          haltDefault: a,
          exit: o,
          op: function (e) {
            if (e.event) {
              if (i) {
                e.event.stopPropagation();
              } else if (a) {
                e.event.preventDefault();
              } else {
                e.event.stopPropagation();
                e.event.preventDefault();
              }
              if (n) {
                return t.findNext(this, e);
              } else {
                return o;
              }
            }
          },
        };
        return s;
      }
    });
    t.addCommand("log", function (e, t, r) {
      if (!r.matchToken("log")) return;
      var n = [e.parseElement("expression", r)];
      while (r.matchOpToken(",")) {
        n.push(e.requireElement("expression", r));
      }
      if (r.matchToken("with")) {
        var i = e.requireElement("expression", r);
      }
      var a = {
        exprs: n,
        withExpr: i,
        args: [i, n],
        op: function (e, r, n) {
          if (r) {
            r.apply(null, n);
          } else {
            console.log.apply(null, n);
          }
          return t.findNext(this, e);
        },
      };
      return a;
    });
    t.addCommand("beep!", function (e, t, r) {
      if (!r.matchToken("beep!")) return;
      var n = [e.parseElement("expression", r)];
      while (r.matchOpToken(",")) {
        n.push(e.requireElement("expression", r));
      }
      var i = {
        exprs: n,
        args: [n],
        op: function (e, r) {
          for (let i = 0; i < n.length; i++) {
            const a = n[i];
            const o = r[i];
            t.beepValueToConsole(e.me, a, o);
          }
          return t.findNext(this, e);
        },
      };
      return i;
    });
    t.addCommand("throw", function (e, t, r) {
      if (!r.matchToken("throw")) return;
      var n = e.requireElement("expression", r);
      var i = {
        expr: n,
        args: [n],
        op: function (e, r) {
          t.registerHyperTrace(e, r);
          throw r;
        },
      };
      return i;
    });
    var y = function (e, t, r) {
      var n = e.requireElement("expression", r);
      var i = {
        expr: n,
        args: [n],
        op: function (e, r) {
          e.result = r;
          return t.findNext(i, e);
        },
      };
      return i;
    };
    t.addCommand("call", function (e, t, r) {
      if (!r.matchToken("call")) return;
      var n = y(e, t, r);
      if (n.expr && n.expr.type !== "functionCall") {
        e.raiseParseError(r, "Must be a function invocation");
      }
      return n;
    });
    t.addCommand("get", function (e, t, r) {
      if (r.matchToken("get")) {
        return y(e, t, r);
      }
    });
    t.addCommand("make", function (e, t, r) {
      if (!r.matchToken("make")) return;
      r.matchToken("a") || r.matchToken("an");
      var n = e.requireElement("expression", r);
      var i = [];
      if (n.type !== "queryRef" && r.matchToken("from")) {
        do {
          i.push(e.requireElement("expression", r));
        } while (r.matchOpToken(","));
      }
      if (r.matchToken("called")) {
        var a = e.requireElement("symbol", r);
      }
      var o;
      if (n.type === "queryRef") {
        o = {
          op: function (e) {
            var r,
              i = "div",
              o,
              s = [];
            var u = /(?:(^|#|\.)([^#\. ]+))/g;
            while ((r = u.exec(n.css))) {
              if (r[1] === "") i = r[2].trim();
              else if (r[1] === "#") o = r[2].trim();
              else s.push(r[2].trim());
            }
            var l = document.createElement(i);
            if (o !== undefined) l.id = o;
            for (var c = 0; c < s.length; c++) {
              var f = s[c];
              l.classList.add(f);
            }
            e.result = l;
            if (a) {
              t.setSymbol(a.name, e, a.scope, l);
            }
            return t.findNext(this, e);
          },
        };
        return o;
      } else {
        o = {
          args: [n, i],
          op: function (e, r, n) {
            e.result = E(r, n);
            if (a) {
              t.setSymbol(a.name, e, a.scope, e.result);
            }
            return t.findNext(this, e);
          },
        };
        return o;
      }
    });
    t.addGrammarElement("pseudoCommand", function (e, t, r) {
      let n = r.token(1);
      if (!(n && n.op && (n.value === "." || n.value === "("))) {
        return null;
      }
      var i = e.requireElement("primaryExpression", r);
      var a = i.root;
      var o = i;
      while (a.root != null) {
        o = o.root;
        a = a.root;
      }
      if (i.type !== "functionCall") {
        e.raiseParseError(r, "Pseudo-commands must be function calls");
      }
      if (o.type === "functionCall" && o.root.root == null) {
        if (r.matchAnyToken("the", "to", "on", "with", "into", "from", "at")) {
          var s = e.requireElement("expression", r);
        } else if (r.matchToken("me")) {
          var s = e.requireElement("implicitMeTarget", r);
        }
      }
      var u;
      if (s) {
        u = {
          type: "pseudoCommand",
          root: s,
          argExressions: o.argExressions,
          args: [s, o.argExressions],
          op: function (e, r, n) {
            t.nullCheck(r, s);
            var i = r[o.root.name];
            t.nullCheck(i, o);
            if (i.hyperfunc) {
              n.push(e);
            }
            e.result = i.apply(r, n);
            return t.findNext(u, e);
          },
          execute: function (e) {
            return t.unifiedExec(this, e);
          },
        };
      } else {
        u = {
          type: "pseudoCommand",
          expr: i,
          args: [i],
          op: function (e, r) {
            e.result = r;
            return t.findNext(u, e);
          },
          execute: function (e) {
            return t.unifiedExec(this, e);
          },
        };
      }
      return u;
    });
    var k = function (e, t, r, n, i) {
      var a = n.type === "symbol";
      var o = n.type === "attributeRef";
      var s = n.type === "styleRef";
      var u = n.type === "arrayIndex";
      if (!(o || s || a) && n.root == null) {
        e.raiseParseError(
          r,
          "Can only put directly into symbols, not references",
        );
      }
      var l = null;
      var c = null;
      if (a) {
      } else if (o || s) {
        l = e.requireElement("implicitMeTarget", r);
        var f = n;
      } else if (u) {
        c = n.firstIndex;
        l = n.root;
      } else {
        c = n.prop ? n.prop.value : null;
        var f = n.attribute;
        l = n.root;
      }
      var m = {
        target: n,
        symbolWrite: a,
        value: i,
        args: [l, c, i],
        op: function (e, r, i, o) {
          if (a) {
            t.setSymbol(n.name, e, n.scope, o);
          } else {
            t.nullCheck(r, l);
            if (u) {
              r[i] = o;
            } else {
              t.implicitLoop(r, function (e) {
                if (f) {
                  if (f.type === "attributeRef") {
                    if (o == null) {
                      e.removeAttribute(f.name);
                    } else {
                      e.setAttribute(f.name, o);
                    }
                  } else {
                    e.style[f.name] = o;
                  }
                } else {
                  e[i] = o;
                }
              });
            }
          }
          return t.findNext(this, e);
        },
      };
      return m;
    };
    t.addCommand("default", function (e, t, r) {
      if (!r.matchToken("default")) return;
      var n = e.requireElement("assignableExpression", r);
      r.requireToken("to");
      var i = e.requireElement("expression", r);
      var a = k(e, t, r, n, i);
      var o = {
        target: n,
        value: i,
        setter: a,
        args: [n],
        op: function (e, r) {
          if (r) {
            return t.findNext(this, e);
          } else {
            return a;
          }
        },
      };
      a.parent = o;
      return o;
    });
    t.addCommand("set", function (e, t, r) {
      if (!r.matchToken("set")) return;
      if (r.currentToken().type === "L_BRACE") {
        var n = e.requireElement("objectLiteral", r);
        r.requireToken("on");
        var i = e.requireElement("expression", r);
        var a = {
          objectLiteral: n,
          target: i,
          args: [n, i],
          op: function (e, r, n) {
            Object.assign(n, r);
            return t.findNext(this, e);
          },
        };
        return a;
      }
      try {
        r.pushFollow("to");
        var i = e.requireElement("assignableExpression", r);
      } finally {
        r.popFollow();
      }
      r.requireToken("to");
      var o = e.requireElement("expression", r);
      return k(e, t, r, i, o);
    });
    t.addCommand("if", function (e, t, r) {
      if (!r.matchToken("if")) return;
      var n = e.requireElement("expression", r);
      r.matchToken("then");
      var i = e.parseElement("commandList", r);
      var a = false;
      let o = r.matchToken("else") || r.matchToken("otherwise");
      if (o) {
        let t = r.peekToken("if");
        a = t != null && t.line === o.line;
        if (a) {
          var s = e.parseElement("command", r);
        } else {
          var s = e.parseElement("commandList", r);
        }
      }
      if (r.hasMore() && !a) {
        r.requireToken("end");
      }
      var u = {
        expr: n,
        trueBranch: i,
        falseBranch: s,
        args: [n],
        op: function (e, r) {
          if (r) {
            return i;
          } else if (s) {
            return s;
          } else {
            return t.findNext(this, e);
          }
        },
      };
      e.setParent(i, u);
      e.setParent(s, u);
      return u;
    });
    var x = function (e, t, r, n) {
      var i = t.currentToken();
      var a;
      if (t.matchToken("for") || n) {
        var o = t.requireTokenType("IDENTIFIER");
        a = o.value;
        t.requireToken("in");
        var s = e.requireElement("expression", t);
      } else if (t.matchToken("in")) {
        a = "it";
        var s = e.requireElement("expression", t);
      } else if (t.matchToken("while")) {
        var u = e.requireElement("expression", t);
      } else if (t.matchToken("until")) {
        var l = true;
        if (t.matchToken("event")) {
          var c = e.requireElement("dotOrColonPath", t, "Expected event name");
          if (t.matchToken("from")) {
            var f = e.requireElement("expression", t);
          }
        } else {
          var u = e.requireElement("expression", t);
        }
      } else {
        if (
          !e.commandBoundary(t.currentToken()) &&
          t.currentToken().value !== "forever"
        ) {
          var m = e.requireElement("expression", t);
          t.requireToken("times");
        } else {
          t.matchToken("forever");
          var p = true;
        }
      }
      if (t.matchToken("index")) {
        var o = t.requireTokenType("IDENTIFIER");
        var h = o.value;
      }
      var v = e.parseElement("commandList", t);
      if (v && c) {
        var d = v;
        while (d.next) {
          d = d.next;
        }
        var E = {
          type: "waitATick",
          op: function () {
            return new Promise(function (e) {
              setTimeout(function () {
                e(r.findNext(E));
              }, 0);
            });
          },
        };
        d.next = E;
      }
      if (t.hasMore()) {
        t.requireToken("end");
      }
      if (a == null) {
        a = "_implicit_repeat_" + i.start;
        var T = a;
      } else {
        var T = a + "_" + i.start;
      }
      var y = {
        identifier: a,
        indexIdentifier: h,
        slot: T,
        expression: s,
        forever: p,
        times: m,
        until: l,
        event: c,
        on: f,
        whileExpr: u,
        resolveNext: function () {
          return this;
        },
        loop: v,
        args: [u, m],
        op: function (e, t, n) {
          var i = e.meta.iterators[T];
          var o = false;
          var s = null;
          if (this.forever) {
            o = true;
          } else if (this.until) {
            if (c) {
              o = e.meta.iterators[T].eventFired === false;
            } else {
              o = t !== true;
            }
          } else if (u) {
            o = t;
          } else if (n) {
            o = i.index < n;
          } else {
            var l = i.iterator.next();
            o = !l.done;
            s = l.value;
          }
          if (o) {
            if (i.value) {
              e.result = e.locals[a] = s;
            } else {
              e.result = i.index;
            }
            if (h) {
              e.locals[h] = i.index;
            }
            i.index++;
            return v;
          } else {
            e.meta.iterators[T] = null;
            return r.findNext(this.parent, e);
          }
        },
      };
      e.setParent(v, y);
      var k = {
        name: "repeatInit",
        args: [s, c, f],
        op: function (e, t, r, n) {
          var i = { index: 0, value: t, eventFired: false };
          e.meta.iterators[T] = i;
          if (t && t[Symbol.iterator]) {
            i.iterator = t[Symbol.iterator]();
          }
          if (c) {
            var a = n || e.me;
            a.addEventListener(
              r,
              function (t) {
                e.meta.iterators[T].eventFired = true;
              },
              { once: true },
            );
          }
          return y;
        },
        execute: function (e) {
          return r.unifiedExec(this, e);
        },
      };
      e.setParent(y, k);
      return k;
    };
    t.addCommand("repeat", function (e, t, r) {
      if (r.matchToken("repeat")) {
        return x(e, r, t, false);
      }
    });
    t.addCommand("for", function (e, t, r) {
      if (r.matchToken("for")) {
        return x(e, r, t, true);
      }
    });
    t.addCommand("continue", function (e, t, r) {
      if (!r.matchToken("continue")) return;
      var n = {
        op: function (t) {
          for (var n = this.parent; true; n = n.parent) {
            if (n == undefined) {
              e.raiseParseError(
                r,
                "Command `continue` cannot be used outside of a `repeat` loop.",
              );
            }
            if (n.loop != undefined) {
              return n.resolveNext(t);
            }
          }
        },
      };
      return n;
    });
    t.addCommand("break", function (e, t, r) {
      if (!r.matchToken("break")) return;
      var n = {
        op: function (n) {
          for (var i = this.parent; true; i = i.parent) {
            if (i == undefined) {
              e.raiseParseError(
                r,
                "Command `continue` cannot be used outside of a `repeat` loop.",
              );
            }
            if (i.loop != undefined) {
              return t.findNext(i.parent, n);
            }
          }
        },
      };
      return n;
    });
    t.addGrammarElement("stringLike", function (e, t, r) {
      return e.parseAnyOf(["string", "nakedString"], r);
    });
    t.addCommand("append", function (e, t, r) {
      if (!r.matchToken("append")) return;
      var n = null;
      var i = e.requireElement("expression", r);
      var a = {
        type: "symbol",
        evaluate: function (e) {
          return t.resolveSymbol("result", e);
        },
      };
      if (r.matchToken("to")) {
        n = e.requireElement("expression", r);
      } else {
        n = a;
      }
      var o = null;
      if (n.type === "symbol" || n.type === "attributeRef" || n.root != null) {
        o = k(e, t, r, n, a);
      }
      var s = {
        value: i,
        target: n,
        args: [n, i],
        op: function (e, r, n) {
          if (Array.isArray(r)) {
            r.push(n);
            return t.findNext(this, e);
          } else if (r instanceof Element) {
            r.innerHTML += n;
            return t.findNext(this, e);
          } else if (o) {
            e.result = (r || "") + n;
            return o;
          } else {
            throw Error("Unable to append a value!");
          }
        },
        execute: function (e) {
          return t.unifiedExec(this, e);
        },
      };
      if (o != null) {
        o.parent = s;
      }
      return s;
    });
    function g(e, t, r) {
      r.matchToken("at") || r.matchToken("from");
      const n = { includeStart: true, includeEnd: false };
      n.from = r.matchToken("start") ? 0 : e.requireElement("expression", r);
      if (r.matchToken("to") || r.matchOpToken("..")) {
        if (r.matchToken("end")) {
          n.toEnd = true;
        } else {
          n.to = e.requireElement("expression", r);
        }
      }
      if (r.matchToken("inclusive")) n.includeEnd = true;
      else if (r.matchToken("exclusive")) n.includeStart = false;
      return n;
    }
    class b {
      constructor(e, t) {
        this.re = e;
        this.str = t;
      }
      next() {
        const e = this.re.exec(this.str);
        if (e === null) return { done: true };
        else return { value: e };
      }
    }
    class w {
      constructor(e, t, r) {
        this.re = e;
        this.flags = t;
        this.str = r;
      }
      [Symbol.iterator]() {
        return new b(new RegExp(this.re, this.flags), this.str);
      }
    }
    t.addCommand("pick", (e, t, r) => {
      if (!r.matchToken("pick")) return;
      r.matchToken("the");
      if (
        r.matchToken("item") ||
        r.matchToken("items") ||
        r.matchToken("character") ||
        r.matchToken("characters")
      ) {
        const n = g(e, t, r);
        r.requireToken("from");
        const i = e.requireElement("expression", r);
        return {
          args: [i, n.from, n.to],
          op(e, r, i, a) {
            if (n.toEnd) a = r.length;
            if (!n.includeStart) i++;
            if (n.includeEnd) a++;
            if (a == null || a == undefined) a = i + 1;
            e.result = r.slice(i, a);
            return t.findNext(this, e);
          },
        };
      }
      if (r.matchToken("match")) {
        r.matchToken("of");
        const n = e.parseElement("expression", r);
        let i = "";
        if (r.matchOpToken("|")) {
          i = r.requireToken("identifier").value;
        }
        r.requireToken("from");
        const a = e.parseElement("expression", r);
        return {
          args: [a, n],
          op(e, r, n) {
            e.result = new RegExp(n, i).exec(r);
            return t.findNext(this, e);
          },
        };
      }
      if (r.matchToken("matches")) {
        r.matchToken("of");
        const n = e.parseElement("expression", r);
        let i = "gu";
        if (r.matchOpToken("|")) {
          i = "g" + r.requireToken("identifier").value.replace("g", "");
        }
        console.log("flags", i);
        r.requireToken("from");
        const a = e.parseElement("expression", r);
        return {
          args: [a, n],
          op(e, r, n) {
            e.result = new w(n, i, r);
            return t.findNext(this, e);
          },
        };
      }
    });
    t.addCommand("increment", function (e, t, r) {
      if (!r.matchToken("increment")) return;
      var n;
      var i = e.parseElement("assignableExpression", r);
      if (r.matchToken("by")) {
        n = e.requireElement("expression", r);
      }
      var a = {
        type: "implicitIncrementOp",
        target: i,
        args: [i, n],
        op: function (e, t, r) {
          t = t ? parseFloat(t) : 0;
          r = n ? parseFloat(r) : 1;
          var i = t + r;
          e.result = i;
          return i;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
      return k(e, t, r, i, a);
    });
    t.addCommand("decrement", function (e, t, r) {
      if (!r.matchToken("decrement")) return;
      var n;
      var i = e.parseElement("assignableExpression", r);
      if (r.matchToken("by")) {
        n = e.requireElement("expression", r);
      }
      var a = {
        type: "implicitDecrementOp",
        target: i,
        args: [i, n],
        op: function (e, t, r) {
          t = t ? parseFloat(t) : 0;
          r = n ? parseFloat(r) : 1;
          var i = t - r;
          e.result = i;
          return i;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
      return k(e, t, r, i, a);
    });
    function S(e, t) {
      var r = "text";
      var n;
      e.matchToken("a") || e.matchToken("an");
      if (e.matchToken("json") || e.matchToken("Object")) {
        r = "json";
      } else if (e.matchToken("response")) {
        r = "response";
      } else if (e.matchToken("html")) {
        r = "html";
      } else if (e.matchToken("text")) {
      } else {
        n = t.requireElement("dotOrColonPath", e).evaluate();
      }
      return { type: r, conversion: n };
    }
    t.addCommand("fetch", function (e, t, r) {
      if (!r.matchToken("fetch")) return;
      var n = e.requireElement("stringLike", r);
      if (r.matchToken("as")) {
        var i = S(r, e);
      }
      if (r.matchToken("with") && r.currentToken().value !== "{") {
        var a = e.parseElement("nakedNamedArgumentList", r);
      } else {
        var a = e.parseElement("objectLiteral", r);
      }
      if (i == null && r.matchToken("as")) {
        i = S(r, e);
      }
      var o = i ? i.type : "text";
      var s = i ? i.conversion : null;
      var u = {
        url: n,
        argExpressions: a,
        args: [n, a],
        op: function (e, r, n) {
          var i = n || {};
          i["sender"] = e.me;
          i["headers"] = i["headers"] || {};
          var a = new AbortController();
          let l = e.me.addEventListener(
            "fetch:abort",
            function () {
              a.abort();
            },
            { once: true },
          );
          i["signal"] = a.signal;
          t.triggerEvent(e.me, "hyperscript:beforeFetch", i);
          t.triggerEvent(e.me, "fetch:beforeRequest", i);
          n = i;
          var c = false;
          if (n.timeout) {
            setTimeout(function () {
              if (!c) {
                a.abort();
              }
            }, n.timeout);
          }
          return fetch(r, n)
            .then(function (r) {
              let n = { response: r };
              t.triggerEvent(e.me, "fetch:afterResponse", n);
              r = n.response;
              if (o === "response") {
                e.result = r;
                t.triggerEvent(e.me, "fetch:afterRequest", { result: r });
                c = true;
                return t.findNext(u, e);
              }
              if (o === "json") {
                return r.json().then(function (r) {
                  e.result = r;
                  t.triggerEvent(e.me, "fetch:afterRequest", { result: r });
                  c = true;
                  return t.findNext(u, e);
                });
              }
              return r.text().then(function (r) {
                if (s) r = t.convertValue(r, s);
                if (o === "html") r = t.convertValue(r, "Fragment");
                e.result = r;
                t.triggerEvent(e.me, "fetch:afterRequest", { result: r });
                c = true;
                return t.findNext(u, e);
              });
            })
            .catch(function (r) {
              t.triggerEvent(e.me, "fetch:error", { reason: r });
              throw r;
            })
            .finally(function () {
              e.me.removeEventListener("fetch:abort", l);
            });
        },
      };
      return u;
    });
  }
  function y(e) {
    e.addCommand("settle", function (e, t, r) {
      if (r.matchToken("settle")) {
        if (!e.commandBoundary(r.currentToken())) {
          var n = e.requireElement("expression", r);
        } else {
          var n = e.requireElement("implicitMeTarget", r);
        }
        var i = {
          type: "settleCmd",
          args: [n],
          op: function (e, r) {
            t.nullCheck(r, n);
            var a = null;
            var o = false;
            var s = false;
            var u = new Promise(function (e) {
              a = e;
            });
            r.addEventListener(
              "transitionstart",
              function () {
                s = true;
              },
              { once: true },
            );
            setTimeout(function () {
              if (!s && !o) {
                a(t.findNext(i, e));
              }
            }, 500);
            r.addEventListener(
              "transitionend",
              function () {
                if (!o) {
                  a(t.findNext(i, e));
                }
              },
              { once: true },
            );
            return u;
          },
          execute: function (e) {
            return t.unifiedExec(this, e);
          },
        };
        return i;
      }
    });
    e.addCommand("add", function (e, t, r) {
      if (r.matchToken("add")) {
        var n = e.parseElement("classRef", r);
        var i = null;
        var a = null;
        if (n == null) {
          i = e.parseElement("attributeRef", r);
          if (i == null) {
            a = e.parseElement("styleLiteral", r);
            if (a == null) {
              e.raiseParseError(
                r,
                "Expected either a class reference or attribute expression",
              );
            }
          }
        } else {
          var o = [n];
          while ((n = e.parseElement("classRef", r))) {
            o.push(n);
          }
        }
        if (r.matchToken("to")) {
          var s = e.requireElement("expression", r);
        } else {
          var s = e.requireElement("implicitMeTarget", r);
        }
        if (r.matchToken("when")) {
          if (a) {
            e.raiseParseError(
              r,
              "Only class and properties are supported with a when clause",
            );
          }
          var u = e.requireElement("expression", r);
        }
        if (o) {
          return {
            classRefs: o,
            to: s,
            args: [s, o],
            op: function (e, r, n) {
              t.nullCheck(r, s);
              t.forEach(n, function (n) {
                t.implicitLoop(r, function (r) {
                  if (u) {
                    e.result = r;
                    let i = t.evaluateNoPromise(u, e);
                    if (i) {
                      if (r instanceof Element) r.classList.add(n.className);
                    } else {
                      if (r instanceof Element) r.classList.remove(n.className);
                    }
                    e.result = null;
                  } else {
                    if (r instanceof Element) r.classList.add(n.className);
                  }
                });
              });
              return t.findNext(this, e);
            },
          };
        } else if (i) {
          return {
            type: "addCmd",
            attributeRef: i,
            to: s,
            args: [s],
            op: function (e, r, n) {
              t.nullCheck(r, s);
              t.implicitLoop(r, function (r) {
                if (u) {
                  e.result = r;
                  let n = t.evaluateNoPromise(u, e);
                  if (n) {
                    r.setAttribute(i.name, i.value);
                  } else {
                    r.removeAttribute(i.name);
                  }
                  e.result = null;
                } else {
                  r.setAttribute(i.name, i.value);
                }
              });
              return t.findNext(this, e);
            },
            execute: function (e) {
              return t.unifiedExec(this, e);
            },
          };
        } else {
          return {
            type: "addCmd",
            cssDeclaration: a,
            to: s,
            args: [s, a],
            op: function (e, r, n) {
              t.nullCheck(r, s);
              t.implicitLoop(r, function (e) {
                e.style.cssText += n;
              });
              return t.findNext(this, e);
            },
            execute: function (e) {
              return t.unifiedExec(this, e);
            },
          };
        }
      }
    });
    e.addGrammarElement("styleLiteral", function (e, t, r) {
      if (!r.matchOpToken("{")) return;
      var n = [""];
      var i = [];
      while (r.hasMore()) {
        if (r.matchOpToken("\\")) {
          r.consumeToken();
        } else if (r.matchOpToken("}")) {
          break;
        } else if (r.matchToken("$")) {
          var a = r.matchOpToken("{");
          var o = e.parseElement("expression", r);
          if (a) r.requireOpToken("}");
          i.push(o);
          n.push("");
        } else {
          var s = r.consumeToken();
          n[n.length - 1] += r.source.substring(s.start, s.end);
        }
        n[n.length - 1] += r.lastWhitespace();
      }
      return {
        type: "styleLiteral",
        args: [i],
        op: function (e, t) {
          var r = "";
          n.forEach(function (e, n) {
            r += e;
            if (n in t) r += t[n];
          });
          return r;
        },
        evaluate: function (e) {
          return t.unifiedEval(this, e);
        },
      };
    });
    e.addCommand("remove", function (e, t, r) {
      if (r.matchToken("remove")) {
        var n = e.parseElement("classRef", r);
        var i = null;
        var a = null;
        if (n == null) {
          i = e.parseElement("attributeRef", r);
          if (i == null) {
            a = e.parseElement("expression", r);
            if (a == null) {
              e.raiseParseError(
                r,
                "Expected either a class reference, attribute expression or value expression",
              );
            }
          }
        } else {
          var o = [n];
          while ((n = e.parseElement("classRef", r))) {
            o.push(n);
          }
        }
        if (r.matchToken("from")) {
          var s = e.requireElement("expression", r);
        } else {
          if (a == null) {
            var s = e.requireElement("implicitMeTarget", r);
          }
        }
        if (a) {
          return {
            elementExpr: a,
            from: s,
            args: [a, s],
            op: function (e, r, n) {
              t.nullCheck(r, a);
              t.implicitLoop(r, function (e) {
                if (e.parentElement && (n == null || n.contains(e))) {
                  e.parentElement.removeChild(e);
                }
              });
              return t.findNext(this, e);
            },
          };
        } else {
          return {
            classRefs: o,
            attributeRef: i,
            elementExpr: a,
            from: s,
            args: [o, s],
            op: function (e, r, n) {
              t.nullCheck(n, s);
              if (r) {
                t.forEach(r, function (e) {
                  t.implicitLoop(n, function (t) {
                    t.classList.remove(e.className);
                  });
                });
              } else {
                t.implicitLoop(n, function (e) {
                  e.removeAttribute(i.name);
                });
              }
              return t.findNext(this, e);
            },
          };
        }
      }
    });
    e.addCommand("toggle", function (e, t, r) {
      if (r.matchToken("toggle")) {
        r.matchAnyToken("the", "my");
        if (r.currentToken().type === "STYLE_REF") {
          let t = r.consumeToken();
          var n = t.value.substr(1);
          var a = true;
          var o = i(e, r, n);
          if (r.matchToken("of")) {
            r.pushFollow("with");
            try {
              var s = e.requireElement("expression", r);
            } finally {
              r.popFollow();
            }
          } else {
            var s = e.requireElement("implicitMeTarget", r);
          }
        } else if (r.matchToken("between")) {
          var u = true;
          var l = e.parseElement("classRef", r);
          r.requireToken("and");
          var c = e.requireElement("classRef", r);
        } else {
          var l = e.parseElement("classRef", r);
          var f = null;
          if (l == null) {
            f = e.parseElement("attributeRef", r);
            if (f == null) {
              e.raiseParseError(
                r,
                "Expected either a class reference or attribute expression",
              );
            }
          } else {
            var m = [l];
            while ((l = e.parseElement("classRef", r))) {
              m.push(l);
            }
          }
        }
        if (a !== true) {
          if (r.matchToken("on")) {
            var s = e.requireElement("expression", r);
          } else {
            var s = e.requireElement("implicitMeTarget", r);
          }
        }
        if (r.matchToken("for")) {
          var p = e.requireElement("expression", r);
        } else if (r.matchToken("until")) {
          var h = e.requireElement("dotOrColonPath", r, "Expected event name");
          if (r.matchToken("from")) {
            var v = e.requireElement("expression", r);
          }
        }
        var d = {
          classRef: l,
          classRef2: c,
          classRefs: m,
          attributeRef: f,
          on: s,
          time: p,
          evt: h,
          from: v,
          toggle: function (e, r, n, i) {
            t.nullCheck(e, s);
            if (a) {
              t.implicitLoop(e, function (e) {
                o("toggle", e);
              });
            } else if (u) {
              t.implicitLoop(e, function (e) {
                if (e.classList.contains(r.className)) {
                  e.classList.remove(r.className);
                  e.classList.add(n.className);
                } else {
                  e.classList.add(r.className);
                  e.classList.remove(n.className);
                }
              });
            } else if (i) {
              t.forEach(i, function (r) {
                t.implicitLoop(e, function (e) {
                  e.classList.toggle(r.className);
                });
              });
            } else {
              t.forEach(e, function (e) {
                if (e.hasAttribute(f.name)) {
                  e.removeAttribute(f.name);
                } else {
                  e.setAttribute(f.name, f.value);
                }
              });
            }
          },
          args: [s, p, h, v, l, c, m],
          op: function (e, r, n, i, a, o, s, u) {
            if (n) {
              return new Promise(function (i) {
                d.toggle(r, o, s, u);
                setTimeout(function () {
                  d.toggle(r, o, s, u);
                  i(t.findNext(d, e));
                }, n);
              });
            } else if (i) {
              return new Promise(function (n) {
                var l = a || e.me;
                l.addEventListener(
                  i,
                  function () {
                    d.toggle(r, o, s, u);
                    n(t.findNext(d, e));
                  },
                  { once: true },
                );
                d.toggle(r, o, s, u);
              });
            } else {
              this.toggle(r, o, s, u);
              return t.findNext(d, e);
            }
          },
        };
        return d;
      }
    });
    var t = {
      display: function (r, n, i) {
        if (i) {
          n.style.display = i;
        } else if (r === "toggle") {
          if (getComputedStyle(n).display === "none") {
            t.display("show", n, i);
          } else {
            t.display("hide", n, i);
          }
        } else if (r === "hide") {
          const t = e.runtime.getInternalData(n);
          if (t.originalDisplay == null) {
            t.originalDisplay = n.style.display;
          }
          n.style.display = "none";
        } else {
          const t = e.runtime.getInternalData(n);
          if (t.originalDisplay && t.originalDisplay !== "none") {
            n.style.display = t.originalDisplay;
          } else {
            n.style.removeProperty("display");
          }
        }
      },
      visibility: function (e, r, n) {
        if (n) {
          r.style.visibility = n;
        } else if (e === "toggle") {
          if (getComputedStyle(r).visibility === "hidden") {
            t.visibility("show", r, n);
          } else {
            t.visibility("hide", r, n);
          }
        } else if (e === "hide") {
          r.style.visibility = "hidden";
        } else {
          r.style.visibility = "visible";
        }
      },
      opacity: function (e, r, n) {
        if (n) {
          r.style.opacity = n;
        } else if (e === "toggle") {
          if (getComputedStyle(r).opacity === "0") {
            t.opacity("show", r, n);
          } else {
            t.opacity("hide", r, n);
          }
        } else if (e === "hide") {
          r.style.opacity = "0";
        } else {
          r.style.opacity = "1";
        }
      },
    };
    var n = function (e, t, r) {
      var n;
      var i = r.currentToken();
      if (i.value === "when" || i.value === "with" || e.commandBoundary(i)) {
        n = e.parseElement("implicitMeTarget", r);
      } else {
        n = e.parseElement("expression", r);
      }
      return n;
    };
    var i = function (e, n, i) {
      var a = r.defaultHideShowStrategy;
      var o = t;
      if (r.hideShowStrategies) {
        o = Object.assign(o, r.hideShowStrategies);
      }
      i = i || a || "display";
      var s = o[i];
      if (s == null) {
        e.raiseParseError(n, "Unknown show/hide strategy : " + i);
      }
      return s;
    };
    e.addCommand("hide", function (e, t, r) {
      if (r.matchToken("hide")) {
        var a = n(e, t, r);
        var o = null;
        if (r.matchToken("with")) {
          o = r.requireTokenType("IDENTIFIER", "STYLE_REF").value;
          if (o.indexOf("*") === 0) {
            o = o.substr(1);
          }
        }
        var s = i(e, r, o);
        return {
          target: a,
          args: [a],
          op: function (e, r) {
            t.nullCheck(r, a);
            t.implicitLoop(r, function (e) {
              s("hide", e);
            });
            return t.findNext(this, e);
          },
        };
      }
    });
    e.addCommand("show", function (e, t, r) {
      if (r.matchToken("show")) {
        var a = n(e, t, r);
        var o = null;
        if (r.matchToken("with")) {
          o = r.requireTokenType("IDENTIFIER", "STYLE_REF").value;
          if (o.indexOf("*") === 0) {
            o = o.substr(1);
          }
        }
        var s = null;
        if (r.matchOpToken(":")) {
          var u = r.consumeUntilWhitespace();
          r.matchTokenType("WHITESPACE");
          s = u
            .map(function (e) {
              return e.value;
            })
            .join("");
        }
        if (r.matchToken("when")) {
          var l = e.requireElement("expression", r);
        }
        var c = i(e, r, o);
        return {
          target: a,
          when: l,
          args: [a],
          op: function (e, r) {
            t.nullCheck(r, a);
            t.implicitLoop(r, function (r) {
              if (l) {
                e.result = r;
                let n = t.evaluateNoPromise(l, e);
                if (n) {
                  c("show", r, s);
                } else {
                  c("hide", r);
                }
                e.result = null;
              } else {
                c("show", r, s);
              }
            });
            return t.findNext(this, e);
          },
        };
      }
    });
    e.addCommand("take", function (e, t, r) {
      if (r.matchToken("take")) {
        let u = null;
        let l = [];
        while ((u = e.parseElement("classRef", r))) {
          l.push(u);
        }
        var n = null;
        var i = null;
        let c = l.length > 0;
        if (!c) {
          n = e.parseElement("attributeRef", r);
          if (n == null) {
            e.raiseParseError(
              r,
              "Expected either a class reference or attribute expression",
            );
          }
          if (r.matchToken("with")) {
            i = e.requireElement("expression", r);
          }
        }
        if (r.matchToken("from")) {
          var a = e.requireElement("expression", r);
        }
        if (r.matchToken("for")) {
          var o = e.requireElement("expression", r);
        } else {
          var o = e.requireElement("implicitMeTarget", r);
        }
        if (c) {
          var s = {
            classRefs: l,
            from: a,
            forElt: o,
            args: [l, a, o],
            op: function (e, r, n, i) {
              t.nullCheck(i, o);
              t.implicitLoop(r, function (e) {
                var r = e.className;
                if (n) {
                  t.implicitLoop(n, function (e) {
                    e.classList.remove(r);
                  });
                } else {
                  t.implicitLoop(e, function (e) {
                    e.classList.remove(r);
                  });
                }
                t.implicitLoop(i, function (e) {
                  e.classList.add(r);
                });
              });
              return t.findNext(this, e);
            },
          };
          return s;
        } else {
          var s = {
            attributeRef: n,
            from: a,
            forElt: o,
            args: [a, o, i],
            op: function (e, r, i, s) {
              t.nullCheck(r, a);
              t.nullCheck(i, o);
              t.implicitLoop(r, function (e) {
                if (!s) {
                  e.removeAttribute(n.name);
                } else {
                  e.setAttribute(n.name, s);
                }
              });
              t.implicitLoop(i, function (e) {
                e.setAttribute(n.name, n.value || "");
              });
              return t.findNext(this, e);
            },
          };
          return s;
        }
      }
    });
    function a(t, r, n, i) {
      if (n != null) {
        var a = t.resolveSymbol(n, r);
      } else {
        var a = r;
      }
      if (a instanceof Element || a instanceof HTMLDocument) {
        while (a.firstChild) a.removeChild(a.firstChild);
        a.append(e.runtime.convertValue(i, "Fragment"));
        t.processNode(a);
      } else {
        if (n != null) {
          t.setSymbol(n, r, null, i);
        } else {
          throw "Don't know how to put a value into " + typeof r;
        }
      }
    }
    e.addCommand("put", function (e, t, r) {
      if (r.matchToken("put")) {
        var n = e.requireElement("expression", r);
        var i = r.matchAnyToken("into", "before", "after");
        if (i == null && r.matchToken("at")) {
          r.matchToken("the");
          i = r.matchAnyToken("start", "end");
          r.requireToken("of");
        }
        if (i == null) {
          e.raiseParseError(
            r,
            "Expected one of 'into', 'before', 'at start of', 'at end of', 'after'",
          );
        }
        var o = e.requireElement("expression", r);
        var s = i.value;
        var u = false;
        var l = false;
        var c = null;
        var f = null;
        if (o.type === "arrayIndex" && s === "into") {
          u = true;
          f = o.prop;
          c = o.root;
        } else if (o.prop && o.root && s === "into") {
          f = o.prop.value;
          c = o.root;
        } else if (o.type === "symbol" && s === "into") {
          l = true;
          f = o.name;
        } else if (o.type === "attributeRef" && s === "into") {
          var m = true;
          f = o.name;
          c = e.requireElement("implicitMeTarget", r);
        } else if (o.type === "styleRef" && s === "into") {
          var p = true;
          f = o.name;
          c = e.requireElement("implicitMeTarget", r);
        } else if (o.attribute && s === "into") {
          var m = o.attribute.type === "attributeRef";
          var p = o.attribute.type === "styleRef";
          f = o.attribute.name;
          c = o.root;
        } else {
          c = o;
        }
        var h = {
          target: o,
          operation: s,
          symbolWrite: l,
          value: n,
          args: [c, f, n],
          op: function (e, r, n, i) {
            if (l) {
              a(t, e, n, i);
            } else {
              t.nullCheck(r, c);
              if (s === "into") {
                if (m) {
                  t.implicitLoop(r, function (e) {
                    e.setAttribute(n, i);
                  });
                } else if (p) {
                  t.implicitLoop(r, function (e) {
                    e.style[n] = i;
                  });
                } else if (u) {
                  r[n] = i;
                } else {
                  t.implicitLoop(r, function (e) {
                    a(t, e, n, i);
                  });
                }
              } else {
                var o =
                  s === "before"
                    ? Element.prototype.before
                    : s === "after"
                      ? Element.prototype.after
                      : s === "start"
                        ? Element.prototype.prepend
                        : s === "end"
                          ? Element.prototype.append
                          : Element.prototype.append;
                t.implicitLoop(r, function (e) {
                  o.call(
                    e,
                    i instanceof Node ? i : t.convertValue(i, "Fragment"),
                  );
                  if (e.parentElement) {
                    t.processNode(e.parentElement);
                  } else {
                    t.processNode(e);
                  }
                });
              }
            }
            return t.findNext(this, e);
          },
        };
        return h;
      }
    });
    function o(e, t, r) {
      var n;
      if (
        r.matchToken("the") ||
        r.matchToken("element") ||
        r.matchToken("elements") ||
        r.currentToken().type === "CLASS_REF" ||
        r.currentToken().type === "ID_REF" ||
        (r.currentToken().op && r.currentToken().value === "<")
      ) {
        e.possessivesDisabled = true;
        try {
          n = e.parseElement("expression", r);
        } finally {
          delete e.possessivesDisabled;
        }
        if (r.matchOpToken("'")) {
          r.requireToken("s");
        }
      } else if (
        r.currentToken().type === "IDENTIFIER" &&
        r.currentToken().value === "its"
      ) {
        var i = r.matchToken("its");
        n = {
          type: "pseudopossessiveIts",
          token: i,
          name: i.value,
          evaluate: function (e) {
            return t.resolveSymbol("it", e);
          },
        };
      } else {
        r.matchToken("my") || r.matchToken("me");
        n = e.parseElement("implicitMeTarget", r);
      }
      return n;
    }
    e.addCommand("transition", function (e, t, n) {
      if (n.matchToken("transition")) {
        var i = o(e, t, n);
        var a = [];
        var s = [];
        var u = [];
        var l = n.currentToken();
        while (
          !e.commandBoundary(l) &&
          l.value !== "over" &&
          l.value !== "using"
        ) {
          if (n.currentToken().type === "STYLE_REF") {
            let e = n.consumeToken();
            let t = e.value.substr(1);
            a.push({
              type: "styleRefValue",
              evaluate: function () {
                return t;
              },
            });
          } else {
            a.push(e.requireElement("stringLike", n));
          }
          if (n.matchToken("from")) {
            s.push(e.requireElement("expression", n));
          } else {
            s.push(null);
          }
          n.requireToken("to");
          if (n.matchToken("initial")) {
            u.push({
              type: "initial_literal",
              evaluate: function () {
                return "initial";
              },
            });
          } else {
            u.push(e.requireElement("expression", n));
          }
          l = n.currentToken();
        }
        if (n.matchToken("over")) {
          var c = e.requireElement("expression", n);
        } else if (n.matchToken("using")) {
          var f = e.requireElement("expression", n);
        }
        var m = {
          to: u,
          args: [i, a, s, u, f, c],
          op: function (e, n, a, o, s, u, l) {
            t.nullCheck(n, i);
            var c = [];
            t.implicitLoop(n, function (e) {
              var n = new Promise(function (n, i) {
                var c = e.style.transition;
                if (l) {
                  e.style.transition = "all " + l + "ms ease-in";
                } else if (u) {
                  e.style.transition = u;
                } else {
                  e.style.transition = r.defaultTransition;
                }
                var f = t.getInternalData(e);
                var m = getComputedStyle(e);
                var p = {};
                for (var h = 0; h < m.length; h++) {
                  var v = m[h];
                  var d = m[v];
                  p[v] = d;
                }
                if (!f.initialStyles) {
                  f.initialStyles = p;
                }
                for (var h = 0; h < a.length; h++) {
                  var E = a[h];
                  var T = o[h];
                  if (T === "computed" || T == null) {
                    e.style[E] = p[E];
                  } else {
                    e.style[E] = T;
                  }
                }
                var y = false;
                var k = false;
                e.addEventListener(
                  "transitionend",
                  function () {
                    if (!k) {
                      e.style.transition = c;
                      k = true;
                      n();
                    }
                  },
                  { once: true },
                );
                e.addEventListener(
                  "transitionstart",
                  function () {
                    y = true;
                  },
                  { once: true },
                );
                setTimeout(function () {
                  if (!k && !y) {
                    e.style.transition = c;
                    k = true;
                    n();
                  }
                }, 100);
                setTimeout(function () {
                  var t = [];
                  for (var r = 0; r < a.length; r++) {
                    var n = a[r];
                    var i = s[r];
                    if (i === "initial") {
                      var o = f.initialStyles[n];
                      e.style[n] = o;
                    } else {
                      e.style[n] = i;
                    }
                  }
                }, 0);
              });
              c.push(n);
            });
            return Promise.all(c).then(function () {
              return t.findNext(m, e);
            });
          },
        };
        return m;
      }
    });
    e.addCommand("measure", function (e, t, r) {
      if (!r.matchToken("measure")) return;
      var n = o(e, t, r);
      var i = [];
      if (!e.commandBoundary(r.currentToken()))
        do {
          i.push(r.matchTokenType("IDENTIFIER").value);
        } while (r.matchOpToken(","));
      return {
        properties: i,
        args: [n],
        op: function (e, r) {
          t.nullCheck(r, n);
          if (0 in r) r = r[0];
          var a = r.getBoundingClientRect();
          var o = {
            top: r.scrollTop,
            left: r.scrollLeft,
            topMax: r.scrollTopMax,
            leftMax: r.scrollLeftMax,
            height: r.scrollHeight,
            width: r.scrollWidth,
          };
          e.result = {
            x: a.x,
            y: a.y,
            left: a.left,
            top: a.top,
            right: a.right,
            bottom: a.bottom,
            width: a.width,
            height: a.height,
            bounds: a,
            scrollLeft: o.left,
            scrollTop: o.top,
            scrollLeftMax: o.leftMax,
            scrollTopMax: o.topMax,
            scrollWidth: o.width,
            scrollHeight: o.height,
            scroll: o,
          };
          t.forEach(i, function (t) {
            if (t in e.result) e.locals[t] = e.result[t];
            else throw "No such measurement as " + t;
          });
          return t.findNext(this, e);
        },
      };
    });
    e.addLeafExpression("closestExpr", function (e, t, r) {
      if (r.matchToken("closest")) {
        if (r.matchToken("parent")) {
          var n = true;
        }
        var i = null;
        if (r.currentToken().type === "ATTRIBUTE_REF") {
          var a = e.requireElement("attributeRefAccess", r, null);
          i = "[" + a.attribute.name + "]";
        }
        if (i == null) {
          var o = e.requireElement("expression", r);
          if (o.css == null) {
            e.raiseParseError(r, "Expected a CSS expression");
          } else {
            i = o.css;
          }
        }
        if (r.matchToken("to")) {
          var s = e.parseElement("expression", r);
        } else {
          var s = e.parseElement("implicitMeTarget", r);
        }
        var u = {
          type: "closestExpr",
          parentSearch: n,
          expr: o,
          css: i,
          to: s,
          args: [s],
          op: function (e, r) {
            if (r == null) {
              return null;
            } else {
              let e = [];
              t.implicitLoop(r, function (t) {
                if (n) {
                  e.push(t.parentElement ? t.parentElement.closest(i) : null);
                } else {
                  e.push(t.closest(i));
                }
              });
              if (t.shouldAutoIterate(r)) {
                return e;
              } else {
                return e[0];
              }
            }
          },
          evaluate: function (e) {
            return t.unifiedEval(this, e);
          },
        };
        if (a) {
          a.root = u;
          a.args = [u];
          return a;
        } else {
          return u;
        }
      }
    });
    e.addCommand("go", function (e, t, r) {
      if (r.matchToken("go")) {
        if (r.matchToken("back")) {
          var n = true;
        } else {
          r.matchToken("to");
          if (r.matchToken("url")) {
            var i = e.requireElement("stringLike", r);
            var a = true;
            if (r.matchToken("in")) {
              r.requireToken("new");
              r.requireToken("window");
              var o = true;
            }
          } else {
            r.matchToken("the");
            var s = r.matchAnyToken("top", "middle", "bottom");
            var u = r.matchAnyToken("left", "center", "right");
            if (s || u) {
              r.requireToken("of");
            }
            var i = e.requireElement("unaryExpression", r);
            var l = r.matchAnyOpToken("+", "-");
            if (l) {
              r.pushFollow("px");
              try {
                var c = e.requireElement("expression", r);
              } finally {
                r.popFollow();
              }
            }
            r.matchToken("px");
            var f = r.matchAnyToken("smoothly", "instantly");
            var m = { block: "start", inline: "nearest" };
            if (s) {
              if (s.value === "top") {
                m.block = "start";
              } else if (s.value === "bottom") {
                m.block = "end";
              } else if (s.value === "middle") {
                m.block = "center";
              }
            }
            if (u) {
              if (u.value === "left") {
                m.inline = "start";
              } else if (u.value === "center") {
                m.inline = "center";
              } else if (u.value === "right") {
                m.inline = "end";
              }
            }
            if (f) {
              if (f.value === "smoothly") {
                m.behavior = "smooth";
              } else if (f.value === "instantly") {
                m.behavior = "instant";
              }
            }
          }
        }
        var p = {
          target: i,
          args: [i, c],
          op: function (e, r, i) {
            if (n) {
              window.history.back();
            } else if (a) {
              if (r) {
                if (o) {
                  window.open(r);
                } else {
                  window.location.href = r;
                }
              }
            } else {
              t.implicitLoop(r, function (e) {
                if (e === window) {
                  e = document.body;
                }
                if (l) {
                  let t = e.getBoundingClientRect();
                  let r = document.createElement("div");
                  let n = l.value === "+" ? i : i * -1;
                  let a = m.inline == "start" || m.inline == "end" ? n : 0;
                  let o = m.block == "start" || m.block == "end" ? n : 0;
                  r.style.position = "absolute";
                  r.style.top = t.top + window.scrollY + o + "px";
                  r.style.left = t.left + window.scrollX + a + "px";
                  r.style.height = t.height + "px";
                  r.style.width = t.width + "px";
                  r.style.zIndex = "" + Number.MIN_SAFE_INTEGER;
                  r.style.opacity = "0";
                  document.body.appendChild(r);
                  setTimeout(function () {
                    document.body.removeChild(r);
                  }, 100);
                  e = r;
                }
                e.scrollIntoView(m);
              });
            }
            return t.findNext(p, e);
          },
        };
        return p;
      }
    });
    r.conversions.dynamicResolvers.push(function (t, r) {
      if (!(t === "Values" || t.indexOf("Values:") === 0)) {
        return;
      }
      var n = t.split(":")[1];
      var i = {};
      var a = e.runtime.implicitLoop.bind(e.runtime);
      a(r, function (e) {
        var t = s(e);
        if (t !== undefined) {
          i[t.name] = t.value;
          return;
        }
        if (e.querySelectorAll != undefined) {
          var r = e.querySelectorAll("input,select,textarea");
          r.forEach(o);
        }
      });
      if (n) {
        if (n === "JSON") {
          return JSON.stringify(i);
        } else if (n === "Form") {
          return new URLSearchParams(i).toString();
        } else {
          throw "Unknown conversion: " + n;
        }
      } else {
        return i;
      }
      function o(e) {
        var t = s(e);
        if (t == undefined) {
          return;
        }
        if (i[t.name] == undefined) {
          i[t.name] = t.value;
          return;
        }
        if (Array.isArray(i[t.name]) && Array.isArray(t.value)) {
          i[t.name] = [].concat(i[t.name], t.value);
          return;
        }
      }
      function s(e) {
        try {
          var t = { name: e.name, value: e.value };
          if (t.name == undefined || t.value == undefined) {
            return undefined;
          }
          if (e.type == "radio" && e.checked == false) {
            return undefined;
          }
          if (e.type == "checkbox") {
            if (e.checked == false) {
              t.value = undefined;
            } else if (typeof t.value === "string") {
              t.value = [t.value];
            }
          }
          if (e.type == "select-multiple") {
            var r = e.querySelectorAll("option[selected]");
            t.value = [];
            for (var n = 0; n < r.length; n++) {
              t.value.push(r[n].value);
            }
          }
          return t;
        } catch (e) {
          return undefined;
        }
      }
    });
    r.conversions["HTML"] = function (e) {
      var t = function (e) {
        if (e instanceof Array) {
          return e
            .map(function (e) {
              return t(e);
            })
            .join("");
        }
        if (e instanceof HTMLElement) {
          return e.outerHTML;
        }
        if (e instanceof NodeList) {
          var r = "";
          for (var n = 0; n < e.length; n++) {
            var i = e[n];
            if (i instanceof HTMLElement) {
              r += i.outerHTML;
            }
          }
          return r;
        }
        if (e.toString) {
          return e.toString();
        }
        return "";
      };
      return t(e);
    };
    r.conversions["Fragment"] = function (t) {
      var r = document.createDocumentFragment();
      e.runtime.implicitLoop(t, function (e) {
        if (e instanceof Node) r.append(e);
        else {
          var t = document.createElement("template");
          t.innerHTML = e;
          r.append(t.content);
        }
      });
      return r;
    };
  }
  const k = new o(),
    x = k.lexer,
    g = k.parser;
  function b(e, t) {
    return k.evaluate(e, t);
  }
  function w() {
    var t = Array.from(
      e.document.querySelectorAll("script[type='text/hyperscript'][src]"),
    );
    Promise.all(
      t.map(function (e) {
        return fetch(e.src).then(function (e) {
          return e.text();
        });
      }),
    )
      .then((e) => e.forEach((e) => S(e)))
      .then(() =>
        n(function () {
          a();
          k.processNode(document.documentElement);
          e.document.addEventListener("htmx:load", function (e) {
            k.processNode(e.detail.elt);
          });
        }),
      );
    function n(e) {
      if (document.readyState !== "loading") {
        setTimeout(e);
      } else {
        document.addEventListener("DOMContentLoaded", e);
      }
    }
    function i() {
      var e = document.querySelector('meta[name="htmx-config"]');
      if (e) {
        return v(e.content);
      } else {
        return null;
      }
    }
    function a() {
      var e = i();
      if (e) {
        Object.assign(r, e);
      }
    }
  }
  const S = Object.assign(b, {
    config: r,
    use(e) {
      e(S);
    },
    internals: {
      lexer: x,
      parser: g,
      runtime: k,
      Lexer: n,
      Tokens: i,
      Parser: a,
      Runtime: o,
    },
    ElementCollection: m,
    addFeature: g.addFeature.bind(g),
    addCommand: g.addCommand.bind(g),
    addLeafExpression: g.addLeafExpression.bind(g),
    addIndirectExpression: g.addIndirectExpression.bind(g),
    evaluate: k.evaluate.bind(k),
    parse: k.parse.bind(k),
    processNode: k.processNode.bind(k),
    version: "0.9.12",
    browserInit: w,
  });
  return S;
});
