var a, t;
function l() {
  if (t)
    return a;
  t = 1;
  function r(e) {
    const n = {
      className: "built_in",
      begin: "\\b(void|bool|int8|int16|int32|int64|int|uint8|uint16|uint32|uint64|uint|string|ref|array|double|float|auto|dictionary)"
    }, i = {
      className: "symbol",
      begin: "[a-zA-Z0-9_]+@"
    }, s = {
      className: "keyword",
      begin: "<",
      end: ">",
      contains: [
        n,
        i
      ]
    };
    return n.contains = [s], i.contains = [s], {
      name: "AngelScript",
      aliases: ["asc"],
      keywords: [
        "for",
        "in|0",
        "break",
        "continue",
        "while",
        "do|0",
        "return",
        "if",
        "else",
        "case",
        "switch",
        "namespace",
        "is",
        "cast",
        "or",
        "and",
        "xor",
        "not",
        "get|0",
        "in",
        "inout|10",
        "out",
        "override",
        "set|0",
        "private",
        "public",
        "const",
        "default|0",
        "final",
        "shared",
        "external",
        "mixin|10",
        "enum",
        "typedef",
        "funcdef",
        "this",
        "super",
        "import",
        "from",
        "interface",
        "abstract|0",
        "try",
        "catch",
        "protected",
        "explicit",
        "property"
      ],
      // avoid close detection with C# and JS
      illegal: "(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])",
      contains: [
        {
          // 'strings'
          className: "string",
          begin: "'",
          end: "'",
          illegal: "\\n",
          contains: [e.BACKSLASH_ESCAPE],
          relevance: 0
        },
        // """heredoc strings"""
        {
          className: "string",
          begin: '"""',
          end: '"""'
        },
        {
          // "strings"
          className: "string",
          begin: '"',
          end: '"',
          illegal: "\\n",
          contains: [e.BACKSLASH_ESCAPE],
          relevance: 0
        },
        e.C_LINE_COMMENT_MODE,
        // single-line comments
        e.C_BLOCK_COMMENT_MODE,
        // comment blocks
        {
          // metadata
          className: "string",
          begin: "^\\s*\\[",
          end: "\\]"
        },
        {
          // interface or namespace declaration
          beginKeywords: "interface namespace",
          end: /\{/,
          illegal: "[;.\\-]",
          contains: [
            {
              // interface or namespace name
              className: "symbol",
              begin: "[a-zA-Z0-9_]+"
            }
          ]
        },
        {
          // class declaration
          beginKeywords: "class",
          end: /\{/,
          illegal: "[;.\\-]",
          contains: [
            {
              // class name
              className: "symbol",
              begin: "[a-zA-Z0-9_]+",
              contains: [
                {
                  begin: "[:,]\\s*",
                  contains: [
                    {
                      className: "symbol",
                      begin: "[a-zA-Z0-9_]+"
                    }
                  ]
                }
              ]
            }
          ]
        },
        n,
        // built-in types
        i,
        // object handles
        {
          // literals
          className: "literal",
          begin: "\\b(null|true|false)"
        },
        {
          // numbers
          className: "number",
          relevance: 0,
          begin: "(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"
        }
      ]
    };
  }
  return a = r, a;
}
export {
  l as __require
};
